Bei kleinem Fall Stirbt man

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.


    Hier mein CODE:



    public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
    {
    new Float:Armour;
    GetPlayerArmour(playerid, Armour);
    if(Armour >= 1)
    {


    }
    else if(GetPlayerTeam(playerid) == TEAM_RED && GetPlayerTeam(issuerid) == TEAM_BLUE && GetPlayerWeapon(issuerid) == 0 || 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 10 || 11 || 12 || 13 || 14 || 15 || 16 || 17 || 18 || 19 || 20 || 21 || 22 || 23 || 24 || 25 || 26 || 27 || 28 || 29 || 30 || 31 || 32 || 33 || 34 )
    {
    SetPlayerHealth(playerid, 0);
    }
    return 1;
    }




    Wenn man fällt verliert man das Ganze Leben das soll aber nicht passieren kann mir wer helfen pls ?


    Bin noch neu

  • So wie du die if-Abfrage gemacht hast stirbt man IMMER wenn OnPlayerTakeDamage aufgerufen wird und man keine Rüstung hat.


    Du musst vor jeder WaffenID GetPlayerWeapon(issuerid) == schreiben. Hier darf man das || ( oder ) nicht wörtlich übersetzten. Also nicht GetPlayerWeapon == 4 oder 5 oder 6 ...
    Hier wird nähmlich einfach nur geschaut ob irgentetwas zwischen den "Oderzeichen" zutrifft. Und wenn da nur eine Zahl steht kann das halt nie falsch sein. Deswegen führt er immer das SetPlayerHealth aus.


    Ausserdem würde ich das noch in 2 Abfragen trennen.


    else if(GetPlayerTeam(playerid) == TEAM_RED && GetPlayerTeam(issuerid) == TEAM_BLUE)
    {
    if(GetPlayerWeapon(issuerid) == 0 || GetPlayerWeapon(issuerid) == 1 || GetPlayerWeapon(issuerid) == 2 || ....)
    {
    SetPlayerHealth(playerid, 0);
    }
    }

  • Danke erstmal :>


    Habs jetzt so gemacht:



    public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
    {
    new Float:Armour;
    GetPlayerArmour(playerid, Armour);
    if(Armour >= 1)
    {


    }
    else if(GetPlayerTeam(playerid) == TEAM_RED && GetPlayerTeam(issuerid) == TEAM_BLUE)
    {
    if(GetPlayerWeapon(issuerid) == 0 || GetPlayerWeapon(issuerid) == 1 || GetPlayerWeapon(issuerid) == 2 || GetPlayerWeapon(issuerid) == 3 || GetPlayerWeapon(issuerid) == 4 || GetPlayerWeapon(issuerid) == 5 || GetPlayerWeapon(issuerid) == 6 || GetPlayerWeapon(issuerid) == 7 || GetPlayerWeapon(issuerid) == 8 || GetPlayerWeapon(issuerid) == 9 || GetPlayerWeapon(issuerid) == 10)
    if(GetPlayerWeapon(issuerid) == 12 || GetPlayerWeapon(issuerid) == 13 || GetPlayerWeapon(issuerid) == 14 || GetPlayerWeapon(issuerid) == 15 || GetPlayerWeapon(issuerid) == 16 || GetPlayerWeapon(issuerid) == 17 || GetPlayerWeapon(issuerid) == 18 || GetPlayerWeapon(issuerid) == 19 || GetPlayerWeapon(issuerid) == 20)
    if(GetPlayerWeapon(issuerid) == 21 || GetPlayerWeapon(issuerid) == 22 || GetPlayerWeapon(issuerid) == 23 || GetPlayerWeapon(issuerid) == 24 || GetPlayerWeapon(issuerid) == 25 || GetPlayerWeapon(issuerid) == 26 || GetPlayerWeapon(issuerid) == 27 || GetPlayerWeapon(issuerid) == 28 || GetPlayerWeapon(issuerid) == 29 || GetPlayerWeapon(issuerid) == 30 || GetPlayerWeapon(issuerid) == 31 || GetPlayerWeapon(issuerid) == 32 || GetPlayerWeapon(issuerid) == 33 || GetPlayerWeapon(issuerid) == 34)
    {
    SetPlayerHealth(playerid, 0);
    }
    }
    return 1;
    }



    Geht das so ?
    Hab 0.3d könnte jemand pls testen evll?


    Server: 77.190.198.134:7777

  • Wieso teilste das jetzt in 3 Zeilen auf?
    Lass es doch einfach in einer.


    new waffe = GetPlayerWeapon(playerid);
    if(waffe == 1 || waffe == 2 || waffe == 3 ||...


    Hat schon einer in deinem anderen Thread vorgeschlagen. Dann wird die Zeile auch nicht solang.


    public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
    {
    new Float:Armour;
    GetPlayerArmour(playerid, Armour);
    if(Armour >= 1)
    {


    }
    else if(GetPlayerTeam(playerid) == TEAM_RED && GetPlayerTeam(issuerid) == TEAM_BLUE)
    {
    new waffe = GetPlayerWeapon(issuerid);
    if(waffe == 1 || waffe == 2 || ... )
    {
    SetPlayerHealth(playerid, 0);
    }
    }
    return 1;
    }