Waffen Drop System -> Ammu Bug

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
  • Hallo,
    wie die Überschrift schon sagt, kriege ich wenn ich eine Waffe Bsp Deagle aufhebe immer [10] Schuss Munition. Obwohl der Spieler Bsp 999 Schuss hat.
    Wo liegt daran der Fehler?


    new PICKUP_AMMOW[MAX_PLAYERS];


    OnPlayerDisconnect:
    PICKUP_MODELW[playerid] = 0;
    PICKUP_AMMOW[playerid] = 0;


    OnPlayerPickUpPickup:
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(pickupid == pickup[i])
    {
    DestroyPickup(pickup[i]);
    pickup[i] = 0;
    GivePlayerWeapon(playerid,PICKUP_MODELW[i],PICKUP_AMMOW[i]);
    PICKUP_MODELW[i] = 0;
    PICKUP_AMMOW[i] = 0;
    printf("Das Pickup %i (%i) wurde hier aufgehoben.",pickupid,pickup[i]);
    return 1;
    }
    }


    forward DropPlayerWeapons(playerid);
    public DropPlayerWeapons(playerid)
    {
    new Float:x,Float:y,Float:z,dpw_model[MAX_PLAYERS];
    dpw_model[playerid] = GetPlayerWeapon(playerid);
    GetPlayerPos(playerid,x,y,z);
    pickup[playerid] = CreatePickup(waffenarray[dpw_model[playerid]],3,x,y,z,-1);
    SetTimerEx("DeletePickup",DeleteTime*1000,false,"d",pickup[playerid]);
    //SetTimerEx("droppedweapons",3500,false,"ifffi",playerid,x,y,z,dpw_model[playerid]);
    return 1;
    }


    Würde mich um antworten freuen.


    Liebe Grüße,
    Soldier.

  • forward DropPlayerWeapons(playerid);
    public DropPlayerWeapons(playerid)
    {
    new Float:x,Float:y,Float:z,dpw_model[MAX_PLAYERS];
    dpw_model[playerid] = GetPlayerWeapon(playerid);
    GetPlayerPos(playerid,x,y,z);
    pickup[playerid] = CreatePickup(waffenarray[dpw_model[playerid]],3,x,y,z,-1);
    SetTimerEx("DeletePickup",DeleteTime*1000,false,"d",pickup[playerid]);
    //SetTimerEx("droppedweapons",3500,false,"ifffi",playerid,x,y,z,dpw_model[playerid]);
    return 1;
    }

  • Beim droppen:
    GetPlayerWeaponData(playerid,SLOT,PICKUP_MODELW[playerid],PICKUP_AMMOW[playerid]);


    Den Slot musst du ja nach weapon ID eintragen.


    Am besten du machst dir eine GetWeaponSlot Funktion, die nach weaponid den Slot ausgibt.


    Falls du das nicht hinbekommst sag Bescheid, dann mache ich dir das später.

  • Ich hatte das so gemacht:


    new waffenarray[] =
    {
    -1, // Schlagring
    331, // - Brass Knuckles
    333, // Golf Club
    334, // Night Stick
    335, // Knife
    336, // baseball bat
    337, // shovel
    338, // pool cue
    339, // katama
    341, // chainsaw
    321, // regular dildo
    322, // white dildo
    323, // Medium, white vibrator
    324, // smaill, silver vibrator
    325, // flowers
    326, // cane
    342, // grendade
    343, // tear gas
    344, // molotov
    -1, // RPG rocket - we can't pick up those, do we oO
    -1, // Heat-Seeking Rocket
    -1, // Hydra rocket
    346, // colt 45
    347, // colt 45 + silencer
    348, // deagle
    349, // shotgun
    350, // sawn-off
    351, // spaz
    352, // micro-uzi
    353, // mp5
    355, // ak47
    356, // m4
    372, // tec9
    357, // country rifle
    358, // sniper rifle
    359, // rocket launcher
    360, // heat-seeking rocket launcher
    361, // flamethrower
    362, // minigun
    363, // sachtel charges
    -1, // detonator
    365, // spray can
    366, // fire extinguisher
    367, // camera
    -1, // night-vision goggles
    -1, // heat-vision goggles
    371 // parachute
    };

  • Nein, du brauchst das hier:
    stock GetWeaponSlot(weaponid)
    {
    switch(weaponid)
    {
    case 0,1: return 0;
    case 2..9: return 1;
    case 22..24: return 2;
    case 25..27: return 3;
    case 28,29,32: return 4;
    case 30,31: return 5;
    case 33,34: return 6;
    case 35..38: return 7;
    case 16..18,39: return 8;
    case 41..43: return 9;
    case 10..15: return 10;
    case 44..46: return 11;
    case 40: return 12;
    default: return -1;
    }
    return -1;
    }



    Dann ersetzt du in der Zeile oben von mir SLOT mit
    GetWeaponSlot(PICKUP_MODELW[playerid]).

  • Stimmt das so?
    GetPlayerWeaponData(playerid,GetWeaponSlot(PICKUP_MODELW[playerid]),PICKUP_MODELW[playerid],PICKUP_AMMOW[playerid]);


    Kriege den Error, das GetWeaponSlot schon definiert ist.
    Er zeigt in diese Zeile:
    stock GetWeaponSlot(weaponid)


    Errors:


    C:\Users\Matze\Desktop\Server\WOS Script 2.0\gamemodes\Dark.pwn(51134) : error 025: function heading differs from prototype
    C:\Users\Matze\Desktop\Server\WOS Script 2.0\gamemodes\Dark.pwn(51135) : error 021: symbol already defined: "GetWeaponSlot"

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Wieso eigentlich 10 Schuss? Davon steht gar nichts in deinem Code. Schau mal nach ob du es irgendwo hart im Code stehen hast, dass du 10 Schuss bekommst.


    Wenn du nichts findest, poste nochmal den aktuellen Code vom droppen und den vom aufnehmen der Waffe, dann debuggen wir es mal.

  • Finde nichts..


    forward DropPlayerWeapons(playerid);
    public DropPlayerWeapons(playerid)
    {
    new Float:x,Float:y,Float:z,dpw_model[MAX_PLAYERS];
    dpw_model[playerid] = GetPlayerWeapon(playerid);
    GetPlayerPos(playerid,x,y,z);
    pickup[playerid] = CreatePickup(waffenarray[dpw_model[playerid]],3,x,y,z,-1);
    SetTimerEx("DeletePickup",DeleteTime*1000,false,"d",pickup[playerid]);
    GetPlayerWeaponData(playerid,GetWeaponSlot2(PICKUP_MODELW[playerid]),PICKUP_MODELW[playerid],PICKUP_AMMOW[playerid]);
    return 1;
    }


    Vom aufheben, hab ich nichts.
    Könnte es theoretisch auch an dies liegen?


    if(strcmp(cmd , "/createpickup", true) == 0)
    {
    new Float: X, Float: Y, Float: Z, world;
    GetPlayerPos(playerid, X, Y, Z);
    SetPlayerVirtualWorld(playerid,world);
    CreatePickup(346,1, X, Y, Z, world);
    return 1;
    }


    if(strcmp(cmd, "/createpickup", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Verwendung: /createpickup [Model] [Type]");
    SendClientMessage(playerid, COLOR_GRAD2, "Optionen: | 1240 - Heal | 1242 - Armor | 342 - Granaten | 348 - Deagle |");
    SendClientMessage(playerid, COLOR_GRAD2, "Optionen: | 349 - Shotgun | 350 - Sawnoff Shotgun | 355 - AK-47 | 356 - M4 |");
    SendClientMessage(playerid, COLOR_GRAD2, "Optionen: | 372 - Tec-9 | 357 - Rifle | 358 - Sniper");
    return 1;
    }
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(playerid, X,Y,Z);
    new model;
    model = strval(tmp);
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Verwendung: /createpickup [Model] [Type = 2]");
    SendClientMessage(playerid, COLOR_GRAD2, "Optionen: | 1240 - Heal | 1242 - Armor | 342 - Granaten | 348 - Deagle |");
    SendClientMessage(playerid, COLOR_GRAD2, "Optionen: | 349 - Shotgun | 350 - Sawnoff Shotgun | 355 - AK-47 | 356 - M4 |");
    SendClientMessage(playerid, COLOR_GRAD2, "Optionen: | 372 - Tec-9 | 357 - Rifle | 358 - Sniper");
    return 1;
    }
    new type;
    type = strval(tmp);
    if (PlayerInfo[playerid][pAdmin] >= 1337)
    {
    if((model >= 1210 && model <= 1325) && (model >= 321 && model <= 372)) { SendClientMessage(playerid, COLOR_GRAD2, "HINT: Only Models above 1210, and below 1325; above 321 and below 373 are allowed!"); return 1; }
    if(type == 2) { SendClientMessage(playerid, COLOR_GRAD2, "Info: Nur Type ID 3 ist erlaubt."); return 1; }
    CreateDynamicPickup(model, type, X,Y,Z);
    new y, m, d;
    new h,mi,s;
    getdate(y,m,d);
    gettime(h,mi,s);
    format(string,sizeof(string), "(%d/%d/%d)[%d:%d:%d] %s hat ein Pickup erstellt (X:%f Y:%f Z:%f) [Model: %d - Type: %d]",d,m,y,h,mi,s,sendername,X,Y,Z,model,type);
    SperreLog(string);
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Du darfst das nicht");
    }
    }
    return 1;
    }

  • Ah, sorry. Das habe ich dir falsch gesagt, ich habe deine Variablen verwechselt. :wacko:


    Es muss so sein:
    GetPlayerWeaponData(playerid,GetWeaponSlot2(dpw_model[playerid]),PICKUP_MODELW[playerid],PICKUP_AMMOW[playerid]);


    Dann sollte es klappen.

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()