dodałem Ci kilka komentarzy co źle robisz
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#define PLUGIN "Anty Reconnect"
#define VERSION "1.0"
#define AUTHOR "rst"
#define MAX_PLAYERS 33
new pID[MAX_PLAYERS][22]
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
return PLUGIN_CONTINUE
}
public client_putinserver(id)
{
if ((is_user_bot(id)) || ( get_user_flags(id) & ADMIN_IMMUNITY))
return PLUGIN_HANDLED
new ip[22]
get_user_ip(id,ip,21)//pobnierasz IP gracza
for(new i = 1; i < MAX_PLAYERS; i++)
{
if (equal(ip, pID[i], 21)) //porównujesz IP z UID, nigdy nie będzie takie samo. Musisz albo używać IP albo UID
{
new uID[1]
uID[0] = get_user_userid(id)//nie potrzebne Ci tutaj userid tylko authid (STEAM_costam)
set_task(1.0,"przenies",77,uID,1)
}
break
}
return PLUGIN_HANDLED;
}
public client_disconnect(id)
{
new ip[22]
get_user_ip(id,ip,21)//pisałem już wcześniej, nie możesz tutaj pobrać zadnych danych gracza, bo go juz nie ma na serwie
new found = 0;
for(new i = 1; i < MAX_PLAYERS; i++)
{
if (equal(ip, pID[i], 21))
{
found = 1
break
}
}
if (found == 0)
{
for(new i = 1; i < MAX_PLAYERS; i++)
{
if (pID[i][0] == 0)
{
get_user_ip(id, pID[i], 21)
new aID[1]
aID[0] = i
set_task( 60.0, "cleanID", (id + MAX_PLAYERS),aID,1)
break
}
}
}
return PLUGIN_HANDLED;
}
public cleanID(i[])
{
pID[i[0]][0] = 0
}
public przenies(id[])
{
cs_set_user_team(id[0], CS_TEAM_T, CS_T_TERROR)
cs_user_spawn(id[0])
cs_user_spawn(id[0])
client_cmd(id[0], "say Zrobiles reconnect. Zostales przeniesiony do tt")
}
W ogóle to nie radzę używać pluginu jako bazy jeśli robisz coś więcej niż bardzo drobna modyfikacja, bo więcej stracisz czasu na przerabianie niż napisanie od nowa.
Ogólny zarys:
new gOstatniaMinuta[60][22]//60 to ilosc elementow tablicy, sadze, ze wiecej osob w ciagu minuty nie bedzie sie laczylo, 22 to UID/IP, zmienisz sobie co bedziesz chcial
new gPlayersId[33][22]//tu bedzie zapisywal authid gracZy na wejsciu
public client_authorized(id)
{
-pobierasz authid do zmiennej gPlayersId[id]
-porownujesz funkcja contain w pętli z każdym elementem tablicy gOstatniaMinuta, pamiętaj, że jak funkcja contain zwróci 0 to znaczy, że porównnane elementy są takie same, jak są inne to zwraca -1.
-jeśli znaleziono to przerzucasz do terro,
-jeśli nie znaleziono to szukasz pętlą pierwszego wolnego miejsca w tablicy gOstatniaMinuta i wpisujesz tam UID(szukania dokonujesz sprawdzając wartość pierwszego elementu tablicy czyli gOstatniaMinuta[i][0], dalej w kodzie bedziesz go ustawial na 0
-szukasz petla pierwszego wolnego miejsca w tablicy gOstatniaMinuta i zapisujesz tam UID
}
public client_disconnect(id)
{
-szukasz petla pierwszego wolnego miejsca w tablicy gOstatniaMinuta i zapisujesz tam gPlayersId[id]
-robisz taska na minute, który ustawi na 0 pierwszy znak w tej tablicy (gOstatniaMinuta[numer_miejsca_jakiego_uzyles][0]=0)
}
Użytkownik grankee edytował ten post 23.01.2016 15:52