Quantcast
Channel: SA-MP Forums
Viewing all articles
Browse latest Browse all 18226

[Ajuda] Bug No Apartamento

$
0
0
glr eu baixei o ls_bechside e coloquei no samp mais quando eu chego no ap da praia o escolho o andar ele nao sobe alguem ai pode ter ideia do que pode ser se pode ver e consertar estarei deixando o codigo ai em baixo quem me ajudar mt obrigado estou fazendo de tudo para concertar:

PHP Code:

// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
// Example Filterscript for the new LS BeachSide Building with Elevator
// --------------------------------------------------------------------
// Original elevator code by Zamaroht in 2010
//
// Updated by Kye in 2011
// * Added a sound effect for the elevator starting/stopping
//
// Edited by Matite in January 2015
// * Adapted the elevator code so it works in this new building and removed the
//   light pole at the underground car park entrance
//
// Updated to v1.03 by Matite in April 2015
// * Removed the code that removes the existing building map object and the lines
//   that create the new objects as the original building is now replaced with
//   the new one by SAMP instead (same as the LS Office building)
//
// Updated to v1.02 by Matite in February 2015
// * Added code for the new car park object and edited the elevator to
//   include the car park
//
// This script creates the new LS BeachSide building object, removes the
// existing GTASA building object, adds the new car park object and creates
// an elevator that can be used to travel between all levels.
//
// You can un-comment the OnPlayerCommandText callback below to enable a simple
// teleport command (/lsb) that teleports you to the LS BeachSide building.
//
// Warning...
// This script uses a total of:
// * 31 objects = 1 for the elevator, 2 for the elevator doors and 28 for the
//   elevator floor doors
// * 15 3D Text Labels = 14 on the floors and 1 in the elevator
// * 1 dialog (for the elevator - dialog ID 877)
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------


// -----------------------------------------------------------------------------
// Includes
// --------

// SA-MP include
#include <a_samp>

// For PlaySoundForPlayersInRange()
#include "../include/gl_common.inc"

// -----------------------------------------------------------------------------
// Defines
// -------
#define FILTERSCRIPT
#define ELEVATOR_SPEED      (5.0)
#define DOORS_SPEED         (5.0)
#define ELEVATOR_WAIT_TIME  (5000)  
#define DIALOG_ID           (877)

// Position defines
#define X_DOOR_R_OPENED     (289.542419)
#define X_DOOR_L_OPENED     (286.342407)
#define Y_DOOR_R_OPENED     (-1609.640991)
#define Y_DOOR_L_OPENED     (-1609.076049)

#define X_FDOOR_R_OPENED    (289.492431)
#define X_FDOOR_L_OPENED    (286.292419)
#define Y_FDOOR_R_OPENED    (-1609.870971)
#define Y_FDOOR_L_OPENED    (-1609.306030)

#define GROUND_Z_COORD      (18.755348)     // (33.825077)
#define X_ELEVATOR_POS      (287.942413)
#define Y_ELEVATOR_POS      (-1609.341064)

// Elevator state defines
#define ELEVATOR_STATE_IDLE     (0)
#define ELEVATOR_STATE_WAITING  (1)
#define ELEVATOR_STATE_MOVING   (2)

// Invalid floor define
#define INVALID_FLOOR           (-1)

// Used for chat text messages
#define COLOR_MESSAGE_YELLOW        0xFFDD00AA

// -----------------------------------------------------------------------------
// Constants
// ---------
// Elevator floor names for the 3D text labels
static FloorNames[14][] =
{
    
"Car Park",
    
"Ground Floor",
    
"First Floor",
    
"Second Floor",
    
"Third Floor",
    
"Fourth Floor",
    
"Fifth Floor",
    
"Sixth Floor",
    
"Seventh Floor",
    
"Eighth Floor",
    
"Ninth Floor",
    
"Tenth Floor",
    
"Eleventh Floor",
    
"Twelfth Floor"
};

