Beiträge von Velo.

    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)

    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"

    Du müsstest


    stock strget(strx[], pos, search = ' ') {
    new arg, ret[128], idxx;
    for (new i = 0; i < strlen(strx); i++) {
    if(strx[i] == search || i == strlen(strx) || strx[i + 1] == 10) {
    arg++;
    if (arg == pos + 1){
    ret[i-idxx] = EOS;
    return ret;
    } else if (arg == pos)
    idxx= i+1;
    }
    else if (arg == pos)
    ret[i - idxx] = strx[i];
    }
    return ret;
    }
    Irgendwo recht weit am besten ganz oben im Script einfügen...
    Dann sollte es gehen

    26 Errors lassen immer auf einen Klammer fehler Schließen.


    Schau einfach mal ob du nicht irgendwo ein } vergessen hast




    if(strcmp(strget(cmdtext,0),"/vagosinvite", true) == 0)
    {
    new name[MAX_PLAYER_NAME];
    new ziel = strval(strget(cmdtext,1));
    GetPlayerName(ziel,name,sizeof(name));
    if(SpielerInfo[playerid][Leader] == 5) {
    SendClientMessage(playerid,COLOR_LIGHTBLUE,"Du hast %s invitet.",name);
    SpielerInfo[ziel][Member] = 5;
    SetPlayerSkin(ziel,109);
    } else {
    SendClientMessage(playerid,COLOR_GRAD2,"Du bist nicht der Leader der Vagos Gang");
    } return 1;}



    Es könnte jetzt auch sein das es nicht funktioniert habe es nicht vorher getestet....
    Soweit ich das im Kopf hab sollte es aber irgendwie so klappen


    //E: kleine Anpassung

    Wenn du SetVehiclePos machst,


    solltest du auch die neuen Koordinaten X,Y,Z abspeichern in der Datenbank.
    Ich gehe mal davon aus du hast das Bereits gewusst und komme zu schritt 2.


    Wenn du 2 Positionen haben willst wo das Auto spawnt (also nicht 2 Autos sondern nach befehlseingabe einfach die 2. Position)
    Würde ich das folgend machen


    Position 1 (x,y,z) in der Datenbank speichern
    Position 2 (x2,y2,z2) in der DB speicher
    Switch in der DB Speichern


    Switch definiert hierbei eine Zahlenwechsel mit den möglichkeiten 0 und 1


    Dazu machst du eine Abfrage
    Wenn nun das Fahrzeug spawnt und Switch 0 drinne ist spawnt es bei Position 1
    Wenn nun das Fahrzeug spawnt und Switch 1 drinne ist spawnt es bei Position 2


    Nun kommt noch ein netter CMD namens "switchvehspawn" oder kurz svs oder was dir auch einfällt der obrig genannten Switch zwischen 1 und 0 hin und her wechselt wie es ihm grade beliebt



    Ich hoffe meine Gedanken konnte mal wieder sinnlos veranschaulicht werden und ich konnte dir irgendwie helfen zumindest ein Konzept dafür zu finden...
    Für alles weiter bräuchte man dann halt deine direkte Idee wie du es machen willst und ggf. einen Scripausschnitt wenn er den bereits vorhanden ist


    MFG und Allzeit guten Flug

    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

    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 ;)

    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

    Ich hab kein Plugin muss dich entäuschen...


    Es war einfach nur die Frage ob es über ein TS Plugin möglich ist eine File aufzurufen den letzten Eintrag auszulesen und dementsprechend zu handeln in dem es den Client switcht....
    Ja es hört sich einfach an... aber ob ein TS Plugin das kann war meine frage....
    Gut ich besuch mal das Offizielle TS Forum und frag da an...


    P.S.
    @Tropper
    Ich hab mich fast 4 Stunden mit GCS beschäftigt und hab nichmal so richtig ansatzweiße ne Peilung wie das funktioniert...
    Also im Sinne des Codes nicht im Sinne der Funktionsweiße allgemein

    Nein nu böses Braiki :thumbdown:


    Hör auf Brotfisch nicht unterstützen zu wollen :thumbup:


    Ich klicke immer Brav auf die Werbung... kenne das System selber von meiner Ex-Homepage...
    jeder Klick hat mir da 5 Cent gebracht....


    Wie das hier nun direkt funktioniert weiß ich auch nicht :)
    Aber jeder klick oder jede Einblendung hilft

    Klar kann man das :)


    Gib Breadfish 1200 Euro im Monat und die werden das schon Regeln :)


    Personal-FAQ
    Frage: Warum erscheint bei mir diese Werbung?
    Antwort: Damit Breadfish auch in Zukunft sowohl Online als auch Kostenlos bleibt.
    Frage: Kann man das Abstellen?
    Antwort: Nein weil sonst kein Geld in die Kasse der Breadfishbetreiber kommt.
    Frage: Warum machst du extra eine FAQ?
    Antwort: Weil mir lw ist.
    Frage: Bist du gestört oder so?
    Antwort: Nein einfach nur besoffen ...

    Siehste :)


    Und man kann auch auf z.B. RL Server viel "Müll" mappen :) Nehmen wir z.B. 3 Verschiedene Baustellen, 15 Häuser für irgendwelche User (+ Umgebung),3 Sinnlose Admininseln, Tankstellen, Tore, blablabla...
    Und schon hast du deine 400 Objekte

    Haha.....



    Ich pfeife denke schon wieder "Wie komme ich über den Abgrund" und übersehe die Brücke neben mir.....
    Nunja....


    Ich lass das //Offtopic hier dann wieder sein