Hitmansystem failt

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
  • Heyoo :D


    Ich habe da so ein kleines Problem, undzwar bekommt Hitman kein Geld sobald er die Person mit dem Kopfgeld tötet.
    Ich weis nicht woran das liegen könnte und brauche da eure hilfe :D


    Also :
    Bei OnPlayerDeath steht :

    if(PlayerInfo[playerid][pHeadValue] > 0)
    {
    if(IsPlayerConnected(killerid))
    {
    if(PlayerInfo[killerid][pMember] == 8 || PlayerInfo[killerid][pLeader] == 8)
    {
    ConsumingMoney[killerid] = 1;
    new killer[MAX_PLAYER_NAME];
    GetPlayerName(killerid, killer, sizeof(killer));
    GivePlayerMoney(killerid, PlayerInfo[playerid][pHeadValue]);
    format(string,128,"<< Hitman %s hat den Auftrag an %s erfüllt und bekommt: $%d >>",killer,name,PlayerInfo[playerid][pHeadValue]/2);
    SendFamilyMessage(8, COLOR_YELLOW4, string);
    PlayerInfo[playerid][pHeadValue] = 0;
    }
    }
    }


    Ich weis wirklich nicht warum dann nichts passiert :(
    Falls ihr noch codes benötigt könnt Ihr das gerne sagen ^^



    Mfg Saphire

  • Debug den Code mal indem du prints zwischen die Zeilen und nach die if-abfragen setzt.
    Bis wohin kommt der Code? Wird der Code überhaupt ausgeführt? Wenn das nämlich nicht der Fall ist, dann liegt der Fehler im Code darüber.

  • Auf Anfrage in PM den Debug Code zu machen:


    Saphire:
    print("Before call.");
    if(PlayerInfo[playerid][pHeadValue] > 0)
    {
    print("Call1");
    if(IsPlayerConnected(killerid))
    {
    print("Call2");
    if(PlayerInfo[killerid][pMember] == 8 || PlayerInfo[killerid][pLeader] == 8)
    {
    print("Call3");
    ConsumingMoney[killerid] = 1;
    print("4");
    new killer[MAX_PLAYER_NAME];
    GetPlayerName(killerid, killer, sizeof(killer));
    printf("5 (%d)", killerid);
    GivePlayerMoney(killerid, PlayerInfo[playerid][pHeadValue]);
    printf("6 (%d)", PlayerInfo[playerid][pHeadValue]);
    format(string,128,"<< Hitman %s hat den Auftrag an %s erfüllt und bekommt: $%d >>",killer,name,PlayerInfo[playerid][pHeadValue]/2);
    print("7");
    SendFamilyMessage(8, COLOR_YELLOW4, string);
    print("8");
    PlayerInfo[playerid][pHeadValue] = 0;
    print("Done.");
    }
    }
    }


    Poste dann bitte, was im server_log steht wenn OnPlayerDeath aufgerufen wird.

  • Jeffry


    Das steht nun in der Server Log :

    [19:59:22] '28' Fraktionsfahrzeuge wurden geladen & erstellt.
    [19:59:22] AllowAdminTeleport() : function is deprecated. Please see OnPlayerClickMap()
    [19:59:22] Pickups Max = 2048, Current Pickups = 456
    [19:59:22]
    --------------------------------------
    [19:59:22] Ultimate Label Creator by -KillerThriller
    [19:59:22] --------------------------------------


    [19:59:22] KLabels - Labels loaded: 21
    [19:59:22] _______________________________________
    [19:59:22] Das Script wurde Vollständig geladen!
    [19:59:22] German Reallife: LS/SF/LV
    [19:59:22] _______________________________________
    [19:59:22]
    [19:59:22] Number of vehicle models: 80
    [19:59:25] Mihawk has logged in.
    [19:59:29] Vegeto has logged in.
    [20:00:11] Before call.
    [20:00:11] 1
    [20:00:11] 2
    [20:00:11] 3
    [20:00:11] 4
    [20:00:11] 5
    [20:00:11] 6
    [20:00:11] 7
    [20:00:11] 8
    [20:00:11] 9
    [20:00:11] 10
    [20:00:11] 11
    [20:00:11] 12
    [20:00:11] 13
    [20:00:11] 14
    [20:00:11] 15
    [20:00:11] 15
    [20:00:11] 15
    [20:00:11] 15
    [20:00:11] 15
    [20:00:11] 15
    [20:00:11] 15
    [20:00:11] 15
    [20:00:11] 19
    [20:00:11] [kill] Mihawk killed Vegeto Desert Eagle



    Und so sieht der Callbak aus :



    print("Before call.");
    M_OnPlayerDeath(playerid,killerid,reason);
    print("1");
    new name[MAX_PLAYER_NAME];
    print("2");
    new string[256];
    print("3");
    PlayerInfo[playerid][pInvWeapon] = 0;
    print("4");
    PlayerInfo[playerid][pInvAmmo] = 0;
    print("5");
    PlayerInfo[playerid][pInvWeapon2] = 0;
    print("6");
    PlayerInfo[playerid][pInvAmmo2] = 0;
    print("7");
    FrakMatsHolding[playerid] = 0;
    print("8");
    format(string, sizeof(string), "Du wurdest von %s getötet.", MeinName(killerid));
    print("9");
    SendClientMessage(playerid, COLOR_ROT, string);
    print("10");
    format(string, sizeof(string), "Du hast %s getötet.", MeinName(playerid));
    print("11");
    SendClientMessage(killerid, COLOR_ROT, string);
    print("12");
    if(PlayerInfo[playerid][pLevel] > 2 && KHSperre[playerid] == 0 && PlayerInfo[playerid][pJailed] == 0 && PlayerInfo[playerid][pGangJailed] == 0 && PlayerPaintballing[playerid] == 0)
    {
    print("13");
    PlayerInfo[playerid][pTot] = 1;
    }
    print("14");
    for(new fs;fs<sizeof(FightSystem);fs++){
    print("15");
    if(FightSystem[fs][fsFightTime]){
    print("16");
    if(GetPlayerFaction(playerid) == FightSystem[fs][fsOwnerFaction]||
    GetPlayerFaction(playerid) == FightSystem[fs][fsAttackFaction]) {
    print("18");
    PlayerInfo[playerid][pTot] = 0;
    }
    }
    }
    print("19");
    if (!IsACop(killerid) && reason != 49 && PlayerInfo[killerid][pJailed] == 0 && !IstInGangFight(playerid))
    {
    print("20");
    SetPlayerCriminal(killerid,255, "Vorsätzlicher Mord");
    }
    print("21");
    if (!IsACop(killerid) && reason == 49)
    {
    print("22");
    SetPlayerCriminal(killerid,255, "Fahrerflucht");
    }
    print("23");
    if(gPlayerUsingLoopingAnim[playerid])
    {
    print("24");
    gPlayerUsingLoopingAnim[playerid] = 0;
    print("25");
    TextDrawHideForPlayer(playerid,txtAnimHelper);
    }
    print("26");
    if(BlindFold[playerid] == 1)
    {
    print("27");
    BlindFold[playerid] = 0;
    }
    print("28");
    if(PlayerInfo[playerid][pMauled] == 1)
    {
    print("29");
    PlayerInfo[playerid][pMauled] = 0;
    }
    print("30");
    InCargo[playerid] = 0; InLevi[playerid] = 0; InEnfo[playerid] = 0;


    Ich habe nur bis Print 30 Gemacht :D


    Kann jemand mal drüberschauen und mir eventuell helfen ?


    Mfg Saphire

  • Da haben wir den Grund:


    if (!IsACop(killerid) && reason != 49 && PlayerInfo[killerid][pJailed] == 0 && !IstInGangFight(playerid))


    Irgendwas ist an dieser Zeile faul.


    Poste mal die zwei dazugehörigen Funktionen und ändere print("19"); zu:


    printf("19: killerid %d playerid %d", killerid, playerid);

  • Jeffry


    Meinst du das so ?



    printf("19: killerid %d playerid %d", killerid, playerid);
    if (!IsACop(killerid) && reason != 49 && PlayerInfo[killerid][pJailed] == 0 && !IstInGangFight(playerid))
    {
    print("20");
    SetPlayerCriminal(killerid,255, "Vorsätzlicher Mord");
    }


    #e :


    Das steht in der Server log

    [20:24:38] '28' Fraktionsfahrzeuge wurden geladen & erstellt.
    [20:24:39] AllowAdminTeleport() : function is deprecated. Please see OnPlayerClickMap()
    [20:24:39] Pickups Max = 2048, Current Pickups = 456
    [20:24:39]
    --------------------------------------
    [20:24:39] Ultimate Label Creator by -KillerThriller
    [20:24:39] --------------------------------------


    [20:24:39] KLabels - Labels loaded: 28
    [20:24:39] _______________________________________
    [20:24:39] Das Script wurde Vollständig geladen!
    [20:24:39] German Reallife: LS/SF/LV
    [20:24:39] _______________________________________
    [20:24:39]
    [20:24:39] Number of vehicle models: 80
    [20:24:42] Mihawk has logged in.
    [20:24:45] Vegeto has logged in.
    [20:25:12] Before call.
    [20:25:12] 1
    [20:25:12] 2
    [20:25:12] 3
    [20:25:12] 4
    [20:25:12] 5
    [20:25:12] 6
    [20:25:12] 7
    [20:25:12] 8
    [20:25:12] 9
    [20:25:12] 10
    [20:25:12] 11
    [20:25:12] 12
    [20:25:12] 14
    [20:25:12] 15
    [20:25:12] 15
    [20:25:12] 15
    [20:25:12] 15
    [20:25:12] 15
    [20:25:12] 15
    [20:25:12] 15
    [20:25:12] 15
    [20:25:12] 19: killerid 1 playerid 0
    [20:25:12] [kill] Mihawk killed Vegeto Desert Eagle


  • print("14");
    for(new fs;fs<sizeof(FightSystem);fs++){
    print("15");
    if(FightSystem[fs][fsFightTime]){
    print("16");
    if(GetPlayerFaction(playerid) == FightSystem[fs][fsOwnerFaction]||
    GetPlayerFaction(playerid) == FightSystem[fs][fsAttackFaction]) {
    print("18");
    PlayerInfo[playerid][pTot] = 0;
    }
    }
    }
    printf("19: killerid %d playerid %d", killerid, playerid);
    if (!IsACop(killerid) && reason != 49 && PlayerInfo[killerid][pJailed] == 0 && !IstInGangFight(playerid))
    {
    print("20");
    SetPlayerCriminal(killerid,255, "Vorsätzlicher Mord");
    }
    print("21");
    if (!IsACop(killerid) && reason == 49)
    {
    print("22");
    SetPlayerCriminal(killerid,255, "Fahrerflucht");
    }



    Function IstInGangFight(playerid)
    {
    new TempZone = GetPlayerFightzone(playerid);
    if(TempZone != -255){ // In Zone
    if(FightSystem[TempZone][fsFightTime] && FightSystem[TempZone][fsAttackFaction] != -255){ // Wenn Gegner nicht gleich -255 ist
    return 1;
    }
    }
    return 1;
    }

  • Hier nochmal :D



    Function IstInGangFight(playerid)
    {
    new TempZone = GetPlayerFightzone(playerid);
    if(TempZone != -255){ // In Zone
    if(FightSystem[TempZone][fsFightTime] && FightSystem[TempZone][fsAttackFaction] != -255){ // Wenn Gegner nicht gleich -255 ist
    return 1;
    }
    }
    return 1;
    }


    und das ist für Cop



    Function IsACop(playerid)
    {
    if(IsPlayerConnected(playerid))
    {
    new leader = PlayerInfo[playerid][pLeader];
    new member = PlayerInfo[playerid][pMember];
    if(member==1 || member==2 || member==22 || member==3)
    {
    return 1;
    }
    else if(leader==1 || leader==2 || leader==22 || leader==3)
    {
    return 1;
    }
    }
    return 0;
    }

  • Auch nichts auffälliges. Dann debugge jetzt mal die zwei Funktionen und dazu noch die GetPlayerFightzone Funktion. Dann poste den Code und das was im Server_log steht noch einmal.


    Den gesamten debuggten Code damit wir nachvollziehen können was der Code macht.

  • Jeffry


    Soo dann wollen wir mal ^^


    Das steht in der Serverlog:

    [21:45:13] '28' Fraktionsfahrzeuge wurden geladen & erstellt.
    [21:45:13] AllowAdminTeleport() : function is deprecated. Please see OnPlayerClickMap()
    [21:45:13] Pickups Max = 2048, Current Pickups = 456
    [21:45:13]
    --------------------------------------
    [21:45:13] Ultimate Label Creator by -KillerThriller
    [21:45:13] --------------------------------------


    [21:45:13] KLabels - Labels loaded: 42
    [21:45:13] _______________________________________
    [21:45:13] Das Script wurde Vollständig geladen!
    [21:45:13] German Reallife: LS/SF/LV
    [21:45:13] _______________________________________
    [21:45:13]
    [21:45:13] Number of vehicle models: 80
    [21:45:16] Mihawk has logged in.
    [21:45:19] Vegeto has logged in.
    [21:45:32] Before call23.
    [21:45:32] 333
    [21:45:32] 444
    [21:45:32] 555
    [21:45:32] Done.
    [21:45:33] Before call23.
    [21:45:33] 333
    [21:45:33] 444
    [21:45:33] 555
    [21:45:33] Done.
    [21:45:44] Before call.
    [21:45:44] 1
    [21:45:44] 2
    [21:45:44] 3
    [21:45:44] 4
    [21:45:44] 5
    [21:45:44] 6
    [21:45:44] 7
    [21:45:44] 8
    [21:45:44] 9
    [21:45:44] 10
    [21:45:44] 11
    [21:45:44] 12
    [21:45:44] 14
    [21:45:44] 15
    [21:45:44] 15
    [21:45:44] 15
    [21:45:44] 15
    [21:45:44] 15
    [21:45:44] 15
    [21:45:44] 15
    [21:45:44] 15
    [21:45:44] 19
    [21:45:44] Before call23.
    [21:45:44] 333
    [21:45:44] 444
    [21:45:44] 555
    [21:45:44] Done.
    [21:45:44] Before call2.
    [21:45:44] Before call25.
    [21:45:44] 147
    [21:45:44] 258
    [21:45:44] 369
    [21:45:44] 369
    [21:45:44] 369
    [21:45:44] 369
    [21:45:44] 369
    [21:45:44] 369
    [21:45:44] 369
    [21:45:44] 369
    [21:45:44] Done.
    [21:45:44] 121
    [21:45:44] [kill] Mihawk killed Vegeto Desert Eagle
    [21:45:48] Before call23.
    [21:45:48] 333
    [21:45:48] 444
    [21:45:48] 555
    [21:45:48] Done.


    Dann ahben wir hier einmal IstInGangFight

    Function IstInGangFight(playerid)
    {
    print("Before call2.");
    new TempZone = GetPlayerFightzone(playerid);
    print("121");
    if(TempZone != -255){
    if(FightSystem[TempZone][fsFightTime] && FightSystem[TempZone][fsAttackFaction] != -255){// Wenn Gegner nicht gleich -255 ist
    return 1;
    }
    }
    print("Done.");
    return 1;
    }


    Hier ist IsACop

    Function IsACop(playerid)
    {
    print("Before call23.");
    if(IsPlayerConnected(playerid))
    {
    print("333");
    new leader = PlayerInfo[playerid][pLeader];
    print("444");
    new member = PlayerInfo[playerid][pMember];
    print("555");
    if(member==1 || member==2 || member==22 || member==3)
    {
    return 1;
    }
    else if(leader==1 || leader==2 || leader==22 || leader==3)
    {
    print("888");
    return 1;
    }
    }
    print("Done.");
    return 0;
    }


    Und zum Schluss GetPlayerFightzone

    stock GetPlayerFightzone(playerid)
    {
    print("Before call25.");
    new Float:GangZone[3];
    print("147");
    GetPlayerPos(playerid,GangZone[0],GangZone[1],GangZone[2]);
    print("258");
    for(new fs;fs<sizeof(FightSystem);fs++)
    {
    print("369");
    if((GangZone[0] >= FightSystem[fs][fsMinX] && GangZone[0] <= FightSystem[fs][fsMaxX]) && (GangZone[1] >= FightSystem[fs][fsMinY] && GangZone[1] <= FightSystem[fs][fsMaxY]) && GangZone[2] <= 500)
    return fs;
    }
    print("Done.");
    return -14;
    }

  • Gut, wir kommen dem Fehler näher.
    Der Fehler liegt hier, bei "121".
    Function IstInGangFight(playerid)
    {
    print("Before call2.");
    new TempZone = GetPlayerFightzone(playerid);
    print("121");
    if(TempZone != -255){
    printf("TempZone: %d", TempZone); //Wird den Fehler zeigen.
    if(FightSystem[TempZone][fsFightTime] && FightSystem[TempZone][fsAttackFaction] != -255){// Wenn Gegner nicht gleich -255 ist
    return 1;
    }
    }
    print("Done.");
    return 1;
    }


    Logischerweise kann man jetzt darauf zurückschließen, dass TempZone einen Wert erhält, der das Array [TempZone] sprengt. (Negativ oder zu groß.)
    Wenn du den Code jetzt so einfügst und nochmal laufen lässt, den Log postest, dann wissen wir warum es passiert.



    Poste jetzt bitte noch die Deklaration von FightSystem (new FightSystem...), das enum sowie die dazugehörigen Konstanten, damit wir den Fehler auch gleich beheben können. :)

  • Jeffry


    Soo, ich habe das eingefügt und nun kommt das in der serverlog



    [13:23:18] '28' Fraktionsfahrzeuge wurden geladen & erstellt.
    [13:23:19] AllowAdminTeleport() : function is deprecated. Please see OnPlayerClickMap()
    [13:23:19] Pickups Max = 2048, Current Pickups = 456
    [13:23:19]
    --------------------------------------
    [13:23:19] Ultimate Label Creator by -KillerThriller
    [13:23:19] --------------------------------------


    [13:23:19] KLabels - Labels loaded: 7
    [13:23:19] _______________________________________
    [13:23:19] Das Script wurde Vollständig geladen!
    [13:23:19] German Reallife: LS/SF/LV
    [13:23:19] _______________________________________
    [13:23:19]
    [13:23:19] Number of vehicle models: 80
    [13:24:07] [join] Vegeto has joined the server
    [13:24:19] Vegeto has logged in.
    [13:24:33] [join] Mihawk has joined the server
    [13:24:41] Mihawk has logged in.
    [13:24:54] Before call23.
    [13:24:54] 333
    [13:24:54] 444
    [13:24:54] 555
    [13:24:54] Done.
    [13:24:55] Before call23.
    [13:24:55] 333
    [13:24:55] 444
    [13:24:55] 555
    [13:24:55] Done.
    [13:25:00] Before call.
    [13:25:00] 1
    [13:25:00] 2
    [13:25:00] 3
    [13:25:00] 4
    [13:25:00] 5
    [13:25:00] 6
    [13:25:00] 7
    [13:25:00] 8
    [13:25:00] 9
    [13:25:00] 10
    [13:25:00] 11
    [13:25:00] 12
    [13:25:00] 13
    [13:25:00] 14
    [13:25:00] 15
    [13:25:00] 15
    [13:25:00] 15
    [13:25:00] 15
    [13:25:00] 15
    [13:25:00] 15
    [13:25:00] 15
    [13:25:00] 15
    [13:25:00] 19
    [13:25:00] Before call23.
    [13:25:00] 333
    [13:25:00] 444
    [13:25:00] 555
    [13:25:00] Done.
    [13:25:00] Before call2.
    [13:25:00] Before call25.
    [13:25:00] 147
    [13:25:00] 258
    [13:25:00] 369
    [13:25:00] 369
    [13:25:00] 369
    [13:25:00] 369
    [13:25:00] 369
    [13:25:00] 369
    [13:25:00] 369
    [13:25:00] 369
    [13:25:00] Done.
    [13:25:00] 121
    [13:25:00] TempZone: -14
    [13:25:00] [kill] Mihawk killed Vegeto Desert Eagle
    [13:25:49] Before call23.
    [13:25:49] 333
    [13:25:49] 444
    [13:25:49] 555
    [13:25:49] Done.



    Hier ist Fightsystem



    new FightSystem[][fsSyS]={
    /*MinX, MinY, MaxX, MaxY, CTFx, CTFy, CTFz*/
    {1060.145,-1721.339,1166.624,-1583.168,1072.4016,-1619.3834,20.4583},//Kaufhaus
    {990.2909,1821.38,1177.724,2057.332,1067.5798,1884.2932,10.8203},//Container
    {-887.5186,1377.989,-583.8938,1634.903,-813.6335,1525.2080,26.5065},//Wüste
    {-2506.7,740.0255,-2383.094,826.8147,2459.4094,787.3281,35.1719},//Markt
    {-1850.044,1438.284,-1710.987,1584.248,-1789.1478,1543.3608,7.1875},//Hafen
    {-1891.4263,857.8361,-1722.0261,1095.5897,-1720.0752,1018.2902,17.5859},//Bank
    {1828.318,-1938.465,2071.699,-1760.817,1958.6156,-1853.2424,4.3392},//Tanke
    {1828.0573,-2161.2705,1956.4136,-2057.7964,1924.0941,-2125.0146,13.5826}//Airport(LS)
    };

    Einmal editiert, zuletzt von Saphire ()