if Abfrage - Debugging

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
  • Irgendwie wird nichts geprintet. Ich setze die Variablen beide auf 0, wenn der Spieler dem Server beitritt, und die Abfrage lautet doch, ob der Wert zwischen -15 und 25 liegt.


    new PlayerMorale[MAX_PLAYERS];
    new PlayerMoraleSpree[MAX_PLAYERS];


    //OnPlayerConnect
    PlayerMorale[playerid] = 0;
    PlayerMoraleSpree[playerid] = 0;


    //OnPlayerDeath
    new w = GetPlayerVirtualWorld(playerid);
    switch(w)
    {
    case 0:
    {
    GetPlayerPos(playerid, GlobalX[playerid], GlobalY[playerid], GlobalZ[playerid]);
    GetPlayerFacingAngle(playerid, GlobalFA[playerid]);


    SavePlayerWeapons(playerid);
    ResetPlayerWeapons(playerid);


    Condition[playerid] = CONDITION_DOWNED;
    ClearAnimations(playerid);
    SetPlayerHealth(playerid, FLOAT_INFINITY);

    if(-15 < PlayerMoraleSpree[killerid] < 25)
    {
    PlayerMoraleSpree[killerid]++;
    printf("%d", PlayerMoraleSpree[killerid]);
    }
    if(-15 < PlayerMoraleSpree[playerid] < 25)
    {
    PlayerMoraleSpree[playerid]--;
    printf("%d", PlayerMoraleSpree[playerid]);
    }
    if(killerid == INVALID_PLAYER_ID)
    {
    PlayerMoraleSpree[playerid]--;
    printf("%d", PlayerMoraleSpree[playerid]);
    }
    }
    return 1;
    }

  • Es wird alles bis zur if-Abfrage aufgerufen. Die letzte Funktion, die ausgeführt wird, ist "SetPlayerHealth(playerid, FLOAT_INFINITY);".


    Edit: Es liegt an ClearAnimations(playerid);.
    Die Funktion bewirkt, dass OnPlayerSpawn sofort aufgerufen wird. Wenn ich sie beseitige, dann funktioniert alles, allerdings brauche ich sie drinnen. Und ich hab kp wohin.^^

    Einmal editiert, zuletzt von Manyula ()

  • Ich hab den Code jetzt mal angepasst. Hier ist der ganze Code.


    public OnPlayerDeath(playerid, killerid, reason)
    {
    new w = GetPlayerVirtualWorld(playerid);
    switch(w)
    {
    case 0:
    {
    //Downstate
    GetPlayerPos(playerid, GlobalX[playerid], GlobalY[playerid], GlobalZ[playerid]);
    GetPlayerFacingAngle(playerid, GlobalFA[playerid]);


    SavePlayerWeapons(playerid);
    ResetPlayerWeapons(playerid);


    Condition[playerid] = CONDITION_DOWNED;
    SetPlayerHealth(playerid, FLOAT_INFINITY);
    ClearAnimations(playerid); //Bis hier hin wird alles ausgeführt! ============================================================================


    //Morale
    if(PlayerMoraleSpree[killerid] > -15 && PlayerMoraleSpree[killerid] < 25)
    {
    if(killerid == INVALID_PLAYER_ID) PlayerMoraleSpree[playerid]--;
    else PlayerMoraleSpree[killerid]++;
    printf("killerid: %d", PlayerMoraleSpree[killerid]); //Wird nicht geprintet! ================================================================


    switch(PlayerMoraleSpree[killerid])
    {
    case -14..-5:
    {
    new
    spree[4];


    format(spree, sizeof(spree), "%d", PlayerMoraleSpree[killerid]);


    PlayerMorale[killerid] = -5;
    PlayerMoraleSpree[killerid] = -5;
    DamageModifier[killerid] = -1.01;
    HealthModifier[killerid] = -1.05;
    PlayerTextDrawSetString(killerid, TD_Morale[killerid][3], spree);
    PlayerTextDrawSetString(killerid, TD_Morale[killerid][2], "~d~");
    PlayerTextDrawSetString(killerid, TD_Morale[killerid][1], "~r~~h~-5%");
    PlayerTextDrawBoxColor(killerid, TD_Morale[killerid][0], C_RED);
    PlayerTextDrawShow(killerid, TD_Morale[killerid][0]);
    print("-14..-15"); //Wird nicht geprintet! ===================================================================================
    }
    case -4..-1:
    {
    new
    spree[4];


    format(spree, sizeof(spree), "%d", PlayerMoraleSpree[killerid]);


    PlayerMorale[killerid] = 0;
    PlayerMoraleSpree[killerid] = 0;
    DamageModifier[killerid] = 1.0;
    HealthModifier[killerid] = 1.0;
    PlayerTextDrawSetString(killerid, TD_Morale[killerid][3], spree);
    PlayerTextDrawSetString(killerid, TD_Morale[killerid][2], "~t~");
    PlayerTextDrawSetString(killerid, TD_Morale[killerid][1], "~w~0%");
    PlayerTextDrawBoxColor(killerid, TD_Morale[killerid][0], C_GREEN);
    PlayerTextDrawShow(killerid, TD_Morale[killerid][0]);
    print("-4..-1"); //Wird nicht geprintet! =====================================================================================
    }
    case 0..9:
    {
    new
    spree[4];


    format(spree, sizeof(spree), "%d", PlayerMoraleSpree[killerid]);


    PlayerMorale[killerid] = 0;
    DamageModifier[killerid] = 1.0;
    HealthModifier[killerid] = 1.0;
    PlayerTextDrawSetString(killerid, TD_Morale[killerid][3], spree);
    PlayerTextDrawSetString(killerid, TD_Morale[killerid][2], "~t~");
    PlayerTextDrawSetString(killerid, TD_Morale[killerid][1], "~w~0%");
    PlayerTextDrawBoxColor(killerid, TD_Morale[killerid][0], C_GREEN);
    PlayerTextDrawShow(killerid, TD_Morale[killerid][0]);
    print("0..9"); //Wird nicht geprintet! =======================================================================================
    }
    case 10..24:
    {
    new
    spree[4];


    format(spree, sizeof(spree), "%d", PlayerMoraleSpree[killerid]);


    PlayerMorale[killerid] = 5;
    DamageModifier[killerid] = 1.01;
    HealthModifier[killerid] = 1.05;
    PlayerTextDrawSetString(killerid, TD_Morale[killerid][3], spree);
    PlayerTextDrawSetString(killerid, TD_Morale[killerid][2], "~u~");
    PlayerTextDrawSetString(killerid, TD_Morale[killerid][1], "~b~~h~+5%");
    PlayerTextDrawBoxColor(killerid, TD_Morale[killerid][0], C_BLUE);
    PlayerTextDrawShow(killerid, TD_Morale[killerid][0]);
    print("10..24"); //Wird nicht geprintet! ==============================================================================
    }
    case 25:
    {
    new
    spree[4];


    format(spree, sizeof(spree), "%d", PlayerMoraleSpree[killerid]);


    PlayerMorale[killerid] = 10;
    DamageModifier[killerid] = 1.025;
    HealthModifier[killerid] = 1.10;
    PlayerTextDrawSetString(killerid, TD_Morale[killerid][3], spree);
    PlayerTextDrawSetString(killerid, TD_Morale[killerid][2], "~u~");
    PlayerTextDrawSetString(killerid, TD_Morale[killerid][1], "~b~+10%");
    PlayerTextDrawBoxColor(killerid, TD_Morale[killerid][0], C_BLUE);
    PlayerTextDrawShow(killerid, TD_Morale[killerid][0]);
    print("25"); //Wird nicht geprintet! ==================================================================================
    }
    }
    }
    if(PlayerMoraleSpree[playerid] > -15 && PlayerMoraleSpree[playerid] < 25)
    {
    PlayerMoraleSpree[playerid]--;
    printf("playerid: %d", PlayerMoraleSpree[playerid]); //Wird nicht geprintet! ==========================================================

    switch(PlayerMoraleSpree[playerid])
    {
    case -15:
    {
    new
    spree[4];


    format(spree, sizeof(spree), "%d", PlayerMoraleSpree[playerid]);


    PlayerMorale[playerid] = -10;
    DamageModifier[playerid] = 1.025;
    HealthModifier[playerid] = 1.10;
    PlayerTextDrawSetString(playerid, TD_Morale[playerid][3], spree);
    PlayerTextDrawSetString(playerid, TD_Morale[playerid][2], "~d~");
    PlayerTextDrawSetString(playerid, TD_Morale[playerid][1], "~r~-10%");
    PlayerTextDrawBoxColor(playerid, TD_Morale[playerid][0], C_RED);
    PlayerTextDrawShow(playerid, TD_Morale[playerid][0]);
    print("-15"); //Wird nicht geprintet! ===================================================================================
    }
    case -14..-5:
    {
    new
    spree[4];


    format(spree, sizeof(spree), "%d", PlayerMoraleSpree[playerid]);
    PlayerMorale[playerid] = -5;
    DamageModifier[playerid] = 1.01;
    HealthModifier[playerid] = 1.05;
    PlayerTextDrawSetString(playerid, TD_Morale[playerid][3], spree);
    PlayerTextDrawSetString(playerid, TD_Morale[playerid][2], "~d~");
    PlayerTextDrawSetString(playerid, TD_Morale[playerid][1], "~r~~h~-5%");
    PlayerTextDrawBoxColor(playerid, TD_Morale[playerid][0], C_RED);
    PlayerTextDrawShow(playerid, TD_Morale[playerid][0]);
    print("-14..-15"); //Wird nicht geprintet! ===============================================================================
    }
    case -4..-1:
    {
    new
    spree[4];


    format(spree, sizeof(spree), "%d", PlayerMoraleSpree[playerid]);


    PlayerMorale[playerid] = 0;
    DamageModifier[playerid] = 1.0;
    HealthModifier[playerid] = 1.0;
    PlayerTextDrawSetString(playerid, TD_Morale[playerid][3], spree);
    PlayerTextDrawSetString(playerid, TD_Morale[playerid][2], "~t~");
    PlayerTextDrawSetString(playerid, TD_Morale[playerid][1], "~w~0%");
    PlayerTextDrawBoxColor(playerid, TD_Morale[playerid][0], C_GREEN);
    PlayerTextDrawShow(playerid, TD_Morale[playerid][0]);
    print("-4..-1"); //Wird nicht geprintet! ===================================================================================
    }
    case 0..9:
    {
    new
    spree[4];


    format(spree, sizeof(spree), "%d", PlayerMoraleSpree[playerid]);


    PlayerMorale[playerid] = 0;
    PlayerMoraleSpree[playerid] = 0;
    DamageModifier[playerid] = 1.0;
    HealthModifier[playerid] = 1.0;
    PlayerTextDrawSetString(playerid, TD_Morale[playerid][3], spree);
    PlayerTextDrawSetString(playerid, TD_Morale[playerid][2], "~t~");
    PlayerTextDrawSetString(playerid, TD_Morale[playerid][1], "~w~0%");
    PlayerTextDrawBoxColor(playerid, TD_Morale[playerid][0], C_GREEN);
    PlayerTextDrawShow(playerid, TD_Morale[playerid][0]);
    print("0..9"); //Wird nicht geprintet! ===================================================================================
    }
    case 10..24:
    {
    new
    spree[4];


    format(spree, sizeof(spree), "%d", PlayerMoraleSpree[playerid]);


    PlayerMorale[playerid] = 5;
    PlayerMoraleSpree[playerid] = 10;
    DamageModifier[playerid] = 1.01;
    HealthModifier[playerid] = 1.05;
    PlayerTextDrawSetString(playerid, TD_Morale[playerid][3], spree);
    PlayerTextDrawSetString(playerid, TD_Morale[playerid][2], "~u~");
    PlayerTextDrawSetString(playerid, TD_Morale[playerid][1], "~b~~h~+5%");
    PlayerTextDrawBoxColor(playerid, TD_Morale[playerid][0], C_BLUE);
    PlayerTextDrawShow(playerid, TD_Morale[playerid][0]);
    print("10..24"); //Wird nicht geprintet! ===================================================================================
    }
    }
    }
    }
    }
    return 1;
    }


    Erklärung: PlayerMoraleSpree ist eine Zählvariable. Die Variable des Killers wird pro Kill um 1 erhöht, und die des Opfers um 1 verkleinert. Wie gesagt, die Variablen sind global deklariert und unter OnPlayerConnect initialisiert auf den Wert 0.

  • if(PlayerMoraleSpree[killerid] > -15 && PlayerMoraleSpree[killerid] < 25)
    zu:
    if(killerid != INVALID_PLAYER_ID && PlayerMoraleSpree[killerid] > -15 && PlayerMoraleSpree[killerid] < 25)



    Dies muss dann eben vor die obige Abfrage:
    if(killerid == INVALID_PLAYER_ID) PlayerMoraleSpree[playerid]--;
    den else-Teil dazu kannst du ohne das else dort lassen wo es ist.

  • Zunächst einmal, vielen Dank, dass du meinem Hilferuf nachgegangen bist!


    Ich hab nun
    if(PlayerMoraleSpree[killerid] > -15 && PlayerMoraleSpree[killerid] < 25)
    //und
    if(PlayerMoraleSpree[playerid] > -15 && PlayerMoraleSpree[playerid] < 25)
    zu
    if(killerid != INVALID_PLAYER_ID && PlayerMoraleSpree[killerid] > -15 && PlayerMoraleSpree[killerid] < 25)
    //und
    if(killerid != INVALID_PLAYER_ID && PlayerMoraleSpree[playerid] > -15 && PlayerMoraleSpree[playerid] < 25)
    geändert.


    Desweiteren hab ich auch gesondert noch die Abfrage...
    if(killerid == INVALID_PLAYER_ID)
    über die anderen zwei geschrieben und darunter nochmal den passenden switch eingebaut. Jetzt funktioniert es einwandfrei!


    Danke dir!