Script Error, Forum Account abfragen

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
  • Hallo Community,


    ich habe soeben mein Gameserver mit meinem Forum verbunden (oder andersrum)


    Nun wollte ich diese hässlige Abfrage umändern und auch SpielerNamen und ID anzeigen lassen, nicht nur das der Spieler sich selbst prüfen kann sondern auch Admins andere Prüfen können



    Hier mal mein neuer Code


    Spoiler anzeigen
    public WBB_GotUserValidState ( Index , State, pID ) //Zeile2594
    {
    new string[256];
    if(State)
    {
    format(string,sizeof(string),"Der Spieler %s (ID: %i ) besitzt einen Forumaccount mit identischem Namen!",getPlayerName(pID),playerid); //Zeile 2599
    SendClientMessage(Index, 0xFFFFFF, string);
    }
    else
    {
    format(string,sizeof(string),"Der Spieler %s (ID: %i ) besitzt keinen Forumaccount mit identischem Namen! Daher sollte er sich schnellstmöglich einen erstellen!",getPlayerName(pID),playerid); //Zeile 2604
    SendClientMessage(Index, 0xFFFFFF, string);
    }
    return 1;
    }


    und halt der Befehl dazu


    Spoiler anzeigen
    ocmd:forumacccheck(playerid,params[])
    {
    if(!isAdmin(playerid,2)) return SendClientMessage(playerid,-1,"Bitte frage einen Admin ob du einen Forumaccount hast");
    {
    new pID,Name[MAX_PLAYER_NAME];
    if(sscanf(params, "u", pID)) return SendClientMessage(playerid,-1,"INFO: /forumacccheck [ID | Username]");
    GetPlayerName(pID, Name, MAX_PLAYER_NAME);
    WBB_IsValidUser(Name, pID);
    return 1;
    }

    }



    E:\SAMP\gamemodes\Script1.pwn(2594) : error 025: function heading differs from prototype
    E:\SAMP\gamemodes\Script1.pwn(2599) : error 017: undefined symbol "playerid"
    E:\SAMP\gamemodes\Script1.pwn(2604) : error 017: undefined symbol "playerid"


    Ich danke schonmal für die Hilfe MFG

  • Du kannst der Funktion nicht einfach einen Parameter hinkleben, das geht nicht.


    public WBB_GotUserValidState ( Index , State) //Zeile2594
    {
    new string[256];
    if(State)
    {
    format(string,sizeof(string),"Der Spieler %s (ID: %i ) besitzt einen Forumaccount mit identischem Namen!",getPlayerName(GetPVarInt(Index, "pID")),GetPVarInt(Index, "pID")); //Zeile 2599
    SendClientMessage(Index, 0xFFFFFF, string);
    }
    else
    {
    format(string,sizeof(string),"Der Spieler %s (ID: %i ) besitzt keinen Forumaccount mit identischem Namen! Daher sollte er sich schnellstmöglich einen erstellen!",getPlayerName(GetPVarInt(Index, "pID")),GetPVarInt(Index, "pID")); //Zeile 2604
    SendClientMessage(Index, 0xFFFFFF, string);
    }
    return 1;
    }



    ocmd:forumacccheck(playerid,params[])
    {
    if(!isAdmin(playerid,2)) return SendClientMessage(playerid,-1,"Bitte frage einen Admin ob du einen Forumaccount hast");
    {
    new pID,Name[MAX_PLAYER_NAME];
    if(sscanf(params, "u", pID)) return SendClientMessage(playerid,-1,"INFO: /forumacccheck [ID | Username]");
    GetPlayerName(pID, Name, MAX_PLAYER_NAME);
    WBB_IsValidUser(Name, pID);
    SetPVarInt(playerid, "pID",pID)
    return 1;
    }
    }


    Wenn ich das mit dem Index richtig verstanden habe.

  • Du kannst ja mit "Index" nur eine Variable mitgeben (also die playerid). Du willst aber auch noch die pID dabei haben.
    Dann musst du die pID über eine Variable die mit playerid verbunden ist (in dem Fall die pVar) mitführen um sie da wieder aufrufen zu können.


    Man könnte es auch über ein globales Array machen, aber so erscheint es mir anschaulicher für dich.



    Du kannst es dir wie ein Koffer vorstellen. "playerid" nimmt einen Koffer mit sich der pVar-pID heißt, in dem der Wert von pID aus dem Befehl eingetragen wird.
    Prinzip verstanden? :)

  • Ja


    super erklärung danke



    Ein Problem habe ich allerdings noch



    Jetzt folgende Situtation



    Ich connecte
    Rufe ab ob ich einen Account habe -> Ja
    Rufe ID 1 ab -> nix (ID 1 ist nicht auf dem Server)
    Ich fahre ca 200 meter. also BSN zur Tanke.



    Connection verloren
    10 sek warten


    Connection ist wieder da



    ne idee woran das liegt



    liegt das evtl an der nichtexistierenden ID?

  • Ich soll das hier im Auftrag von ihm Posten -> Schulkamerad



    Ja, wenn die ID vorhanden ist läuft der Server einwandfrei weiter



    also seine Idee war, dass er ne Abfrage machen muss wie viele Spieler Da sind bzw ob die ID existiert und wenn nicht dass alles weitere gar nicht ausgeführt wird


    Nur er wusste nicht wie er das genau macht



    i. A. v. Silbermond




    MFG Meer_sein

  • ocmd:forumacccheck(playerid,params[])
    {
    if(!isAdmin(playerid,2)) return SendClientMessage(playerid,-1,"Bitte frage einen Admin ob du einen Forumaccount hast");
    {
    new pID,Name[MAX_PLAYER_NAME];
    if(sscanf(params, "u", pID)) return SendClientMessage(playerid,-1,"INFO: /forumacccheck [ID | Username]");
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,-1,"INFO: Spieler nicht online");
    GetPlayerName(pID, Name, MAX_PLAYER_NAME);
    WBB_IsValidUser(Name, pID);
    SetPVarInt(playerid, "pID",pID)
    return 1;
    }
    }
    Einfach abfragen, ob die ID online ist.