Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Inne] CoinsAPI - Pomoc dla początkujących i pseudodev


jackobPL1

Rekomendowane odpowiedzi

Opublikowano

Witam, jakieś 3 miechy temu napisałem wtyczkę na Coinsy za które można było coś kupić.


Ale niestety nie dokończyłem tej wtyczki z powodu upadku serwera.


Zdążyłem jedynie zrobić API pod sklep.


Co w tym API jest?


1. Zapisywanie coinsów do MySQL,


2. Pobieranie coinsów,


3. Dodawanie coinsów.


 


TA WTYCZKA NIE ZAWIERA ŻADNEGO SKLEPU Z ITEMAMI/EFEKTAMI za Coinsy!


 


1. Pobieranie coinsów



User u = User.get(p); //Pobieranie usera
u.getCoins(); //Pobieranie coinsów danego gracza czyli w tym wypadku gracza "p"

2. Dodawanie coinsów



User u = User.get(p); //Pobieranie usera
u.setCoins(u.getCoins() + ilosccoinsow); //Dodawanie danej ilości coinsów

P.S


Ilość coinsów startowych możesz ustawić w configu wtyczki.


 


DOWNLOAD:


http://www43.zippysh...UOuGe/file.html


!UWAGA NIE TESTOWANE!


SKAN:


https://www.virustotal.com/pl/file/cb355f433d368281006b569ec22008f87a6816abc14d4dc2d9569f831b5efc0d/analysis/1471048211/


SKAN URL:


https://www.virustotal.com/pl/url/7bd22cf31bacfddd501cd8134e8b2b28c157e2c330d045c825f1fd03e23d025f/analysis/1471048002/ 


 


Zakaz zmiany nicku autora!


 


Może komuś się przyda :)


 


Jeżeli potrzebujesz jakiejś pomocy z tą wtyczką chętnie pomogę. Pisz tutaj!


Opublikowano

Co do wtyczki przyda mi sie i to bardzo, lepsze jest to niz zapis do pliku, propozycja zrobisz poradnik jak zapisywać dane w swoim pluginie do mysql? a jezeli nie to lvlapi xD
Łap like

Opublikowano

Dla pseudodevów powiadasz... zaraz zobaczymy kodzik przyjacielu, będę bardzo konsekwentny...

 

  • Dlaczego StringBuilder (checkTable()/saveData())? Nie prosciej zwykły string? Szybciej i lepiej.
  • MySQL to jakas kpina stary
  • MySQL - Jednowątkowe, wszystko robi się w jednym wątku
  • MySQL - Nieodporne na SQL Injection, podaj mi serwer na którym jest to API a mu rozp******e baze danych.
  • Dlaczego synchronized?!
  • ALE DLACZEGO:
      if (this.conn == null) {
        return false;
      }
      if (this.conn.isClosed()) {
        return false;
      }

Ja p******e, co to jest?!

  private User(Player p)
  {
    this.name = p.getName();
    this.uuid = p.getUniqueId();
    this.coins = Config.START_COINS;
    UserUtil.addUser(this);
  }

Nie robi się w obiektach dodawania do list z innych klas etc.

 

  • Co to jest ta klasa config? Czemu ty ją od razu inicjalizujesz, zrób sobię metodę "load" z inicjalizacją wszystkich zmiennych i wykonuj ją w mainie. xD Aczkolwiek da się to lepiej zrobić (tj. enumy.)

 

Wniosek z tego taki - zanim nazwiesz każdego wokoło pseudodevem przestań nim być.

Chociaż po częsci masz racje - każdy kto tego gówna użyje to będzie pseudodev który w kod nie spojrzy.

 

@MrFretko nie używaj tego jeżeli nie chcesz mieć rozpierdolonego serwera, radzę ci mocno. Wiem co mówię ;p

Moja oficjalna strona! :)

http://socketbyte.pl/ 

Opublikowano

@AdamGrzegorz Ależ Adamku czego jesteś taki nie miły? Czy już naprawdę mpcforum wyżarło Ci mózg? Pomyśl trochę, że nazywanie kogoś pseudo programistą to ten który nie dość, żę kopiuje kody to jeszcze próbuje coś zrobić bez obeznania w javie. Jak widzisz napisałem ten plugin sam. Więc w tej chwili powinieneś mi napisać błąd oraz mi go mniej więcej wytłumaczyć a nie się rzucać we wszystkie strony i pisać innym użytkownikom, żeby tego nie pobierali. Dziękuje nie pozdrawiam. Z tego forum się robi trochę rakowisko. Szkoda :/

 

