AntiBikeFall

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
  • Der Timer überprüft dann glaub ich immer, ob der Spieler aufm Bike ist, und wenn nicht dann setzt der ihn wieder aufs Bike.


    Irgendwas mit PutPlayerToBike oder so..^^


    EDIT: Es ist halt blöd, wenn man irgendwo reinfährt und dann sieht man, wie der Biker runterfällt und wieder draufgesetzt wird. Darum möchte ich, dass ich den Timer auf ne kleine Zeit stellen kann..

    Einmal editiert, zuletzt von Vince ()


  • new fv;
    public OnPlayerCommandText()
    {
    if (strcmp(cmd, "/antibike", true) == 0)
    {
    if (fv == 0)
    {
    SendClientMessage(playerid,0xFF0000,"Anti Bike Fall Off aktiviert!");
    fv = 1;
    } else if (fv == 1) { fv = 0; SendClientMessage(playerid,0xFF0000,"Anti Bike Fall off deaktiviert!"); }
    }
    }


    public OnPlayerExitVehicle(playerid, vehicleid)
    {
    if (fv == 1)
    {
    new vid = GetPlayerVehicleID(vid);
    PutPlayerInVehicle(playerid, vid, 1);
    }
    }


    UNGTESTET

  • würde lieber nen bool benutzen..
    also:
    new bool:fv;
    public OnPlayerCommandText()
    {
    if (strcmp(cmd, "/antibike", true) == 0)
    {
    if (fv == false)
    {
    SendClientMessage(playerid,0xFF0000,"Anti Bike Fall Off aktiviert!");
    fv = true;
    }
    else if (fv == true)
    {
    fv = false;
    SendClientMessage(playerid,0xFF0000,"Anti Bike Fall off deaktiviert!");
    }
    }
    }


    public OnPlayerExitVehicle(playerid, vehicleid)
    {
    if (fv == true)
    {
    new vid = GetPlayerVehicleID(vehicleid);
    PutPlayerInVehicle(playerid, vid, 1);
    }
    }

  • hm könnte aber nen bissl buggy werden.


    #define FALLOFFTIMER_KEY "fallofftimer"
    #define BIKEFALL_KEY "bikefall"
    #define BIKEFALLID_KEY "bikefallid"
    #define BIKEFALLSEAT_KEY "bikefallseat"


    //OnPlayerConnect
    SetPVarInt(playerid,FALLOFFTIMER_KEY,SetTimerEx("falloff",500,1,"i",playerid));


    // OnPlayerDisconnect
    KillTimer(GetPVarInt(playerid,FALLOFFTIMER_KEY));


    // OnPlayerEnterVehicle


    new model = GetVehicleModel(vehicleid);
    if(model == 509 || model == 481 || model == 510 || model == 462 || model == 448 || model == 581 || model == 522 || model == 461 || model == 521 || model == 523|| model == 463 || model == 586 || model == 468 || model == 471)
    {
    SetPVarInt(playerid,BIKEFALL_KEY,1);
    SetPVarInt(playerid,BIKEFALLID_KEY,vehicleid);
    }


    // OnPlayerExitVehicle


    if(GetPVarInt(playerid,BIKEFALL_KEY) == 1)
    {
    SetPVarInt(playerid,BIKEFALL_KEY,0);
    }


    // OnPlayerStateChange


    if(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)
    {
    if(GetPVarInt(playerid,"FALLOFF_KEY") == 1)
    {
    SetPVarInt(playerid,BIKEFALLSEAT_KEY,GetPlayerVehicleSeat(playerid));
    }
    }


    // Nun noch der public zum Timer


    forward falloff(playerid);
    public falloff(playerid)
    {
    if(!IsPlayerInAnyVehicle(playerid))
    {
    if(GetPVarInt(playerid,BIKEFALL_KEY) == 1)
    {
    PutPlayerInVehicle(playerid,GetPVarInt(playerid,BIKEFALLID_KEY),GetPVarInt(playerid,BIKEFALLSEAT_KEY));
    }
    }
    return 1;
    }


    Ungetestet, sollte aber funktionieren


    edit1: fehler korrigiert
    edit2:fehler korrigiert

    2 Mal editiert, zuletzt von Hagi ()

  • Ja ist er. Damit man ihn abstellen kann, also wieder runterfallen kann, einfach das in nen Command machen und den OnPlayerEnterVehicle Part verändern


    // OnPlayerEnterVehicle


    new model = GetVehicleModel(vehicleid);
    if(model == 509 || model == 481 || model == 510 || model == 462 || model == 448 || model == 581 || model == 522 || model == 461 || model == 521 || model == 523|| model == 463 || model == 586 || model == 468 || model == 471 && GetPVarInt(playerid,BIKEFALLSTATUS_KEY) == 1)
    {
    SetPVarInt(playerid,BIKEFALL_KEY,1);
    SetPVarInt(playerid,BIKEFALLID_KEY,vehicleid);
    }


    // Beim anschalten im Command


    SetPVarInt(playerid,BIKEFALLSTATUS_KEY,1);


    // Beim ausschalten im Command


    SetPVarInt(playerid,BIKEFALLSTATUS_KEY,0);
    SetPVarInt(playerid,BIKEFALL_KEY,0); // kleiner debug falls man noch draufsitzt und deaktiviert


    // Oben der zusätzliche define


    #define BIKEFALLSTATUS_KEY "Bikefallstatus"


  • Läuft doch übern Timer?


    SetPVarInt(playerid,FALLOFFTIMER_KEY,SetTimerEx("falloff",500,1,"i",playerid));



    Wenn du porten willst, dann musste zum porten das System für den Spieler ausstellen:

    SetPVarInt(zielid,BIKEFALLSTATUS_KEY,0);
    SetPVarInt(zielid,BIKEFALL_KEY,0);