[Ajuda] Dias Vip
#1

Faaalaa Galera quanto tempo hein. =D. Tava com saudades de samp e resolvi voltar porйm sempre me deparo com o mesmo problema.
Eu vi um code no forum que foi adaptado do codigo ъtil do @Paulor de dias vip, retirando o sscanf e o zcmd, passando pra strcmp ( isso strcmp, meu gm й todo em strcmp e nгo to a fim de passar 10k de linhas de comandos pra zcmd kk).
Sу que quando fui colocar no gm quando digita o cmd dб comando inexistente. Alguem pode ajudar?

code paulor
pawn Код:
new PTVip[MAX_PLAYERS][2];

public OnPlayerConnect(playerid) {
    if(PTVip[playerid][0]) if(gettime() >= PTVip[playerid][1]) { PTVip[playerid][0] = 0; SendClientMessage(playerid, 0xFF0000FF, "[INFO] Seu VIP expirou!!"); }
    return 1;
}

CMD:darvip(playerid, params[]) {
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Vocк nгo й um Admin!");
    new GiveID, PVip, PTDias;
    if(sscanf(params, "uii", GiveID, PVip, PTDias)) return SendClientMessage(playerid, 0xFFFFFFFF, "[USO] /darvip [id/nick] [Vip(1-Bronze, 2-Prata e 3-Ouro)] [Dias]");
    if(!IsPlayerConnected(GiveID)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Jogador Offline!");
    if(!(PVip > 0 && PVip < 4)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Vip somente de 1-3!");
    if(!(PTDias > 0)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Dias maiores que 0!");
    new PTStr[33];
    format(PTStr, sizeof(PTStr), "[INFO] Vocк recebeu VIP %s por %d dias!!", (PVip==1)?("Bronze"):(PVip==2)?("Prata"):("Ouro"), PTDias);
    SendClientMessage(GiveID, 0x00FF00FF, PTStr);
    PTVip[GiveID][1] = gettime() + (PTDias*24*60*60);
    PTVip[GiveID][0] = PVip;
    return 1;
}

CMD:tirarvip(playerid, params[]) {
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Vocк nгo й um Admin!");
    new GiveID;
    if(sscanf(params, "u", GiveID)) return SendClientMessage(playerid, 0xFFFFFFFF, "[USO] /tirarvip [id/nick]");
    if(!IsPlayerConnected(GiveID)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Jogador Offline!");
    new PTStr[32];
    format(PTStr, sizeof(PTStr), "[INFO] Vocк perdeu seu VIP %s!!", (PVip==1)?("Bronze"):(PVip==2)?("Prata"):("Ouro"));
    SendClientMessage(GiveID, 0xFF0000FF, PTStr);
    PTVip[GiveID][1] = 0;
    PTVip[GiveID][0] = 0;
    return 1;
}

CMD:tempovip(playerid) {
    if(!PTVip[playerid][0]) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Vocк nгo й um VIP!");
    new PTStr[45];
    if(PTVip[playerid][0]) {
        if(gettime() >= PTVip[playerid][1]) { PTVip[playerid][0] = 0; SendClientMessage(playerid, 0xFF0000FF, "[INFO] Seu VIP expirou!!"); return 1; }
        format(PTStr, sizeof(PTStr), "[INFO] Restam %d dias para acabar o seu VIP!", (((PTVip[playerid][1] - gettime())/60)/60)/24);
        SendClientMessage(playerid, 0x00FF00FF, PTStr);
    }
    return 1;
}



Code adaptado
pawn Код:
new PTVip[MAX_PLAYERS][2];

public OnPlayerConnect(playerid) {
    if(PTVip[playerid][0]) if(gettime() >= PTVip[playerid][1]) { PTVip[playerid][0] = 0; SendClientMessage(playerid, 0xFF0000FF, "[INFO] Seu VIP expirou!!"); }
    return 1;
}

if(!strcmp(cmdtext, "/darvip", true)) {
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Vocк nгo й um Admin!");
    new GiveID, PVip, PTDias, tmp[24], idx;
    tmp = strtok(cmd, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, 0xFFFFFFFF, "[USO] /darvip [id/nick] [Vip(1-Bronze, 2-Prata e 3-Ouro)] [Dias]");
    GiveID = strval(tmp);
    tmp = strtok(cmd, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, 0xFFFFFFFF, "[USO] /darvip [id/nick] [Vip(1-Bronze, 2-Prata e 3-Ouro)] [Dias]");
    PVip = strval(tmp);
    tmp = strtok(cmd, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, 0xFFFFFFFF, "[USO] /darvip [id/nick] [Vip(1-Bronze, 2-Prata e 3-Ouro)] [Dias]");
    PTDias = strval(tmp);
   
    if(!IsPlayerConnected(GiveID)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Jogador Offline!");
    if(!(PVip > 0 && PVip < 4)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Vip somente de 1-3!");
    if(!(PTDias > 0)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Dias maiores que 0!");
    new PTStr[33];
    format(PTStr, sizeof(PTStr), "[INFO] Vocк recebeu VIP %s por %d dias!!", (PVip==1)?("Bronze"):(PVip==2)?("Prata"):("Ouro"), PTDias);
    SendClientMessage(GiveID, 0x00FF00FF, PTStr);
    PTVip[GiveID][1] = gettime() + (PTDias*24*60*60);
    PTVip[GiveID][0] = PVip;
    return 1;
}
Alguem pra me ajudar?
Reply
#2

zcmd e melhor que strcmp

isto ajudara a converter

https://sampforum.blast.hk/showthread.php?tid=331410
Reply
#3

Quote:
Originally Posted by PT
Посмотреть сообщение
zcmd e melhor que strcmp

isto ajudara a converter

https://sampforum.blast.hk/showthread.php?tid=331410
Eu sei que zcmd й melhor que strcmp, gostaria que alguem me ajudasse a fazer funfar ESSE code, obg
Reply
#4

Tenta assim:

pawn Код:
if(!strcmp(cmdtext, "/darvip", true)) {
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Vocк nгo й um Admin!");
    new GiveID, PVip, PTDias, tmp[24], idx;
    tmp = strtok(cmd, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, 0xFFFFFFFF, "[USO] /darvip [id/nick] [Vip(1-Bronze, 2-Prata e 3-Ouro)] [Dias]");
    GiveID = strval(tmp);
    tmp = strtok(cmd, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, 0xFFFFFFFF, "[USO] /darvip [id/nick] [Vip(1-Bronze, 2-Prata e 3-Ouro)] [Dias]");
    PVip = strval(tmp);
    tmp = strtok(cmd, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, 0xFFFFFFFF, "[USO] /darvip [id/nick] [Vip(1-Bronze, 2-Prata e 3-Ouro)] [Dias]");
    PTDias = strval(tmp);

    if(!IsPlayerConnected(GiveID)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Jogador Offline!");
    if(!(PVip > 0 && PVip < 4)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Vip somente de 1-3!");
    if(!(PTDias > 0)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Dias maiores que 0!");
    new PTStr[33];
    new vip_Class[7];
    switch(PVip)
    {
        case 1: format(vip_Class, 7, "Bronze");
        case 2: format(vip_Class, 7, "Prata");
        case 3: format(vip_Class, 7, "Ouro");
    }
    format(PTStr, sizeof(PTStr), "[INFO] Vocк recebeu VIP %s por %d dias!!", vip_Class, PTDias);
    SendClientMessage(GiveID, 0x00FF00FF, PTStr);
    PTVip[GiveID][1] = gettime() + (PTDias*24*60*60);
    PTVip[GiveID][0] = PVip;
    return 1;
}
Reply
#5

Ainda da comando inexistente e com as sequintes warnings:
pawn Код:
C:\Users\1457mcl\Desktop\GMS + PAWNO\BCV\gamemodes\BSV.pwn(20299) : warning 219: local variable "tmp" shadows a variable at a preceding level
C:\Users\1457mcl\Desktop\GMS + PAWNO\BCV\gamemodes\BSV.pwn(20299) : warning 219: local variable "idx" shadows a variable at a preceding level
Pawn compiler 3.2.3664          Copyright (c) 1997-2006, ITB CompuPhase


2 Warnings.
Reply
#6

Arrumei:

pawn Код:
if(!strcmp(cmdtext, "/darvip", true)) {
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Vocк nгo й um Admin!");
    new GiveID, PVip, PTDias;
    tmp = strtok(cmd, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, 0xFFFFFFFF, "[USO] /darvip [id/nick] [Vip(1-Bronze, 2-Prata e 3-Ouro)] [Dias]");
    GiveID = strval(tmp);
    tmp = strtok(cmd, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, 0xFFFFFFFF, "[USO] /darvip [id/nick] [Vip(1-Bronze, 2-Prata e 3-Ouro)] [Dias]");
    PVip = strval(tmp);
    tmp = strtok(cmd, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, 0xFFFFFFFF, "[USO] /darvip [id/nick] [Vip(1-Bronze, 2-Prata e 3-Ouro)] [Dias]");
    PTDias = strval(tmp);

    if(!IsPlayerConnected(GiveID)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Jogador Offline!");
    if(!(PVip > 0 && PVip < 4)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Vip somente de 1-3!");
    if(!(PTDias > 0)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Dias maiores que 0!");
    new PTStr[33];
    new vip_Class[7];
    switch(PVip)
    {
        case 1: format(vip_Class, 7, "Bronze");
        case 2: format(vip_Class, 7, "Prata");
        case 3: format(vip_Class, 7, "Ouro");
    }
    format(PTStr, sizeof(PTStr), "[INFO] Vocк recebeu VIP %s por %d dias!!", vip_Class, PTDias);
    SendClientMessage(GiveID, 0x00FF00FF, PTStr);
    PTVip[GiveID][1] = gettime() + (PTDias*24*60*60);
    PTVip[GiveID][0] = PVip;
    return 1;
}
Reply
#7

Novamente comando inexistente, Vocк sabe o que pode estar errado? desde que comecei com servidores tentei fazer um sistema de vip em strcmp e salvamento em dini e nгo consegui =/
Reply
#8

Depende vocк nгo pode usar zcmd e comandos strcmp no mesmo code! Caso vocк estб usando os cуdigos strcmp serгo automaticamente anulados.
Reply
#9

Tudo do gm estб em strcmp =D e nгo uso nenhum fs
Reply
#10

Reformulei tenta dnv.

pawn Код:
if(!strcmp(cmdtext, "/darvip", true))
{
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Vocк nгo й um Admin!");
    new vip_Player, vip_PlayerClass, vip_Dias;
    new PTStr[33];
    new vip_Class[7];
   
    tmp = strtok(cmd, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, 0xFFFFFFFF, "[USO] /darvip [id/nick] [Vip(1-Bronze, 2-Prata e 3-Ouro)] [Dias]");
    vip_Player = strval(tmp);
    tmp = strtok(cmd, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, 0xFFFFFFFF, "[USO] /darvip [id/nick] [Vip(1-Bronze, 2-Prata e 3-Ouro)] [Dias]");
    vip_PlayerClass = strval(tmp);
    tmp = strtok(cmd, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, 0xFFFFFFFF, "[USO] /darvip [id/nick] [Vip(1-Bronze, 2-Prata e 3-Ouro)] [Dias]");
    vip_Dias = strval(tmp);

    if(!IsPlayerConnected(vip_Player)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Jogador Offline!");
    if(vip_PlayerClass < 0 || vip_PlayerClass > 3) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Vip somente de 1-3!");
    if(vip_Dias <= 0) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Dias maiores que 0!");
    switch(vip_PlayerClass)
    {
        case 1: format(vip_Class, 7, "Bronze");
        case 2: format(vip_Class, 7, "Prata");
        case 3: format(vip_Class, 7, "Ouro");
    }
    format(PTStr, sizeof(PTStr), "[INFO] Vocк recebeu VIP %s por %d dias!!", vip_Class, vip_Dias);
    SendClientMessage(vip_Player, 0x00FF00FF, PTStr);
    PTVip[vip_Player][1] = gettime() + (vip_Dias*24*60*60);
    PTVip[vip_Player][0] = vip_PlayerClass;
    return 1;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)