Tagi: post a link 

AutorWątek: Plugins API  (Przeczytany 6063 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Offline barthap

  • delikatnie przybrudzony
  • **
  • Wiadomości: 42
  • Brud/Czysty: +4/-1
  • [AS] Clan Member
    • AS Clan
Odp: Plugins API
« Odpowiedź #15 dnia: 24 Lipiec , 2012, 10:25:01 am »
Dzięki Anubis. :D Wszystko załatwię w czwartek gdy wrócę z ostatniego wakacyjnego wyjazdu.

Tapnięte z HTC Desire

Offline Anubis

  • أنوبيس
  • Global Moderator
  • śmierdzący zgnilizną brudas
  • *****
  • Wiadomości: 4579
  • Wypił browarów: 2
  • Brud/Czysty: +248/-125
  • Anoobinator
Odp: Plugins API
« Odpowiedź #16 dnia: 06 Sierpień , 2012, 21:08:33 pm »
Nie wiem czy widzieliście. Część już dostępna w poradniku. Czy coś Was interesuje bardziej co mógłbym szybciej opisać?
Jeśli masz wątpliwości - wal serią.

Offline barthap

  • delikatnie przybrudzony
  • **
  • Wiadomości: 42
  • Brud/Czysty: +4/-1
  • [AS] Clan Member
    • AS Clan
Odp: Plugins API
« Odpowiedź #17 dnia: 06 Sierpień , 2012, 21:37:21 pm »
Tak, jest coś takiego ;) Chodzi o rejestrację komend (dla adminów / wszystkich graczy), np jakiś example który rejestruje komendę /hello wyświetlającą w chacie "Hello World". A poza tym to te rzeczy, które nie zostały pokazane w pluginie Adverts.

Aha, w tym poradniku bym dał taki template "pustego" pluginu, czyli podstawowe importy, implementacja IMainPlugin oraz overridy.

Link do tego poradnika dla tych, którzy nie potrafią szukać ;) http://g4g.pl/pl/api
« Ostatnia zmiana: 06 Sierpień , 2012, 21:39:43 pm wysłana przez barthap »

Offline Anubis

  • أنوبيس
  • Global Moderator
  • śmierdzący zgnilizną brudas
  • *****
  • Wiadomości: 4579
  • Wypił browarów: 2
  • Brud/Czysty: +248/-125
  • Anoobinator
Odp: Plugins API
« Odpowiedź #18 dnia: 07 Sierpień , 2012, 11:11:58 am »
OK faktycznie, masz rację. Przyda się pusty template. Dorzucę też przykładzik jak stworzyć taki prosty pluginek.

Powiedz mi, czy z tego co widzisz: czy trudna jest konstrukcja pluginów? Coś byś widział w inny sposób?
Jeśli masz wątpliwości - wal serią.

Offline barthap

  • delikatnie przybrudzony
  • **
  • Wiadomości: 42
  • Brud/Czysty: +4/-1
  • [AS] Clan Member
    • AS Clan
Odp: Plugins API
« Odpowiedź #19 dnia: 08 Sierpień , 2012, 09:04:41 am »
Sama konstrukcja jest OK, dziedziczenie interfejsu i eventy. Na początku wyglądało to na skomplikowane ale teraz już w miarę wszystko rozumiem. Jedyne co mnie denerwuje to ten "styl javy"; przy tworzeniu obiektu można overridować metody danej klasy, co gorsza można to robić wewnątrz jakiejś funkcji  :wymioty: , np timer w startPlugin(). Ja wolałem sobie zrobić klasę UpdateTask i wywołać sobie timer.scheduleAtFixedRate(new UpdateTask(), 30 * 1000, RATE * 1000); Jest to bardziej czytelne  Ale to tylko moja opinia, zbyt mocno jestem przywiązany do C++.

Aha, nieczytelne są dla mnie argumenty przy wywoływaniu metod, np. public IPlayer getPlayerByNick(String string, boolean bln), domyślam się jedynie że w pierwszym argumencie chodzi o nick, niestety drugiego już się nie domyślę. To jest akurat przykład ale na przyszłość lepiej by było nazywać je jakoś czytelniej (np. String nick)

EDIT:
Gdy pisałem prototyp pluginu VoteKick, natknąłem się na parę niejasności:
-W jakich sytuacjach zalecasz stosowanie log.info() a kiedy System.out.println() ? To tak pytam żebym nie odbiegał od standardu tych "logów"
-czy metoda IPlayer.getName() zwraca nick gracza? Jeśli nie to jak ten nick wydobyć?
-co oznaczają kolejno argumenty metody IAdmin.kickPlayer() ? Pierwszy odnosi się do instancji klasy IPlayer, kolejne 2 są typu String. Domyślam się że 1 z nich dotyczy powodu kicka.
-Przy rejestracji komendy potrzebuję wydobyć jej argumenty, tzn /komenda argument1 argument2 oraz osobę, która tej komendy użyła. Robię tak:
//w registerCommands()
getPmanager().registerCommand("komenda", "onCommandUse", this);

