Acho que esse sistema й o que eu postei num tуpico um dia desses, e uma public nгo fica dentro de outra public amigo. Public's, as famosas "Callbacks" ficam normalmente em finais de GameModes.
Exemplo de callback б ser criada:
Код:
forward AgendandoCadeia(playerid, idcheck);
public AgendandoCadeia(playerid, idcheck)
{
// Suas funзхes.
}
return 1;
}
Se for o sistema que eu postei num tуpico de alguйm que nгo me lembro, o code pronto estб aqui:
A Callback:
Код:
forward AgendandoCadeia(idcheck, playerid);
public AgendandoCadeia(idcheck, playerid)
{
new
arquivo[64],
DannielCooper,
PresoMotivo[64],
PresoNome[64]
;
if(idcheck == 1)
{
format(arquivo, sizeof(arquivo), "Agendados/%s.ini",PlayerName(playerid));
if(dini_Exists(arquivo))
{
strmid(PresoNome, dini_Get(arquivo,"Admin"), 0, strlen(dini_Get(arquivo,"Admin")), 255);
strmid(PresoMotivo, dini_Get(arquivo,"Motivo"), 0, strlen(dini_Get(arquivo,"Motivo")), 255);
DannielCooper = dini_Int(arquivo,"Tempo");
format(gstring, sizeof(gstring), "[!] Admin %s Agendou Sua Prisгo, Motivo: %s.", PresoNome,PresoMotivo);
SendClientMessage(playerid, COLOR_LIGHTRED, gstring);
format(gstring, sizeof(gstring), "[!] Vocк foi preso por %d Minutos Automaticamente, Agendado pelo Admin.", DannielCooper);
SendClientMessage(playerid, COLOR_LIGHTBLUE, gstring);
GameTextForPlayer(playerid, "~b~Bem Vindo ao ~n~~r~~h~Carandiru!", 5000, 3);
WantedPoints[playerid] = 0;
ResetPlayerWeapons(playerid);
SetPlayerWantedLevel(playerid, 0);
PlayerInfo[playerid][pJailed] = 2;
PlayerInfo[playerid][pJailTime] = DannielCooper * 60;
SetPlayerPos(playerid, 346.5848, 306.1026, 999.1484);
SetPlayerInterior(playerid,6);
format(gstring, sizeof(gstring), "AdmAviso: {80E3FF}%s {E84F33} Estб Agendado e Foi preso, Motivo: %s",PlayerName(playerid) ,PresoMotivo);
ABroadCast(COLOR_LIGHTRED,gstring,1);
fremove(arquivo);
}
}
return 1;
}
O Comando:
Код:
if(strcmp(cmd, "/agendarcadeia", true) == 0 || strcmp(cmd, "/acadeia", true) == 0)
{
if(IsPlayerConnected(playerid))
{
new playa[64];
new money;
playa = strtok(cmdtext, idx);
tmp = strtok(cmdtext, idx);
if(!strlen(playa))
{
SendClientMessage(playerid, COLOR_GRAD2, "USE: /agendarcadeia [Nome] [Tempo(Minutos)] [Motivo]");
return 1;
}
money = strval(tmp);
if (PlayerInfo[playerid][pAdmin] >= 3)
{
if(admtrampando[playerid] < 1 && PlayerInfo[playerid][pAdmin] != 3000)
{
SendClientMessage(playerid, COLOR_GRAD1, "Vocк nгo estб trabalhando! (/trabalhar)");
return 1;
}
new length = strlen(cmdtext);
while ((idx < length) && (cmdtext[idx] <= ' '))
{
idx++;
}
new offset = idx;
new result[64];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = cmdtext[idx];
idx++;
}
result[idx - offset] = EOS;
if(!strlen(result))
{
SendClientMessage(playerid, COLOR_GRAD2, "USE: /cadeia [id] [Tempo(Minutos)] [motivo]");
return 1;
}
new arquivo[64];
format(arquivo, sizeof(arquivo), "Agendados/%s.ini",playa);
GetPlayerName(playerid, sendername, sizeof(sendername));
if(!dini_Exists(arquivo))
{
SendClientMessage(playerid, COLOR_GRAD1, " Este player nгo estб registrado no servidor.");
return true;
}
format(arquivo, sizeof(arquivo), "Agendados/%s.ini",playa);
if(dini_Exists(arquivo))
{
dini_Set(arquivo,"Admin",sendername);
dini_Set(arquivo,"Motivo",result);
dini_IntSet(arquivo,"Tempo",money);
}
else
{
dini_Create(arquivo);
dini_Set(arquivo,"Admin",sendername);
dini_Set(arquivo,"Motivo",result);
dini_IntSet(arquivo,"Tempo",money);
}
format(gstring,sizeof(gstring), "AdmAviso: %s Agendou %s, Tempo %d Minutos, Motivo: %s", sendername,playa,money,result);
ABroadCast(COLOR_YELLOW,gstring,1);
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, " Vocк nгo tem permissao para usar esse comando!");
}
}
return 1;
}