_AvaX_ 294 Opublikowano 15 października 2017 Udostępnij Opublikowano 15 października 2017 Cześć, Powiedzcie mi ludzie jak do jasnej cholery sprawdzić czy gracz połączył się z konta premium. Pozwolę sobie oznaczyć @Wizzard, @KrejzolekPRO, @Lloyd PL Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
0 GotoFinal 195 Opublikowano 15 października 2017 Udostępnij Opublikowano 15 października 2017 No musisz wykonać autoryzacje z mojangiem, zgodnie z protokołem http://wiki.vg/Protocol Ale tylko dla graczy co mają nick premium - bo inaczej client non-premium się rozłączy. A tak to najwygodniej zrobić to pod bungee, tam w evencie od początku logowania masz zwyczajnie metodę do ustawienia czy gracz ma być autoryzowany, dla każdego connection można ustawić .setOnlineMode czy jakos tak LloydPL 1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
0 yooniks 347 Opublikowano 17 października 2017 Udostępnij Opublikowano 17 października 2017 Zawsze możesz sprawdzić czy gracz jest premium, i jeżeli tak to ustawiać "połączenie" na onlinemode. private boolean hasPaid(String nick) { try { final URL url = new URL("https://api.mojang.com/users/profiles/minecraft/" + nick); final BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream())); String hasPaid; if ((hasPaid = reader.readLine()) != null) { reader.close(); return true; } else{ reader.close(); return false; } } catch (Exception e) { e.printStackTrace(); } return false; } //BungeeCord, onEnable() this.getProxy().getPluginManager().registerListener(this, new Listener() { @EventHandler public void onConnect(PreLoginEvent e) { if (e.isCancelled()) return; final ProxiedPlayer proxiedPlayer = getProxy().getPlayer(e.getConnection().getName()); final User u = User.getUser(proxiedPlayer); if (hasPaid(e.getConnection().getName())) { u.setPremium(true); e.getConnection().setOnlineMode(true); this.getLogger().info("Player "+e.getConnection().getName()+" has paid for premium account); } else { u.setPremium(false); e.getConnection().setOnlineMode(false); } } }); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
0 _AvaX_ 294 Opublikowano 17 października 2017 Autor Udostępnij Opublikowano 17 października 2017 10 minut temu, yooniks napisał: Zawsze możesz sprawdzić czy gracz jest premium, i jeżeli tak to ustawiać "połączenie" na onlinemode. private boolean hasPaid(String nick) { try { final URL url = new URL("https://api.mojang.com/users/profiles/minecraft/" + nick); final BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream())); String hasPaid; if ((hasPaid = reader.readLine()) != null) { reader.close(); return true; } else{ reader.close(); return false; } } catch (Exception e) { e.printStackTrace(); } return false; } //BungeeCord, onEnable() this.getProxy().getPluginManager().registerListener(this, new Listener() { @EventHandler public void onConnect(PreLoginEvent e) { if (e.isCancelled()) return; final ProxiedPlayer proxiedPlayer = getProxy().getPlayer(e.getConnection().getName()); final User u = User.getUser(proxiedPlayer); if (hasPaid(e.getConnection().getName())) { u.setPremium(true); e.getConnection().setOnlineMode(true); this.getLogger().info("Player "+e.getConnection().getName()+" has paid for premium account); } else { u.setPremium(false); e.getConnection().setOnlineMode(false); } } }); Dzięki wielkie ale nie wiem czy w ten sposób nie będzie można wpisać np. W shiginima launcher nicku Notch itp. No I zależy mi na nie używaniu bungee corda jednak chciałbym tego użyć w dodatku do skripta i na tym mi zależy tylko że cholera nie umiem KrejzolekPRO 1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
0 KrejzolekPRO 600 Opublikowano 17 października 2017 Udostępnij Opublikowano 17 października 2017 37 minut temu, Quaczi napisał: Dzięki wielkie ale nie wiem czy w ten sposób nie będzie można wpisać np. W shiginima launcher nicku Notch itp. No I zależy mi na nie używaniu bungee corda jednak chciałbym tego użyć w dodatku do skripta i na tym mi zależy tylko że cholera nie umiem Będzie można, na takiej samej zasadzie działało moje "api" PremiumStatus. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
0 GotoFinal 195 Opublikowano 17 października 2017 Udostępnij Opublikowano 17 października 2017 (edytowane) 3 godziny temu, yooniks napisał: Zawsze możesz sprawdzić czy gracz jest premium, i jeżeli tak to ustawiać "połączenie" na onlinemode. private boolean hasPaid(String nick) { try { final URL url = new URL("https://api.mojang.com/users/profiles/minecraft/" + nick); final BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream())); String hasPaid; if ((hasPaid = reader.readLine()) != null) { reader.close(); return true; } else{ reader.close(); return false; } } catch (Exception e) { e.printStackTrace(); } return false; } //BungeeCord, onEnable() this.getProxy().getPluginManager().registerListener(this, new Listener() { @EventHandler public void onConnect(PreLoginEvent e) { if (e.isCancelled()) return; final ProxiedPlayer proxiedPlayer = getProxy().getPlayer(e.getConnection().getName()); final User u = User.getUser(proxiedPlayer); if (hasPaid(e.getConnection().getName())) { u.setPremium(true); e.getConnection().setOnlineMode(true); this.getLogger().info("Player "+e.getConnection().getName()+" has paid for premium account); } else { u.setPremium(false); e.getConnection().setOnlineMode(false); } } }); ja [ciach], czy ktoś na tym forum umie obsługiwać wyjątki? catch (Exception e) { e.printStackTrace(); } return false; co to ma być... API mojangu cię np zbanuje na chwilę i nawet się o tym nie dowiesz, bo nie obsługujesz wyjątku w żaden sensowny sposób, a gracz wtedy zawsze zostanie uznany za pirata - czyli w przypadku błędu ktoś może się włamać na inne konto... //Wulgaryzm @JPablo Edytowane 17 października 2017 przez JPablo Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pytanie
_AvaX_ 294
Cześć,
Powiedzcie mi ludzie jak do jasnej cholery sprawdzić czy gracz połączył się z konta premium.
Pozwolę sobie oznaczyć @Wizzard, @KrejzolekPRO, @Lloyd PL
Odnośnik do komentarza
Udostępnij na innych stronach
5 odpowiedzi na to pytanie
Rekomendowane odpowiedzi