// Elevator floor Z heights
static Float:FloorZOffsets[14] =
{
    
0.0,         // Car Park
    
15.069729,  // Ground Floor
    
29.130733,    // First Floor
    
33.630733,  // Second Floor = 29.130733 + 4.5
    
38.130733,  // Third Floor = 33.630733 + 4.5
    
42.630733,  // Fourth Floor = 38.130733 + 4.5
    
47.130733,  // Fifth Floor = 42.630733 + 4.5
    
51.630733,  // Sixth Floor = 47.130733 + 4.5
    
56.130733,  // Seventh Floor = 51.630733 + 4.5
    
60.630733,  // Eighth Floor = 56.130733 + 4.5
    
65.130733,  // Ninth Floor = 60.630733 + 4.5
    
69.630733,  // Tenth Floor = 65.130733 + 4.5
    
74.130733,  // Eleventh Floor = 69.630733 + 4.5
    
78.630733,  // Twelfth Floor = 74.130733 + 4.5
};

// -----------------------------------------------------------------------------
// Variables
// ---------

// Stores the created object numbers of the elevator, the elevator doors and
// the elevator floor doors so they can be destroyed when the filterscript
// is unloaded
new Obj_ElevatorObj_ElevatorDoors[2], Obj_FloorDoors[14][2];
    
// Stores a reference to the 3D text labels used on each floor and inside the
// elevator itself so they can be detroyed when the filterscript is unloaded
new Text3D:Label_ElevatorText3D:Label_Floors[14];

// Stores the current state of the elevator (ie ELEVATOR_STATE_IDLE,
// ELEVATOR_STATE_WAITING or ELEVATOR_STATE_MOVING)
new ElevatorState;

// Stores the current floor the elevator is on or heading to... if the value is
// ELEVATOR_STATE_IDLE or ELEVATOR_STATE_WAITING this is the current floor. If
// the value is ELEVATOR_STATE_MOVING then it is the floor it's moving to
new    ElevatorFloor;  

// Stores the elevator queue for each floor
new ElevatorQueue[14];

// Stores who requested the floor for the elevator queue...
// FloorRequestedBy[floor_id] = playerid;  (stores who requested which floor)
new    FloorRequestedBy[14];

// Used for a timer that makes the elevator move faster after players start
// surfing the object
new ElevatorBoostTimer;

// -----------------------------------------------------------------------------
// Function Forwards
// -----------------

// Public:
forward CallElevator(playeridfloorid);    // You can use INVALID_PLAYER_ID too.
forward ShowElevatorDialog(playerid);

// Private:
forward Elevator_Initialize();
forward Elevator_Destroy();

forward Elevator_OpenDoors();
forward Elevator_CloseDoors();
forward Floor_OpenDoors(floorid);
forward Floor_CloseDoors(floorid);

forward Elevator_MoveToFloor(floorid);
forward Elevator_Boost(floorid);            // Increases the elevator speed until it reaches 'floorid'.
forward Elevator_TurnToIdle();

forward ReadNextFloorInQueue();
forward RemoveFirstQueueFloor();
forward AddFloorToQueue(floorid);
forward IsFloorInQueue(floorid);
forward ResetElevatorQueue();

forward DidPlayerRequestElevator(playerid);

forward Float:GetElevatorZCoordForFloor(floorid);
forward Float:GetDoorsZCoordForFloor(floorid);

// -----------------------------------------------------------------------------
// Callbacks
// ---------

// Un-comment the OnPlayerCommandText callback below (remove the "/*" and the "*/")
// to enable a simple teleport command (/lsb) which teleports the player to
// outside the LS BeachSide building.

/*
public OnPlayerCommandText(playerid, cmdtext[])
{
    // Check command text
    if (strcmp("/lsb", cmdtext, true, 4) == 0)
    {
        // Set the interior
        SetPlayerInterior(playerid, 0);

        // Set player position and facing angle
        SetPlayerPos(playerid, 289.81 + random(2), -1630.65 + random(2), 34.32);
        SetPlayerFacingAngle(playerid, 10);

        // Fix camera position after teleporting
        SetCameraBehindPlayer(playerid);

        // Send a gametext message to the player
        GameTextForPlayer(playerid, "~b~~h~LS BeachSide!", 3000, 3);

        // Exit here
        return 1;
    }

    // Exit here (return 0 as the command was not handled in this filterscript)
    return 0;
}
*/

