timer/checkpoint

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
  • wie kann ich einen timer nur für ein bestimmten checkpoint ausführen ? ich habe es schon selber versucht aber es klappt nicht so wie ich es möchte ... wen ich in ein ganz anderen checkpoint laufe dan freezt er mich auch
    was soll ich machen ?

  • #define CHECKPOINT_BUS1 1001
    #define CHECKPOINT_BUS2 1002
    new pCP[MAX_PLAYERS];


    if(pCP[playerid] == CHECKPOINT_BUS1)
    {
    TogglePlayerControllable(playerid, 0);
    DisablePlayerCheckpoint(playerid); // Checkpoint den alten löschen.
    SetPlayerCheckpoint(playerid,1431.7366,-1734.5909,13.3828,5.0);
    pCP[playerid] = CHECKPOINT_BUS2;
    GameTextForPlayer(playerid, "~r~Warten", 10000, 1);
    SetTimerEx("haltestelle", 1000*10, 0, "i", playerid);
    return 1;
    }
    if(pCP[playerid] == CHECKPOINT_BUS2)
    {
    TogglePlayerControllable(playerid, 0);
    DisablePlayerCheckpoint(playerid); // Checkpoint den alten löschen.
    SetPlayerCheckpoint(playerid,1824.0698,-1650.5098,13.3828,5.0);
    pCP[playerid] = CHECKPOINT_BUS3;
    GameTextForPlayer(playerid, "~r~Warten", 10000, 1);
    SetTimerEx("haltestelle", 1000*10, 0, "i", playerid);
    return 1;
    }



    public haltestelle(playerid)
    {
    TogglePlayerControllable(playerid, 1);
    return 1;
    }
    public haltestelleEND(playerid)
    {
    GameTextForPlayer(playerid,"+4500",4000,3);
    GivePlayerMoney(playerid,4500);
    TogglePlayerControllable(playerid, 1);
    return 1;
    }



    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(strcmp(cmd,"/busduty",true) == 0)
    {
    if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 431 || GetVehicleModel(GetPlayerVehicleID(playerid)) == 431)
    {
    SetPlayerCheckpoint(playerid,1079.7078,-1714.5710,13.3828,5.0);
    pCP[playerid] = CHECKPOINT_BUS1;
    }
    return 1;
    }
    return 0;
    }

  • Das du 1000*10 rechnest ist echt fail :'D


    Aber nunja,bau dir einfach eine überprüfung ein ,ob der spieler in der nähe von diesem Checkpoint ist.


    Tipp: IsPlayerInRangeOfPoint ( http://wiki.sa-mp.com/wiki/IsPlayerInRangeOfPoint )


    //EDIT ,so könnt es gehen:

    if(pCP[playerid] == CHECKPOINT_BUS1 && IsPlayerInRangeOfPoint (playerid,10.0,1079.7078,-1714.5710,13.3828)
    {
    TogglePlayerControllable(playerid, 0);
    DisablePlayerCheckpoint(playerid); // Checkpoint den alten löschen.
    SetPlayerCheckpoint(playerid,1431.7366,-1734.5909,13.3828,5.0);
    pCP[playerid] = CHECKPOINT_BUS2;
    GameTextForPlayer(playerid, "~r~Warten", 10000, 1);
    SetTimerEx("haltestelle", 1000*10, 0, "i", playerid);
    return 1;
    }else if(pCP[playerid] == CHECKPOINT_BUS2 & IsPlayerInRangeOfPoint(playerid,10.0,1431.7366,-1734.5909,13.3828)
    {
    TogglePlayerControllable(playerid, 0);
    DisablePlayerCheckpoint(playerid); // Checkpoint den alten löschen.
    SetPlayerCheckpoint(playerid,1824.0698,-1650.5098,13.3828,5.0);
    pCP[playerid] = CHECKPOINT_BUS3;
    GameTextForPlayer(playerid, "~r~Warten", 10000, 1);
    SetTimerEx("haltestelle", 1000*10, 0, "i", playerid);
    return 1;
    }


    Und benutz doch mal bitte else ;)