| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- // This file holds all functions for the toll-system
- #define MAX_TOLLGATES (10)
- #define TXT_PlayerPaysToll "~r~You paid $%i for the toll"
- #define TXT_GovtPaysToll "~g~The government has paid\nfor your toll fee"
- enum TTollGate
- {
- GateID, // Holds the object-id of the gate
- TollPrice, // Holds the price for passing the gate
- GateStatus, // Holds the status of the gate (open = 1, closed = 0)
- Float:OpenX, // Holds the coordinates when the gate is opened
- Float:OpenY, // Holds the coordinates when the gate is opened
- Float:OpenZ, // Holds the coordinates when the gate is opened
- Float:CloseX, // Holds the coordinates when the gate is closed
- Float:CloseY, // Holds the coordinates when the gate is closed
- Float:CloseZ // Holds the coordinates when the gate is closed
- }
- new ATollGates[MAX_TOLLGATES][TTollGate];
- AddTollGate(GateModel, Float:OX, Float:OY, Float:OZ, Float:CX, Float:CY, Float:CZ, Float:RX, Float:RY, Float:RZ, TollMoney)
- {
- // Loop through all tollgates
- for (new TollGate; TollGate < MAX_TOLLGATES; TollGate++)
- {
- // Check if this is an empty entry
- if (ATollGates[TollGate][GateID] == 0)
- {
- // Create a new object for the toll-gate in it's closed status
- ATollGates[TollGate][GateID] = CreateObject(GateModel, CX, CY, CZ, RX, RY, RZ);
- // Set data
- ATollGates[TollGate][TollPrice] = TollMoney; // Set the price to pay for passing the toll-gate
- ATollGates[TollGate][GateStatus] = 0; // Set the status to CLOSED
- ATollGates[TollGate][OpenX] = OX; // Save the OpenX coordinates
- ATollGates[TollGate][OpenY] = OY; // Save the OpenY coordinates
- ATollGates[TollGate][OpenZ] = OZ; // Save the OpenZ coordinates
- ATollGates[TollGate][CloseX] = CX; // Save the CloseX coordinates
- ATollGates[TollGate][CloseY] = CY; // Save the CloseY coordinates
- ATollGates[TollGate][CloseZ] = CZ; // Save the CloseZ coordinates
- break; // Stop the for-loop
- }
- }
- }
- forward Toll();
- public Toll()
- {
- // Loop through all players
- for(new playerid; playerid < MAX_PLAYERS; playerid++)
- {
- // Check if the player is the driver of a vehicle
- if (GetPlayerVehicleSeat(playerid) == 0)
- {
- // Loop through all toll-gates
- for (new TollGate; TollGate < MAX_TOLLGATES; TollGate++)
- {
- // Check if this toll-gate exists
- if (ATollGates[TollGate][GateID] != 0)
- {
- // Check if the player is in range of the tollgate
- if(IsPlayerInRangeOfPoint(playerid, 7.5, ATollGates[TollGate][CloseX], ATollGates[TollGate][CloseY], ATollGates[TollGate][CloseZ]) && !IsAGovernmentFaction(playerid))
- {
- // Check if the toll-gate is closed
- if(ATollGates[TollGate][GateStatus] == 0)
- {
- // Open the gate
- MoveObject(ATollGates[TollGate][GateID], ATollGates[TollGate][OpenX], ATollGates[TollGate][OpenY], ATollGates[TollGate][OpenZ], 3.0);
- // Set status to OPEN
- ATollGates[TollGate][GateStatus] = 1;
- // Let the player pay the toll
- GivePlayerCash(playerid, -ATollGates[TollGate][TollPrice]);
- new string[50];
- format(string, sizeof(string), TXT_PlayerPaysToll, ATollGates[TollGate][TollPrice]);
- GameTextForPlayer(playerid, string, 3000, 4);
- // Start a timer that closes the gate after 5 seconds
- SetTimerEx("CloseGate", 5000, false, "i", TollGate);
- }
- }
- else
- if(IsPlayerInRangeOfPoint(playerid, 7.5, ATollGates[TollGate][CloseX], ATollGates[TollGate][CloseY], ATollGates[TollGate][CloseZ]) && IsAGovernmentFaction(playerid))
- {
- // Check if the toll-gate is closed
- if(ATollGates[TollGate][GateStatus] == 0)
- {
- // Open the gate
- MoveObject(ATollGates[TollGate][GateID], ATollGates[TollGate][OpenX], ATollGates[TollGate][OpenY], ATollGates[TollGate][OpenZ], 3.0);
- // Set status to OPEN
- ATollGates[TollGate][GateStatus] = 1;
- new string[50];
- format(string, sizeof(string), TXT_GovtPaysToll, ATollGates[TollGate][TollPrice]);
- GameTextForPlayer(playerid, string, 3000, 4);
- // Start a timer that closes the gate after 5 seconds
- SetTimerEx("CloseGate", 5000, false, "i", TollGate);
- }
- }
- }
- }
- }
- }
- }
- forward CloseGate(TollGate);
- public CloseGate(TollGate)
- {
- // Close the gate
- MoveObject(ATollGates[TollGate][GateID], ATollGates[TollGate][CloseX], ATollGates[TollGate][CloseY], ATollGates[TollGate][CloseZ], 3.0);
- // Set status to CLOSED
- ATollGates[TollGate][GateStatus] = 0;
- }
|