SA-MP Forums Archive
[Ajuda] Armas no corpo bugado - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] Armas no corpo bugado (/showthread.php?tid=597118)



Armas no corpo bugado - druiida159 - 27.12.2015

Eu estou usando o sistema que o wil postou em um comentario mais o problema й o seguinte, quando eu uso o comando, todos que estгo no servidor tem a mesma arma que eu, acoplada ao corpo.
Como eu faзo somente para o jogador que usou o comando estar com o objeto?

Код:
#include <a_samp>
#include <zcmd>
#include <foreach>
 
new pWeaponHold[MAX_PLAYERS];

CMD:armac(playerid, params[])
{
        if(GetPlayerWeapon(playerid) == -1)
                return SendClientMessage(playerid, 0xFF6347FF, "Vocк nгo possui nenhuma arma na mгo.");
       
        new gunname[128], string[128];
       
        if(!pWeaponHold[playerid])
        {
                if(GetPlayerWeapon(playerid) == 25 || GetPlayerWeapon(playerid) == 27 || GetPlayerWeapon(playerid) == 29 || GetPlayerWeapon(playerid) == 30 || GetPlayerWeapon(playerid) == 31 || GetPlayerWeapon(playerid) == 33 || GetPlayerWeapon(playerid) == 34)
                {
                        if(!pWeaponHold[playerid])
                        {
                        pWeaponHold[playerid] = GetPlayerWeapon(playerid);
                        GetWeaponName(GetPlayerWeapon(playerid), gunname, sizeof(gunname));
                        format(string, sizeof(string),"SERVIDOR: A sua %s foi acoplada ao seu corpo!",gunname);
                        SendClientMessage(playerid, 0xFFFF00FF, string);
                                return 1;
                        }
                        else
                        {
                        GetWeaponName(pWeaponHold[playerid], gunname, sizeof(gunname));
                        RemovePlayerAttachedObject(playerid, 4);
                        format(string, sizeof(string),"SERVIDOR: A sua %s foi desacoplada do seu corpo!",gunname);
                                SendClientMessage(playerid, 0xFFFF00FF, string);
                                pWeaponHold[playerid] = 0;
                        }
                }
                else
                {
                SendClientMessage(playerid, 0xFF6347FF, "Esta arma nгo pode ser acoplada a seu corpo.");
                }
        }
        else
        {
            RemovePlayerAttachedObject(playerid, 4);
            format(string, sizeof(string),"SERVIDOR: A arma em seu corpo foi desacoplada!");
                SendClientMessage(playerid, 0xFFFF00FF, string);
                pWeaponHold[playerid] = 0;
        }
        return 1;
}

stock RemoveWeaponHold(playerid, weaponid)
{
    if(weaponid == pWeaponHold[playerid])
        {
                RemovePlayerAttachedObject(playerid, 4);
                pWeaponHold[playerid] = 0;
        }
        return 1;
}
 
public OnGameModeInit()
{
        SetTimer("CheckArmaC", 1000, true);//1s
        return 1;
}
forward CheckArmaC(playerid);
public CheckArmaC(playerid)
{
        foreach (new i : Player)
        {
                if(pWeaponHold[playerid])
                {
                        new weapon;
                        switch(pWeaponHold[playerid])
                        {
                        case 22: weapon = 346;
                        case 23: weapon = 347;
                        case 24: weapon = 348;
                        case 25: weapon = 349;
                        case 27: weapon = 351;
                        case 29: weapon = 353;
                        case 30: weapon = 355;
                        case 31: weapon = 356;
                        }
                    if(GetPlayerWeapon(i) != pWeaponHold[playerid])
                    {
                        switch(pWeaponHold[playerid])
                                {
                                        case 25:
                                        {
                                        SetPlayerAttachedObject(i, 4, weapon, 1, 0.2049, 0.2430, -0.1359, -176.0000, 160.1999,6.5998);
                                        }
                                        case 27,29,30,31,33,34:
                                        {
                                        SetPlayerAttachedObject(i, 4, weapon, 1, 0.1298, 0.2230, -0.1500, 5.0998, 23.8999, -177.4998);
                                        }
                                }
                    }
                    else
                    {
                RemovePlayerAttachedObject(i, 4);
                        }
                }
        }
	return 1;
}



Re: Armas no corpo bugado - EditPawn - 27.12.2015

Adicione a funзгo GetModelHold e troque sua ultima callback por essa:

PHP код:
GetModelHold(playerid) {
    new 
weapon;
    switch(
pWeaponHold[playerid])
    {
        case 
22: weapon = 346;
        case 
23: weapon = 347;
        case 
24: weapon = 348;
        case 
25: weapon = 349;
        case 
27: weapon = 351;
        case 
29: weapon = 353;
        case 
30: weapon = 355;
        case 
31: weapon = 356;
    }
    return 
weapon;  
}
forward CheckArmaC();
public 
CheckArmaC()
{
    foreach(new 
i: Player)
    {
        if(
pWeaponHold[i] && GetPlayerWeapon(i) != pWeaponHold[i])
        {
            switch(
pWeaponHold[i])
            {
                case 
25: SetPlayerAttachedObject(i, 4, GetModelHold(i), 1, 0.2049, 0.2430, -0.1359, -176.0000, 160.1999, 6.5998);
                case 
27, 29, 30, 31, 33, 34: SetPlayerAttachedObject(i, 4, GetModelHold(i), 1, 0.1298, 0.2230, -0.1500, 5.0998, 23.8999, -177.4998);
            }
        }
        else 
RemovePlayerAttachedObject(i, 4);
    }
    return 
1;
} 



Re: Armas no corpo bugado - druiida159 - 27.12.2015

Obrigado, funcionou !