[Ajuda] Problemas com GetPlayerWeaponData
#1

Olб, eu estou com uns pequenos problemas com o GetPlayerWeaponData. Eu queria que quando alguйm fosse banido fosse criado um ficheiro com o nome dele e alguma informaзгo sobre ele e uma dessas infos й as armas. Em criar o ficehiro tб tudo bem, o problema й mesmo nas armas, aparece sempre tudo com 0, tipos slot o arma 0 ammo 0... Eu nгo consigo perceber o problema e nenhum dos meus amigos conseguiu ajudar-me, por isso se alguйm me conseguir ajudar tudo bem, mas se nгo tudo bem.

pawn Код:
CMD:ban(playerid, params[])
{
    if(PlayerInfo[playerid][Admin] < 1) return NotAdmin(playerid);
    new id, reason[64];
    if(sscanf(params, "us", id, reason))
    {
        SendClientMessage(playerid, c_green, "Usage: /ban [PLayerID/PartOfName] [Reason]");
        return 1;
    }
    new string[128];
    new Name[MAX_PLAYER_NAME], PlayerName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Name, sizeof(Name));
    GetPlayerName(id, PlayerName, sizeof(PlayerName));
    format(string, sizeof(string), "%s has been banned by administrator %s. Reason: %s.", PlayerName, Name, reason);
    SendClientMessageToAll(COLOR_RED, string);
    new file[128];
    format(file, sizeof(file), "RRP/BannedList/%s.ini", PlayerName);
    if(dini_Exists(file) == 0)
    {
        new weapons, ammo;
        for(new i = 0; i < 13; i++)
        {
            dini_Create(file);
            dini_Set(file, "Reason", reason);
            dini_Set(file, "Banner", Name);
            new pIP[16];
            GetPlayerIp(id, pIP, sizeof(pIP));
            dini_Set(file, "IP", pIP);
            new Float:x, Float:y, Float:z;
            dini_IntSet(file, "LastCar", PlayerInfo[id][LastCar]);
            GetPlayerPos(id, x, y, z);
            new pos[64];
            format(pos, sizeof(pos), "(%f, %f, %f)", x, y, z);
            dini_Set(file, "Position", pos);
            GetPlayerWeaponData(playerid, i, weapons, ammo);
            new slota[64];
            format(slota, sizeof(slota), "Slot(%i):Weapon(%i) / Ammo(%i)", i, weapons, ammo);
            dini_Set(file, "Weapons", slota);
            Ban(id);
            return 1;
        }
        return 1;
    }
    return 1;
}
Reply
#2

Vocк salva apenas em "Weapons"

Deveria ter algo como Weapons_0 , Weapons_1 , Weapons_2 etc
Reply
#3

Quote:
Originally Posted by Viniborn
Посмотреть сообщение
Vocк salva apenas em "Weapons"

Deveria ter algo como Weapons_0 , Weapons_1 , Weapons_2 etc
Entгo eu tentei assim:

pawn Код:
CMD:ban(playerid, params[])
{
    if(PlayerInfo[playerid][Admin] < 1) return NotAdmin(playerid);
    new id, reason[64];
    if(sscanf(params, "us", id, reason))
    {
        SendClientMessage(playerid, c_green, "Usage: /ban [PLayerID/PartOfName] [Reason]");
        return 1;
    }
    new string[128];
    new Name[MAX_PLAYER_NAME], PlayerName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Name, sizeof(Name));
    GetPlayerName(id, PlayerName, sizeof(PlayerName));
    format(string, sizeof(string), "%s has been banned by administrator %s. Reason: %s.", PlayerName, Name, reason);
    SendClientMessageToAll(COLOR_RED, string);
    new file[128];
    format(file, sizeof(file), "RRP/BannedList/%s.ini", PlayerName);
    if(dini_Exists(file) == 0)
    {
        new weapons, ammo;
        for(new i = 0; i < 13; i++)
        {
            dini_Create(file);
            dini_Set(file, "Reason", reason);
            dini_Set(file, "Banner", Name);
            new pIP[16];
            GetPlayerIp(id, pIP, sizeof(pIP));
            dini_Set(file, "IP", pIP);
            new Float:x, Float:y, Float:z;
            dini_IntSet(file, "LastCar", PlayerInfo[id][LastCar]);
            GetPlayerPos(id, x, y, z);
            new pos[64];
            format(pos, sizeof(pos), "(%f, %f, %f)", x, y, z);
            dini_Set(file, "Position", pos);
            GetPlayerWeaponData(playerid, i, weapons, ammo);
            new slota[64];
            if(i == 0)
            {
                format(slota, sizeof(slota), "Slot(%i):Weapon(%i) / Ammo(%i)", i, weapons, ammo);
                dini_Set(file, "Weapons0", slota);
            }
            if(i == 1)
            {
                format(slota, sizeof(slota), "Slot(%i):Weapon(%i) / Ammo(%i)", i, weapons, ammo);
                dini_Set(file, "Weapons1", slota);
            }
            if(i == 2)
            {
                format(slota, sizeof(slota), "Slot(%i):Weapon(%i) / Ammo(%i)", i, weapons, ammo);
                dini_Set(file, "Weapons2", slota);
            }
            if(i == 3)
            {
                format(slota, sizeof(slota), "Slot(%i):Weapon(%i) / Ammo(%i)", i, weapons, ammo);
                dini_Set(file, "Weapons3", slota);
            }
            if(i == 4)
            {
                format(slota, sizeof(slota), "Slot(%i):Weapon(%i) / Ammo(%i)", i, weapons, ammo);
                dini_Set(file, "Weapons4", slota);
            }
            if(i == 5)
            {
                format(slota, sizeof(slota), "Slot(%i):Weapon(%i) / Ammo(%i)", i, weapons, ammo);
                dini_Set(file, "Weapons5", slota);
            }
            if(i == 6)
            {
                format(slota, sizeof(slota), "Slot(%i):Weapon(%i) / Ammo(%i)", i, weapons, ammo);
                dini_Set(file, "Weapons6", slota);
            }
            if(i == 7)
            {
                format(slota, sizeof(slota), "Slot(%i):Weapon(%i) / Ammo(%i)", i, weapons, ammo);
                dini_Set(file, "Weapons7", slota);
            }
            if(i == 8)
            {
                format(slota, sizeof(slota), "Slot(%i):Weapon(%i) / Ammo(%i)", i, weapons, ammo);
                dini_Set(file, "Weapons8", slota);
            }
            if(i == 9)
            {
                format(slota, sizeof(slota), "Slot(%i):Weapon(%i) / Ammo(%i)", i, weapons, ammo);
                dini_Set(file, "Weapons9", slota);
            }
            if(i == 10)
            {
                format(slota, sizeof(slota), "Slot(%i):Weapon(%i) / Ammo(%i)", i, weapons, ammo);
                dini_Set(file, "Weapons10", slota);
            }
            if(i == 11)
            {
                format(slota, sizeof(slota), "Slot(%i):Weapon(%i) / Ammo(%i)", i, weapons, ammo);
                dini_Set(file, "Weapons11", slota);
            }
            if(i == 12)
            {
                format(slota, sizeof(slota), "Slot(%i):Weapon(%i) / Ammo(%i)", i, weapons, ammo);
                dini_Set(file, "Weapons12", slota);
            }
            Ban(id);
            return 1;
        }
        return 1;
    }
    return 1;
}
E continua igual, tudo a 0...
Reply
#4

tenta ae!
pawn Код:
CMD:ban(playerid, params[])
{
    if(PlayerInfo[playerid][Admin] < 1) return NotAdmin(playerid);
    new id, reason[64];
    if(sscanf(params, "us", id, reason))
    {
        SendClientMessage(playerid, c_green, "Usage: /ban [PLayerID/PartOfName] [Reason]");
        return 1;
    }
    new string[128];
    new slot;
    new Name[MAX_PLAYER_NAME], PlayerName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Name, sizeof(Name));
    GetPlayerName(id, PlayerName, sizeof(PlayerName));
    format(string, sizeof(string), "%s has been banned by administrator %s. Reason: %s.", PlayerName, Name, reason);
    SendClientMessageToAll(COLOR_RED, string);
    new file[128];
    format(file, sizeof(file), "RRP/BannedList/%s.ini", PlayerName);
    if(dini_Exists(file) == 0)
    {
        new weapons, ammo;
        for(new i = 0; i < 13; i++)
        {
            slot++;
            dini_Create(file);
            dini_Set(file, "Reason", reason);
            dini_Set(file, "Banner", Name);
           
            new pIP[16];
           
            GetPlayerIp(id, pIP, sizeof(pIP));
            dini_Set(file, "IP", pIP);
           
            new Float:x, Float:y, Float:z;
            dini_IntSet(file, "LastCar", PlayerInfo[id][LastCar]);
            GetPlayerPos(id, x, y, z);
           
            new pos[64];
            format(pos, sizeof(pos), "(%f, %f, %f)", x, y, z);
            dini_Set(file, "Position", pos);
           
            GetPlayerWeaponData(playerid, i, weapons, ammo);
           
            new slota[64];
            format(slota, sizeof(slota), "Slot(%i):Weapon(%i) / Ammo(%i)", slot, weapons, i);
            dini_Set(file, "Weapons", slota);
            Ban(id);
            return 1;
        }
        return 1;
    }
    return 1;
}
Reply
#5