Szkoda, że z Ciebie też się zrobił taki drugi TheMajster. Kiedyś zawsze byłem za tobą.

Opublikowano

@Skajled może dla tych zaawansowanych programistów może to jest nie przydatne bo mogą sobie sami to napisać ale to jest dla początkujących, którzy np. nie mają pomysłu na napisanie tego. Mogą zawsze przeglądać kod i mniej więcej mogą coś z niego wyciągnąć.

 

 

DZIŚ UPDATE: CAŁKOWITA POPRAWA KODU :)

Opublikowano

@AdamGrzegorz Ależ Adamku czego jesteś taki nie miły? Czy już naprawdę mpcforum wyżarło Ci mózg? Pomyśl trochę, że nazywanie kogoś pseudo programistą to ten który nie dość, żę kopiuje kody to jeszcze próbuje coś zrobić bez obeznania w javie. Jak widzisz napisałem ten plugin sam. Więc w tej chwili powinieneś mi napisać błąd oraz mi go mniej więcej wytłumaczyć a nie się rzucać we wszystkie strony i pisać innym użytkownikom, żeby tego nie pobierali. Dziękuje nie pozdrawiam. Z tego forum się robi trochę rakowisko. Szkoda :/

 

Szkoda, że z Ciebie też się zrobił taki drugi TheMajster. Kiedyś zawsze byłem za tobą.

Uwierz mi że nie chcesz widzieć rakowiska, naprawdę teraz się z jednym takim rakiem użeram na gg (podjebał konto lookenowi, bo looken to debil i się dał xD).

 

Przepraszam, wieczorkiem wypisze wszystkie błędy. Na razie jestem roztrzęsiony bo widziałem prawdziwego raka. Szczególnie kiedy podjebał konto lookenowi i do mnie z niego spami to nie jest przyjemne.

Moja oficjalna strona! :)

http://socketbyte.pl/ 

Opublikowano

@AdamGrzegorz Cieszy mnie to, że tak do tego podszedłeś i odpisałeś. :) Mam już nie co poprawionych kilka rzeczy np. jak te nie potrzebne stringbuildery lub ta klasa Config.java xD

Opublikowano

@AdamGrzegorz Cieszy mnie to, że tak do tego podszedłeś i odpisałeś. :) Mam już nie co poprawionych kilka rzeczy np. jak te nie potrzebne stringbuildery lub ta klasa Config.java xD

 

Dla pseudodevów powiadasz... zaraz zobaczymy kodzik przyjacielu, będę bardzo konsekwentny...

 

  • Dlaczego StringBuilder (checkTable()/saveData())? Nie prosciej zwykły string? Szybciej i lepiej.
  • MySQL to jakas kpina stary
  • MySQL - Jednowątkowe, wszystko robi się w jednym wątku
  • MySQL - Nieodporne na SQL Injection, podaj mi serwer na którym jest to API a mu rozp******e baze danych.
  • Dlaczego synchronized?!
  • ALE DLACZEGO:
      if (this.conn == null) {
        return false;
      }
      if (this.conn.isClosed()) {
        return false;
      }

Ja p******e, co to jest?!

  private User(Player p)
  {
    this.name = p.getName();
    this.uuid = p.getUniqueId();
    this.coins = Config.START_COINS;
    UserUtil.addUser(this);
  }

Nie robi się w obiektach dodawania do list z innych klas etc.

 

  • Co to jest ta klasa config? Czemu ty ją od razu inicjalizujesz, zrób sobię metodę "load" z inicjalizacją wszystkich zmiennych i wykonuj ją w mainie. xD Aczkolwiek da się to lepiej zrobić (tj. enumy.)

 

Wniosek z tego taki - zanim nazwiesz każdego wokoło pseudodevem przestań nim być.

Chociaż po częsci masz racje - każdy kto tego gówna użyje to będzie pseudodev który w kod nie spojrzy.

 

@MrFretko nie używaj tego jeżeli nie chcesz mieć rozpierdolonego serwera, radzę ci mocno. Wiem co mówię ;p

 

  • wyjasnione (?)
  • x
  • Bukkit.runTaskAsynchronously()
  • PreparedStatement
  • usun to
  • if (cos || cos)
  • usun to dodawanie i dodawaj to przy tworzeniu obiektu
  • wyjasnione (?)

no.

 

 

PS: Przecież sam nazywasz ludzi pseudodevami, to czemu miałbym ciebie nie nazwać? ;)

