motor

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 ein motor system eingebaut.
    man gibt /motor ein um den motor zu starten oder zu stoppen.
    wenn der motor an ist, kann man ganz normal fahren. wenn der motor aus ist, soll vehiclevelocity auf 0 gesetzt werden, also das fahrzeug soll gestoppt werden.
    nun klappt das net ganz. ich habe unter OnKeyStateChange abgefragt ob er up oder down drückt, bzw gedrückt lässt. doch irgentwie kann ich immer uneingeschränkt fahren:


    Command:
    if(strcmp("/motor", cmdtext, true, 10) == 0)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    if(vehicleid != 435 && vehicleid != 441 && vehicleid != 450 && vehicleid != 464 && vehicleid != 465 && vehicleid != 481 && vehicleid != 501
    && vehicleid != 509 && vehicleid != 510 && vehicleid != 564 && vehicleid != 569 && vehicleid != 570 && vehicleid != 584 && vehicleid != 590
    && vehicleid != 591 && vehicleid != 594 && vehicleid != 606 && vehicleid != 607 && vehicleid != 608 && vehicleid != 610 && vehicleid != 611)
    {
    new str[256],name1[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name1,sizeof(name1));
    if(motor[vehicleid] == 0)
    {
    new zufall0[2][1] =
    {
    {0},
    {1}
    };
    new rand = random(sizeof(zufall0));
    if(zufall0[rand][0] == 0)
    {
    format(str,sizeof(str),"** %s dreht den Schlüssel, der Motor springt an!",name1);
    motor[vehicleid] = 1;
    }
    else
    {
    format(str,sizeof(str),"** %s dreht den Schlüssel, der Motor springt nicht an!",name1);
    }
    }
    else if(motor[vehicleid] == 1)
    {
    new Float:vx, Float:vy, Float:vz;
    GetVehicleVelocity(vehicleid,vx,vy,vz);
    if(vx == 0 && vy == 0 && vz == 0)
    {
    motor[vehicleid] = 0;
    format(str,sizeof(str),"** %s dreht den Schlüssel und schaltet den Motor aus!",name1);
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Du kannst den Motor nicht in der Fahrt ausmachen!");
    }
    }
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    new Float:px, Float:py, Float:pz;
    GetPlayerPos(playerid,px,py,pz);
    if(IsPlayerInRangeOfPoint(i,35.0,px,py,pz))
    {
    SendClientMessage(i,0x894BFFFF,str);
    }
    }
    }
    }
    }


    wenn er fahren will:
    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(newkeys & 128 || newkeys & -128 || GEDRUECKT(128) || GEDRUECKT(-128))
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    if(motor[GetPlayerVehicleID(playerid)] == 0)
    {
    new Float:vx, Float:vy, Float:vz;
    GetVehicleVelocity(GetPlayerVehicleID(playerid),vx,vy,vz);
    SetVehicleVelocity(GetPlayerVehicleID(playerid),vx*0,vy*0,vz*0);
    }
    }
    }
    return 1;
    }


    defines und andere dinge die damit zu tun haben:
    #define GEDRUECKT(%0) (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))


    public OnPlayerExitVehicle(playerid, vehicleid)
    {
    motor[vehicleid] = 0;
    return 1;
    }


    public OnVehicleSpawn(vehicleid)
    {
    motor[vehicleid] = 0;
    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    motor[GetPlayerVehicleID(playerid)] = 0;
    return 1;
    }


    Ich hoffe ihr könnt mir da helfen..


    mfg
    Simon