Salve a tutti!
Ho un problema con delle public nel mio server SA-MP.
Premetto che: Queste funzioni public che sto per riportarvi qua sotto, funzionano solo se io sono online da solo, ovvero senza nessun'altro utente collegato, e forse so anche il motivo. Infatti se un'altro utente si collega queste funzioni che dovrebbero funzionare solo per me, all'altro gli si buggano.
Facendo un esempio, con un Timer e un public do $20 ogni 20 minuti, e funziona se sono solo io online.
Se c'è un altro utente arrivano i miei, più i suoi e di tutti gli altri utenti.
Questo è uno dei tanti codici:
Per la precisione serve a mandare a tutti gli utenti collegati un Messaggio con scritto che l'admin blabla si è collegato:
Ho messo il check_rank che verifica al login se l'utente collegato è rankato (difatti vedere 2,3,4)
E un altro public connadmin da le relative funzioni se l'utente ha il rank "4"
Ci sono anche gli altri ma non li metto tutti ne metto solo io per farvi capire, tanto i codici sono uguali per ogni rank.
Questo codice funziona se io sono collegato, appena entra un altro amministratore gli appare il messaggio col mio stesso nome, invece gli dovrebbe apparire il suo...
Come potrei risolvere?
Ho un problema con delle public nel mio server SA-MP.
Premetto che: Queste funzioni public che sto per riportarvi qua sotto, funzionano solo se io sono online da solo, ovvero senza nessun'altro utente collegato, e forse so anche il motivo. Infatti se un'altro utente si collega queste funzioni che dovrebbero funzionare solo per me, all'altro gli si buggano.
Facendo un esempio, con un Timer e un public do $20 ogni 20 minuti, e funziona se sono solo io online.
Se c'è un altro utente arrivano i miei, più i suoi e di tutti gli altri utenti.
Questo è uno dei tanti codici:
Per la precisione serve a mandare a tutti gli utenti collegati un Messaggio con scritto che l'admin blabla si è collegato:
public check_rank()
{
for(new i = 0; i <= MAX_PLAYERS; i++)
{
if(IsAdminLevel(i,4)){
SetTimer("connadmin",5000,false);
return 1;
}
if(IsAdminLevel(i,3)){
SetTimer("connadmin",5000,false);
return 1;
}
if(IsAdminLevel(i,2)){
SetTimer("connmod",5000,false);
return 1;
}
if(IsAdminLevel(i,1)){
SetTimer("conpremium",5000,false);
return 1;
}
}
return 1;
}
public connadmin(playerid)
{
for(new i = 0; i <= MAX_PLAYERS; i++)
{
if(IsAdminLevel(i,4)){
new giocatore[MAX_PLAYER_NAME];
GetPlayerName(playerid,giocatore, sizeof(giocatore));
format(string,sizeof(string),"L'admin %s si è collegato ***", giocatore, playerid);
SendClientMessageToAll(COLORE_AZZURRO,string);
return 1;
}
}
return 1;
}
{
for(new i = 0; i <= MAX_PLAYERS; i++)
{
if(IsAdminLevel(i,4)){
SetTimer("connadmin",5000,false);
return 1;
}
if(IsAdminLevel(i,3)){
SetTimer("connadmin",5000,false);
return 1;
}
if(IsAdminLevel(i,2)){
SetTimer("connmod",5000,false);
return 1;
}
if(IsAdminLevel(i,1)){
SetTimer("conpremium",5000,false);
return 1;
}
}
return 1;
}
public connadmin(playerid)
{
for(new i = 0; i <= MAX_PLAYERS; i++)
{
if(IsAdminLevel(i,4)){
new giocatore[MAX_PLAYER_NAME];
GetPlayerName(playerid,giocatore, sizeof(giocatore));
format(string,sizeof(string),"L'admin %s si è collegato ***", giocatore, playerid);
SendClientMessageToAll(COLORE_AZZURRO,string);
return 1;
}
}
return 1;
}
Ho messo il check_rank che verifica al login se l'utente collegato è rankato (difatti vedere 2,3,4)
E un altro public connadmin da le relative funzioni se l'utente ha il rank "4"
Ci sono anche gli altri ma non li metto tutti ne metto solo io per farvi capire, tanto i codici sono uguali per ogni rank.
Questo codice funziona se io sono collegato, appena entra un altro amministratore gli appare il messaggio col mio stesso nome, invece gli dovrebbe apparire il suo...
Come potrei risolvere?