Moja oficjalna strona! :)

http://socketbyte.pl/ 

Opublikowano

@AdamGrzegorz nie nazywam wszystkich ludzi pseudodev tylko właśnie tych raków, którzy robią CTRL + C i CTRL + V oraz zaczynają coś bez podstaw javy. 

Opublikowano

Nadal mogę ci r******* serwer na którym to jest wgrane ;/

O co mi chodzi z tym rozjebaniem? Spróbuj sobie ustawić nick ' albo ` i dostaniesz error z bazą. A to jeszcze nic bo mogę ci całą baze danych usunąć tym sposobem ale przykładów nie będę przytaczał bo jeszcze ktos tego użyje.

 

Ewidentnie ciężko w google poszukać.

https://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html

   PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES
                                     SET SALARY = ? WHERE ID = ?");
   pstmt.setBigDecimal(1, 153833.00)
   pstmt.setInt(2, 110592)

Moja oficjalna strona! :)

http://socketbyte.pl/ 

Opublikowano

Cos kojarze tą baze ona jest chyba z  filmu kamilkime

 

                 EASYYT.PL

Opublikowano

@AdamGrzegorz tak wiem przystosuje się do twoich rad z preparedstatement tylko nie wiem do końca o co z tym chodzi.  UPDATE EMPLOYEES

SET SALARY = ? WHERE ID = ?

Opublikowano

 

Nadal mogę ci r******* serwer na którym to jest wgrane ;/

O co mi chodzi z tym rozjebaniem? Spróbuj sobie ustawić nick ' albo ` i dostaniesz error z bazą. A to jeszcze nic bo mogę ci całą baze danych usunąć tym sposobem ale przykładów nie będę przytaczał bo jeszcze ktos tego użyje.

 

Ewidentnie ciężko w google poszukać.

https://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html

   PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES
                                     SET SALARY = ? WHERE ID = ?");
   pstmt.setBigDecimal(1, 153833.00)
   pstmt.setInt(2, 110592)

 

jestem leniem i nie patrzyłem w kod ale "Spróbuj sobie ustawić nick ' albo ` " w nicku w mc nie możesz dać takowego znaku, tzn możesz ale pluginy logowania powinny to regexem usuwać. Jeśli jest to nick który gracz sam może wybrać to fakt może zrobić sobie nick  X'; DROP users; -- bodajże takie coś jak dobrze pamietam powinno dropować tabele xD

 

 

Edit jednak decompilowałem

1. UserUtils powinno sie nazywać UserManager bo wkońcu zam zarządzasz userami a nie masz tam metod pomocniczych xD

2. zamiast         Bukkit.getConsoleSender().sendMessage("\u00a7a\u00a7lSaved \u00a76\u00a7l" + i + " \u00a7a\u00a7lusers"); to może System.out.println("Saved: " + i + " users"); ? nie wiem po co te znaczki czy co tam te kody znaczą xD

3. Słabe ładowanie całej bazy na start serwer, lepiej robić usera kiedy gracz wchodzi i wtedy ładować albo nawet wtedy ładować kiedy ktoś używa metody getCoins() , tak zwany lazy loading xD

 

Wiecej rzeczy szukać mi się nie chce, bardzo nisko poziomowe api no ale coś do zarządzania walutą premium jest xD

Co ja tutaj robie...

Opublikowano

@dekros123 te znaczki to jest paragraf tyko twój dekompilator przekształcił to na właśnie takie znaki. Dziekuje za opienie i postaram się jak najszybciej poprawić kod :) 

Opublikowano

@dekros123 te znaczki to jest paragraf tyko twój dekompilator przekształcił to na właśnie takie znaki. Dziekuje za opienie i postaram się jak najszybciej poprawić kod :) 

A na c**j paragraf?

ChatColor.translateAlternateColorCodes('&', twojstring);

zrób sobię metodę fixColors(string str) i w niej ta metoda.

Ja sobie od razu zrobiłem sendMessage własny który mi od razu to zamienia.

 

@Edit

To był przykład. ? oznacza wartosć.

 

co w tym trudnego

   PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES
                                     SET SALARY = ? WHERE ID = ?");
   pstmt.setBigDecimal(1, 153833.00)
   pstmt.setInt(2, 110592)

zamienia ci na 

PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES
                                     SET SALARY = 153833.00 WHERE ID = 110592");

Moja oficjalna strona! :)

http://socketbyte.pl/ 

  • 5 miesięcy temu...

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...