Problem mit Waffen / Nachladen

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
  • Hey,
    habe eine Animation gemacht, wo der Spieler nachlädt, um die Nachladezeit ein wenig zu erhöhen.
    Jedoch, wenn ich jetzt z.B. nach vorne gehe, und dann nachladen muss, dann geht der Spieler wegen der Animation automatisch weiter.
    Kann man das irgendwie ändern, dass der Spieler dann normal stehen bleibt, wenn er sich gerade bewegt und er nachladen muss?


    Hier noch mal in nem Video:

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.


    //
    Außerdem versuche ich, wenn ich mein eigenes Nachladen dem Spieler setze, dass er als Waffe nur die Faust hat und danach seine Waffe wieder bekommt, damit die Schüsse im Magazin wieder voll sind.. Das klappt leider auch nicht ;)
    stock Nachladen(playerid,weaponid){
    new time;
    switch(weaponid){
    case 22..24,26..32,37,38,41,42:time = 3; // Nachladezeit
    default:time = 1; //Nachladezeit
    }
    SetPlayerAmmo(playerid,weaponid,5000);
    SetTimerEx("_nl",700,false,"iii",playerid,time,weaponid); // Habe den Timer schon verschiedenhoch gesetzt, klappt iwi nicht :P
    return SetPlayerArmedWeapon(playerid,0);//Faust
    }
    //Armed Weapon auf 0, damit der Spieler nicht standart nachlädt
    //Armed Weapon auf die richtige Gun -> nachladen
    pub _nl(playerid,time,weaponid){
    SetPlayerArmedWeapon(playerid,weaponid);
    s_waffe[playerid][GetPlayerWeapon(playerid)][1] = GunAmmo(GetPlayerWeapon(playerid)), //Munition im Magazin voll
    s_waffe[playerid][GetPlayerWeapon(playerid)][0] -= GunAmmo(GetPlayerWeapon(playerid)); // Komplette Munition
    return ApplyAnimation(playerid,"BUDDY","buddy_reload",1.0,0,1,1,0,888*time,1); // Hier die Animation, damit der Spieler nachlädt
    }
    Also alles klappt, bis auf das mit ArmedWeapon usw..
    -> Möchte halt, dass der Spieler nie wieder standart nachlädt..


    Hoffe ihr könnt mir helfen ;)

  • Auf Anfrage in PN:


    Poste mal den ganzen dazugehörigen Code, um dir helfen zu können muss ich das selbst testen. Mit dem Code alleine wird das hier nur zur Raterei und das hat keinen Sinn.
    Außerdem bitte ich dich, ganz genau zu beschreiben was wann und wie passieren soll.




    EDIT:
    An Post unten:
    ErikSon: Den Code hättest du nicht kommentieren brauchen, den verstehe ich auch so. :D Mir fehlt die Beschreibung wie es aussehen soll, du hast gerade nur beschrieben wie es aussieht.


    EDIT2:
    ErikSon: Passt so, hab das Prinzip verstanden. Sobald ich Zeit habe schaue ich es mir an.



    EDIT3: Problem von Thread-Starter behoben.

    3HZXdYd.png

    3 Mal editiert, zuletzt von Jeffry ()

  • Ich hoffe, es ist wenigstens verständlich erklärt..


    new s_waffe[MAX_PLAYERS][46][2];


    public GivePlayerWeaponEx(playerid,Gun,Muni){
    s_waffe[playerid][Gun][0] = Muni - GunAmmo(Gun), // Hier wird dem Spieler die Munition und die Waffe zugewiesen, dabei wird von der Munition die "Munition im Magazin" abgezogen.
    s_waffe[playerid][Gun][1] = GunAmmo(Gun); // Hier wird das Magazin der Waffe vollgesetzt
    return GivePlayerWeapon(playerid,Gun,5000); // Hier wird dem Spieler die Waffe mit 5000 Schuss gegeben. Die 5000 Schuss sind egal, da die Munition ja Serverside gespeichert wurde
    }


    public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
    {
    s_waffe[playerid][weaponid][1] --; // Hier wird der Waffe ein Schuss abgezogen
    if(s_waffe[playerid][weaponid][0] <= 0 && s_waffe[playerid][weaponid][1] <= 0)RemovePlayerWeapon(playerid,weaponid); // Hier wird nachgefragt, ob die Waffe noch Munition (im Magazin) hat, wenn nicht, wird die Waffe entzogen.
    else if(s_waffe[playerid][weaponid][1] <= 0)Nachladen(playerid,weaponid); // Hier wird abgefragt, ob die Waffe noch Munition im Magazin hat, wenn nicht, dann wird nachgeladen.
    }


    stock Nachladen(playerid,weaponid){
    new time;
    switch(weaponid){
    case 22..24,26..32,37,38,41,42:time = 3;// Hier wird die Nachladezeit in die Variable gesetzt
    default:time = 1; // Hier wird die Nachladezeit in die Variable gesetzt
    }
    SetPlayerAmmo(playerid,weaponid,5000); //Hier wird die Munition wieder auf 5000 gesetzt, da es ja eig egal ist, da die Muni Serverside gespeichert wird
    SetPlayerArmedWeapon(playerid,0),SetPlayerArmedWeapon(playerid,weaponid); // Hier wird seine ausgerüstete Waffe zur Faust, und dann wieder zu der richtigen Waffe gesetzt ( das klappt leider nicht )
    return SetTimerEx("_nl",200,false,"iii",playerid,time,weaponid);
    }
    pub _nl(playerid,time,weaponid){
    s_waffe[playerid][GetPlayerWeapon(playerid)][1] = GunAmmo(GetPlayerWeapon(playerid)), // Hier wird das Magazin wieder vollgesetzt
    s_waffe[playerid][GetPlayerWeapon(playerid)][0] -= GunAmmo(GetPlayerWeapon(playerid)); // Hier werden die Schüsse der Waffe um die Anzahl der Magazin-Schüsse "verkleinert"
    return ApplyAnimation(playerid,"BUDDY","buddy_reload",1.0,0,1,1,0,888*time,1); // Hier wird die Animation "nachladen" für die bestimmte Nachlade-Zeit abgespielt.
    }


    stock GunAmmo(weaponid){ // Hier werden die Anzahl der Schüsse im Magazin festgelegt
    new muni;
    switch(weaponid){
    case 22:muni = 34;
    case 23:muni = 17;
    case 24:muni = 7;
    case 26:muni = 2;
    case 27:muni = 7;
    case 28:muni = 100;
    case 29:muni = 30;
    case 30:muni = 30;
    case 31:muni = 50;
    case 32:muni = 100;
    case 37:muni = 100;
    case 38:muni = 500;
    case 41:muni = 200;
    case 42:muni = 100;
    default:muni = 1;
    }
    return muni;
    }


    stock FireWeapon(weaponid){ // Schusswaffen
    switch(weaponid){
    case 16..18:return 1;
    case 22..39:return 1;
    default:return 0;
    }
    return 1;
    }
    Probleme sind:
    1. Bei der Animation geht der Spieler gerade aus und ladet nach ( siehe Video )
    2. Wenn ich jetzt nachladen muss ( mit den Servervariablen ), dann wird die ausgerüstete Waffe nicht zur Faust gesetzt.. ( Das ist dafür da, damit der Spieler nicht "Standard" nachlädt. )


    Jeffry: Ohh, okay ;) | Naja, wie die Probleme schon sagen, ich will, dass der Spieler nicht Standard nachlädt, also, dass er sozusagen "unlimited Ammo" hat, aber durch meine Variablen wird er die Animation für das nachladen ausführen. ( Dafür brauche ich ja das "SetPlayerArmedWeapon", jedoch wird die "ausgerüstete" Waffe nicht zur Faust und dann wieder zu der richtigen Waffe gesetzt
    Außerdem ist es so, dass wenn der Spieler geht, schießt und dann nachladen muss, dann wird die Animation ausgeführt, aber der Spieler geht weiter.. Ich habe das schon mit freezen usw versucht, jedoch vergeblich ..


    -> Falls ich dir jetzt wieder falsche Informationen gegeben habe, tut es mir leid, wusste jetzt nicht genau, was du mit "aussehen" meintest, hoffe aber, es war das richtige ;)

    Mit freundlichen Grüßen
    ErikSon



    Scripte kleine Systeme auf Anfrage umsonst!
    Per PN könnt ihr mir gerne Scriptingfragen stellen.

    Einmal editiert, zuletzt von ErikSon ()