/tirarvip em base ao /setarvip -
Vibro - 16.05.2016
Eae galerinha bom estou com um probleminha aqui e queria que me ajudassem
Meu cуdigo para a setagem de VIP й:
PHP код:
CMD:setvip(playerid, params[])
{
new id, days;
if(!IsPlayerAdmin(playerid) && Player[playerid][Admin] < 6)return SCM(playerid, COR_ERRO, "[ERRO]: Vocк nгo estб Autorizado");
if(sscanf(params, "ud", id, days))return SCM(playerid, COR_USOCORRETO, "Uso correto: /setvip [id] [dias]");
if(days < 0) return SCM(playerid, COR_ERRO, "[ERRO]: Digite um numero de dias validos!");
if(!(IsPlayerConnected(id))) return SCM(playerid, COR_ERRO, "[ERRO]: Este jogador nгo estб Logado.");
Player[id][Vip] = ConvertDays(days);
new string[85];
format(string, sizeof(string), "[INFO]: Vocк deu %d dias de Vip para %s.", days, Nome(id));
SCM(playerid, COR_PRINCIPAL, string);
format(string, sizeof(string), "[INFO]: Vocк recebeu %d dias de Vip do administrador %s.", days, Nome(playerid));
SCM(id, COR_PRINCIPAL, string);
SendFormattedMessageToAll(-1, "{F4A460}-ADMCmd-: O Administrador %s setou %s de vip. | Dias: %d", Nome(playerid), Nome(id), days);
format(string, sizeof(string), "-ADMCmd-: O Administrador %s setou %s de Vip. | Dias: %d",Nome(playerid),Nome(id),days);
DarVip(string);
format(string, sizeof(string), PegarVip(id), Nome(id));
DOF2_CreateFile(PegarVip(id));
DOF2_SetInt(PegarVip(id), "Dias", Player[id][Vip]);
DOF2_SaveFile();
return true;
}
Entгo quando dou /setvip [id] [0] que no caso seriam 0 Dias ele buga a numeraзгo e nгo remove o VIP apenas buga os Dias as vezes diminui ou aumenta depende.
Em base a isto fiz uma balancinha aqui tentando criar um /tirarvip [id] com base em um outro GM funcionou mais... Quando dou /setvip sу deseta o ID 0 e quando tento desetar ID 1 ou algo assim ele buga os dias igual o cуdigo acima!
Cуdigo usado para o /tirarvip
PHP код:
CMD:tirarvip(playerid, params[])
{
if(!IsPlayerAdmin(playerid) && Player[playerid][Admin] < 6)return SCM(playerid, COR_ERRO, "[ERRO]: Vocк nгo estб Autorizado");
{
new
str[200],
Aadmin[25],
name[25]
;
new id;
new tmp[256], string[256];
new p = strval(tmp);
if(!IsPlayerConnected(p)) return SendClientMessage(playerid, -1, "O player nгo esta concectado!");
GetPlayerName(playerid, Aadmin, sizeof Aadmin);
GetPlayerName(p, name, sizeof name);
format(str, sizeof str, "Vips", name);
Player[id][Vip] = 0;
if(DOF2_FileExists(str)){
DOF2_RemoveFile(str);
format(string, sizeof(string),"-ADMCmd-: O Administrador %s tirou VIP de %s . ",Nome(playerid),Nome(id));
MensagemAdmin(string);
format(string, sizeof(string), "[INFO]: O Administrador(a) %s. tirou seu VIP.", Nome(playerid));
SCM(id, COR_PRINCIPAL, string);
}
}
return true;
}
Re: /tirarvip em base ao /setarvip -
Ever_SH - 16.05.2016
Desculpe, mas n consegui nem achar a parte que tu usa sscanf. Se nгo estou enganado, a variavel "p", vai ter sempre o valor 0 nesse teu cуdigo ai. Por que a variavel "tmp" й uma string? Em que momento ela ganha algum valor? Ela sу foi criada e nгo foi mais utilizada.
Re: /tirarvip em base ao /setarvip -
ZEDD666 - 16.05.2016
Talvez funcione
PHP код:
#include <a_samp>
#include <sscanf>
#include <zcmd>
#include <dof2>
enum P
{
VIP
};
new Player[MAX_PLAYERS][P];
CMD:tirarvip(playerid, params[])
{
if(!IsPlayerAdmin(playerid))
return 0;
new idx, file[155], string[128];
if(sscanf(params, "d", idx))
return SendClientMessage(playerid, -1, "Uso: /tirarvip [id]");
if(!IsPlayerConnected(idx))
return 0;
format(file, sizeof(file), "vips", getPName(idx));
if(DOF2::FileExists(file))
{
DOF2::RemoveFile(file);
format(string, sizeof(string), "[INFO]: Administrador %s removeu o vip do player %s", getPName(playerid), getPName(idx));
SendClientMessageToAll(-1, string);
}
Player[idx][VIP] = 0;
return 1;
}
stock getPName(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
return name;
}
Re: /tirarvip em base ao /setarvip -
Ever_SH - 16.05.2016
Quote:
Originally Posted by ZEDD666
Talvez funcione 
|
Se quiser dar cуdigo pronto, pelo menos comenta o cуdigo, assim ele vai pegar, colar e nem vai adquirir conhecimento.
Re: /tirarvip em base ao /setarvip -
Vibro - 16.05.2016
Isso ai que ele falou mano o meu cуdigo jб ajeitei arrumei os problemas mais muito obrigado por vocк ter posto um cуdigo ai nгo foi util pra mim mais obrigado assim mesmo.
Oque preciso й criar um cуdigo para setar o cara de vip 0 com os padrхes da minha GM e eu quero entender para nгo ter que ficar enchendo o saco da galera criando diversos tуpicos quando surgir..
Re: /tirarvip em base ao /setarvip -
Coreia - 16.05.2016
PHP код:
if(days == 0){
if(DOF2_FileExists(PegarVip(id)){
DOF2_RemoveFile(PegarVip(id));
Player[id][Vip] = 0;
}
return 1;
}
Boa noite, tenta isso irmгo, se caso nao funcionar poste aqui a funзгo "DarVip(string);" que os demais resolverгo pois estou saindo agora de casa pra ir pro curso na pressa. Abraзos!
Re: /tirarvip em base ao /setarvip -
Ever_SH - 16.05.2016
Teu erro foi armazenar o ID do player alvo em uma variбvel, nгo cheguei a ver o resto do cуdigo, mas comeзa por ai.
Recomendo esse tutorial:
https://sampforum.blast.hk/showthread.php?tid=277842
PHP код:
new id;
if(sscanf(params, "u", id))return SCM(playerid, COR_USOCORRETO, "Uso correto: /tirarvip [id]");
//Assim pegamos os parвmetros(Nesse comando, tem somente 1, que й o ID do alvo), e armazenamos na variбvel "id"