Frage --> Bei einem OCMD Befehl

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
  • Kann mir wer meinen /vertraganbieten Befehl ergänzen, weil ich garnicht mehr dabei klar komme.
    Ich habe hier sowas gescriptet



    ocmd:vertraganbieten(playerid,params[])
    {
    new pID,Vertrag[128],string1[128];
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(pID,Float:X, Float:Y, Float:Z);
    if(!IsPlayerInRangeOfPoint(playerid,4.0, Float:X, Float:Y, Float:Z))return SCM(playerid,COLOR_GREEN,"Du bist nicht in der Nähe der Person.");
    if(sscanf(params,"ui",pID, Vertrag))return SendClientMessage(playerid,COLOR_DARKRED,"Richtige Benutzung: /vertraganbieten [SpielerID] [Vertrag-Name]");
    {
    format(string1,sizeof(string1),"Du hast %s ein Vertrag angeboten: %i",SpielerName(pID),Vertrag);
    SendClientMessage(pID,COLOR_GREEN,string1);
    }
    return 1;
    }


    Doch dort kommt immer das hier raus wenn ich es jemanden z.B. mir anbiete(ja das habe ich noch nicht weggemacht das man sich selbst anbieten kann)
    Richtige Benutzung: /vertraganbieten [SpielerID] [Vertrag-Name]



    Bitte um hilfe :( ;(




    2 Mal editiert, zuletzt von Kristik47 ()

  • if(sscanf(params,"ui",pID, Vertrag))return SendClientMessage(playerid,COLOR_DARKRED,"Richtige Benutzung: /vertraganbieten [SpielerID] [Vertrag-Name]");
    Suche hier mal genau den Fehler..
    "ui".. - U ist für die PlayerID/Name und i steht für den Namen es Vertrages, wobei i der placeholder für einen Integer ist und nicht für einen string..

  • if(sscanf(params,"ui",pID, Vertrag))return SendClientMessage(playerid,COLOR_DARKRED,"Richtige Benutzung: /vertraganbieten [SpielerID] [Vertrag-Name]");
    Suche hier mal genau den Fehler..
    "ui".. - U ist für die PlayerID/Name und i steht für den Namen es Vertrages, wobei i der placeholder für einen Integer ist und nicht für einen string..

    Ich bin mir nicht sicher aber kann es sein das der Fehler bei sscanf(params,"ui",pID,Vertrag)) liegt? Heißt es vielleicht
    sscan(params("ud",pID,Vertrag))??

  • Nein das "i" ist richtig aber warum hast du hier
    new pID,Vertrag[128],string1[128];
    Vertrag als string geklariert wenn es doch eine Zahl sein soll ?


    #e Du hast vertrag zwar richtig deklariert aber der rest von vertrag ist nicht richtig probier es so:
    ocmd:vertraganbieten(playerid,params[])
    {
    new pID,Vertrag[128],string1[128];
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(pID,Float:X, Float:Y, Float:Z);
    if(!IsPlayerInRangeOfPoint(playerid,4.0, Float:X, Float:Y, Float:Z))return SCM(playerid,COLOR_GREEN,"Du bist nicht in der Nähe der Person.");
    if(sscanf(params,"us",pID, Vertrag))return SendClientMessage(playerid,COLOR_DARKRED,"Richtige Benutzung: /vertraganbieten [SpielerID] [Vertrag-Name]");
    {
    format(string1,sizeof(string1),"Du hast %s ein Vertrag angeboten: %s",SpielerName(pID),Vertrag);
    SendClientMessage(pID,COLOR_GREEN,string1);
    }
    return 1;
    }

  • Und was ist dann hier falsch, bei dem Befehl weil wenn ich accept oder cancel Vertrag eingebe steht das
    dir wurde kein Vertrag angeboten obwohl ich /vertraganbieten 0 Vertrag gemacht habt.


    Hier schaut mal:



    ocmd:acceptvertrag(playerid,params[]){ if(Spieler[playerid][Level] < 2)return SendClientMessage(playerid,COLOR_BLUE,"Dein Level ist zu klein. Du musst min. Level 2 besitzen."); { if(Vertrag[playerid]==1) { SendClientMessage(playerid,COLOR_BLUE,"Du hast den Vertrag angenommen."); Vertrag[playerid]=0; } if(Vertrag[playerid]==0) { SendClientMessage(playerid,COLOR_GREEN,"Dir wurde kein Vertrag angeboten"); } } return 1;}

  • Du verstehst es nicht ..


    einfach ganz oben bei deinen "new"´s
    new DEINNAME[MAX_PLAYERS] = 0;//glaube war max_players hab lang nicht mehr gescriptet



    //bei OnPlayerConnect
    DEINNAME[playerid] = 0;


    //bei OnPlayerDisconnect
    DEINNAME[playerid] = 0;


    //bei /vertraganbieten da wo die Nachricht gesendet wird
    DEINNAME[pID] = 1; //oder du setzt halt deine ID rein ist wurscht.


    //bei /accept
    if(DEINNAME[playerid] != 0)
    {


    }
    else
    {
    SendClientMessage(playerid, COLOR, "Dir wurde kein Vertrag angeboten");
    }