[Ajuda] /tirarvip em base ao /setarvip
#1

Eae galerinha bom estou com um probleminha aqui e queria que me ajudassem

Meu cуdigo para a setagem de VIP й:
PHP код:
CMD:setvip(playeridparams[])
{
new 
iddays;
if(!
IsPlayerAdmin(playerid) && Player[playerid][Admin] < 6)return SCM(playeridCOR_ERRO"[ERRO]: Vocк nгo estб Autorizado");
if(
sscanf(params"ud"iddays))return SCM(playeridCOR_USOCORRETO"Uso correto: /setvip [id] [dias]");
if(
days 0) return SCM(playeridCOR_ERRO"[ERRO]: Digite um numero de dias validos!");
if(!(
IsPlayerConnected(id))) return SCM(playeridCOR_ERRO"[ERRO]: Este jogador nгo estб Logado.");
Player[id][Vip] = ConvertDays(days);
new 
string[85];
format(stringsizeof(string), "[INFO]: Vocк deu %d dias de Vip para %s."daysNome(id));
SCM(playeridCOR_PRINCIPALstring);
format(stringsizeof(string), "[INFO]: Vocк recebeu %d dias de Vip do administrador %s."daysNome(playerid));
SCM(idCOR_PRINCIPALstring);
SendFormattedMessageToAll(-1"{F4A460}-ADMCmd-: O Administrador %s setou %s de vip. | Dias: %d"Nome(playerid), Nome(id), days);
format(stringsizeof(string), "-ADMCmd-: O Administrador %s setou %s de Vip. | Dias: %d",Nome(playerid),Nome(id),days);
DarVip(string);
format(stringsizeof(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(playeridparams[])
    {
        if(!
IsPlayerAdmin(playerid) && Player[playerid][Admin] < 6)return SCM(playeridCOR_ERRO"[ERRO]: Vocк nгo estб Autorizado");
        {
            new
                
str[200],
                
Aadmin[25],
                
name[25]
            ;
            new 
id;
            new 
tmp[256], string[256];
            new 
strval(tmp);
            if(!
IsPlayerConnected(p)) return SendClientMessage(playerid, -1"O player nгo esta concectado!");
            
GetPlayerName(playeridAadminsizeof Aadmin);
            
GetPlayerName(pnamesizeof name);
            
format(strsizeof str"Vips"name);
            
Player[id][Vip] = 0;
            if(
DOF2_FileExists(str)){
                
DOF2_RemoveFile(str);
                
format(stringsizeof(string),"-ADMCmd-: O Administrador %s tirou VIP de %s . ",Nome(playerid),Nome(id));
                
MensagemAdmin(string);
                
format(stringsizeof(string), "[INFO]: O Administrador(a) %s. tirou seu VIP."Nome(playerid));
                
SCM(idCOR_PRINCIPALstring);
            }
        }
        return 
true;
    } 
Reply
#2

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.
Reply
#3

Talvez funcione

PHP код:

#include <a_samp>
#include <sscanf>
#include <zcmd>
#include <dof2>

enum P
{
    
VIP
};

new 
Player[MAX_PLAYERS][P];

CMD:tirarvip(playeridparams[])
{
    if(!
IsPlayerAdmin(playerid))
        return 
0;

    new 
idxfile[155], string[128];
    if(
sscanf(params"d"idx))
        return 
SendClientMessage(playerid, -1"Uso: /tirarvip [id]");

    if(!
IsPlayerConnected(idx))
        return 
0;

    
format(filesizeof(file), "vips"getPName(idx));
    if(
DOF2::FileExists(file))
    {
        
DOF2::RemoveFile(file);

        
format(stringsizeof(string), "[INFO]: Administrador %s removeu o vip do player %s"getPName(playerid), getPName(idx));
        
SendClientMessageToAll(-1string);
    }
    
Player[idx][VIP] = 0;
    return 
1;
}

stock getPName(playerid)
{
    new 
name[MAX_PLAYER_NAME];
    
GetPlayerName(playeridnamesizeof(name));
    return 
name;

Reply
#4

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.
Reply
#5

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..
Reply
#6

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!
Reply
#7

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(playeridCOR_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" 
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)