public OnFilterScriptInit()
{
    
// Display information in the Server Console
    
print("\n");
    print(
"  |---------------------------------------------------");
    print(
"  |--- LS BeachSide Filterscript");
    print(
"  |--  Script v1.03");
    print(
"  |--  19th April 2015");
    print(
"  |---------------------------------------------------");

    
// Reset the elevator queue
    
ResetElevatorQueue();

    
// Create the elevator object, the elevator doors and the floor doors
    
Elevator_Initialize();

    
// Display information in the Server Console
    
print("  |--  LS BeachSide Building Elevator created");
    print(
"  |---------------------------------------------------");
    
    
// Loop
    
for (new 0MAX_PLAYERSi++)
    {
        
// Check if the player is connected and not a NPC
        
if (IsPlayerConnected(i) && !IsPlayerNPC(i))
        {
            
// Remove the lamp post at the underground car park entrance
            
RemoveBuildingForPlayer(i1226265.481, -1581.132.93115.0);
            
            
// Remove the night lights object (must be removed to also remove any
            // occulsion zones inside the building)
            
RemoveBuildingForPlayer(i6518280.297, -1606.272.3984250.0);
        }
    }

    
// Exit here
    
return 1;
}

public 
OnFilterScriptExit()
{
    
// Destroy the elevator, the elevator doors and the elevator floor doors
    
Elevator_Destroy();

    
// Display information in the Server Console
    
print("  |--  LS BeachSide Building Elevator destroyed");
    print(
"  |---------------------------------------------------");

    
// Exit here
    
return 1;
}

public 
OnPlayerConnect(playerid)
{
    
// Remove the lamp post at the underground car park entrance
    
RemoveBuildingForPlayer(playerid1226265.481, -1581.132.93115.0);
    
    
// Remove the night lights object (must be removed to also remove any
    // occulsion zones inside the building)
    
RemoveBuildingForPlayer(playerid6518280.297, -1606.272.3984250.0);

    
// Exit here (return 1 so this callback is processed in other scripts)
    
return 1;
}

public 
OnObjectMoved(objectid)
{
    
// Create variables
    
new Float:xFloat:yFloat:z;
    
    
// Loop
    
for(new isizeof(Obj_FloorDoors); ++)
    {
        
// Check if the object that moved was one of the elevator floor doors
        
if(objectid == Obj_FloorDoors[i][0])
        {
            
GetObjectPos(Obj_FloorDoors[i][0], xyz);

            
// Some floor doors have shut, move the elevator to next floor in queue:
            
if (Y_DOOR_L_OPENED 0.5)
            {
                
Elevator_MoveToFloor(ElevatorQueue[0]);
                
RemoveFirstQueueFloor();
            }
        }
    }

    if(
objectid == Obj_Elevator)   // The elevator reached the specified floor.
    
{
        
KillTimer(ElevatorBoostTimer);  // Kills the timer, in case the elevator reached the floor before boost.

        
FloorRequestedBy[ElevatorFloor] = INVALID_PLAYER_ID;

        
Elevator_OpenDoors();
        
Floor_OpenDoors(ElevatorFloor);

        
GetObjectPos(Obj_Elevatorxyz);
        
Label_Elevator    Create3DTextLabel("{CCCCCC}Press '{FFFFFF}~k~~CONVERSATION_YES~{CCCCCC}' to use elevator"0xCCCCCCAAX_ELEVATOR_POS 1.6Y_ELEVATOR_POS 1.850.44.001);

        
ElevatorState     ELEVATOR_STATE_WAITING;
        
SetTimer("Elevator_TurnToIdle"ELEVATOR_WAIT_TIME0);
    }

    return 
1;
}

