Zu schneller Teleport.

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
  • Hallo, wenn ich es so mache das man auf ein Pickup gehen muss wo man halt dort teleport wird,
    wird man teleportiert, nur sofort wieder zurück wenn man nicht schnellgenug runtergeht.
    Nun möchte jedoch es so haben bitte, dass man aufs pickup gehen muss und erst nach 2 sekunden
    auf dem Pickup wird man Teleportiert. Mit nen Timer komme ich nicht so ganz klar.


    mein code:
    if(pickupid == pdraus)
    {
    SetPlayerPos(playerid,-1605.7374,712.2391,13.8672);
    SetPlayerInterior(playerid,0);
    }


    else if(pickupid == pdrein)
    {
    SetPlayerPos(playerid,246.375991, 109.245994, 1003.218750);
    SetPlayerInterior(playerid,10);
    }

  • er meint sobald man am Ziel angekommen ist wierd man wieder zurückgeportet!

  • Ne ich glaub ich habs :D


    Er will das wen man 2Sekunden in einem Pickup steht teleportiert wird.


    Hmm ich überleg mal ^^


    // Edit:

    // forwards:

    forward PDrein();
    forward PDraus();


    // Publics:
    Public PDrein()
    {
    SetPlayerPos(playerid,246.375991, 109.245994, 1003.218750);
    SetPlayerInterior(playerid,0);
    }


    Public PDraus()
    {
    SetPlayerPos(playerid,-1605.7374,712.2391,13.8672);
    SetPlayerInterior(playerid,0);
    }


    // If Anweisungen:
    if(pickupid == pdraus)
    {
    if(IsPlayerInRangeOfPoint(playerid, 7.0,-1605.7374,712.2391,13.8672))
    SetTimer("PDraus",2000,false);
    }


    else if(pickupid == pdrein)
    {
    if(IsPlayerInRangeOfPoint(playerid, 7.0,246.375991, 109.245994, 1003.218750))
    SetTimer("PDrein",2000,false);
    }



    So, So müsste es gehen probier es mal.

    Einmal editiert, zuletzt von AdnaN ()

  • Aber was wen man 2 InfoIcons macht eins fürs rausgehen und das andere fürs reingehen müsste doch funktionieren oder nicht?

  • new Doortime;
    forward Doortimetimer();
    Public PDrein()
    {
    SetPlayerPos(playerid,246.375991, 109.245994, 1003.218750);
    SetPlayerInterior(playerid,6);// Muss da nicht Int auf 6 ?? oder verwendest du nicht das LS PD ? bei LV PD auf 3 ;)
    Doortime = 1;
    }


    Public PDraus()
    {
    SetPlayerPos(playerid,-1605.7374,712.2391,13.8672);
    SetPlayerInterior(playerid,0);
    Doortime = 1;
    }


    if(pickupid == pdraus)
    {
    if(Doortime == 0)
    {
    if(IsPlayerInRangeOfPoint(playerid, 7.0,-1605.7374,712.2391,13.8672))
    SetTimer("PDraus",2000,false);
    SetTimer("Doortimetimer",2000,0);
    }
    else
    {
    }
    }


    else if(pickupid == pdrein)
    {
    if(Doortime == 0)
    {
    if(IsPlayerInRangeOfPoint(playerid, 7.0,246.375991, 109.245994, 1003.218750))
    SetTimer("PDrein",2000,false);
    SetTimer("Doortimetimer",2000,0);
    }
    else
    {
    }
    }


    public Doortimertimer()
    {
    Doortime = 0;
    return 1;
    }


    Versuch ma ungefähr in der Art.
    Das war jetzt mal grob ausser Hand geschrieben also nicht wundern wenn vllt was falsch sein sollte.
    Müsste aber eig stimmen.

    Dieser Beitrag wurde bereits 2853564 mal editiert, zuletzt von »Vanish« (Heute,16:46)
    _______________________________________________________________________________________________________________________________________________________________

  • Also du willst, dass man halt 2 Sekunden im Pickup stehen muss, damit man teleportiert wird? Aus dem Grunde, dass du sonst sofort zurück teleportiert wirst?


    Dann mach es dir doch ganz einfach.




    #define TELE_DELAY_SEC 2 // 2 stellt die Sekundenanzahl dar.




    new TeleDelay[MAX_PLAYERS];




    OnPlayerConnect:




    TeleDelay[playerid] = 0;




    Und beim Teleport gehst du wie folgt vor:




    if(pickupid == pdraus)
    {
    if(TeleDelay[playerid] == 0)
    {
    SetPlayerPos(playerid,-1605.7374,712.2391,13.8672);
    SetPlayerInterior(playerid,0);
    TeleDelay[playerid] = TELE_DELAY_SEC;
    }
    }


    else if(pickupid == pdrein)
    {
    if(TeleDelay[playerid] == 0)
    {
    SetPlayerPos(playerid,246.375991, 109.245994, 1003.218750);
    SetPlayerInterior(playerid,10);
    TeleDelay[playerid] = TELE_DELAY_SEC;
    }
    }





    So gehst du dann vor bei deinen Pickups.


    So damit das ganze funktioniert brauchst du noch ein Timer:




    forward TeleDelayTimer();




    OnGameModeInIt:




    SetTimer("TeleDelayTimer",1000,1);




    und dann noch irgendwo im Script:





    public TeleDelayTimer()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(TeleDelay[i] > 0)
    {
    TeleDelay[i]--;
    }
    }
    }




    Keine Ahnung ob das klappt, habe schon lange nicht mehr gescripted.

  • @venish, nein geht nicht, man portet sich trozdem sofort.


    8D, ne auch nicht leider, man Portet sich auch sofort, jedoch nicht zurück, da das Pickup nicht kommt und
    man muss 10-20 sekunden warten bis das Pickup wieder da ist und man sich dan Porten kann.

  • Naja das hinporten kann man halt ebenfalls verzögern.


    Was mich interessiert ist das mit dem Pickup.


    Schreib mal wie du die erstellt hast.


    new pdrein;
    new pdraus;


    Und dan bei Gamemodel dingens:

    pdrein = CreatePickup(1318, 2, -1605.7374,712.2391,13.8672); //Der Pickup beim Eingang
    pdraus = CreatePickup(1318, 2, 246.375991, 109.245994, 1003.218750); //Der Pickup beim Ausgang


    naja und der befehl nochmal:
    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    if(pickupid == pdraus)
    {
    SetPlayerPos(playerid,-1605.7374,712.2391,13.8672);
    SetPlayerInterior(playerid,0);
    }


    else if(pickupid == pdrein)
    {
    SetPlayerPos(playerid,246.375991, 109.245994, 1003.218750);
    SetPlayerInterior(playerid,10);
    }


    return 1;
    }



    //info, für die die Denken ich mein Interior 6, noep^^ ich mein 10, 10 ist interior vom SFPD

  • Da haben wir schon den Fehler :)


    Mach es so:



    pdrein = CreatePickup(1318, 23, -1605.7374,712.2391,13.8672); //Der Pickup beim Eingang
    pdraus = CreatePickup(1318, 23, 246.375991, 109.245994, 1003.218750);




    Dann funktioniert mein Vorschlag.