GGadu
mgr inż. Pavulon
11.03.2009
Autor: Pavulon
Wersja: 0.4.2.2
Opis:
Mam nadzieje że jest to pierwszy plugin który umożliwia obsługę GG z poziomu AMXX.
Dzięki niemu mamy możliwość wysyłania wiadomości GG z jak i do gry, wyświetlenie aktualnego statusu serwera, ilości graczy oraz administracji serwera za pomocą GG.
Nie odpowiadam za żadne szkody powstałe w wyniku używania tego pluginu itd.
Instalacja:
Standardowo wrzucić plik .amxx do amxmodx/plugin oraz dopisać go do configs/plugins.ini a .sma do amxmodx/scripting
Wszystkie pliki konfiguracyjne oraz logi będą znajdowały się w katalogu amxmodx/GGadu (zalecane jest stworzenie go ręcznie i nadanie mu odpowiednich praw dostępu {np. CHMOD 777} w celu umożliwienia zapisu), lecz jeżeli przy uruchomieniu nie będzie istniał katalog to zostanie on stworzony i umieszczone w nim zostaną odpowiednie pliki(GGadu.cfg; GGadu.ini; GGadu_bans.ini; GGadu_servers.ini) {wszystko w załączniku}.
GGadu.cfg - plik z cvar'ami
Niezbędne są cvary amx_gg_numer i amx_gg_haslo. Reszty jak nie będzie to przyjmą wartości standardowe.;[GGadu] Umiesc w tym pliku cvar'y do plugin'a.
amx_gg_numer "0"
amx_gg_haslo "0"
amx_gg_opis_on "name w/ GG [ON]nIP: ipnMapa: mapnTimeleft: tlnGraczy: act/max"
amx_gg_opis_off "name w/ GG [OFF] mapchage ?"
amx_gg_opis_refresh "60"
amx_gg_gracze_info "abcdefgh" ;abcdefgh
amx_gg_log "bc" ;abc
amx_gg_log_typ "a" ;ab
amx_gg_losowy_serw "" ;ab
amx_gg_dzwiek "1"
Konto GG należy wcześniej utworzyć np. standardowym komunikatorem gdyż nie ma opcji rejestracji z serwera.
Zasada dodawania cvar'ów dokładnie taka sama jak np. w amxx.cfg
GGadu.ini - admini gg
Radzę zachować ten format, bez żadnych komentarzy. Flagi są takie same jak na serwerze.;[GGadu] Umiesc w tym pliku numery GG adminow wraz z ich flagami dostepu oddzielone spacjami, po jednej linijce dla admina np:
;nr_gg flagi_admina "nick" "flagi_dostepu"
;12345678 abcdefghijklmnopqrstuwvxy "SYS-OP" "bc"
;1234567 abcdefghijklmnopqrstuwvxy "ADMIN" "b"
;Srednik na poczatku oznacza ze dana linijka nie jest brana pod uwage.
GGadu_bans.ini - bany gg
Jedna linijka to jeden zbanowany numer gg, nie ma co się więcej rozpisywać.;[GGadu] Dodaj w tym pliku numery gg ktore zostana zbanowane, po jednym w linijce.
;123456789
;234567890
;Srednik na poczatku oznacza ze dana linijka nie jest brana pod uwage.
GGadu_servers.ini - serwery CS
Format oraz treść wg uznania. Ograniczenie do 127 znaków na linijkę.;[GGadu] Dodaj w tym pliku serwery wraz z opisem jaki chcesz zobaczyc po wpisaniu komendy serwery, po jednym w linijce.
;127.0.0.1:27666 Super Serwer GG: 123456789
;Srednik na poczatku oznacza ze dana linijka nie jest brana pod uwage. Maksymalna dlugosc 127 znakow
GGadu_system.log - log
Informacje o łączeniu, akcjach i problemach.
GGadu_DATA.log - log
Pliki tworzą się automatycznie przy odbiorze/wysyłaniu wiadomości. DATA jest w formacie rr/mm/dd
Oczywiście możemy też przekopiować odpowiedni folder z załącznika.
Wymagane moduły:
- sockets
Konfiguracja:
Cvary:
- amx_gg_numer "0" - numer gg z którego maja być wysyłane wiadomości
- amx_gg_haslo "0" - haslo do tego numeru gg
- amx_gg_opis_on "name w/ GG [ON]nIP: ipnMapa: mapnTimeleft: tlnGraczy: act/max" - opis serwera kiedy włączony
- amx_gg_opis_off "name w/ GG [OFF] mapchage ?" - opis kiedy wyłączony
- amx_gg_opis_refresh "60" - co ile odświeżać opis [w sekundach]
0 = tylko przy zmianie mapy
wartości poniżej 15 mogą spowodować block'a od serwera gg i brak zmian - amx_gg_gracze_info "abcdef" - które dane wyświetlać w liście graczy
a = nr. porzadkowy gracza, b = username, c = authid
d = ip, e = team, f = userid - amx_gg_log "bc" - co logować ?
a = wiadomości przychodzące, b = rozmowy, c = funkcje - amx_gg_log_typ "1" - co logować w rozmowach wychodzących ?
a = tylko steam_id, b = tylko ip, brak = tylko nick - amx_gg_losowy_serw "" - używać losowego serwera gg do logowania ?
a = jesli notoperating, b = przy nieudanym pobraniu ip - amx_gg_dzwiek "1" - dźwięk przy otrzymaniu wiadomości ?
1 = tak, 0 = nie
Zamienniki w opisie:
- name == nazwa serwera
- ip == ip serwera
- map == aktualna mapa
- tl == pozostały czas XXmin YYsek
- ml == ilość minut do końca mapy
- sl == ilość sekund do końca
- act == ilość graczy na serwerze
- max == maksymalna liczba graczy
- n == enter == przejście do następnej linii
Flagi dostępu adminów w pliku:
- "c" - Sys-Op
- "b" - Admin
- "a" - Admin bez powiadomienia grupowego
- "" - bez kontaktu
Komendy:
- say(_team) gg: nr_gg(lub nick) wiadomosc - wysyła wiadomość na dany numer gg
nick jest nazwą(lub jej częścią) pod jaką zapisany jest dany user w pliku GGadu.ini - say(_team) /kontakt{/contact} - wyświetla menu kontaktu z administracja
- amx_gg_reload_cvars - wczytuje ponownie cvar'y z flagami (ADMIN_BAN)
- amx_gg_reload_admins - pobiera ponownie dane adminów z pliku (ADMIN_BAN)
- amx_gg_reload_bans - pobiera ponownie bany z pliku (ADMIN_BAN)
- amx_gg_reload_servers - pobiera ponownie serwery z pliku (ADMIN_BAN)
Jeżeli menu kontaktu ma być dostępne dla graczy po użyciu komendy amx_menu,
nalezy do configs/custommenuitems.cfg dopisać linijkę:
amx_addclientmenuitem "Kontakt GGadu" "ggk_menu" "" "GGadu"
Komendy GG:
- pomoc = lista dostępnych komend
- status = stan serwera: hostname, wersja amxx, ip:port, mapa, ilość graczy, pozostały czas mapy
- gracze = lista graczy na serwerze wraz z ich danymi takimi jak IP i Steam_id
- serwery = lista dostępnych serwerów, dane własne z pliku
- wersja = aktualna wersja GGadu
- chat: gracz wiadomosc = wiadomość do kogoś na serwerze
gracz może być nick'iem (jeżeli występują spacje w nicku to podawać go cudzysłowach) gracza(lub jego częścią), adresem ip, steam_id lub #userid np:
dla adminów jest też możliwość pisania do wszystkich lub do danego team'u wpisując @all / @ct / @t zamiast gracza np:chat: "[you]" Pozdrowienia z GG
chat: @t Sprzedam pake
- admin: komenda_admina = wykonuje zadana komendę na serwerze (#odpowiedni ADMIN wymagany#)
numer z ktorego piszemy musi miec dodanego admina oraz niezbędne flagi do wykonania komendy np:
admin: amx_map de_dust
- rcon: komenda_hlds'a = wykonuje zadana komendę rcon na serwerze (#ADMIN_RCON wymagany#)
niezbędny admin z flagą ADMIN_RCON ("l")
rcon: restart
Dodatkowe info dostępne jeszcze w .sma
UWAGA !!!
W przypadku gdy plugin stworzył nam folder i nie możemy się do niego dostać z powodu braku praw(źle ustawiony chmod wynikający z tego że inny user{serwer} np root utworzył folder i nie dał nam praw do niego) należy wyłączyć ggadu, pobrać plugin ggadu_dir_remover i standardowo go zainstalować. Po zmianie mapy powinien on usunąć folder wraz z zawartością. Następnie tworzymy sami(kopiujemy z załącznika) folder i pliki pluginu ggadu oraz nadajemy im CHMOD'y 777 - tak aby i serwer miał do nich dostęp. Następnie wyłączamy ggadu_dir_remover, konfigurujemy i włączamy ggadu.
Problem ten pojawia się gdy użytkownik który ma dostęp do pliku nie jest użytkownikiem który uruchamia serwer, np:
użytkownik -> user
serwer -> root (root, główny user systemu, taki admin w M$ OS)
Kiedy root tworzy pliki nadaje im standardowo takie chmod'y że user może tylko je otworzyć(a folder tylko zobaczyć - nawet nie otworzy). Biblioteka amxx'a niestety jest ograniczona i nie ma możliwości wyboru czy też zmiany CHMOD'ów(a nie opłaca się rozprowadzać zmienionej biblioteki dla jednego pluginu) dlatego jak stworzymy sami plik to będzie można go edytować i wszytko będzie działać, lecz gdy serwer stworzy plik typu log to niestety edytować już go nie będziemy mogli.
p.s.
Not4Newbie
Załączone pliki
mgr inż. Pavulon
11.03.2009
wiem że odpowiada na wiadomości z GG 7.7, z Nowego GG i z Mobilnego GG więc i z innymi problemów być nie powinno.
darkman
11.03.2009
public oblicz_hash(haslo[], klucz) { new x0=0, x1=0, y0=0, y1=0, z=0, tmp=0; y0 = (klucz << 16) >> 16; y1 = klucz >> 16 ; new len = strlen(haslo) for (new i=0; i<len; i++) { x0 = (x0 & 0xFF00) | haslo[i]; x1 &= 0xFFFF; y0 ^= x0; y1 ^= x1; y0 += x0; y1 += x1; x1 <<= 8; x1 |= (x0 >> 8); x0 <<= 8; y0 ^= x0; y1 ^= x1; x1 <<= 8; x1 |= (x0 >> 8); x0 <<= 8; y0 -= x0; y1 -= x1; x1 <<= 8; x1 |= (x0 >> 8); x0 <<= 8; y0 ^= x0; y1 ^= x1; z = y0 & 0x1F; y0 &= 0xFFFF; y1 &= 0xFFFF; if (z <= 16) { tmp= (y1 << z) | (y0 >> (16-z)); y0 = (y1 >> (16-z)) | (y0 << z); y1 = tmp; } else { tmp= y0 << (z-16); y0 = (y0 >> (32-z)) | ( ((y1 << z) >> z) << (z-16) ); y1 = (y1 >> (32-z)) | tmp; } y0 &= 0xFFFF; y1 &= 0xFFFF; } tmp=y0, z=0 while (z<16) { if (y1&(1<<z)) { tmp += 1<<z+16 } z++ } return tmp }
tylu operatorów bitowych w jednej funkcji jeszcze nie widziałem btw. gj, super plugin.
DreSzCzyK
11.03.2009
Wymagane moduły: sockets
Hmm, przydał by się moduł sockets, Po co komu plugin, jak bedzie trzeba szukać Modułu
mgr inż. Pavulon
11.03.2009
standardowy moduł AMXX, a przynajmniej tych nowszych (w starych to nie wiadomo co jest). Jak masz wybrakowanego amxx'a to pobierz stąd: http://www.amxmodx.org/downloads.php amxx-base.Spk plugin Tylko ,
Kod:
Wymagane moduły:
sockets
Hmm, przydał by się moduł sockets, Po co komu plugin, jak bedzie trzeba szukać Modułu
DreSzCzyK
11.03.2009
Tylko dałem przykład, niektórzy sciagną plugin, I pytania ,
Nie działa plugin.
Miczu
11.03.2009
GGadu.ini - admini gg
wnioskuje ze bedzie mozna potem przez gg wysylac komendy na serwer (np. ban osoby co ciagle ci spamuje na gg ).
mgr inż. Pavulon
11.03.2009
nom. ustawia się adminom numer gg i dostępne dla nich flagi. Wg tych flag sprawdzana jest dostępność danej komendy.Pavulon, naprawdę imponujace, po:
GGadu.ini - admini gg
wnioskuje ze bedzie mozna potem przez gg wysylac komendy na serwer (np. ban osoby co ciagle ci spamuje na gg ).
A jeżeli admin posiada flagę ADMIN_RCON to może wykonać właściwie każdą z komend dzięki rcon: nazwa_komendy
Nie koniecznie AMXX'owe, bo mogą to być również HLDS'owe np. changelevel
Minusem jest to że nie dostajemy wiadomości po wykonaniu funkcji tak jak to jest w przypadku np. amx_plugins.
EmPeTrzy
12.03.2009
Nic tylko pogratulować, Pavulon. Kawał dobrej porządnej roboty
MASS 12.03.2009
mgr inż. Pavulon
12.03.2009
p.s.
plugin powinien działać już po wrzuceniu pliku .amxx oraz dopisaniu go do plugins.ini i dodaniu 2 niezbednych cvar'ów - numeru gg i hasla
MASS 12.03.2009
mifuntm
16.03.2009
Mógłby ktoś w trzech zdaniach do czego ten plugin się przydaje i jakie jest główne założenie jego działania?
Dziękuję z góry!