Forum graczy serwerów G4G.pl

G4G software => jGuardian - plugins => Wątek zaczęty przez: barthap w 28 Czerwiec , 2012, 17:12:19 pm

Tytuł: Plugins API
Wiadomość wysłana przez: barthap w 28 Czerwiec , 2012, 17:12:19 pm
Witam,

Od razu przejdę do rzeczy. Kiedy mogę spodziewać się jakiejkolwiek dokumentacji dotyczącej API Pluginów? Chciałbym w przyszłości zająć się programowaniem tychże wtyczek do jGuardiana, ale potrzebuję jakiegokolwiek punktu zaczepienia: Dokumentacji, Tutoriala, Przykładowego kodu (HelloWorld) plugina i jakiejkolwiek informacji o sposobie kompilacji. Na programowaniu się znam, Javę jako tako też ogarniam, więc nie powinienem mieć z tym problemów.  ;-)

Pozdrawiam,
Barthap
Tytuł: Odp: Plugins API
Wiadomość wysłana przez: MrEvilRobot w 28 Czerwiec , 2012, 20:38:04 pm
Popieram wniosek kolegi, może jak by były jakieś pomoce to "comunity" by się zebrało i zrobiło jakieś pluginy.
Tytuł: Odp: Plugins API
Wiadomość wysłana przez: Anubis w 06 Lipiec , 2012, 17:02:06 pm
Hej
Chwilowa cisza spowodowana jest testami nowych technologii, które będzie można wykorzystać w JG. To czasem niestety trwa, prototypy same się nie tworzą.
API będzie dostępne wraz z kolejną wersją JG. Muszę updatnąć nieco interfejsy i ich obecną implementację.

Pozdr

--
tapnięte z mobila
Tytuł: Odp: Plugins API
Wiadomość wysłana przez: Lugresky w 06 Lipiec , 2012, 17:05:19 pm
Panie śpiesz się bo wiara ucieka  :thx:
Tytuł: Odp: Plugins API
Wiadomość wysłana przez: Anubis w 06 Lipiec , 2012, 19:11:16 pm
Ale o so chosi. Gdzie i kto ucieka? :)
Wakacje są. Też mam prawo do odsapnięcia i pouczenia się czegoś.


--
tapnięte z mobila
Tytuł: Odp: Plugins API
Wiadomość wysłana przez: kiartan w 06 Lipiec , 2012, 20:03:08 pm
Kolega z pierwszego posta jest chętny do pomocy pomocy w programowaniu, ja ze swojej strony mogę pomóc w testowaniu i poganianiu tego pierwszego  :evil:. Zgadajmy się :one:
Tytuł: Odp: Plugins API
Wiadomość wysłana przez: Anubis w 06 Lipiec , 2012, 20:19:41 pm
Oka. Odstawię nowinki i skupię się na updacie i API. Stay tuned.

--
tapnięte z mobila
Tytuł: Odp: Plugins API
Wiadomość wysłana przez: barthap w 06 Lipiec , 2012, 20:45:48 pm
OK, w przeciwieństwie do kolegi Lukasa powiem: Nie spiesz się!  ;-) Dałeś info że będzie, więc nadzieja powróciła, a ja i tak jestem jeszcze na wakacjach.

Dzięki za odpowiedź  :thx:
Pozdro ;)
Tytuł: Odp: Plugins API
Wiadomość wysłana przez: MrEvilRobot w 07 Lipiec , 2012, 14:17:58 pm
Na pierwszy ogień powinien pójść plugin do vote kicka, przydatny jak nie ma admina.
Tytuł: Odp: Plugins API
Wiadomość wysłana przez: barthap w 07 Lipiec , 2012, 14:28:43 pm
Na początku będę musiał ogarnąć tego jGuardiana i zrobić kilka "bezużytecznych" pluginów żeby się nauczyć  :-D
Ale dzięki za podpowiedź, jak będę chciał zrobić już coś praktycznego to na początku zabiorę się za Votekick.  ;-)
Tytuł: Odp: Plugins API
Wiadomość wysłana przez: Anubis w 07 Lipiec , 2012, 15:16:05 pm
Wrzucę źródła przykładowego pluginu. Zobaczysz jakie to banalne ;)
Tytuł: Odp: Plugins API
Wiadomość wysłana przez: barthap w 14 Lipiec , 2012, 00:33:37 am
Dobra, jestem chyba gotowy, mogę zaczynać ;) Wszystko przygotowane, Java przypomniana.


Off-Topic:
Anubis, widzę że ty też modujesz sobie HTC Desire. Pytam bo znalazłem Cię na forum Android xD
Tytuł: Odp: Plugins API
Wiadomość wysłana przez: Anubis w 17 Lipiec , 2012, 10:17:11 am
OK. Mi zostały jeszcze tylko drobne updaty. Także na bank ja będę gotów w tym tygodniu z API. Co będzie Cię interesowało najbardziej to zawartość pliku Common.jar - interfejs IMainPlugin oraz frostbite.bf3.BattleField3.jar i klasy BF3Player(z implementuje IPlayer z commona)/BF3PlayerList oraz interfejs IGameInterfaces. W sumie możesz sobie już przeglądać co to udostępnia, bo zmiany będą tylko w eventach o których później ;)

Ps. Nom moduje Deserka :)
--
tapnięte z mobila
Tytuł: Odp: Plugins API
Wiadomość wysłana przez: barthap w 17 Lipiec , 2012, 12:18:23 pm
Właśnie widziałem, że napisałeś o tym w temacie o jG 1.14 i cieszę się z tej wiadomości. ;) Do czwartku jestem na wyjeździe, więc jak będę już w domu to sobie to przejrzę.

Tapnięte z HTC Desire
Tytuł: Odp: Plugins API
Wiadomość wysłana przez: Anubis w 22 Lipiec , 2012, 21:53:37 pm
UF... skończyłem. Przy okazji naprawiłem adverty z yellem (sprawdzcie np. na TDM czy widać).
W tym momencie zaczynam tworzyć OPIS.
Zainteresowani klepaniem - wyślijcie mi swoje maile. Wyślę Wam obecną paczkę do developmentu. Użytkownicy mogą spokojnie poczekać na oficjalny update.
Tytuł: Odp: Plugins API
Wiadomość wysłana przez: barthap w 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
Tytuł: Odp: Plugins API
Wiadomość wysłana przez: Anubis w 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ć?
Tytuł: Odp: Plugins API
Wiadomość wysłana przez: barthap w 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 (http://g4g.pl/pl/api)
Tytuł: Odp: Plugins API
Wiadomość wysłana przez: Anubis w 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?
Tytuł: Odp: Plugins API
Wiadomość wysłana przez: barthap w 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  ;-)
Tytuł: Odp: Plugins API
Wiadomość wysłana przez: Anubis w 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".
Tytuł: Odp: Plugins API
Wiadomość wysłana przez: barthap w 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 ;)
Tytuł: Odp: Plugins API
Wiadomość wysłana przez: Anubis w 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 !
Tytuł: Odp: Plugins API
Wiadomość wysłana przez: aryshia w 06 Styczeń , 2015, 09:15:32 am
nice and good post.................