public 
OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    if(
dialogid == DIALOG_ID)
    {
        if(!
response)
            return 
0;

        if(
FloorRequestedBy[listitem] != INVALID_PLAYER_ID || IsFloorInQueue(listitem))
            
GameTextForPlayer(playerid"~r~The floor is already in the queue"35004);
        else if(
DidPlayerRequestElevator(playerid))
            
GameTextForPlayer(playerid"~r~You already requested the elevator"35004);
        else
            
CallElevator(playeridlistitem);

        return 
1;
    }

    return 
0;
}

public 
OnPlayerKeyStateChange(playeridnewkeysoldkeys)
{
    
// Check if the player is not in a vehicle and pressed the conversation yes key (Y by default)
    
if (!IsPlayerInAnyVehicle(playerid) && (newkeys KEY_YES))
    {
        
// Create variables and get the players current position
        
new Float:pos[3];
        
GetPlayerPos(playeridpos[0], pos[1], pos[2]);
        
        
// For debug
        //printf("X = %0.2f | Y = %0.2f | Z = %0.2f", pos[0], pos[1], pos[2]);

        // Check if the player is using the button inside the elevator
        
if (pos[1] > (Y_ELEVATOR_POS 1.8) && pos[1] < (Y_ELEVATOR_POS 1.8) && pos[0] < (X_ELEVATOR_POS 1.8) && pos[0] > (X_ELEVATOR_POS 1.8))
        {
            
// The player is using the button inside the elevator
            // --------------------------------------------------
            
            // Show the elevator dialog to the player
            
ShowElevatorDialog(playerid);
        }
        else
        {
            
// Check if the player is using the button on one of the floors
            
if(pos[1] < (Y_ELEVATOR_POS 1.81) && pos[1] > (Y_ELEVATOR_POS 3.8) && pos[0] > (X_ELEVATOR_POS 1.21) && pos[0] < (X_ELEVATOR_POS 3.8))
            {
                
// The player is most likely using an elevator floor button... check which floor
                // -----------------------------------------------------------------------------
                
                // Create variable with the number of floors to check (total floors minus 1)
                
new 13;

                
// Loop
                
while(pos[2] < GetDoorsZCoordForFloor(i) + 3.5 && 0)
                    
--;

                if(
== && pos[2] < GetDoorsZCoordForFloor(0) + 2.0)
                    
= -1;

                if (
<= 12)
                {
                    
// Check if the elevator is not moving (idle or waiting)
                    
if (ElevatorState != ELEVATOR_STATE_MOVING)
                    {
                        
// Check if the elevator is already on the floor it was called from
                        
if (ElevatorFloor == 1)
                        {
                            
// Display gametext message to the player
                            
GameTextForPlayer(playerid"~n~~n~~n~~n~~n~~n~~n~~y~~h~LS BeachSide Elevator Is~n~~y~~h~Already On This Floor...~n~~w~Walk Inside It~n~~w~And Press '~k~~CONVERSATION_YES~'"35003);

                            
// Display chat text message to the player
                            
SendClientMessage(playeridCOLOR_MESSAGE_YELLOW"* The LS BeachSide elevator is already on this floor... walk inside it and press '{FFFFFF}~k~~CONVERSATION_YES~{CCCCCC}'");
                            
                            
// Exit here (return 1 so this callback is processed in other scripts)
                            
return 1;
                        }
                    }

                    
// Call function to call the elevator to the floor
                    
CallElevator(playerid1);

                    
// Display gametext message to the player
                    
GameTextForPlayer(playerid"~n~~n~~n~~n~~n~~n~~n~~n~~g~~h~LS BeachSide Elevator~n~~g~~h~Has Been Called...~n~~w~Please Wait"30003);

                    
// Create variable for formatted message
                    
new strTempString[100];
                    
                    
// Check if the elevator is moving
                    
if (ElevatorState == ELEVATOR_STATE_MOVING)
                    {
                        
// Format chat text message
                        
format(strTempStringsizeof(strTempString), "* The LS BeachSide elevator has been called... it is currently moving towards the %s."FloorNames[ElevatorFloor]);
                    }
                    else
                    {
                        
// Check if the floor is the car park
                        
if (ElevatorFloor == 0)
                        {
                            
// Format chat text message
                            
format(strTempStringsizeof(strTempString), "* The LS BeachSide elevator has been called... it is currently at the %s."FloorNames[ElevatorFloor]);
                        }
                        else
                        {
                            
// Format chat text message
                            
format(strTempStringsizeof(strTempString), "* The LS BeachSide elevator has been called... it is currently on the %s."FloorNames[ElevatorFloor]);
                        }
                    }
                    
                    
// Display formatted chat text message to the player
                    
SendClientMessage(playeridCOLOR_MESSAGE_YELLOWstrTempString);

                    
// Exit here (return 1 so this callback is processed in other scripts)
                    
return 1;
                }
            }
        }
    }

    
// Exit here (return 1 so this callback is processed in other scripts)
    
return 1;
}

