[Scripting]/f-Chat Problem

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
  • moin
    ich fang grad an fraktionen zu scripten und bin grad beim /f chat
    hab verschiedene tut´s angeschaut aber bei dem einen das ich das beste fand
    kommen folgende errors + warings



    Code
    C:\Users\GRAF\Desktop\Dateien & more\SAMP\SAMP 0.3d\gamemodes\weiterausbauen-selfmade.pwn(1387) : warning 219: local variable "SpielerName" shadows a variable at a preceding level
    C:\Users\GRAF\Desktop\Dateien & more\SAMP\SAMP 0.3d\gamemodes\weiterausbauen-selfmade.pwn(1404) : warning 219: local variable "SpielerName" shadows a variable at a preceding level
    C:\Users\GRAF\Desktop\Dateien & more\SAMP\SAMP 0.3d\gamemodes\weiterausbauen-selfmade.pwn(1631) : error 014: invalid statement; not in switch
    C:\Users\GRAF\Desktop\Dateien & more\SAMP\SAMP 0.3d\gamemodes\weiterausbauen-selfmade.pwn(1631) : warning 215: expression has no effect
    C:\Users\GRAF\Desktop\Dateien & more\SAMP\SAMP 0.3d\gamemodes\weiterausbauen-selfmade.pwn(1631) : error 017: undefined symbol "Polizeimeister"
    C:\Users\GRAF\Desktop\Dateien & more\SAMP\SAMP 0.3d\gamemodes\weiterausbauen-selfmade.pwn(1631) : error 033: array must be indexed (variable "rangname")
    C:\Users\GRAF\Desktop\Dateien & more\SAMP\SAMP 0.3d\gamemodes\weiterausbauen-selfmade.pwn(1631) : fatal error 107: too many error messages on one line


    der /F chat
    ocmd:f(playerid,params[])
    {
    new text[300],string[100];
    if(sscanf(params,"s",text))return SendClientMessage(playerid,ROT,"/f [Text]");
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(IsPlayerConnected(i))
    {
    if(isPlayerInFrakt(i,GetPVarInt(playerid,"Fraktion")))
    {
    new rangname[64];
    if(GetPVarInt(i,"Fraktion") ==1)
    {
    case 1;{rangname=LSPDRANG1;} //hier der error (zeile 1631)
    case 2;{rangname=LSPDRANG2;}
    case 3;{rangname=LSPDRANG3;}
    case 4;{rangname=LSPDRANG4;}
    case 5;{rangname=LSPDRANG5;}
    case 6;{rangname=LSPDRANG6;}
    case 7;{rangname=LSPDRANG7;}


    }
    }
    if(GetPVarInt(i,"Fraktion") ==2)
    {
    case 1;{rangname=GROVERANG1;}
    case 2;{rangname=GROVERANG2;}
    case 3;{rangname=GROVERANG3;}
    case 4;{rangname=GROVERANG4;}
    case 5;{rangname=GROVERANG5;}
    case 6;{rangname=GROVERANG6;}
    case 7;{rangname=GROVERANG7;}

    }
    }
    format(string,sizeof(string),"%s %s: %s",rangname,SpielerName(playerid),text);
    SendClientMessage(i,HELLGRÜN,string);


    }
    }
    }
    return 1;
    }


    LSPDRANG1-6 und GROVERANG 1-6 sind alle definiert
    //LSPD RÄNGE
    #define LSPDRANG1 Polizeimeister
    #define LSPDRANG2 Polizeihauptmeister
    #define LSPDRANG3 Polizeikommissar
    #define LSPDRANG4 Polizeioberkommissar
    #define LSPDRANG5 Polizeihauptkommissar
    #define LSPDRANG6 Polizeidirektor
    #define LSPDRANG7 Polizeipräsident


    //GROVE RÄNGE
    #define GROVERANG1 Tollpatsch
    #define GROVERANG2 Junkie
    #define GROVERANG3 Hood Nigga
    #define GROVERANG4 Outdoor Nigga
    #define GROVERANG5 R.H. Nigga
    #define GROVERANG6 GS Gangster Jr.
    #define GROVERANG7 GS Gangster


    die warnings sind erst gekommen als ich den /f chat gemacht hab
    hier die zeile 1387


    new SpielerName[MAX_PLAYER_NAME], string2[64];



    zeile 1404
    new SpielerName[MAX_PLAYER_NAME], string2[64];


    mit freundlichen grüßen
    john_smith

  • case 1;{rangname=LSPDRANG1;} //hier der error (zeile 1631)


    statt dem, mach überall wo du case hast:


    case 1:


    DOPPELPUNKT !!

  • ich hatte doppelpunkt aber da kam genau der gleich error
    deswegen hab ichs mal mit ";" probiert


    /edit


    mit ":" kommt das hier


    Code
    C:\Users\GRAF\Desktop\Dateien & more\SAMP\SAMP 0.3d\gamemodes\selfmade.pwn(1413) : warning 219: local variable "SpielerName" shadows a variable at a preceding level
    C:\Users\GRAF\Desktop\Dateien & more\SAMP\SAMP 0.3d\gamemodes\selfmade.pwn(1430) : warning 219: local variable "SpielerName" shadows a variable at a preceding level
    C:\Users\GRAF\Desktop\Dateien & more\SAMP\SAMP 0.3d\gamemodes\selfmade.pwn(1657) : error 014: invalid statement; not in switch
    C:\Users\GRAF\Desktop\Dateien & more\SAMP\SAMP 0.3d\gamemodes\selfmade.pwn(1657) : warning 215: expression has no effect
    C:\Users\GRAF\Desktop\Dateien & more\SAMP\SAMP 0.3d\gamemodes\selfmade.pwn(1657) : error 001: expected token: ";", but found ":"
    C:\Users\GRAF\Desktop\Dateien & more\SAMP\SAMP 0.3d\gamemodes\selfmade.pwn(1657) : error 029: invalid expression, assumed zero
    C:\Users\GRAF\Desktop\Dateien & more\SAMP\SAMP 0.3d\gamemodes\selfmade.pwn(1657) : fatal error 107: too many error messages on one line
  • Du bekommst da einen error, weil dein define kein String ist


    richtig wäre dann so
    #define LSPDRANG1 "Polizeimeister"

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • befolge das von BlackACe und mache es dann so:


    ocmd:f(playerid,params[])
    {
    new text[300],string[100];
    if(sscanf(params,"s",text))return SendClientMessage(playerid,ROT,"/f [Text]");
    new rangname[64];
    if(GetPVarInt(playerid,"Fraktion") ==1)
    {
    case 1:{rangname=LSPDRANG1;} //hier der error (zeile 1631)
    case 2:{rangname=LSPDRANG2;}
    case 3:{rangname=LSPDRANG3;}
    case 4:{rangname=LSPDRANG4;}
    case 5:{rangname=LSPDRANG5;}
    case 6:{rangname=LSPDRANG6;}
    case 7:{rangname=LSPDRANG7;}


    }


    if(GetPVarInt(playerid,"Fraktion") ==2)
    {
    case 1;{rangname=GROVERANG1;}
    case 2;{rangname=GROVERANG2;}
    case 3;{rangname=GROVERANG3;}
    case 4;{rangname=GROVERANG4;}
    case 5;{rangname=GROVERANG5;}
    case 6;{rangname=GROVERANG6;}
    case 7;{rangname=GROVERANG7;}


    }

    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(IsPlayerConnected(i))
    {
    if(isPlayerInFrakt(i,GetPVarInt(playerid,"Fraktion")))
    {
    format(string,sizeof(string),"%s %s: %s",rangname,SpielerName(playerid),text);
    SendClientMessage(i,HELLGRÜN,string);
    }
    }
    }
    return 1;
    }


    regards

  • schonmal danke aber es kommt immer noch das hier

  • ocmd:f(playerid,params[])
    {
    new text[300],string[100];
    if(sscanf(params,"s",text))return SendClientMessage(playerid,ROT,"/f [Text]");
    new rangname[64];
    if(GetPVarInt(playerid,"Fraktion") ==1)
    {
    case 1:{rangname=LSPDRANG1;} //hier der error (zeile 1631)
    case 2:{rangname=LSPDRANG2;}
    case 3:{rangname=LSPDRANG3;}
    case 4:{rangname=LSPDRANG4;}
    case 5:{rangname=LSPDRANG5;}
    case 6:{rangname=LSPDRANG6;}
    case 7:{rangname=LSPDRANG7;}


    }


    if(GetPVarInt(playerid,"Fraktion") ==2)
    {
    case 1:{rangname=GROVERANG1;}
    case 2:{rangname=GROVERANG2;}
    case 3:{rangname=GROVERANG3;}
    case 4:{rangname=GROVERANG4;}
    case 5:{rangname=GROVERANG5;}
    case 6:{rangname=GROVERANG6;}
    case 7:{rangname=GROVERANG7;}


    }

    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(IsPlayerConnected(i))
    {
    if(isPlayerInFrakt(i,GetPVarInt(playerid,"Fraktion")))
    {
    format(string,sizeof(string),"%s %s: %s",rangname,SpielerName(playerid),text);
    SendClientMessage(i,HELLGRÜN,string);
    }
    }
    }
    return 1;
    }


    Und nun errors ansagen, ich bekomm keine

  • vielleicht sollte zwischen dein if und case noch ein switch der den rang abfragt?

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski



  • hab das eingefügt kommt immernoch das hier



    Zeile 1413:
    new SpielerName[MAX_PLAYER_NAME], string2[64];


    ZEiel 1430
    new SpielerName[MAX_PLAYER_NAME], string2[64];







    /Edit
    ich hab ne idee warums vielleicht nicht funktioniert :D
    ich hab weiter oben ein kleines stückchen mit /* */ rausgemacht ausversehen war das
    hier auch draußen
    //public OnPlayerClickPlayer(playerid, clickedplayerid, source)
    //{


    aber als ich das wieder wegmachte (Die "//") kam aufeinmal soviele errors




    /edit
    diese klammerfehler hab ich beseitig
    jetzt ist es wieder so
    C:\Users\GRAF\Desktop\Dateien & more\SAMP\SAMP 0.3d\gamemodes\selfmade.pwn(1369) : warning 209: function "OnDialogResponse" should return a value
    C:\Users\GRAF\Desktop\Dateien & more\SAMP\SAMP 0.3d\gamemodes\selfmade.pwn(1384) : warning 219: local variable "SpielerName" shadows a variable at a preceding level
    C:\Users\GRAF\Desktop\Dateien & more\SAMP\SAMP 0.3d\gamemodes\selfmade.pwn(1401) : warning 219: local variable "SpielerName" shadows a variable at a preceding level
    C:\Users\GRAF\Desktop\Dateien & more\SAMP\SAMP 0.3d\gamemodes\selfmade.pwn(1622) : error 014: invalid statement; not in switch
    C:\Users\GRAF\Desktop\Dateien & more\SAMP\SAMP 0.3d\gamemodes\selfmade.pwn(1622) : warning 215: expression has no effect
    C:\Users\GRAF\Desktop\Dateien & more\SAMP\SAMP 0.3d\gamemodes\selfmade.pwn(1622) : error 001: expected token: ";", but found ":"
    C:\Users\GRAF\Desktop\Dateien & more\SAMP\SAMP 0.3d\gamemodes\selfmade.pwn(1622) : error 029: invalid expression, assumed zero
    C:\Users\GRAF\Desktop\Dateien & more\SAMP\SAMP 0.3d\gamemodes\selfmade.pwn(1622) : fatal error 107: too many error messages on one line


    Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    4 Errors.


    /edit
    hier die errors musste sie nur noch schnell raussuchen
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == DIALOG_PREMIUM)
    {
    if(response == 0)
    {
    SendClientMessage(playerid,WEIS,"Premiumvergabe abgebrochen.");
    return 1;
    }
    if(response == 1)
    {
    if(listitem == 0)
    {
    GivePlayerMoney(playerid, 10000);
    NARICHT(playerid,WEIS,"Du hast dir 10.000,00$ als Premium Feature ausgesucht.");
    SpielerInfo[playerid][PPunkte] --;
    return 1;
    }
    if(listitem == 1)
    {
    SendClientMessage(playerid,WEIS,"Du hast bist nun 1 Level höher.");
    SpielerInfo[playerid][PPunkte] --;
    SetPlayerScore(playerid, GetPlayerScore(playerid)+1);
    return 1;
    }
    }
    }
    if(dialogid == DIALOG_LOGIN)
    {
    if(response == 0)
    {
    NARICHT(playerid,BLAU,"Abgeborchen. Du wurdest gekickt.");
    Kick(playerid);
    return 1;
    }
    if(response == 1)
    {
    Login(playerid,inputtext);
    return 1;
    }
    }
    if(dialogid == DIALOG_REGISTER)
    {
    if(response == 0)
    {
    NARICHT(playerid,LIGHTRED,"Du hast den Vorgang abgebrochen");
    Kick(playerid);
    return 1;
    }
    if(response == 1)
    {
    if(!strlen(inputtext))
    {
    NARICHT(playerid,HELLGRAU,"Bitte geben Sie ein Passwort in das Kästchen ein:");
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrieren","Herzlich Willkommen\nDa Sie noch keinen Account bei uns haben,\nmüssen Sie hier Ihr Passwort eintippen um zu Spielen:","Registrieren","Abbrechen");
    return 1;
    }
    Register(playerid,inputtext);
    return 1;
    }
    }
    } //hier der error 1 ((1369) : warning 209: function "OnDialogResponse" should return a value)


    die anderen sind so geblieben wie oben nur andere zeile, da ich was anderes rausgenommen hab was ich nichtmehr brauchte

    2 Mal editiert, zuletzt von John_Smith ()

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • ocmd:f(playerid,params[])
    {
    new text[300],string[100];
    if(sscanf(params,"s",text))return SendClientMessage(playerid,ROT,"/f [Text]");
    new rangname[64];
    if(GetPVarInt(playerid,"Fraktion") ==1)
    switch
    {
    case 1:{rangname=LSPDRANG1;} //hier der error (zeile 1631)
    case 2:{rangname=LSPDRANG2;}
    case 3:{rangname=LSPDRANG3;}
    case 4:{rangname=LSPDRANG4;}
    case 5:{rangname=LSPDRANG5;}
    case 6:{rangname=LSPDRANG6;}
    case 7:{rangname=LSPDRANG7;}


    }


    if(GetPVarInt(playerid,"Fraktion") ==2)
    switch
    {
    case 1:{rangname=GROVERANG1;}
    case 2:{rangname=GROVERANG2;}
    case 3:{rangname=GROVERANG3;}
    case 4:{rangname=GROVERANG4;}
    case 5:{rangname=GROVERANG5;}
    case 6:{rangname=GROVERANG6;}
    case 7:{rangname=GROVERANG7;}


    }


    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(IsPlayerConnected(i))
    {
    if(isPlayerInFrakt(i,GetPVarInt(playerid,"Fraktion")))
    {
    format(string,sizeof(string),"%s %s: %s",rangname,SpielerName(playerid),text);
    SendClientMessage(i,HELLGRÜN,string);
    }
    }
    }
    return 1;
    }



    hab das jetzt so gemacht aber normalerweise kommt ja noch was hinter switch in Klammern
    aber in dem fall weiß ich nicht was da in die klammer soll

  • Ja du musst du nun den Rang abfragen bzw die Vaiable/PVar in der du den Rang speicherst

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • ja das hat mir sehr geholfen
    aber was muss ich damit machen


    Code
    C:\Users\GRAF\Desktop\Dateien & more\SAMP\SAMP 0.3d\gamemodes\selfmade.pwn(1370) : warning 209: function "OnDialogResponse" should return a value
    Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase
    
    
    
    
    1 Warning.



    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == DIALOG_PREMIUM)
    {
    if(response == 0)
    {
    SendClientMessage(playerid,WEIS,"Premiumvergabe abgebrochen.");
    return 1;
    }
    if(response == 1)
    {
    if(listitem == 0)
    {
    GivePlayerMoney(playerid, 10000);
    NARICHT(playerid,WEIS,"Du hast dir 10.000,00$ als Premium Feature ausgesucht.");
    SpielerInfo[playerid][PPunkte] --;
    return 1;
    }
    if(listitem == 1)
    {
    SendClientMessage(playerid,WEIS,"Du hast bist nun 1 Level höher.");
    SpielerInfo[playerid][PPunkte] --;
    SetPlayerScore(playerid, GetPlayerScore(playerid)+1);
    return 1;
    }
    }
    }
    if(dialogid == DIALOG_LOGIN)
    {
    if(response == 0)
    {
    NARICHT(playerid,BLAU,"Abgeborchen. Du wurdest gekickt.");
    Kick(playerid);
    return 1;
    }
    if(response == 1)
    {
    Login(playerid,inputtext);
    return 1;
    }
    }
    if(dialogid == DIALOG_REGISTER)
    {
    if(response == 0)
    {
    NARICHT(playerid,LIGHTRED,"Du hast den Vorgang abgebrochen");
    Kick(playerid);
    return 1;
    }
    if(response == 1)
    {
    if(!strlen(inputtext))
    {
    NARICHT(playerid,HELLGRAU,"Bitte geben Sie ein Passwort in das Kästchen ein:");
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrieren","Herzlich Willkommen\nDa Sie noch keinen Account bei uns haben,\nmüssen Sie hier Ihr Passwort eintippen um zu Spielen:","Registrieren","Abbrechen");
    return 1;
    }
    Register(playerid,inputtext);
    return 1;
    }
    }
    } //das hier ist der fehler