Problem z przerobieniem blokady ip
bisser
04.12.2009
Przerabiałem plugin hugeban.amxx który blokuje określone zakresy ip (w pliku ban.txt) i mam problem ponieważ jak wprowadzam zmiany
typu:
Plugin się kompiluje z błędem : /groups/amxmodx/tmp3/textdMvFQZ.sma(116) : warning 209: function "client_connect" should return a value
I działa z tym że wpuszcza na serwer graczy z authid "VALVE_ID_PENDING" i "VALVE_ID_LAN" zaś blokuje ze STEAM_, a powinien robić odwrotnie.
Próbowałem też z return PLUGIN_HANDLED i było tak samo, zaś jak dawałem w kodzie "if( equali("STEAM_", authid))" to blokowało wszystkich.
Może macie jakieś pomysły na przeróbkę tego pluga.
Plik .sma w załączniku.
typu:
public client_connect(id) { new authid[32] get_user_authid(id, authid, 31) if( equali("VALVE_ID_PENDING", authid) || equali ("VALVE_ID_LAN", authid)) return PLUGIN_CONTINUE new ip[16],ip1[16],ip2[16],ip3[16],ip4[16] new ipA[16],ipB[16],a1[16],a2[16],a3[16],a4[16],b1[16],b2[16],b3[16],b4[16] new czas[20],a,index,i,plik[100],len,nieban,c new tmp[100],aq1,aq2,aq3,aq4,bq1,bq2,bq3,bq4,iq1,iq2,iq3,iq4 new CurrentTime[25],iplog[16],name[50] new ipLarge,aLarge,bLarge CurrentTime="" get_time("%Y.%d.%m - %H:%M:%S - ",CurrentTime,25) if(file_exists("addons/amxmodx/configs/ban.txt")!=0) get_user_ip(id,ip,16,1) while( contain ( ip, "." ) > -1 ) replace( ip, 16, ".", " " )
Plugin się kompiluje z błędem : /groups/amxmodx/tmp3/textdMvFQZ.sma(116) : warning 209: function "client_connect" should return a value
I działa z tym że wpuszcza na serwer graczy z authid "VALVE_ID_PENDING" i "VALVE_ID_LAN" zaś blokuje ze STEAM_, a powinien robić odwrotnie.
Próbowałem też z return PLUGIN_HANDLED i było tak samo, zaś jak dawałem w kodzie "if( equali("STEAM_", authid))" to blokowało wszystkich.
Może macie jakieś pomysły na przeróbkę tego pluga.
Plik .sma w załączniku.
Załączone pliki
Miczu
06.12.2009
if( equali("VALVE_ID_PENDING", authid) || equali ("VALVE_ID_LAN", authid)) return PLUGIN_CONTINUE
Jesli Pending lub lan, to zakoncz wywolywanie funkcji (czyt. return). Co sie dziwic ze nie sprawdza czy sa zbanowani ;>
Dobra a co wazniejsze, to funkcja equali zwraca pozycje w ciagu w ktorym znalazl pasujacy tekst - czyli jak oba sie zaczynaja od STEAM to zwroci wartość 0 - od pierwszego znaku, a nastepnie warunek IF interpretuje wartosc 0 jako FAłSZ. Gdy w danym ciagu nie wystepuje w ogóle dany ciag, to zwraca -1, a warunek IF interpretuje wszysto poza 0 jako true.
bisser
06.12.2009
Dżisas Miczu zrobiłeś taki wykład że aż mi się mózg zlasował.
Czyli jaki ma być wpis kodzie żeby nie blokował graczy ze STEAM ?
Czyli jaki ma być wpis kodzie żeby nie blokował graczy ze STEAM ?
Miczu
06.12.2009
Funkwiki nie dzialala i nie moglem tego sprawdzic... to co pisalem to bylo o funkcji containi... Ale i tak ona powinna byc uzyta, bo nie znasz calego steam_id...
To nie pozwoli by byli sprawdzani gracze ze steamem(?)... ...
Zapomnialem o kolejnej sprawie, gracze przy connecie nie musza miec koniecznie ustalonego steamu... od tego mamy event:
if(containi(authid, "STEAM_")==0) return PLUGIN_CONTINUE
To nie pozwoli by byli sprawdzani gracze ze steamem(?)...
Zapomnialem o kolejnej sprawie, gracze przy connecie nie musza miec koniecznie ustalonego steamu... od tego mamy event:
public client_authorized ( id )gracze steam od czasu polaczenia do czasu tego eventu za get_user_authid maja STEAM_ID_PENDING. Nie wiem jak to sie ma do nonsteam...
bisser
08.12.2009
Plugin z tym wpisem kompiluje się z znowu z błędem
Ale z tego co widzę to chyba działa, czyli wpuszcza graczy ze STEAM_ a pozostałych blokuje.
/groups/amxmodx/tmp3/textmduvuZ.sma(117) : warning 209: function "client_connect" should return a value
Ale z tego co widzę to chyba działa, czyli wpuszcza graczy ze STEAM_ a pozostałych blokuje.
Miczu
08.12.2009
bi$$er, jak uzywasz w srodku return PLUGIN_CONTINUE to na koncu calego kodu tez musi sie znalezc cos w rodzaju return PLUGIN_*** - to powinno naprawic warninga.