// ------------------------ Functions ------------------------
stock Elevator_Initialize()
{
    
// Create the elevator and elevator door objects
    
Obj_Elevator             CreateObject(18755X_ELEVATOR_POSY_ELEVATOR_POSGROUND_Z_COORD0.0000000.00000080.000000);
    
Obj_ElevatorDoors[0]     = CreateObject(18757X_ELEVATOR_POSY_ELEVATOR_POSGROUND_Z_COORD0.0000000.00000080.000000);
    
Obj_ElevatorDoors[1]     = CreateObject(18756X_ELEVATOR_POSY_ELEVATOR_POSGROUND_Z_COORD0.0000000.00000080.000000);

    
// Create the 3D text label for inside the elevator
    
Label_Elevator Create3DTextLabel("{CCCCCC}Press '{FFFFFF}~k~~CONVERSATION_YES~{CCCCCC}' to use elevator"0xCCCCCCAAX_ELEVATOR_POS 1.6Y_ELEVATOR_POS 1.85GROUND_Z_COORD 0.44.001);

    
// Create variables
    
new string[128], Float:z;

    
// Loop
    
for (new isizeof(Obj_FloorDoors); ++)
    {
        
// Create elevator floor door objects
        
Obj_FloorDoors[i][0]     = CreateObject(18757X_ELEVATOR_POSY_ELEVATOR_POS 0.245GetDoorsZCoordForFloor(i) + 0.050.0000000.00000080.000000);
        
Obj_FloorDoors[i][1]     = CreateObject(18756X_ELEVATOR_POSY_ELEVATOR_POS 0.245GetDoorsZCoordForFloor(i) + 0.050.0000000.00000080.000000);

        
// Format string for the floor 3D text label
        
format(stringsizeof(string), "{CCCCCC}[%s]\n{CCCCCC}Press '{FFFFFF}~k~~CONVERSATION_YES~{CCCCCC}' to call"FloorNames[i]);

        
// Get label Z position
        
GetDoorsZCoordForFloor(i);

        
// Create floor label
        
Label_Floors[i] = Create3DTextLabel(string0xCCCCCCAAX_ELEVATOR_POS 2Y_ELEVATOR_POS -30.210.501);
    }

    
// Open the car park floor doors and the elevator doors
    
Floor_OpenDoors(0);
    
Elevator_OpenDoors();

    
// Exit here
    
return 1;
}

stock Elevator_Destroy()
{
    
// Destroys the elevator.

    
DestroyObject(Obj_Elevator);
    
DestroyObject(Obj_ElevatorDoors[0]);
    
DestroyObject(Obj_ElevatorDoors[1]);
    
Delete3DTextLabel(Label_Elevator);

    for(new 
isizeof(Obj_FloorDoors); ++)
    {
        
DestroyObject(Obj_FloorDoors[i][0]);
        
DestroyObject(Obj_FloorDoors[i][1]);
        
Delete3DTextLabel(Label_Floors[i]);
    }

    return 
1;
}

