Hilfe bei Stock bzw. Supportruf

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
  • forward GetSupport(spieler);


    ocmd:support(playerid,params[])
    {
    new spieler[MAX_PLAYER_NAME];
    GetPlayerName(playerid,spieler,sizeof(spieler));
    SendClientMessage(playerid,COLOR_GREEN,"Info: Das Admin Team wurde informiert!");
    GetSupport(spieler); //<< Betroffene Zeile
    return 1;
    }


    public GetSupport(spieler)
    {
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i))
    {
    new save[13 + MAX_PLAYER_NAME],text[128],pName[MAX_PLAYER_NAME];
    GetPlayerName(i,pName,sizeof(pName));
    format(save,sizeof(save),"/Spieler/%s.ini",pName);
    sInfo[i][pLevel] = dini_Int(save,"pLevel");
    if(sInfo[i][pLevel] > 1)
    {
    format(text,sizeof(text),"[Support] Der Spieler %s hat Hilfe angefordert!",spieler);
    SendClientMessage(i,COLOR_LIGHTBLUE,text);
    }
    }
    }
    return 1;
    }


    Ich wollte gerne, wenn ein Spieler Hilfe braucht, dass er mit /support einen Admin ruft. Diese Nachricht soll selbstverständlich an alle Admins spricht Userlevel 2 gehen, dafür der Public.


    Da ich für die Admins anzeigen lassen wollte WER nun Support braucht, muss ich ja den Spielernamen irgendwie speichern und übertragen. Ich dachte das ginge so, dennoch sagt er mir folgendes beim compilen:


    error 035: argument type mismatch (argument 1)


    Kann mir jemand sagen wo mein Logikfehler ist? Jemand ne Ahnung?

    "Dem wird befohlen, der sich nicht selbst gehorchen kann" - Friedrich Nietzsche

    Einmal editiert, zuletzt von Addickted ()

  • Die Logik ist nur in mangschen dingen falsch...
    Zur erläuterung
    Du erstellst einen String, und willst den String als SpielerID/Name shicken ?
    Du musst wenn playerid benutzen
    GetSupport(spieler); <-- Spieler ist von dir definiert als string und gibt keine Spieler ID an.


    GetSupport(playerid); <-- Währe richtig, der Commandhandler übergibt dir die Spieler ID und die musst du weiter verweden...


    Hier mal in ganzen und ein bisschen optimiert:


    ocmd:support(playerid,params[])
    {
    SendClientMessage(playerid,COLOR_GREEN,"Info: Das Admin Team wurde informiert!");
    GetSupport(playerid);
    return 1;
    }
    public GetSupport(spieler)
    {
    new pName[MAX_PLAYER_NAME];
    GetPlayerName(playerid,pName,sizeof(pName)); // Name von Playerid in die Variable pName schreiben.
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i))
    {
    if(sInfo[i][pLevel] > 1)
    {
    format(text,sizeof(text),"[Support] Der Spieler %s hat Hilfe angefordert!", pName);
    SendClientMessage(i,COLOR_LIGHTBLUE,text);
    }
    }
    }
    return 1;
    }


    Ich würde dir empfehlen (falls du es nicht so hast), die Accoutndaten wie level etc direkt beim Login zu speichern...