if schmeißt mir Error

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
  • Heyho Breadfish,


    brauch mal ne kurze hilfe....
    Und zwar schmeißt mir folgendes if einen Error
    if(spieler==owner)


    und zwar sagt er mir den hier
    error 033: array must be indexed (variable "spieler")


    hier der ganze bereich um den es geht
    if(strcmp(strget(cmdtext,0),"/parken",true)==0)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    new string[256];
    new Float:x,Float:y,Float:z,Float:a;
    new owner[256];
    owner=dini_Get(string,"Besitzer");
    format(string, sizeof(string),"/Cars/Car_%d.sav",vehicleid);
    if(spieler==owner)
    {
    GetVehiclePos(vehicleid,x,y,z);
    GetVehicleZAngle(vehicleid,a);
    dini_FloatSet(string,"x",x);
    dini_FloatSet(string,"y",y);
    dini_FloatSet(string,"z",z);
    dini_FloatSet(string,"a",a);
    }
    }
    }


    Zur info
    spieler wurde ungefähr 150 Zeilen weiter oben als GetPlayerName(playerid,spieler,sizeof(spieler)); deklariert


    nit das der 1. mir rausschmeißt da ist kein new spieler drin und blablabla



    Zur weiteren Info:
    Egal was ich ins if schreibe... das 1. wort wird mir immer Error 033 geworfen... ich hab kene Ahnung wie ich den grade wegbekomme

    2 Mal editiert, zuletzt von Velo. ()

  • THE Boondock Saints
    Ok, das ist erstmal gut zu wissen.
    Und das ich strcmp dafür benötige ist evtl. genauso gut zu wissen.
    Dudalus

    Zitat

    spieler wurde ungefähr 150 Zeilen weiter oben als GetPlayerName(playerid,spieler,sizeof(spieler)); deklariert


    nit das der 1. mir rausschmeißt da ist kein new spieler drin und blablabla

    *hust*


    @Beide und alle nachposter
    Kann mich jemand aufklären wie ich das mit strcmp vergleiche bzw. was ich dafür alles benötige?




    Ja ich weiß das ist die 1 Millionen Dollar frage ;)

  • Trooper


    Danke erstmal für den Hinweis... hatte ich voll verpennt


    Nun bin ich soweit das ich irgendwo das wohl leicht verstanden habe WIE es ungefähr ablaufen soll bei strcmp...


    Nur irgendwas mach ich noch falsch...


    Momentaner Code:
    if(strcmp(strget(cmdtext,0),"/parken",true)== 0)
    {
    if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,COLOR_RED,"Du sitzt in keinem Fahrzeug");
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    new string[256], owner[256];
    new Float:x,Float:y,Float:z,Float:a;
    format(string, sizeof(string),"/Cars/Car_%d.sav",vehicleid);
    owner=dini_Get(string,"Besitzer");
    if(!strcmp(spieler,owner,true,32)) return SendClientMessage(playerid,COLOR_MAGENTA,"Du hast keinen Schlüssel");
    {
    GetVehiclePos(vehicleid,x,y,z);
    GetVehicleZAngle(vehicleid,a);
    dini_FloatSet(string,"x",x);
    dini_FloatSet(string,"y",y);
    dini_FloatSet(string,"z",z);
    dini_FloatSet(string,"a",a);
    SendClientMessage(playerid,COLOR_RED,"Funktioniert");
    }
    }
    }


    Ohne Error... soweit so gut...


    Nur wenn ich nun in einem Fahrzeug sitze sagt er mir jees mal das ich keinen Schlüssel habe.. auch wenn ich als Besitzer in der .sav stehe


    Was hab ich nun wieder verpennt??



    P.S.
    Die wiki`s für strcmp sollten evtl. sowohl mal auf wiki.samp.de sowie auf der wiki.samp.com aktualisiert werden...
    Wäre Top nicht nur für mich sondern für die allgmeine Scripterschaft
    Ich würds ja machen *haha* :whistling: aber da war ja das problem das ich es selber noch nicht richtig verstehe

  • So also der Script sieht wie folgt aus Momentan


    if(strcmp(strget(cmdtext,0),"/parken",true)== 0)
    {
    if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,COLOR_RED,"Du sitzt in keinem Fahrzeug");
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    new string[256],owner[256];
    new Float:x,Float:y,Float:z,Float:a;
    format(string, sizeof(string),"/Cars/Car_%d.sav",vehicleid);
    GetPlayerName(playerid,spieler,sizeof(spieler));
    owner =dini_Get(string,"Besitzer");
    if(!strcmp(spieler,owner,true))return SendClientMessage(playerid,COLOR_MAGENTA,"Du besitzt keinen Schlüssel für dieses Fahrzeug");
    {
    GetVehiclePos(vehicleid,x,y,z);
    GetVehicleZAngle(vehicleid,a);
    dini_FloatSet(string,"x",x);
    dini_FloatSet(string,"y",y);
    dini_FloatSet(string,"z",z);
    dini_FloatSet(string,"a",a);
    SendClientMessage(playerid,COLOR_RED,"Funktioniert");
    }
    }
    }


    Soweit immernoch ohne Error....
    Aber jedes mal bei der Eingabe des CMD schmeißt er mir den Return auf dem strcmp raus...
    Besitzer eintrag und Spielername sind DEFINITIV gleich
    Was kann man an Test auch großartig falsch schreiben


    Evtl. kennt jemand ja die Antwort.. ich find sie nämlich nicht, weder in irgendwelchen wiki`s noch mit "Learning by Doing"

    Einmal editiert, zuletzt von Velo. ()

  • Wenn die zwei Strings übereinstimmen returnt strcmp 0. Das ! vor strcmp ist bei dir also falsch...
    !strcmp ist das gleiche wie strcmp == 0:


    if(strcmp(spieler,owner,true))return SendClientMessage(playerid,COLOR_MAGENTA,"Du besitzt keinen Schlüssel für dieses Fahrzeug");

  • Funktioniert anscheinend...


    Danke ;)


    Was hab ich hier gelernt:

    • 2 Spieler Namen vergleicht man mit strcmp
    • Wie funktioniert strcmp
    • Die Community ist doch garnicht so schlecht wie im Hintergrund behauptet wird


    Wenn ich könnte würd ich euch einen Keks geben für die Hilfe... :thumbup:


    Thema erledigt ... Vote 4 Close (and Delete)