stock Elevator_OpenDoors()
{
    
// Opens the elevator's doors.

    
new Float:xFloat:yFloat:z;

    
GetObjectPos(Obj_ElevatorDoors[0], xyz);
    
MoveObject(Obj_ElevatorDoors[0], X_DOOR_L_OPENEDY_DOOR_L_OPENEDzDOORS_SPEED);
    
MoveObject(Obj_ElevatorDoors[1], X_DOOR_R_OPENEDY_DOOR_R_OPENEDzDOORS_SPEED);

    return 
1;
}

stock Elevator_CloseDoors()
{
    
// Closes the elevator's doors.

    
if(ElevatorState == ELEVATOR_STATE_MOVING)
        return 
0;

    new 
Float:xFloat:yFloat:z;

    
GetObjectPos(Obj_ElevatorDoors[0], xyz);
    
MoveObject(Obj_ElevatorDoors[0], X_ELEVATOR_POSY_ELEVATOR_POSzDOORS_SPEED);
    
MoveObject(Obj_ElevatorDoors[1], X_ELEVATOR_POSY_ELEVATOR_POSzDOORS_SPEED);

    return 
1;
}

stock Floor_OpenDoors(floorid)
{
    
// Opens the doors at the specified floor.

    
MoveObject(Obj_FloorDoors[floorid][0], X_FDOOR_L_OPENEDY_FDOOR_L_OPENEDGetDoorsZCoordForFloor(floorid) + 0.05DOORS_SPEED);
    
MoveObject(Obj_FloorDoors[floorid][1], X_FDOOR_R_OPENEDY_FDOOR_R_OPENEDGetDoorsZCoordForFloor(floorid) + 0.05DOORS_SPEED);

    return 
1;
}

stock Floor_CloseDoors(floorid)
{
    
// Closes the doors at the specified floor.

    
MoveObject(Obj_FloorDoors[floorid][0], X_ELEVATOR_POSY_ELEVATOR_POS 0.245GetDoorsZCoordForFloor(floorid) + 0.05DOORS_SPEED);
    
MoveObject(Obj_FloorDoors[floorid][1], X_ELEVATOR_POSY_ELEVATOR_POS 0.245GetDoorsZCoordForFloor(floorid) + 0.05DOORS_SPEED);

    return 
1;
}

stock Elevator_MoveToFloor(floorid)
{
    
// Moves the elevator to specified floor (doors are meant to be already closed).

    
ElevatorState ELEVATOR_STATE_MOVING;
    
ElevatorFloor floorid;

    
// Move the elevator slowly, to give time to clients to sync the object surfing. Then, boost it up:
    
MoveObject(Obj_ElevatorX_ELEVATOR_POSY_ELEVATOR_POSGetElevatorZCoordForFloor(floorid), 0.25);
    
MoveObject(Obj_ElevatorDoors[0], X_ELEVATOR_POSY_ELEVATOR_POSGetDoorsZCoordForFloor(floorid), 0.25);
    
MoveObject(Obj_ElevatorDoors[1], X_ELEVATOR_POSY_ELEVATOR_POSGetDoorsZCoordForFloor(floorid), 0.25);
    
Delete3DTextLabel(Label_Elevator);

    
ElevatorBoostTimer SetTimerEx("Elevator_Boost"20000"i"floorid);

    return 
1;
}

public 
Elevator_Boost(floorid)
{
    
// Increases the elevator's speed until it reaches 'floorid'
    
StopObject(Obj_Elevator);
    
StopObject(Obj_ElevatorDoors[0]);
    
StopObject(Obj_ElevatorDoors[1]);
    
    
MoveObject(Obj_ElevatorX_ELEVATOR_POSY_ELEVATOR_POSGetElevatorZCoordForFloor(floorid), ELEVATOR_SPEED);
    
MoveObject(Obj_ElevatorDoors[0], X_ELEVATOR_POSY_ELEVATOR_POSGetDoorsZCoordForFloor(floorid), ELEVATOR_SPEED);
    
MoveObject(Obj_ElevatorDoors[1], X_ELEVATOR_POSY_ELEVATOR_POSGetDoorsZCoordForFloor(floorid), ELEVATOR_SPEED);

    return 
1;
}