Quote:
Originally Posted by mau.tito
Посмотреть сообщение
tenta ae!
pawn Код:
CMD:ban(playerid, params[])
{
    if(PlayerInfo[playerid][Admin] < 1) return NotAdmin(playerid);
    new id, reason[64];
    if(sscanf(params, "us", id, reason))
    {
        SendClientMessage(playerid, c_green, "Usage: /ban [PLayerID/PartOfName] [Reason]");
        return 1;
    }
    new string[128];
    new slot;
    new Name[MAX_PLAYER_NAME], PlayerName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Name, sizeof(Name));
    GetPlayerName(id, PlayerName, sizeof(PlayerName));
    format(string, sizeof(string), "%s has been banned by administrator %s. Reason: %s.", PlayerName, Name, reason);
    SendClientMessageToAll(COLOR_RED, string);
    new file[128];
    format(file, sizeof(file), "RRP/BannedList/%s.ini", PlayerName);
    if(dini_Exists(file) == 0)
    {
        new weapons, ammo;
        for(new i = 0; i < 13; i++)
        {
            slot++;
            dini_Create(file);
            dini_Set(file, "Reason", reason);
            dini_Set(file, "Banner", Name);
           
            new pIP[16];
           
            GetPlayerIp(id, pIP, sizeof(pIP));
            dini_Set(file, "IP", pIP);
           
            new Float:x, Float:y, Float:z;
            dini_IntSet(file, "LastCar", PlayerInfo[id][LastCar]);
            GetPlayerPos(id, x, y, z);
           
            new pos[64];
            format(pos, sizeof(pos), "(%f, %f, %f)", x, y, z);
            dini_Set(file, "Position", pos);
           
            GetPlayerWeaponData(playerid, i, weapons, ammo);
           
            new slota[64];
            format(slota, sizeof(slota), "Slot(%i):Weapon(%i) / Ammo(%i)", slot, weapons, i);
            dini_Set(file, "Weapons", slota);
            Ban(id);
            return 1;
        }
        return 1;
    }
    return 1;
}
Bem, isso mudou uma coisa, fez com que o "Slot(0)..." se torna-se num 1 mas os outros 2 continuam a 0...
Reply
#6

No Caso fiz uma mudanзa no seu codigo(q tava meio sem logica), no caso agora ele vai salvar as armas e tal em uma string diferente

ex:

Weapons0=Slot(1):Weapon(5) / Ammo(50)
Weapons1=Slot(2):Weapon(1) / Ammo(1)

e assim consecutivamente atй o slot final

o codigo estб abaixo espere que funcione (nao testei)

pawn Код:
CMD:ban(playerid, params[])
{
    if(PlayerInfo[playerid][Admin] < 1) return NotAdmin(playerid);
    new id, reason[64];
    if(sscanf(params, "us", id, reason))
    {
        SendClientMessage(playerid, c_green, "Usage: /ban [PLayerID/PartOfName] [Reason]");
        return 1;
    }
    new string[128];
    new slot;
    new Name[MAX_PLAYER_NAME], PlayerName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Name, sizeof(Name));
    GetPlayerName(id, PlayerName, sizeof(PlayerName));
    format(string, sizeof(string), "%s has been banned by administrator %s. Reason: %s.", PlayerName, Name, reason);
    SendClientMessageToAll(COLOR_RED, string);
    new file[128];
    format(file, sizeof(file), "RRP/BannedList/%s.ini", PlayerName);
    if(!dini_Exists(file))
    {
        new weapons, ammo,pIP[16],pos[64],Float:x, Float:y, Float:z,slota[64],str[128];
        dini_Create(file);
        dini_Set(file, "Reason", reason);
        dini_Set(file, "Banner", Name);
        GetPlayerIp(id, pIP, sizeof(pIP));
        dini_Set(file, "IP", pIP);
        dini_IntSet(file, "LastCar", PlayerInfo[id][LastCar]);
        GetPlayerPos(id, x, y, z);
        format(pos, sizeof(pos), "(%f, %f, %f)", x, y, z);
        dini_Set(file, "Position", pos);
        for(new i = 0; i < 13; i++)
        {
            GetPlayerWeaponData(playerid, i, weapons, ammo);
            format(slota, sizeof(slota), "Slot(%i):Weapon(%i) / Ammo(%i)", i, weapons, ammo);
            format(str,sizeof(str),"Weapons%d",i);
            dini_Set(file, str, slota);
            Ban(id);
        }
        return 1;
    }
    return 0;
}
Reply
#7

