Beiträge von Kinimod

    Da ist immer noch ein Fehler von eben drinnen.
    Du MUSST die geschweiften Klammern um die If-Abfrage machen.


    Außerdem war das mit dem VEHICLE_PARAMS_ON falsch von mir. Hatte einen kleinen Brainlag.


    ocmd:autoabschliessen(playerid,params[])
    {
    new tmp_engine,
    tmp_lights,
    tmp_alarm,
    tmp_doors,
    tmp_bonnet,
    tmp_boot,
    tmp_objective;
    // abschlissen
    for(new i= 0; i<MAX_VEHICLES; i++)
    {
    new Float:vPos[3];
    GetVehiclePos(i,vPos[0],vPos[1],vPos[2]);
    if(IsPlayerInRangeOfPoint(playerid,3,vPos[0],vPos[1],vPos[2])){ //hier
    GetVehicleParamsEx(i,tmp_engine,tmp_lights,tmp_alarm,VEHICLE_PARAMS_ON,tmp_bonnet,tmp_boot,tmp_objective);
    if(tmp_doors==1){
    tmp_doors= 0;
    }else{
    tmp_doors=1;
    }
    SetVehicleParamsEx(i,tmp_engine,tmp_lights,tmp_alarm,tmp_doors,tmp_bonnet,tmp_boot,tmp_objective);
    SendClientMessage(playerid,blau,"Auto wurde abgeschlossen/aufgeschlossen");
    break;
    }
    }
    return 1;
    }


    Wenn da noch der gleiche Warning von eben kommt: Ich brauche die exakte Zeile, die vom Compiler bemängelt wird.


    for(new i= 0; i<MAX_VEHICLES; i++)
    {
    if(IsPlayerInRangeOfPoint(playerid,3,vPos[0],vPos[1],vPos[2])){
    GetVehicleParamsEx(i,tmp_engine,tmp_lights,tmp_alarm,tmp_doors,tmp_bonnet,tmp_boot,tmp_objective);
    if(tmp_doors==1){
    tmp_doors= 0;
    }else{
    tmp_doors=1;
    }
    SetVehicleParamsEx(i,tmp_engine,tmp_lights,tmp_alarm,tmp_doors,tmp_bonnet,tmp_boot,tmp_objective);
    SendClientMessage(playerid,blau,"Auto wurde abgeschlossen/aufgeschlossen");
    break;
    }
    }


    So ist es korrekt.
    Und du hast das "new " oben vor den Variablen vergessen (vor dem tmp_engine).

    Das wird so nicht funktionieren.


    Das
    GetVehicleParamsEx(i,tmp_engine,tmp_lights,tmp_alarm,tmp_doors,tmp_bonnet,tmp_boot,tmp_objective);
    if(tmp_doors==1){
    tmp_doors= 0;
    }else{
    tmp_doors=1;
    }
    SetVehicleParamsEx(i,tmp_engine,tmp_lights,tmp_alarm,tmp_doors,tmp_bonnet,tmp_boot,tmp_objective);
    SendClientMessage(playerid,blau,"Auto wurde abgeschlossen/aufgeschlossen");
    muss in die If Abfrage in der Schleife.
    Und entfern oben die vID Variable, die wird nicht gebraucht.

    Ja, der Alarm geht, soweit ich weiß, an, sofern jemand gegen das Fahrzeug schlägt.


    Habe das gerade nochmal selbst getestet und ich revidiere meine Aussage: Wenn du den Alarm einschaltest (ist halt so'n ganz normaler Hupalarm, wie du ihn aus dem Reallife kennst, ist er sofort an und nicht erst, wenn jemand gegen ihn schlägt.
    Du kannst es also prima mit einem eigenen Diebstahlsystem verknüpfen, musst den Alarm damit nur manuell einschalten.



    Du kannst das so in den Befehl machen, korrekt.
    Du solltest natürlich die Abfrage entfernen, ob er Fahrer ist, da das ja dann keinen Sinn machen würde.

    Geht das Motor/Lichtsystem auch einfacher als:


    Du könntest die Variablen durch ein Array ersetzen, bspw.:


    new vehicleParams[7];
    /*vehicleParams[0] könntest du dann z.B. für die Türen (ehemaliges tmp_engine) verwenden,
    vehicleParams[1] könntest du dann z.B. für das Licht verwenden (ehemaliges tmp_lights),
    etc.*/

    Ansonsten wüsste ich nicht, wie man es simplifizieren könnte.

    Ich habe es zwar geschafft Auto abschlissen zu lassen nur die frage ist wie kann ich es auserhalb des Fahrzeuges machen?


    Mit einer For Schleife.
    Beispiel:
    for(new i=0; i<MAX_VEHICLES; i++){
    new Float:vPos[3];
    GetVehiclePos(i, vPos[0], vPos[1], vPos[2]);

    if(IsPlayerInRangeOfPoint(playerid, 3, vPos[0], vPos[1], vPos[2])){
    //Der Spieler ist an Fahrzeug mit der ID i und daher kann es abgeschlossen werden. Vorher muss natürlich noch die Legitimation, das Fahrzeug abzuschließen, geprüft werden.
    break;
    }
    }
    Dieser Code iteriert durch jedes Fahrzeug und fragt dessen Position ab.
    Anschließend wird abgefragt, ob der Spieler mindestens drei Einheiten von dieser Position entfernt ist. Wenn ja, kann das Fahrzeug (ID i) abgeschlossen oder aufgeschlossen werden und die Schleife muss abgebrochen werden (break).


    3Frage: Für was ist das alarm bei: SetVehicleParamsEx ?


    für den Diebstahlalarm

    Sagen wir mal es existieren folgende Variablen (wir kennen ja dein System nicht):


    PHP
    //$premiumLevel = 2; //das soll die Variable darstellen, die das Premiumlevel des Spielers behinhaltet.
    
    
    $costs = array(5, 8, 12); //Der Preis, der pro Premiumlevel gezahlt werden muss.


    In dem Array "costs" befindet sich auf Index 0 eine 5, auf Index 1 eine 8 und auf Index 2 eine 12.


    Also wäre der Preis:

    PHP
    $costs[$premiumLevel-1];


    Hab bitte Verständnis, habe seit einigen Monaten nicht mehr exzessiv mit PHP gearbeitet, aber das sollte so stimmen.

    Bezugnehmend auf Rockys Post:


    Breadfish = GTA Forum und trotzdem kann man die Origin und Steam ID angeben. Bei der SC ID passt es sogar noch zum Forenkonzept.
    Darüber hinaus kann man das in wenigen Klicks anpassen.


    Was muss das Team bitte noch überzeugen?

    Weil man den erfolgreichsten GTA MP Mod auch so einfach weitergibt...
    Wenn mir nicht jemand zufällig reichlich Kohle dafür hinblättern würde, deren Menge sich noch zufälliger dazu geeignet sieht, meine Lebenshaltungskosten + Luxusgegenstände zu finanzieren, würde ich das auch nicht machen.
    Bedenk immer, dass du nichts zahlst und im Umkehrschluss sowas auch nicht verlangen kannst.


    Zitat

    und es entwickelt sich zu einem Mod, den man aber und zu mal der Erinnerung wegen nutzt! :thumbup:


    Lies dir den Post von Weasel bitte noch mal durch und denk bitte noch mal darüber nach, was du für 'nen (nett ausgedrückt) Quark produzierst.

    Du hast es wahrscheinlich schlicht und einfach falsch installiert.


    Systemsteuerung => Programme => Programme deinstallieren => nach "Autohotkey" suchen => "Deinstallieren / ändern" anklicken => Modifiy => "ANSI 32 Bit" auswählen => weitere Schritte durchführen

    Syno:
    Korrekt, er macht etwas falsch. Es liegt aber nicht am Syntax, sondern an der Länge der Zeile.


    Er bekommt einen Error, weil die Zeile wohl zu lang ist, da ändert auch kein Zeilenumbruch im Script, wie du ihn etwa gemacht hast, etwas, weil der Compiler es dennoch als eine einzige Zeile erkennt. Ergo: Fehlermeldung "Input line too long"


    Die einzigen Möglichkeiten bleiben da die von Jeffry (format()) und die von Kaliber (strcat()).

    @Mencent:
    Manniac:
    Danke, funktioniert prima (musste zwar noch etwas tricksen, weil INVALID_TEXT_DRAW keinen Text:Tag hat, aber jetzt funktioniert es.


    _____________________________



    Wie kann ich es jetzt machen, dass beim Betreten des Checkpoints ein 2 erstellt wird usw.. ?


    Mach einfach ein globales Array:
    enum CHECKPOINT_ARRAY_INFO{
    Float:_x,
    Float:_y,
    Float:_z
    };
    new currentCheckpoint[MAX_PLAYERS] [CHECKPOINT_ARRAY_INFO];


    Da speicherst du dann immer bei einem CreateCheckpoint() die Positionen (mach dir am Besten eine Funktion dafür, dann geht es einfacher).
    Beispiel:
    currentCheckpoint[playerid][_x] = x;


    Unter OnPlayerEnterCheckpoint() dann einfach:


    if(IsPlayerInRangeOfPoint(playerid, 5, currentCheckpoint[playerid][_x], currentCheckpoint[playerid][_y], currentCheckpoint[playerid][_z])){
    //Neuen Checkpoint erstellen
    }

    Dann steht es ja für einen String mit einem Array von 2000


    :thumbup:
    Ein String ist nichts Anderes als ein Array.
    Es steht genaugenommen also nicht für ein Array, sondern es ist ein Array.


    Also tank[0] tank[1] tank[2] usw..


    :thumbup:
    Du könntest in deinem Beispiel die Indizes von 0 bis 1999 verwenden.

    Hat jemand irgend 'ne Möglichkeit abzufragen, ob die Selektion eines Textdraws durch die ESC Taste abgebrochen wurde? Dieser Abbruch durch die ESC Taste ist leider von SAMP aus und ich würde gerne mit diesem Abbruch auch das zu selektierende Textdraw schließen. OnPlayerKeyStateChange() bringt nichts, da es, je nachdem ob das Callback seine Tage hat, entweder für die Taste ESC eine 0 zurückgibt oder den Keycode für die Alt Taste.


    Danke im Voraus.