SA-MP Forums Archive
Weapon spread out. - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: Weapon spread out. (/showthread.php?tid=396042)



Weapon spread out. - Mikkel_RE - 29.11.2012

I made that when a player dies, he will drop all his weapons, but when they drop they lay above each other, can you help me to make them spread out or something?

This is my code:
pawn Код:
new Float:X,Float:Y,Float:Z;
    GetPlayerPos(playerid, X, Y, Z);
    new weaponID[13], weaponammo[13], rpos[4];
    rpos[0] = random(7),rpos[1] = random(7),rpos[2] = random(2),rpos[3] = random(2);
    for(new i = 0; i < 13; i++)
    {
        if(rpos[3] == 0 && rpos[2] == 0)
        {
            GetPlayerWeaponData(playerid, i, weaponID[i], weaponammo[i]);
            DropWeapons(weaponID[i], weaponammo[i], X + rpos[0], Y + rpos[1], Z, GetPlayerVirtualWorld(playerid), playerid);
        }
        if(rpos[3] == 0 && rpos[2] == 1)
        {
            GetPlayerWeaponData(playerid, i, weaponID[i], weaponammo[i]);
            DropWeapons(weaponID[i], weaponammo[i], X - rpos[0], Y + rpos[1], Z, GetPlayerVirtualWorld(playerid), playerid);
        }
        if(rpos[3] == 1 && rpos[2] == 0)
        {
            GetPlayerWeaponData(playerid, i, weaponID[i], weaponammo[i]);
            DropWeapons(weaponID[i], weaponammo[i], X + rpos[0], Y - rpos[1], Z, GetPlayerVirtualWorld(playerid), playerid);
        }
        if(rpos[3] == 1 && rpos[2] == 1)
        {
            GetPlayerWeaponData(playerid, i, weaponID[i], weaponammo[i]);
            DropWeapons(weaponID[i], weaponammo[i], X - rpos[0], Y - rpos[1], Z, GetPlayerVirtualWorld(playerid), playerid);
        }
        printf("%d,%d,%f,%d,%f,%d,%f,%d,%d",weaponID[i], weaponammo[i], X, rpos[0], Y, rpos[1], Z, GetPlayerVirtualWorld(playerid), playerid);
    }
pawn Код:
stock DropWeapons(gunID,gunAmmo,Float:X,Float:Y,Float:Z,world,playerid)
{
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    if(IsBadGun(gunID)) { return 1; }
    if(gunID != 0 && gunAmmo != 0)
    {
        for(new i = 0; i < sizeof(DropInfo); i++)
        {
            if(DropInfo[i][dx] == 0.0 && DropInfo[i][dy] == 0.0 && DropInfo[i][dz] == 0.0)
            {
                DropInfo[i][dType] = 1;
                DropInfo[i][dAmount][0] = gunID;
                DropInfo[i][dAmount][1] = gunAmmo;
                DropInfo[i][dx] = X;
                DropInfo[i][dy] = Y;
                DropInfo[i][dz] = Z;
                DropInfo[i][dWorld] = world;
                strcpy(DropInfo[i][dPlayerName],name,MAX_PLAYER_NAME);
                DropObject[i] = CreateObject(gh_GetObjectID(gunID), X, Y, Z-1,93.7,120.0,120.0, world);
                return 1;
            }
        }
        return 1;
    }
    return 1;
}
And this in the debug print
Код:
[14:39:44] [command] [Mikkel_Reimer]: /kill
[14:39:44] 0,0,1819.057739,3,-1840.432617,0,13.414062,0,0
[14:39:44] 0,0,1819.057739,3,-1840.432617,0,13.414062,0,0
[14:39:44] 23,32767,1819.057739,3,-1840.432617,0,13.414062,0,0
[14:39:44] 27,32767,1819.057739,3,-1840.432617,0,13.414062,0,0
[14:39:44] 0,0,1819.057739,3,-1840.432617,0,13.414062,0,0
[14:39:44] 31,32767,1819.057739,3,-1840.432617,0,13.414062,0,0
[14:39:44] 34,32767,1819.057739,3,-1840.432617,0,13.414062,0,0
[14:39:44] 0,0,1819.057739,3,-1840.432617,0,13.414062,0,0
[14:39:44] 0,0,1819.057739,3,-1840.432617,0,13.414062,0,0
[14:39:44] 0,0,1819.057739,3,-1840.432617,0,13.414062,0,0
[14:39:44] 0,0,1819.057739,3,-1840.432617,0,13.414062,0,0
[14:39:44] 0,0,1819.057739,3,-1840.432617,0,13.414062,0,0
[14:39:44] 0,0,1819.057739,3,-1840.432617,0,13.414062,0,0
[14:39:44] [death] Mikkel_Reimer died 255
They lay like this:


Re: Weapon spread out. - GiamPy. - 29.11.2012

Can you show us the value of the debug print when a weapon is dropped?


Re: Weapon spread out. - Mikkel_RE - 29.11.2012

I get this in the debug print

Код:
[14:39:44] [command] [Mikkel_Reimer]: /kill
[14:39:44] 0,0,1819.057739,3,-1840.432617,0,13.414062,0,0
[14:39:44] 0,0,1819.057739,3,-1840.432617,0,13.414062,0,0
[14:39:44] 23,32767,1819.057739,3,-1840.432617,0,13.414062,0,0
[14:39:44] 27,32767,1819.057739,3,-1840.432617,0,13.414062,0,0
[14:39:44] 0,0,1819.057739,3,-1840.432617,0,13.414062,0,0
[14:39:44] 31,32767,1819.057739,3,-1840.432617,0,13.414062,0,0
[14:39:44] 34,32767,1819.057739,3,-1840.432617,0,13.414062,0,0
[14:39:44] 0,0,1819.057739,3,-1840.432617,0,13.414062,0,0
[14:39:44] 0,0,1819.057739,3,-1840.432617,0,13.414062,0,0
[14:39:44] 0,0,1819.057739,3,-1840.432617,0,13.414062,0,0
[14:39:44] 0,0,1819.057739,3,-1840.432617,0,13.414062,0,0
[14:39:44] 0,0,1819.057739,3,-1840.432617,0,13.414062,0,0
[14:39:44] 0,0,1819.057739,3,-1840.432617,0,13.414062,0,0
[14:39:44] [death] Mikkel_Reimer died 255



Re: Weapon spread out. - GiamPy. - 29.11.2012

The reason is because the random function is ran only once and then saved in a var.
Add the random function inside the cycle and then it should work


Re: Weapon spread out. - Mikkel_RE - 29.11.2012

Would you mind doing it for me?


Re: Weapon spread out. - GiamPy. - 29.11.2012

pawn Код:
new Float:X,Float:Y,Float:Z;
    GetPlayerPos(playerid, X, Y, Z);
    new weaponID[13], weaponammo[13], rpos[2];
    for(new i = 0; i < 13; i++)
    {
            rpos[0] = random(7), rpos[1] = random(7);
            GetPlayerWeaponData(playerid, i, weaponID[i], weaponammo[i]);
            DropWeapons(weaponID[i], weaponammo[i], X + rpos[0], Y + rpos[1], Z, GetPlayerVirtualWorld(playerid), playerid);
        printf("%d,%d,%f,%d,%f,%d,%f,%d,%d",weaponID[i], weaponammo[i], X, rpos[0], Y, rpos[1], Z, GetPlayerVirtualWorld(playerid), playerid);
    }
I am using my iPhone so it hasn't been easy! :P


Re: Weapon spread out. - Mikkel_RE - 29.11.2012

Oh shit! , but thanks alot, it works!