Server reagiert nach /report nicht mehr (+ instant tot bei login)

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
  • Hi,
    ich habe mal wieder ein Problem ... Ich habe mir mal den Befehl /report erstellt doch sobald ich ihn ingame verwende reagiert der gesamte Server nicht mehr. Ich habe das crashdetect plugin drin aber selbst damit bekomme ich keine Fehlermeldung was passiert ist. Es geht nicht einmal mehr gmx über die Konsole oder irgendetwas ingame ...
    Hier ist einmal der report Befehl:

    dcmd_report(playerid, params[]){//REPORT [Text]

    new report[64];
    new string[128];

    if(sscanf(params, "s", report)){
    return SendClientMessage(playerid,COLOR_ORANGE,"'/report [Narchicht]'");
    }


    for(new i = 0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    if(PlayerInfo[i][pAdminLevel] > 0)
    {
    format(string, sizeof(string), "[Report]Neuer report von %s. Report: %s", GetPlayerName(playerid), report);
    SendClientMessage(i, COLOR_ORANGERED, string);
    }
    }
    }

    return 1;
    }


    (Ich bekomme auch 2 "number of arguments does not match definition" warnings in der format Zeile)



    Ein 2. Problem ist, das wenn man sich einlogt ersteinmal direkt umkippt und tot ist. Also man ist wirklich direkt nachdem der Spieler gespawnt ist tot ohne das irgendetwas passiert (war aber auch vor dem report befehl schon aber ich finde den fehler nicht) ...



    Ich hoffe ihr könnt mir helfen ;(

  • So sollte es klappen:
    dcmd_report(playerid, params[])
    {
    new string[145], name[MAX_PLAYER_NAME];
    if(sscanf(params, "s", string)) return SendClientMessage(playerid,COLOR_ORANGE,"'/report [Narchicht]'");
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    format(string, sizeof(string), "[Report]Neuer report von %s. Report: %s", name, report);
    for(new i = 0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    if(PlayerInfo[i][pAdminLevel] > 0)
    {
    SendClientMessage(i, COLOR_ORANGERED, string);
    }
    }
    }
    return 1;
    }

  • Vielen Dank es funktioniert so wie ich das sehe lag das daran das ich das GetPlayerName falsch angewendet hatte oder?


    (PS: Hättest du noch eine Idee wegen dem instant tot? Glaube es liegt an meinem System zum leben verlieren:

    public leben()
    {
    for(new i = 0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    new Float:health;
    GetPlayerHealth(i,health);
    SetPlayerHealth(i,health-1.0);
    }
    }
    return 1;
    }



    SetTimer("leben",10000,1); //<- Der Timer im onGameModeInit (forward und so is auch drin also das ding an sich funktioniert)

  • Ja, genau.


    Zwecks dem Tod: Nein, daran sollte es nicht liegen. Du kannst den Timer ja mal entfernen, ob es dann immernoch passiert, sollte es eigentlich.
    Wenn es dann nicht mehr passiert, dann müssen wir das mal debuggen, ansonsten schau mal was es noch verursachen könnte.

  • Dann debugge es so und poste dann was im Server Log steht, wenn du stirbst:
    public leben()
    {
    new Float:health;
    for(new i = 0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    GetPlayerHealth(i,health);
    printf("i: %d / health: %f / new: %f", i, health, health-1.0);
    SetPlayerHealth(i,health-1.0);
    }
    }
    return 1;
    }


    Den Timer machst du natürlich wieder an.

  • Es kommt das:


    (Bin erst beim 2. mal connecten gestorben)
    (kann für ca 40min nicht antworten bin aber dann wieder da)

  • Ah, du stirbst in der Skin-Auswahl.
    Schreibe es so:
    public leben()
    {
    new Float:health;
    for(new i = 0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    GetPlayerHealth(i,health);
    if(health > 0.0)
    {
    printf("i: %d / health: %f / new: %f", i, health, health-1.0);
    SetPlayerHealth(i,health-1.0);
    }
    }
    }
    return 1;
    }