Entrance Pickup

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
  • Ich scheine im Moment total auf dem Schlauch zu stehen.


    new BankEntrance;


    //OnGameModeInit()
    BankEntrance = CreateDynamicPickup(1559, 1, -1897.6725, 487.1822, 35.1719, 0, -1, -1, 50.0);


    //OnPlayerPickUpDynamicPickup(playerid, pickupid)
    if(pickupid == BankEntrance)
    {
    SetPlayerInterior(playerid, 0);
    SetPlayerPos(playerid, 2315.952880, -1.618174, 26.742187);
    }


    Gehe ich das erste Mal in den Lichtkegel, lande ich normal an der genannten Position im genannten Interior. Teleportiere ich mich aber wieder vor den Eingang, so ist der Kegel verschwunden.

  • Was soll daran falsch sein?
    Dort steht doch drin, dass das Pickup immer existiert.

  • Die Pickup ID müsste stimmen, da ID 1 ja niemals verschwindet.


    Ich setze bei keinem Teleport eine virtuelle Welt, und ich bezweifle, dass sie sich von selbst ändert. Auch keine Interiors. Ich habe auch schon versucht bei jedem Teleport das Interior wieder auf 0 zu setzen, bringt aber nichts. Der Kegel bleibt weg.

  • Warum sollte er das wegmachen?
    Auch wenn er im Interior 0 ist, und das ausführt, ändert die Interior-ID sich nicht!


    Manyula: Zeig mal den Teil her, wo du dich wieder zum Eingang teleportierst.

    Einmal editiert, zuletzt von AirM4X ()

  • Warum sollte er das wegmachen?
    Auch wenn er im Interior 0 ist, und das ausführt, ändert die Interior-ID sich nicht!


    Zeig mal den Teil her, wo du dich wieder zum Eingang teleportierst.



    Deswegen ja, es ändert sich nicht. Also ist der Teil doch unnötig. Das Pickup befindet sich im Interior 0, also muss sich der Spieler im Interior 0 befinden.
    Somit wird ja nirgendwo das Interior geändert, also muss er es auch nicht angeben.

    "when you got nothing to lose, then baby you got it all" - OPERATOR

  • Es kann aber doch immer einmal sein, dass die Interior-ID nicht 0 ist, daher ist dieser Code nicht ganz falsch 8o

  • Ich weiß. Kann mir aber sonst nichts anderes Erklären. ^^
    Ich gehe mal davon aus, dass er keinen Ausgang gescriptet hat sondern einen dieser Standard Ausgängen benutzt, aber die verändern
    doch auch nichts, oder? o.0

    "when you got nothing to lose, then baby you got it all" - OPERATOR

  • COMMAND:bank3(playerid, params[])
    {
    if(PlayerActionForbidden(playerid)) return 1;
    if(BufferCMD(playerid)) return 1;
    if(GetPlayerMoney(playerid) >= 200)
    {
    new stringDE[128],
    stringEN[128],
    pName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pName, sizeof(pName));
    format(stringDE, sizeof(stringDE), "»TELEPORT« {%06x}%s "#C_GOLD_E"hat sich zum Financial Institute SF teleportiert! (/Bank3)", GetPlayerColor(playerid) >>> 8, pName);
    format(stringEN, sizeof(stringEN), "»TELEPORT« {%06x}%s "#C_GOLD_E"has teleported to the SF Financial Institute! (/Bank3)", GetPlayerColor(playerid) >>> 8, pName);
    SendLanguageMessageToAll(C_GOLD, stringDE, stringEN);
    SetPlayerPos(playerid, -1911.7787, 487.1757, 35.1719);
    SetPlayerFacingAngle(playerid, WEST);
    SetVehiclePos(GetPlayerVehicleID(playerid), -1911.7787, 487.1757, 35.1719);
    SetVehicleZAngle(GetPlayerVehicleID(playerid), WEST);
    PutPlayerInVehicle(playerid, GetPlayerVehicleID(playerid), 0);
    SetCameraBehindPlayer(playerid);
    GivePlayerMoneyEx(playerid, -200);
    SavePlayerHPandAP(playerid);
    SetSpawnProtection(playerid);
    }
    else SendLanguageMessage(playerid, C_RED, "»WARNUNG« Du hast nicht genug Geld!", "»WARNING« You don't have enough money!");
    return 1;
    }


    Das ist der Teleport direkt vor dem Kegel.

  • Habe ich das jetzt richtig verstanden, das man sich mit dem Befehl /bank3 zum Kegel Transportieren kann?


    Wenn ja, wie kommt man denn dann wieder raus? Den Teil brauchen wir

    "when you got nothing to lose, then baby you got it all" - OPERATOR

  • Wenn er im Kegel reingeht, wird er in die Bank teleportiert.
    Gibt er den Befehl ein, wir der raus teleportiert, vor die Bank.

  • Schon versucht
    SetPlayerVirtualWorld(playerid, 0);
    SetPlayerInterior(playerid, 0);
    in den Befehl bank3 zu klatschen ?
    Wenn es damit nicht Funktioniert, muss es an deinem ObjectStreamer liegen.

    "when you got nothing to lose, then baby you got it all" - OPERATOR

  • Dann wird es wohl an Incognito's Streamer liegen. Na toll. -.-


    EDIT: Ich hab das ganze mal mit CreatePickup versucht, und es funktioniert. Es wird wahrscheinlich wirklich am streamer liegen. Eine Sache ist aber noch komisch.


    Ich verwende OnPlayerPickUpDynamicPickup inzuwi gehookten Versionen.


    Version 1 funktioniert.
    public OnPlayerPickUpDynamicPickup(playerid, pickupid)
    {
    if(pickupid == BF_WEAPON[0] || pickupid == BF_WEAPON[1] || pickupid == BF_WEAPON[2]) GivePlayerWeapon(playerid, GRENADE, 5);
    else if(pickupid == BF_WEAPON[3] || pickupid == BF_WEAPON[4] || pickupid == BF_WEAPON[5] || pickupid == BF_WEAPON[6] || pickupid == BF_WEAPON[7] || pickupid == BF_WEAPON[8] || pickupid == BF_WEAPON[9]) GivePlayerWeapon(playerid, HEAT_SEEKER, 5);
    DestroyDynamicPickup(pickupid);


    for(new i; i < 9; i++) if(pickupid == BF_WEAPON[i]) SetTimerEx("PickupRespawn", 45000, false, "i", i);
    return _OnPlayerPickUpDynamicPickup(playerid, pickupid);
    }


    forward _OnPlayerPickUpDynamicPickup(playerid, pickupid);
    #if defined ALS_OnPlayerPickUpDynamicPickup
    #undef OnPlayerPickUpDynamicPickup
    #else
    #define ALS_OnPlayerPickUpDynamicPickup
    #endif
    #define OnPlayerPickUpDynamicPickup _OnPlayerPickUpDynamicPickup


    Version 2 funktioniert nicht.
    public OnPlayerPickUpDynamicPickup(playerid, pickupid)
    {
    if(pickupid == BankEntrance)
    {
    SetPlayerInterior(playerid, 0);
    SetPlayerPos(playerid, 2315.952880, -1.618174, 26.742187);
    }
    return BOnPlayerPickUpDynamicPickup(playerid, pickupid);
    }


    forward BOnPlayerPickUpDynamicPickup(playerid, pickupid);
    #if defined ALS_OnPlayerPickUpDynamicPickup
    #undef OnPlayerPickUpDynamicPickup
    #else
    #define ALS_OnPlayerPickUpDynamicPickup
    #endif
    #define OnPlayerPickUpDynamicPickup BOnPlayerPickUpDynamicPickup

    Einmal editiert, zuletzt von Manyula ()