public 
Elevator_TurnToIdle()
{
    
ElevatorState ELEVATOR_STATE_IDLE;
    
ReadNextFloorInQueue();

    return 
1;
}

stock RemoveFirstQueueFloor()
{
    
// Removes the data in ElevatorQueue[0], and reorders the queue accordingly.

    
for(new isizeof(ElevatorQueue) - 1++)
        
ElevatorQueue[i] = ElevatorQueue[1];

    
ElevatorQueue[sizeof(ElevatorQueue) - 1] = INVALID_FLOOR;

    return 
1;
}

stock AddFloorToQueue(floorid)
{
     
// Adds 'floorid' at the end of the queue.

    // Scan for the first empty space:
    
new slot = -1;
    for(new 
isizeof(ElevatorQueue); ++)
    {
        if(
ElevatorQueue[i] == INVALID_FLOOR)
        {
            
slot i;
            break;
        }
    }

    if(
slot != -1)
    {
        
ElevatorQueue[slot] = floorid;

         
// If needed, move the elevator.
        
if(ElevatorState == ELEVATOR_STATE_IDLE)
            
ReadNextFloorInQueue();

        return 
1;
    }

    return 
0;
}

stock ResetElevatorQueue()
{
    
// Resets the queue.

    
for(new isizeof(ElevatorQueue); ++)
    {
        
ElevatorQueue[i]     = INVALID_FLOOR;
        
FloorRequestedBy[i] = INVALID_PLAYER_ID;
    }

    return 
1;
}

stock IsFloorInQueue(floorid)
{
    
// Checks if the specified floor is currently part of the queue.

    
for(new isizeof(ElevatorQueue); ++)
        if(
ElevatorQueue[i] == floorid)
            return 
1;

    return 
0;
}

stock ReadNextFloorInQueue()
{
    
// Reads the next floor in the queue, closes doors, and goes to it.

    
if(ElevatorState != ELEVATOR_STATE_IDLE || ElevatorQueue[0] == INVALID_FLOOR)
        return 
0;

    
Elevator_CloseDoors();
    
Floor_CloseDoors(ElevatorFloor);

    return 
1;
}

stock DidPlayerRequestElevator(playerid)
{
    for(new 
isizeof(FloorRequestedBy); ++)
        if(
FloorRequestedBy[i] == playerid)
            return 
1;

    return 
0;
}

stock ShowElevatorDialog(playerid)
{
    new 
string[512];
    for(new 
isizeof(ElevatorQueue); ++)
    {
        if(
FloorRequestedBy[i] != INVALID_PLAYER_ID)
            
strcat(string"{FF0000}");

        
strcat(stringFloorNames[i]);
        
strcat(string"\n");
    }

    
ShowPlayerDialog(playeridDIALOG_IDDIALOG_STYLE_LIST"LS BeachSide Elevator..."string"Accept""Cancel");

    return 
1;
}

stock CallElevator(playeridfloorid)
{
    
// Calls the elevator (also used with the elevator dialog).

    
if(FloorRequestedBy[floorid] != INVALID_PLAYER_ID || IsFloorInQueue(floorid))
        return 
0;

    
FloorRequestedBy[floorid] = playerid;
    
AddFloorToQueue(floorid);

    return 
1;
}

stock Float:GetElevatorZCoordForFloor(floorid)
{
    
// Return Z height value
    
return (GROUND_Z_COORD FloorZOffsets[floorid]);
}

stock Float:GetDoorsZCoordForFloor(floorid)
{
    
// Return Z height value
    
return (GROUND_Z_COORD FloorZOffsets[floorid]);



Viewing all articles
Browse latest Browse all 18226

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>