Wie bekomme ich diesen Error weg?

  • Wie bekomme ich diesen Error weg?

    Hallo

    ich habe in meinem Script einen sch... Error den ich einfach nicht wegbekomme,wenn ich versuche ihn wegzubekommen bekomme ich danach 10 weitere Errors zusätzlich.Mittlerweile bin ich deshalb echt am ausrasten da ich durch diesen error mein ganzes Script nicht weiterführen kann :(
    Deshalb hoffe ich das ihr mir bei diesem Problem villeicht helfen könnt :)

    Hier die Zeile:
    [pwn]if (strfind(tmpuname,partofname[][/pwn]

    Hier der Error:

    Quellcode

    1. error 028: invalid subscript (not an array or too many subscripts): "partofname"


    Schonmal vielen Dank für eure Hilfe :)
  • [pwn]partofname[][/pwn]
    Damit sprichst du die zweite Dimension des Arrays an.

    Vermutlich handelt es sich aber um ein eindimensionales Array (wie z.B. "new array[5];") und folglich musst du die erste Dimension ansprechen,
    indem du die eckigen Klammern einfach weglässt:
    [pwn]if (strfind(tmpuname,partofname // ...[/pwn]
  • Ah vielen Dank für die Antwort :)

    Danke für die Antwort :)

    Nur bekomme ich wenn ich ) weglasse diese Errors:
    C:\Server\gamemodes\Selfmade_1.pwn(708) : error 028: invalid subscript (not an array or too many subscripts): "partofname"
    C:\Server\gamemodes\Selfmade_1.pwn(710) : warning 217: loose indentation
    C:\Server\gamemodes\Selfmade_1.pwn(712) : warning 217: loose indentation
    C:\Server\gamemodes\Selfmade_1.pwn(710) : warning 204: symbol is assigned a value that is never used: "correctsigns_userid"
    C:\Server\gamemodes\Selfmade_1.pwn(710 -- 718) : warning 209: function "GetPlayerID" should return a value
    C:\Server\gamemodes\Selfmade_1.pwn(710 -- 719) : error 010: invalid function or declaration

    Und wenn ich das ) setze diesen Error :
    iZeile (707) : Falscher Variablentyp als Parameter (Parameter #2)
  • HIer der ganze Code :

    [pwn]stock GetPlayerID(const playername[], partofname=0)
    {
    new i;
    new playername1[MAX_STRING];
    for (i=0;i<MAX_PLAYERS;i++)
    {
    if (IsPlayerConnected(i))
    {
    GetPlayerName(i,playername1,sizeof(playername1));
    if (strcmp(playername1,playername,true)==0)
    {
    return i;
    }
    }
    }
    new correctsigns_userid=-1;
    new tmpuname[MAX_STRING];
    new hasmultiple=-1;
    if(partofname)
    {
    for (i=0;i<MAX_PLAYERS;i++)
    {
    if (IsPlayerConnected(i))
    {
    GetPlayerName(i,tmpuname,sizeof(tmpuname));
    if (strfind(tmpuname,partofname) //hier die Problemzeile :)
    {
    hasmultiple++;
    correctsigns_userid=i;
    }
    if (hasmultiple>0)
    {
    return -2;
    }
    }
    }
    }
    return correctsigns_userid;
    }[/pwn]
  • Jetzt wo ich den Code habe, sehe ich ja, dass partofname ein Integer ist.

    Da scheinen in der Zeile einfach komplett die Variablen vertauscht zu sein (die Variablen sind auch etwas unglücklich benannt).
    So könnte es funktionieren:
    [pwn]if (strfind(tmpuname,playername) != -1)[/pwn]
    Das schaut ob sich die Zeichenkette "playername" in der Zeichenkette "tmpuname" irgendwo verbirgt (strfind gibt -1 zurück, wenn es nichts findet).