void onCommandUse() //co podać jako argumenty
{

//tu potrzebuję argumentów komendy i osoby która wpisała komendę (może być jej nick albo obiekt IPlayer)
}

Na razie tyle, z góry przepraszam za kłopot  ;-)
« Ostatnia zmiana: 08 Sierpień , 2012, 12:12:15 pm wysłana przez barthap »

Offline Anubis

  • أنوبيس
  • Global Moderator
  • śmierdzący zgnilizną brudas
  • *****
  • Wiadomości: 4579
  • Wypił browarów: 2
  • Brud/Czysty: +248/-125
  • Anoobinator
Odp: Plugins API
« Odpowiedź #20 dnia: 08 Sierpień , 2012, 12:40:16 pm »
OK rozumiem. Updatnę nieco nazwy parametrów aby były czytelne. Dokumentowanie takich 'kwiatków' jest niestety dość żmudne.

public IPlayer getPlayerByNick(String sNick, boolean forced)Zalecam używanie public IPlayer getPlayerByNick(String sNick)to pierwsze powoduje wysłanie do servera zapytania o listę graczy i dopiero wraca z metody. Nie zalecam, bo obciąża server (finalnie częste używanie w skrajnych przypadkach może go nawet ubić :) ). Mechanizm gry pilnuje aby mieć optymalnie aktualne dane.


Cytuj
-W jakich sytuacjach zalecasz stosowanie log.info() a kiedy System.out.println() ? To tak pytam żebym nie odbiegał od standardu tych "logów"
generalnie zalecam log.info. W kodzie ewentualne printlajny są wynikiem przeoczenia :)

Cytuj
-czy metoda IPlayer.getName() zwraca nick gracza? Jeśli nie to jak ten nick wydobyć?
tak, zwraca to nick gracza

Cytuj
-co oznaczają kolejno argumenty metody IAdmin.kickPlayer() ? Pierwszy odnosi się do instancji klasy IPlayer, kolejne 2 są typu String. Domyślam się że 1 z nich dotyczy powodu kicka.
kick player ma definicję:
boolean kickPlayer(IPlayer ppl, String reason, String whoKicks);
po kolei: gracz, powód kicka, nick kickującego - dowolny string - np.: "Punisher plugin" :)



Co do komendy, parametrem jest "GameCommand"

czyli
public void onCommandUse(GameCommand command)
{

}

info do powyższego, komendy powinny być "public void".
« Ostatnia zmiana: 08 Sierpień , 2012, 12:42:05 pm wysłana przez Anubis »
Jeśli masz wątpliwości - wal serią.

Offline barthap

  • delikatnie przybrudzony
  • **
  • Wiadomości: 42
  • Brud/Czysty: +4/-1
  • [AS] Clan Member
    • AS Clan
Odp: Plugins API
« Odpowiedź #21 dnia: 08 Sierpień , 2012, 13:04:24 pm »
OK, Dzięki za odpowiedź, z updatowaniem argumentów się tak spieszyć nie musisz, najwyżej będę się pytał na bieżąco. Mi też by się tego nie chciało zmieniać.

Rozumiem że w GameCommand whoSaidThat to osoba pisząca komendę, commandName to np "/komenda" a commandText to argumenty (które mogę sobie Sting.split() rozdzielić)? Nie wiem tylko czy prefix ma coś wspólnego z say i @say czy może chodzi o coś typu /komenda lub !komenda ;)
« Ostatnia zmiana: 08 Sierpień , 2012, 15:56:48 pm wysłana przez barthap »

Offline Anubis

  • أنوبيس
  • Global Moderator
  • śmierdzący zgnilizną brudas
  • *****
  • Wiadomości: 4579
  • Wypił browarów: 2
  • Brud/Czysty: +248/-125
  • Anoobinator
Odp: Plugins API
« Odpowiedź #22 dnia: 02 Wrzesień , 2012, 14:27:11 pm »
komenda będzie zawierać samą komendę bez "/".
whoSaidThat - kto to powiedział :) - czyli jak nazwa wskazuje
commandText - czyli wszystko co poleciało po komendzie - robisz z tym co zechcesz
prefix - akceptowalne prefixy jakie tu mogą się znaleźć - @ lub !
Jeśli masz wątpliwości - wal serią.

Offline aryshia

  • czysty jak zad źrebaka
  • *
  • Wiadomości: 1
  • Brud/Czysty: +0/-0
  • Obserwowany
Odp: Plugins API
« Odpowiedź #23 dnia: 06 Styczeń , 2015, 09:15:32 am »
nice and good post.................
sara