CMD:darniveltemp(playerid,params[]) {
new string[128];
if(PlayerInfo[playerid][pAdmin] >= 7 || !strcmp("]SOB[_Ricardo",pName(playerid),true) || !strcmp("[GrOv3].Swat",pName(playerid),true)) {
if(sscanf(params, "rd", params[0], params[1])) return SendClientMessage(playerid, red, "[USA]: /darniveltemp [playerid] [1 - 2 y 3]") &&
SendClientMessage(playerid, orange, "[Funciуn]: Establece un Nivel Admin Temporal a Especificado Jugador!");
if(params[1] > 3 ) return SendClientMessage( playerid,red, "[INFO]: Solo puedes dar lvl Temp [1 - 2 y 3]" );
if(!IsPlayerConnected(params[0])) return NoConectado(playerid);
if(PlayerInfo[params[0]][LoggedIn] == 0) return SendClientMessage(playerid,red,"[ERROR]: El Player no estб registrado o logeado.");
if(params[1] >= ServerInfo[MaxAdminNivel] ) return SendClientMessage(playerid,red,"[ERROR]: Level Incorrecto");
if(params[1] == PlayerInfo[params[0]][pAdmin]) return SendClientMessage(playerid,red,"[ERROR]: El Player ya tiene este level");
CMDMessageToAdmins(playerid,"DARNIVELTEMP");
format(string,sizeof(string),"[INFO]: El Administrador %s ha dado admin Temporal [Nivel %d]",pName(playerid), params[1]);
SendClientMessageToAll(blue, string);
SaveToFile("TempAdminLog",string);
if(params[0] != playerid)
{
if(params[1] > 0) format(string,sizeof(string),"[INFO]: El Administrador %s te ha dado admin temporalmente [Nivel %d]", pName(playerid), params[1]);
else format(string,sizeof(string),"[INFO]: El Administrador %s te ha bajado de level temporalmente [Nivel %d]", pName(playerid), params[1]);
SendClientMessage(params[0],blue,string);
}
if(params[1] > PlayerInfo[params[0]][pAdmin]) GameTextForPlayer(params[0],"~w~Promovido a admin ~n~~g~temporalmente", 4000, 3);
else GameTextForPlayer(params[0],"~w~Degradado del admin ~n~~r~temporalmente", 4000, 3);
PlayerInfo[params[0]][pAdmin] = params[1];
PlayerPlaySound(params[0],1057,0.0,0.0,0.0);
return 1;
} else return SendClientMessage(playerid,red,"[ERROR]: Necesitas ser Administrador nivel 7 para usar este comando.");
}
PlayerInfo[params[0]][pAdmin] = 0;
PlayerInfo[params[0]][pAdmin] = 0;
PlayerInfo[playerid][pAdmin] = 0;
En OnPlayerConnect no puede estar asн
Код:
PlayerInfo[params[0]][pAdmin] = 0; Код:
PlayerInfo[playerid][pAdmin] = 0; |
INI_WriteInt(File,"Admin",PlayerInfo[playerid][pAdmin]);
no no esta asн solo que lo copie y no me fige de ponerle [playerid] pero ta bien pero ya lo solucione solo que tenia un variable que hacia guardar el admin <.< pero ya lo arregle igualmente gracias C:
en el saveplayer tenia definido pawn Код:
|
CMD:darniveltemp(playerid,params[]) {
new string[128];
if(PlayerInfo[playerid][pAdmin] >= 7 || !strcmp("]SOB[_Ricardo",pName(playerid),true) || !strcmp("[GrOv3].Swat",pName(playerid),true)) {
if(sscanf(params, "rd", params[0], params[1])) return SendClientMessage(playerid, red, "[USA]: /darniveltemp [playerid] [1 - 2 y 3]") &&
SendClientMessage(playerid, orange, "[Funciуn]: Establece un Nivel Admin Temporal a Especificado Jugador!");
if(params[1] > 3 ) return SendClientMessage( playerid,red, "[INFO]: Solo puedes dar lvl Temp [1 - 2 y 3]" );
if(!IsPlayerConnected(params[0])) return NoConectado(playerid);
if(PlayerInfo[params[0]][LoggedIn] == 0) return SendClientMessage(playerid,red,"[ERROR]: El Player no estб registrado o logeado.");
if(params[1] >= ServerInfo[MaxAdminNivel] ) return SendClientMessage(playerid,red,"[ERROR]: Level Incorrecto");
if(params[1] == PlayerInfo[params[0]][pAdmin]) return SendClientMessage(playerid,red,"[ERROR]: El Player ya tiene este level");
CMDMessageToAdmins(playerid,"DARNIVELTEMP");
format(string,sizeof(string),"[INFO]: El Administrador %s ha dado admin Temporal [Nivel %d]",pName(playerid), params[1]);
SendClientMessageToAll(blue, string);
SaveToFile("TempAdminLog",string);
if(params[0] != playerid)
Admin_Temp[playerid] = true;//le aсades йsta variable.
{
if(params[1] > 0) format(string,sizeof(string),"[INFO]: El Administrador %s te ha dado admin temporalmente [Nivel %d]", pName(playerid), params[1]);
else format(string,sizeof(string),"[INFO]: El Administrador %s te ha bajado de level temporalmente [Nivel %d]", pName(playerid), params[1]);
SendClientMessage(params[0],blue,string);
}
if(params[1] > PlayerInfo[params[0]][pAdmin]) GameTextForPlayer(params[0],"~w~Promovido a admin ~n~~g~temporalmente", 4000, 3);
else GameTextForPlayer(params[0],"~w~Degradado del admin ~n~~r~temporalmente", 4000, 3);
PlayerInfo[params[0]][pAdmin] = params[1];
PlayerPlaySound(params[0],1057,0.0,0.0,0.0);
return 1;
} else return SendClientMessage(playerid,red,"[ERROR]: Necesitas ser Administrador nivel 7 para usar este comando.");
}
new new bool:Admin_Temp[MAX_PLAYERS];//variable global.
//en el callback que tengas para guardar los datos.
if(Admin_Temp[playerid] == false)//Comprovamos si no se le ha dado el comando /darniveltemp, si es le diу, entonces no se guardarб.
{
INI_WriteInt(File,"Admin",PlayerInfo[playerid][pAdmin]);
}
Pero йso te lleva a otro problema їCual? que cuando le dйs admin "no temporal" a alguien, cuan йste alguien se desconecte no tendrб el admin.
La soluciуn para йsto es hacerte una variable global, cuando le pongas йse comando de dar admin temporal , le pones la variable al player. y en el callback de guardar los datos le pones if(mivariable[playerid] == 1){return 1;}. de йsta manera no se guardarбn los datos. o puedes ponerle justamente alli donde tu mismo dijiste; asн: pawn Код:
|
es que ya lo eh sacado eso, cuando doi temporal no le guarda el admin pero si lo da y el user lo puede usar y cuando el user se desconecta o le da crash y tal motivo se desconecta, ps al conectarse ya no le sale el admin q le di ya lo eh solucionado igualmente gracias C: igual por si las mosca estare viendo esto por si llego a tener un problema!
![]() |