/stats Befehl | Fraktion und Fraktionsname auslesen geht nicht

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
  • Ok, ich war gerade über dem /stats Befehl, doch habe einen komischen Error erhalten, als ich schön alles bei /stats geordnet habe nur die Stelle bei der er die Fraktion auslesen soll ging nicht.



    if(strcmp(cmdtext,"/stats",true)==0)
    {
    new string[128];
    new fraktname[64];
    switch(GetPVarInt(playerid,"Fraktion"))
    {
    case 0:{fraktname="Zivilist";}
    case 1:{fraktname="Las Venturas Police Department";}
    case 2:{fraktname="Las Venturas Hospital";}
    case 3:{fraktname="Greasy Choppers";}
    case 4:{fraktname="Fraktname 4";}
    }
    //1 Reihe
    SendClientMessage(playerid,BLAU,"|~~~~~~~~~~~Statistik~~~~~~~~~~~|");
    format(string,sizeof(string),"[Name: %s]",SpielerName(playerid));
    //2 Reihe
    format(string,sizeof(string),"[Level: %i]",GetPlayerScore(playerid));
    SendClientMessage(playerid,0xBEBEBEFF,string);
    //3 Reihe
    format(string,sizeof(string),"[AdminLevel: %i]",GetPVarInt(playerid,"AdminLevel"));
    SendClientMessage(playerid,0xBEBEBEFF,string);
    //4 Reihe
    format(string,sizeof(string),"[Fraktion: %s]",GetPVarInt,(playerid),fraktname); //Fehlerzeile, hier sollte der Spieler dann haben Fraktion: Name seiner Fraktion, die am Anfang immer 0 ist (Zivilist)
    SendClientMessage(playerid,0xBEBEBEFF,string);
    return 1;
    }
    return 0;
    }



    Error:

    Code
    C:\Users\Peter\Desktop\Scripting\gamemodes\BioWorld.pwn(335) : error 076: syntax error in the expression, or invalid function call
    Pawn compiler 3.2.3664  Copyright (c) 1997-2006, ITB CompuPhase
    
    
    
    
    1 Error.
  • da wird der fehler sein:


    format(string,sizeof(string),"[Name: %s] [Level: %i] [AdminLevel: %i] [Fraktion: %s]",SpielerName(playerid));



    versuchs so mal:
    format(string,sizeof(string),"[Name: %s] [Level: %i] [AdminLevel: %i] [Fraktion: %s]",SpielerName(playerid), GetPlayerScore(playerid),"da soll er das Adminlevel rauslesen",fraktnamen);


    so müsste es funken ;)


    bzw damit du es so hast wie du es willst:


    if(strcmp(cmdtext,"/stats",true)==0) { new string[128]; new fraktname[64]; switch(GetPVarInt(playerid,"Fraktion")) { case 0:{fraktname="Zensiert";} case 1:{fraktname="Zensiert";} case 2:{fraktname="Zensiert";} case 3:{fraktname="Zensiert";} case 4:{fraktname="Zensiert";} } //1 Reihe SendClientMessage(playerid,BLAU,"|~~~~~~~~~~~Statistik~~~~~~~~~~~|"); format(string,sizeof(string),"[Name: %s] [Level: %i] [AdminLevel: %i] [Fraktion: %s]",SpielerName(playerid)); //2 Reihe format(string,sizeof(string),"[Level: %i]",GetPlayerScore(playerid)); SendClientMessage(playerid,0xBEBEBEFF,string); //3 Reihe format(string,sizeof(string),"[AdminLevel: %i]",GetPVarInt(playerid,"AdminLevel")); SendClientMessage(playerid,0xBEBEBEFF,string); //4 Reihe format(string,sizeof(string),"[Fraktion: %s]",,fraktname); //da hattest du den Fehler der Grund: du hast bei einer Abfrage 2 Sachen heraus lesen lassen. Dadurch du es mit dem switch gemacht hast brauchst du bei der Fraktion nur mehr den fraktnamen verwenden den du mit new gemacht hast. SendClientMessage(playerid,0xBEBEBEFF,string); return 1; } return 0;

  • Ich hatte vergessen die 1 Zeile noch zu verkürzen, in jeder Zeile soll ja eine Information stehen, doch in der letzten, also da bei der er dann den
    Fraktionsname anzeigen soll, da will er nicht und erhalte dort den Error auch.

  • einfach die Fehlerzeile weg machen und das schreiben:


    format(string,sizeof(string),"[Fraktion: %s]",fraktname);


    du hast bei dem %s das Script einmal von der GetPVarInt lesen lassen und einmal von der Fraktion und das löste den Error aus. Du brauchst in dem Fall nur fraktname machen weil du ihn mit new hinzugefügt hast und der schreibt je nach Zahl
    die richtige Zahl hin, weil du das beim switch definiert hast ;)

  • Ok, danke doch habe nun gerade gemerkt, das er bei der Stelle an der Name stehen sollte nicht schreibt. Bekomme da aber auch keinen Error.



    format(string,sizeof(string),"[Name: %s]",SpielerName(playerid));


    Also dann bei /stats kommt das mit der |-------------Statistik-----------| aber danach das Level nicht erst der Name.

  • Der Stock
    stock SpielerName(playerid)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    return name;
    }


    Einen Error erhalte ich nicht, es geht ja ohne Error, aber Ingame steht dann nichts bei /stats über Name:

  • verusch mal so weiß aber net ob es so geht ;)



    if(strcmp(cmdtext,"/stats",true)==0)
    {
    new string[128], string2[128], string3[128], string4[128];
    new fraktname[64];
    switch(GetPVarInt(playerid,"Fraktion"))
    {
    case 0:{fraktname="Zivilist";}
    case 1:{fraktname="Las Venturas Police Department";}
    case 2:{fraktname="Las Venturas Hospital";}
    case 3:{fraktname="Greasy Choppers";}
    case 4:{fraktname="Fraktname 4";}
    }
    //1 Reihe
    SendClientMessage(playerid,BLAU,"|~~~~~~~~~~~Statistik~~~~~~~~~~~|");
    format(string,sizeof(string),"[Name: %s]",SpielerName(playerid));
    //2 Reihe
    format(string2,sizeof(string2),"[Level: %i]",GetPlayerScore(playerid));
    SendClientMessage(playerid,0xBEBEBEFF,string2);
    //3 Reihe
    format(string3,sizeof(string3),"[AdminLevel: %i]",GetPVarInt(playerid,"AdminLevel"));
    SendClientMessage(playerid,0xBEBEBEFF,string3);
    //4 Reihe
    format(string4,sizeof(string4),"[Fraktion: %s]",GetPVarInt,(playerid),fraktname); //Fehlerzeile, hier sollte der Spieler dann haben Fraktion: Name seiner Fraktion, die am Anfang immer 0 ist (Zivilist)
    SendClientMessage(playerid,0xBEBEBEFF,string4);
    return 1;
    }
    return 0;
    }

  • Ich habe nun mal die ganzen strings eingefügt, leider führte dies nur zu Errors, dass string2 etc. nicht definiert ist, auch ein Leerzeichen zwischen
    string und der Zahl, half leider nichts.


    Mich wundert es warum er es einfach nicht anzeigt, es ist ja nur die Zeile mit dem Namen ...

  • 1. zeig mal bitte wie du es umgeändert hast


    2. bitte zeig auch die Errors was du bekommst, weil ich habs mal genau so in ein Script eingefügt, Server gestartet und Befehl versucht und es hat geklappt...

  • 1. zeig mal bitte wie du es umgeändert hast


    2. bitte zeig auch die Errors was du bekommst, weil ich habs mal genau so in ein Script eingefügt, Server gestartet und Befehl versucht und es hat geklappt...


    Sofern ich deins übernehme, erhalte ich diese Meldungen.


    C:\Users\Peter\Desktop\Scripting\gamemodes\BioWorld.pwn(334) : error 076: syntax error in the expression, or invalid function call
    C:\Users\Peter\Desktop\Scripting\gamemodes\BioWorld.pwn(341) : error 010: invalid function or declaration
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    2 Errors.


  • if(strcmp(cmdtext,"/stats",true)==0)
    {
    new string[128],pID;
    new fraktname[64];
    switch(GetPVarInt(playerid,"Fraktion"))
    {
    case 0:{fraktname="Zivilist";}
    case 1:{fraktname="Las Venturas Police Department";}
    case 2:{fraktname="Las Venturas Hospital";}
    case 3:{fraktname="Greasy Choppers";}
    case 4:{fraktname="Fraktname 4";}
    }
    //1 Reihe
    SendClientMessage(playerid,BLAU,"|~~~~~~~~~~~Statistik~~~~~~~~~~~|");
    format(string,sizeof(string),"[Name: %s]",SpielerName(pID));
    //2 Reihe
    format(string,sizeof(string),"[Level: %i]",GetPlayerScore(playerid));
    SendClientMessage(playerid,0xBEBEBEFF,string);
    //3 Reihe
    format(string,sizeof(string),"[AdminLevel: %i]",GetPVarInt(playerid,"AdminLevel"));
    SendClientMessage(playerid,0xBEBEBEFF,string);
    //4 Reihe
    format(string,sizeof(string),"[Fraktion: %s]",fraktname); //Jetzt sollte es funktionieren. Weiß garnet was du da gemacht hast? Nach GetPVarInt ein , und dann (playerid) ???
    SendClientMessage(playerid,0xBEBEBEFF,string);
    return 1;
    }
    }


    Editiert. Funktioniert jetzT! Genau so! Keine String1,2,3, sondern einfach so :D

    Projektleiter

    Cleared to Land ist in der Script Werkstatt ;)


    Einmal editiert, zuletzt von Vanillewilly ()

  • Damit ihm jemand auch erklärt was er falsch gemacht hat:


    format(string,sizeof(string),"[Fraktion: %s]",GetPVarInt,(playerid),fraktname);
    ,GetPVarInt,(playerid)// Das komma hier ist zu viel das war einer deiner Fehler


    format(string,sizeof(string),"[Fraktion: %s]",GetPVarInt(playerid),fraktname);
    So muss die zeile richtigsein

  • Ja das stimmt, aber wollte ihm auch zeigen das das Komma falsch war da wo es ist.

  • Ihr werdet lachen warum es nicht ging, erstmal danke an BigYoda für das helfen. :D


    Vergleich mal die Zeilen


    SendClientMessage(playerid,BLAU,"|~~~~~~~~~~~Statistik~~~~~~~~~~~|");
    format(string,sizeof(string),"[Name: %s]",SpielerName(pID));


    Mit den anderen, fällt auf das das


    SendClientMessage(playerid,0xBEBEBEFF,string);


    fehlt, ganz einfach der Spieler erhält ja auch nichts, weil ja nichts geschrieben wurde. ^^


    Aber danke für die ganzen Hilfen auch an nehli.