Tempomatenproblem....

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
  • Hi Leute ich habe nen kleines Problem ^^
    ich habe nen kleines Tempomatensystem gescriptet aber wenn ich den Tempomat anschalte dann kann ich ihn nichtmehr abschalten
    hier der Code:


    #include
    new Tempomat[MAX_PLAYERS];
    public OnFilterScriptInit()
    {
    SetTimer("OnPlayerUpdate",10,1);
    print("\n--------------------------------------");
    print("Tempomat");
    print("--------------------------------------\n");
    return 1;
    }


    public OnFilterScriptExit()
    {
    return 1;
    }
    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    return 1;
    }
    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(Tempomat[playerid] == 0)
    {
    if (newkeys == KEY_ACTION)
    {
    new Float:vspeed[3];
    if(!IsPlayerInAnyVehicle(playerid)) return 0;
    SetPVarInt(playerid,"VehID",GetPlayerVehicleID(playerid));
    GetVehicleVelocity(GetPlayerVehicleID(playerid),vspeed[0],vspeed[1],vspeed[2]);
    SetPVarFloat(playerid,"vspeed_x",vspeed[0]);
    SetPVarFloat(playerid,"vspeed_y",vspeed[1]);
    Tempomat[playerid] = 1;
    SetPVarInt(playerid,"temp",1);
    }
    }
    if(Tempomat[playerid] == 1)
    {
    if(newkeys == KEY_JUMP)
    {
    Tempomat[playerid] = 0;
    }
    }
    return 1;
    }
    public OnPlayerUpdate(playerid)
    {
    if(IsPlayerInAnyVehicle(playerid) && (GetPVarInt(playerid,"temp") == 1))
    {
    SetVehicleVelocity(GetPVarInt(playerid,"VehID"),GetPVarFloat(playerid,"vspeed_x"),GetPVarFloat(playerid,"vspeed_y"),0.0);
    }
    return 1;
    }</a_samp>


    </a_samp>
    //Edit:</a_samp>
    Für die die es nicht verstanden haben was für ein Problem ich habe:
    Mein Problem ist es wenn ich STRG drücke dann fährt das Auto die ganze zeit weiter und wenn ich aussteige und auf ein neues Auto gehe dann fährt es mit der Gleichen Geschwindigkeit weiter

  • 1. den Timer rauslöschen, OnPlayerUpdate ist ein Standard-Callback.
    2.
    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if (newkeys & KEY_ACTION)
    {
    if(Tempomat[playerid] == 0)
    {
    new Float:vspeed[3];
    if(!IsPlayerInAnyVehicle(playerid)) return 0;
    SetPVarInt(playerid,"VehID",GetPlayerVehicleID(playerid));
    GetVehicleVelocity(GetPlayerVehicleID(playerid),vspeed[0],vspeed[1],vspeed[2]);
    SetPVarFloat(playerid,"vspeed_x",vspeed[0]);
    SetPVarFloat(playerid,"vspeed_y",vspeed[1]);
    Tempomat[playerid] = 1;
    SetPVarInt(playerid,"temp",1);
    }
    else
    {
    Tempomat[playerid] = 0
    SetPVarInt(playerid,"temp",0);
    }
    }
    return 1;
    }
    Bei Tastenabfragen NIE mit '==' abfragen sondern mit '&'!
    Du solltest die PVar "temp" auch auf 0 setzen, du hast ja sicher gesehen,
    dass die eine nicht allzu kleine Rolle bei OnPlayerUpdate spielt.


    //Edit:
    Tastenabfragen werden zwar schon mit '==' ingame funktionieren, aber
    wenn man diese Taste in Kombination mit einer anderen Taste drückt wird der Code
    nicht abgerufen, weil er ja nur aufgerufen wird, wenn auch wirklich NUR diese Taste gedrückt wird.
    Wenn du jedoch mit '&' abfrägst, "sucht" er sozusagen in der Variable nach der Taste.