Quote:
Originally Posted by Designer Vibe02
Посмотреть сообщение
No Caso fiz uma mudanзa no seu codigo(q tava meio sem logica), no caso agora ele vai salvar as armas e tal em uma string diferente

ex:

Weapons0=Slot(1):Weapon(5) / Ammo(50)
Weapons1=Slot(2):Weapon(1) / Ammo(1)

e assim consecutivamente atй o slot final

o codigo estб abaixo espere que funcione (nao testei)

pawn Код:
CMD:ban(playerid, params[])
{
    if(PlayerInfo[playerid][Admin] < 1) return NotAdmin(playerid);
    new id, reason[64];
    if(sscanf(params, "us", id, reason))
    {
        SendClientMessage(playerid, c_green, "Usage: /ban [PLayerID/PartOfName] [Reason]");
        return 1;
    }
    new string[128];
    new slot;
    new Name[MAX_PLAYER_NAME], PlayerName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Name, sizeof(Name));
    GetPlayerName(id, PlayerName, sizeof(PlayerName));
    format(string, sizeof(string), "%s has been banned by administrator %s. Reason: %s.", PlayerName, Name, reason);
    SendClientMessageToAll(COLOR_RED, string);
    new file[128];
    format(file, sizeof(file), "RRP/BannedList/%s.ini", PlayerName);
    if(!dini_Exists(file))
    {
        new weapons, ammo,pIP[16],pos[64],Float:x, Float:y, Float:z,slota[64],str[128];
        dini_Create(file);
        dini_Set(file, "Reason", reason);
        dini_Set(file, "Banner", Name);
        GetPlayerIp(id, pIP, sizeof(pIP));
        dini_Set(file, "IP", pIP);
        dini_IntSet(file, "LastCar", PlayerInfo[id][LastCar]);
        GetPlayerPos(id, x, y, z);
        format(pos, sizeof(pos), "(%f, %f, %f)", x, y, z);
        dini_Set(file, "Position", pos);
        for(new i = 0; i < 13; i++)
        {
            GetPlayerWeaponData(playerid, i, weapons, ammo);
            format(slota, sizeof(slota), "Slot(%i):Weapon(%i) / Ammo(%i)", i, weapons, ammo);
            format(str,sizeof(str),"Weapons%d",i);
            dini_Set(file, str, slota);
            Ban(id);
        }
        return 1;
    }
    return 0;
}
Pois o cуdigo tava um bocado confuso, mas mesmo assim continua tudo com 0 : Weapons0=Slot(0):Weapon(0) / Ammo(0)

mais ideias?
Reply
#8

Acho que agora resolve, tenta ai

pawn Код:
CMD:ban(playerid, params[])
{
    if(PlayerInfo[playerid][Admin] < 1) return NotAdmin(playerid);
    new id, reason[64];
    if(sscanf(params, "us", id, reason))
    {
        SendClientMessage(playerid, c_green, "Usage: /ban [PLayerID/PartOfName] [Reason]");
        return 1;
    }
    new string[128];
    new slot;
    new Name[MAX_PLAYER_NAME], PlayerName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Name, sizeof(Name));
    GetPlayerName(id, PlayerName, sizeof(PlayerName));
    format(string, sizeof(string), "%s has been banned by administrator %s. Reason: %s.", PlayerName, Name, reason);
    SendClientMessageToAll(COLOR_RED, string);
    new file[128];
    format(file, sizeof(file), "RRP/BannedList/%s.ini", PlayerName);
    if(!dini_Exists(file))
    {
        new weapons[13][2], pIP[16],pos[64],Float:x, Float:y, Float:z,slota[64],str[128];
        dini_Create(file);
        dini_Set(file, "Reason", reason);
        dini_Set(file, "Banner", Name);
        GetPlayerIp(id, pIP, sizeof(pIP));
        dini_Set(file, "IP", pIP);
        dini_IntSet(file, "LastCar", PlayerInfo[id][LastCar]);
        GetPlayerPos(id, x, y, z);
        format(pos, sizeof(pos), "(%f, %f, %f)", x, y, z);
        dini_Set(file, "Position", pos);
        for(new i = 0; i < 13; i++)
        {
            GetPlayerWeaponData(playerid, i, weapons[i][0], weapons[i][1]);
            format(slota, sizeof(slota), "Slot(%i):Weapon(%i) / Ammo(%i)", i, weapons[i][0], weapons[i][1]);
            format(str,sizeof(str),"Weapons%d",i);
            dini_Set(file, str, slota);
        }
        Ban(id);
        return 1;
    }
    return 0;
}
Reply
#9

Nao, os 0s continuam lб...
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)