Ajuda no "SETLEVEL" comando -
blackwave - 14.11.2010
Uso esse comando aq de Setlevel:
dcmd_setlevel(playerid, params[])
Код:
{
new tmp[256], tmp2[256], Index; tmp = strtok(params,Index), tmp2 = strtok(params,Index);
if(!strlen(params)) return SendClientMessage(playerid, VERMELHO, "USAGE: /setlevel [playerid] [level]");
new player1, level, playername[MAX_PLAYER_NAME], adminname[MAX_PLAYER_NAME], string[128];
GetPlayerName(playerid, playername, MAX_PLAYER_NAME);
GetPlayerName(playerid, adminname, MAX_PLAYER_NAME);
player1 = strval(tmp);
level = strval(tmp2);
if(!strlen(tmp2)) return SendClientMessage(playerid, VERMELHO, "USAGE: /setlevel [playerid] [level]");
if(!IsPlayerConnected(player1)) return SendClientMessage(playerid, VERMELHO, "Player nгo conectado");
if(level > MAX_LEVEL) return SendClientMessage(playerid, VERMELHO, "Level maximo й 100. Escolha igual ou menor a 100");
format(string,sizeof(string),"ADMIN: %s mudou o level de %s para %d", adminname, playername, level);
dUserSetINT(PlayerName2(player1)).("Level",(level));
PlayerInfo[player1][Level] = level;
dUserSetINT(PlayerName2(player1)).("Level",(level));
PlayerInfo[player1][Level] = level;
return SendClientMessageToAll(BRANCO, string);
}
Tudo funfa de boa. Mostra a string de quem mudou o level, de quem foi mudado e o level escolhido, tudo perfeito. O problema й que quando mudo o level, o level de quem foi mudado nгo altera no arquivo dini, so quando ele disconnect, que tem la:
Код:
public OnPlayerDisconnect(playerid, reason)
{
new name[MAX_PLAYER_NAME], file[256];
GetPlayerName(playerid, name, sizeof(name));
format(file, sizeof(file), SERVER_USER_FILE, name);
if(gPlayerLogged[playerid] == 1)
{
dini_IntSet(file, "Score", GetPlayerScore(playerid));
dini_IntSet(file, "Money", GetPlayerMoney(playerid));
dini_IntSet(file, "level", PlayerInfo[playerid][Level]);
dini_IntSet(file, "Cold", PlayerInfo[playerid][Cold]);
dini_IntSet(file, "Hot", PlayerInfo[playerid][Hot]);
}
gPlayerLogged[playerid] = 0;
return 1;
}
Nгo tem como salvar assim que muda с ? =SS
Re: Ajuda no "SETLEVEL" comando -
ipsBruno - 14.11.2010
@Blackwave:
Tente:
sу eu para entender esses cуdigos grudados,pqp
pawn Код:
new
tmp[256],
tmp2[256],
Index
;
tmp = strtok(params,Index),
tmp2 = strtok(params,Index);
if(!strlen(params))
return SendClientMessage(playerid, VERMELHO, "USAGE: /setlevel [playerid] [level]");
new
player1,
level,
file[64],
playername[24],
adminname[24],
string[128]
;
GetPlayerName(playerid, playername, 24);
GetPlayerName(playerid, adminname, 24);
player1 = strval(tmp);
level = strval(tmp2);
if(!strlen(tmp2))
return SendClientMessage(playerid, VERMELHO, "USAGE: /setlevel [playerid] [level]");
if(!IsPlayerConnected(player1))
return SendClientMessage(playerid, VERMELHO, "Player nгo conectado");
if(level > MAX_LEVEL)
return SendClientMessage(playerid, VERMELHO, "Level maximo й 100. Escolha igual ou menor a 100");
format(string,sizeof(string),"ADMIN: %s mudou o level de %s para %d", adminname, playername, level);
PlayerInfo[player1][Level] = level;
format(file, sizeof(file), SERVER_USER_FILE, name);
dini_IntSet(file, "level", PlayerInfo[playerid][Level]);
return SendClientMessageToAll(BRANCO, string);
Re: Ajuda no "SETLEVEL" comando -
blackwave - 14.11.2010
cara, o comando ta ok, mas nгo salva no dini, apenas isso. Meu comando funciona 100%. Notei que as dinis nгo se modificam quando o player estб online, mas sim quando ele disconecta, como no OnPlayerDisconnect =S
Re: Ajuda no "SETLEVEL" comando -
ipsBruno - 15.11.2010
Nгo,Dini edita quando vocк chama a funзгo,sua afirmaзгo acima foi errada
Й provбvel que vocк esteja chamando em onplayerdis
Re: Ajuda no "SETLEVEL" comando -
blackwave - 15.11.2010
He, mas precisa atualizar logo pra detectar nos comandos que precisa de nivel admin. Por causa desse dini que nao atualiza, o comando que pede lvl admin buga, mas quando dexo ele setado ja no dini e entro no jogo, nao buga.
Re: Ajuda no "SETLEVEL" comando -
ipsBruno - 15.11.2010
Basta copiar as funзхes de OnPlayerDisconnect para o Comando,assim executarб a mesma operaзгo.
Re: Ajuda no "SETLEVEL" comando -
blackwave - 15.11.2010
Sim tentei, mas apos usar o comando, olho no arquivo do meu nome e ta la o mesmo level: 0. Ai se eu puxo pra chekar o level em um comando adm, provavelmente nгo funciona ou buga, pois o lvl estarб 0 no meu arquivo .ini
Re: Ajuda no "SETLEVEL" comando -
ipsBruno - 15.11.2010
Claro,ele nem esta setando o level...
Verifique melhor o comando,mas pelo que me parece ele nгo esta setando
Pois vocк esta usando strtok e dcmd ao mesmo tempo,lol como fica isto?
Re: Ajuda no "SETLEVEL" comando -
blackwave - 15.11.2010
nгo sei muito bem oq й strtok, so o strcmp e dcmd:
Aqui meu codigo. So tem isso:
Код:
dcmd_setlevel(playerid, params[])
{
new tmp[256], tmp2[256], Index; tmp = strtok(params,Index), tmp2 = strtok(params,Index);
if(!strlen(params)) return SendClientMessage(playerid, VERMELHO, "USAGE: /setlevel [playerid] [level]");
new player1, level, playername[MAX_PLAYER_NAME], adminname[MAX_PLAYER_NAME], string[128];
GetPlayerName(playerid, playername, MAX_PLAYER_NAME);
GetPlayerName(playerid, adminname, MAX_PLAYER_NAME);
player1 = strval(tmp);
level = strval(tmp2);
if(!strlen(tmp2)) return SendClientMessage(playerid, VERMELHO, "USAGE: /setlevel [playerid] [level]");
if(!IsPlayerConnected(player1)) return SendClientMessage(playerid, VERMELHO, "Player nгo conectado");
if(level > MAX_LEVEL) return SendClientMessage(playerid, VERMELHO, "Level maximo й 100. Escolha igual ou menor a 100");
format(string,sizeof(string),"ADMIN: %s mudou o level de %s para %d", adminname, playername, level);
dUserSetINT(PlayerName2(player1)).("Level",(level));
PlayerInfo[player1][Level] = level;
dUserSetINT(PlayerName2(player1)).("Level",(level));
PlayerInfo[player1][Level] = level;
return SendClientMessageToAll(BRANCO, string);
}
e no OnPlayerCommadText:
Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
dcmd(setlevel,8,cmdtext);
return 0;
}