Waffen Pickup - Ammo angeben

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hi,


    ich hab jetzt ein kleines DM erstellt, in dem einige Waffen-Pickups rumliegen.


    new BF_Weapon[7];


    public OnGameModeInit()
    {
    BF_Weapon[0] = CreateDynamicPickup(342, 3, 120.5242, 1934.8777, 22.7578, 7, -1, -1, 100.0); //Grenade
    BF_Weapon[1] = CreateDynamicPickup(342, 3, 279.4142, 1829.5718, 21.4766, 7, -1, -1, 100.0); //Grenade
    }


    //CMD zum Beitritt in das DM
    GivePlayerWeapon(playerid, Weapons[16][0], 5); //Grenade


    //Und unter OnPlayerSpawn auch dasselbe
    GivePlayerWeapon(playerid, Weapons[16][0], 5); //Grenade


    Nun gibt er mir aber komischerweise immer 7 Granaten auf die Hand (5 von Spawn ab + 7 im Pickup = 13), obwohl ich unter GivePlayerWeapon nur 5 Granaten angegeben habe.
    Wenn ich folgendes mache...


    public OnPlayerPickUpDynamicPickup(playerid, pickupid)
    {
    if(pickupid == BF_Weapon[0]) return GivePlayerWeapon(playerid, Weapons[16][0], 5); //Grenade

    ... dann werden weitere 5 Granaten drauf gelegt (13 + 5 = 18).


    Weiß jemand weiter? Gibt es vllt eine default Ammo-Menge für jedes Waffen-Pickup? Wenn ja, wie kann man die umgehen?


    Danke im Voraus!


    MfG, Many

  • Dadurch dass du Pickup Type 3 verwendest (Pickupable, respawns after death), bekommst du 7 Granaten vom Server standardmäßig (pickupable).


    Was du machen kannst:
    Pickup Tye zu 1 ändern (kann nicht aufgenommen werden, wird immer angezeigt).
    Und dann per Spieler Array abfragen, ob er es bereits aufgenommen hat:


    Oben im GM:
    new PickedUp[MAX_PLAYERS];


    public OnPlayerPickUpDynamicPickup(playerid, pickupid)
    {
    if(pickupid == BF_Weapon[0] && PickedUp[playerid] == 0)
    {
    PickedUp[playerid] = 1;
    return GivePlayerWeapon(playerid, Weapons[16][0], 5); //Grenade
    }
    }


    OnPlayerSpawn:
    PickedUp[playerid] = 0;

  • Yup.


    stock RemovePlayerAmmo(playerid, weaponid, ammo) //©Jeffry
    {
    new w = GetPlayerWeapon(playerid);
    new plyWeapons[12];
    new plyAmmo[12];


    for(new slot = 0; slot != 12; slot++)
    {
    GetPlayerWeaponData(playerid, slot, plyWeapons[slot], plyAmmo[slot]);
    if(plyWeapons[slot] == weaponid) plyAmmo[slot]-=ammo;
    }
    ResetPlayerWeapons(playerid);
    for(new slot = 0; slot != 12; slot++)
    {
    GivePlayerWeapon(playerid, plyWeapons[slot], plyAmmo[slot]);
    }
    SetPlayerArmedWeapon(playerid, w);
    return 1;
    }


    Zu benutzen:
    RemovePlayerAmmo(playerid, 16, 2); //Zwei Granaten weniger.