Headshots mit mehreren Waffen

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
  • public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart)
    {
    if(issuerid != INVALID_PLAYER_ID && weaponid == SNIPER_RIFLE || weaponid == COUNTRY_RIFLE || weaponid == DESERT_EAGLE && bodypart == BODY_PART_HEAD && GetPlayerVirtualWorld(playerid) == 0)
    {
    SetPlayerHealth(playerid, 0);
    GameTextForPlayer(playerid, "Headshot", 2000, 4);
    }
    return BP_OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart);
    }


    forward BP_OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart);
    #if defined _ALS_OnPlayerTakeDamage
    #undef OnPlayerTakeDamage
    #else
    #define _ALS_OnPlayerTakeDamage
    #endif
    #define OnPlayerTakeDamage BP_OnPlayerTakeDamage


    Soweit ich weiß ist "||" doch der Operator entsprechend "oder", nicht wahr? Jedoch zeigt er mir bei jedem Körperteil einen Headshot an. Soweit ich mich entsinne bringt ein "&&" Operator in der Hinsicht auch nichts...

  • Du benutzt die Operatoren ein wenig falsch bzw. du denkst sie dir falsch^^ Ich übersetze dir deine Abfrage mal auf "Deutsch":
    if(issuerid != INVALID_PLAYER_ID && weaponid == SNIPER_RIFLE || weaponid == COUNTRY_RIFLE || weaponid == DESERT_EAGLE && bodypart == BODY_PART_HEAD && GetPlayerVirtualWorld(playerid) == 0)


    Zitat

    Führe den weiteren Code aus wenn eine der folgenden Bedingungen eintreten:
    1. (issuerid != INVALID_PLAYER_ID) & weaponid == SNIPER_RIFLE
    2. weaponid == COUNTRY_RIFLE
    3. weaponid == DESERT_EAGLE & bodypart == BODY_PART_HEAD & GetPlayerVirtualWorld(playerid) == 0

  • Also setzt der Oder Operator eine neue Bedingung?


    Wie steht es dann eig, wenn ich alle von || betroffenen Sachen in Klammern mache?
    if(issuerid != INVALID_PLAYER_ID && (weaponid == SNIPER_RIFLE || weaponid == COUNTRY_RIFLE) && bodypart == BODY_PART_HEAD && GetPlayerVirtualWorld(playerid) == 0)

  • public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart)
    {
    if(issuerid != INVALID_PLAYER_ID) { // einzeln abfragen macht es leichter
    if(weaponid == SNIPER_RIFLE || weaponid == COUNTRY_RIFLE || weaponid == DESERT_EAGLE)
    {
    if(bodypart == BODY_PART_HEAD && GetPlayerVirtualWorld(playerid) == 0)
    {
    SetPlayerHealth(playerid, 0);
    GameTextForPlayer(playerid, "Headshot", 2000, 4);
    }
    }
    }
    return BP_OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart);
    }
    Das sollte so gehen.. du hast die Abfragen zusammen gemixt.. man brauch bei deinem ersten Post z.B. eine Deagle um einen headshot zu machen während man in der Virtuellen Welt 0 ist.


    Nun gut.. gut im erklären bin ich nicht so ^^ Sonst darf das jemand anders übernehmen