Auto Motor/Licht/Abschlissen System

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
  • Guten Tag.



    Ich habe eine frage:


    Geht das Motor/Lichtsystem auch einfacher als:


    ocmd:autostarten(playerid,params[])
    {
    if(GetPlayerState(playerid)!=PLAYER_STATE_DRIVER)return SendClientMessage(playerid,dunkelgrün,"Du bist nicht der Fahrer eines Fahrzeuges!");
    new vID=GetPlayerVehicleID(playerid),
    tmp_engine,
    tmp_lights,
    tmp_alarm,
    tmp_doors,
    tmp_bonnet,
    tmp_boot,
    tmp_objective;
    //autostarten
    GetVehicleParamsEx(vID,tmp_engine,tmp_lights,tmp_alarm,tmp_doors,tmp_bonnet,tmp_boot,tmp_objective);
    if(tmp_engine==1){
    tmp_engine= 0;
    }else{
    tmp_engine=1;
    }
    SetVehicleParamsEx(vID,tmp_engine,tmp_lights,tmp_alarm,tmp_doors,tmp_bonnet,tmp_boot,tmp_objective);
    SendClientMessage(playerid,grau,"Auto wurde gestartet!");
    return 1;
    }


    ocmd:licht(playerid,params[])
    {
    if(GetPlayerState(playerid)!=PLAYER_STATE_DRIVER)return SendClientMessage(playerid,dunkelgrün,"Du bist nicht der Fahrer eines Fahrzeuges!");
    new vID=GetPlayerVehicleID(playerid),
    tmp_engine,
    tmp_lights,
    tmp_alarm,
    tmp_doors,
    tmp_bonnet,
    tmp_boot,
    tmp_objective;
    //autostarten
    GetVehicleParamsEx(vID,tmp_engine,tmp_lights,tmp_alarm,tmp_doors,tmp_bonnet,tmp_boot,tmp_objective);
    if(tmp_lights==1){
    tmp_lights= 0;
    }else{
    tmp_lights=1;
    }
    SetVehicleParamsEx(vID,tmp_engine,tmp_lights,tmp_alarm,tmp_doors,tmp_bonnet,tmp_boot,tmp_objective);
    SendClientMessage(playerid,grau,"Licht wurde eingeschalten!");
    return 1;
    }



    2 Frage:


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


    ocmd:autoabschliessen(playerid,params[])
    {
    if(GetPlayerState(playerid)!=PLAYER_STATE_DRIVER)return SendClientMessage(playerid,dunkelgrün,"Du bist nicht der Fahrer eines Fahrzeuges!");
    new vID=GetPlayerVehicleID(playerid),
    tmp_engine,
    tmp_lights,
    tmp_alarm,
    tmp_doors,
    tmp_bonnet,
    tmp_boot,
    tmp_objective;
    //autostarten
    GetVehicleParamsEx(vID,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(vID,tmp_engine,tmp_lights,tmp_alarm,tmp_doors,tmp_bonnet,tmp_boot,tmp_objective);
    SendClientMessage(playerid,grau,"Auto wurde abgeschlossen/aufgeschlossen");
    return 1;
    }


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

  • 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

  • aber ich könnte doch auch so wie ich es gemacht habe einfach nur


    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;


    machen in den ocmd befehl oder?

  • 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.

  • ich habe es jetzt so gemacht:


    ocmd:autoabschliessen(playerid,params[])
    {
    new vID=GetPlayerVehicleID(playerid),
    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]))
    break;
    }
    GetVehicleParamsEx(vID,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(vID,tmp_engine,tmp_lights,tmp_alarm,tmp_doors,tmp_bonnet,tmp_boot,tmp_objective);
    SendClientMessage(playerid,blau,"Auto wurde abgeschlossen/aufgeschlossen");
    return 1;
    }

  • 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.

  • Beitrag von Blackshadowscript ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • also ich habe es jetzt so wie du es gesagt hast:



    ocmd:autoabschliessen(playerid,params[])
    {
    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]))
    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;
    }

    return 1;
    }



    dann kommen aber diese fehler und wanings:
    lernen.p(444) : error 017: undefined symbol "tmp_engine"
    lernen.p(444 -- 450) : warning 215: expression has no effect
    lernen.p(457) : error 017: undefined symbol "tmp_engine"
    lernen.p(458) : error 017: undefined symbol "tmp_doors"
    lernen.p(459) : error 017: undefined symbol "tmp_doors"
    lernen.p(459) : warning 215: expression has no effect
    lernen.p(461) : error 017: undefined symbol "tmp_doors"
    lernen.p(461) : warning 215: expression has no effect
    lernen.p(463) : error 017: undefined symbol "tmp_engine"

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen

  • 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).

  • Beitrag von Kinimod ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • 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]))
    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,VEHICLE_PARAMS_ON,tmp_bonnet,tmp_boot,tmp_objective);
    SendClientMessage(playerid,blau,"Auto wurde abgeschlossen/aufgeschlossen");
    break;
    }

    return 1;
    }


    lernen.p(457) : error 035: argument type mismatch (argument 5)

  • 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.

  • Beitrag von Blackshadowscript ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Beitrag von Blackshadowscript ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Beitrag von Blackshadowscript ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • do.de - Domain-Offensive - Domains für alle und zu super Preisen