Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Los Santos to Las Vegas Underground by NtCat. All rights reserved.
- #include <a_samp>
- #define FILTERSCRIPT
- #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
- #define TICKET_COST 100 // change if needed
- #define FloorS 0
- #define FloorMID 1
- #define FloorN 2
- #define WallS 3
- #define WallN 4
- #define WallNE 5
- #define WallSE 6
- #define WallSW 7
- #define WallNW 8
- #define RoofS 9
- #define RoofMID 10
- #define RoofN 11
- #define UP 0
- #define DOWN 1
- #define Moving 0
- #define LV 1
- #define LS 2
- new Metro[12];
- new LVElevPickup[2];
- new LSElevPickup[2];
- new MetroPos;
- new Ticket[MAX_PLAYERS];
- new InMetro[MAX_PLAYERS];
- new MetroUpdateTime;
- forward MetroDepart();
- forward MetroUpdate();
- stock IsPlayerInSphere(Float: playerX, Float: playerY, Float: playerZ, Float: oblastX, Float: oblastY, Float: oblastZ, radius)
- {
- if (floatsqroot(floatpower(floatabs(floatsub(oblastX, playerX)), 2)+floatpower(floatabs(floatsub(oblastY, playerY)), 2)+floatpower(floatabs(floatsub(oblastZ, playerZ)), 2)) < radius) return true;
- return false;
- }
- public OnFilterScriptInit()
- {
- print("\n--------------------------------------");
- print(" LS to LV Metro by NtCat v0.2 ");
- print("--------------------------------------\n");
- Metro[FloorS] = CreateObject(974,1598.363,1052.322,-60.243,90.241,0.0,0.0); // Metro-FloorS-LV
- Metro[FloorMID] = CreateObject(974,1598.363,1057.890,-60.243,90.241,0.0,0.0); // Metro-FloorMID-LV
- Metro[FloorN] = CreateObject(974,1598.361,1063.373,-60.224,90.241,0.0,0.0); // Metro-FloorN-LV
- Metro[WallS] = CreateObject(974,1598.360,1049.746,-57.543,0.0,0.0,0.0); // Metro-WallS-LV
- Metro[WallN] = CreateObject(974,1598.350,1066.085,-57.515,0.0,0.0,0.0); // Metro-WallN-LV
- Metro[WallNE] = CreateObject(974,1601.697,1062.839,-57.543,0.0,0.0,90.000); // Metro-WallNE-LV
- Metro[WallSE] = CreateObject(974,1601.705,1053.088,-57.559,0.0,0.0,90.000); // Metro-WallSE-LV
- Metro[WallSW] = CreateObject(974,1595.026,1053.040,-57.556,0.0,0.0,270.000); // Metro-WallSW-LV
- Metro[WallNW] = CreateObject(974,1595.020,1062.747,-57.515,0.0,0.0,270.000); // Metro-WallNW-LV
- Metro[RoofS] = CreateObject(974,1598.355,1052.497,-54.795,90.241,0.0,0.0); // Metro-RoofS-LV
- Metro[RoofMID] = CreateObject(974,1598.350,1057.898,-54.782,90.241,0.0,0.0); // Metro-RoofMID-LV
- Metro[RoofN] = CreateObject(974,1598.346,1063.358,-54.787,90.241,0.0,0.0); // Metro-RoofN-LV
- CreateObject(3997,1592.113,1129.908,-60.271,0.0,0.0,-90.000); // LV-Station-Floor
- CreateObject(3458,1604.516,1070.038,-58.749,0.0,0.0,90.000); // object (1)
- CreateObject(3458,1592.357,1069.932,-58.774,0.0,0.0,270.000); // object (3)
- CreateObject(10832,1615.292,1159.527,15.019,0.0,0.0,-90.000); // object (16)
- CreateObject(10832,1615.334,1159.506,-58.531,0.0,0.0,90.000); // object (17)
- CreateObject(3997,1580.929,-1076.063,-60.311,0.0,0.0,-90.000); // object (23)
- CreateObject(10832,1615.675,-1043.398,-58.552,0.0,0.0,-360.000); // object (35)
- CreateObject(10832,1615.654,-1043.380,24.663,0.0,0.0,-720.000); // object (36)
- LVElevPickup[UP] = CreatePickup(1318, 23, 1614.143, 1164.305, 14.367); // LV-Elev-Up-Pickup
- LVElevPickup[DOWN] = CreatePickup(1318, 23, 1616.587, 1154.803, -59.248); // LV-Elev-Down-Pickup
- LSElevPickup[UP] = CreatePickup(1318, 23, 1611.136, -1044.631, 24.080); // LS-Elev-Up-Pickup
- LSElevPickup[DOWN] = CreatePickup(1318, 23, 1610.748,-1044.592,-59.013); // LS-Elev-Down-Pickup
- SetTimer("MetroDepart",600000,1);
- MetroPos = LV;
- return 1;
- }
- public OnPlayerPickUpPickup(playerid, pickupid)
- {
- if(IsPlayerConnected(playerid))
- {
- if(pickupid == LVElevPickup[UP]) SetPlayerPos(playerid, 1616.606, 1153.107, -59.306);
- else if(pickupid == LVElevPickup[DOWN]) SetPlayerPos(playerid, 1614.222, 1166.552, 14.633);
- else if(pickupid == LSElevPickup[UP]) SetPlayerPos(playerid,1609.054,-1044.561,-58.697);
- else if(pickupid == LSElevPickup[DOWN]) SetPlayerPos(playerid,1609.459,-1044.604,24.371);
- }
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- GivePlayerMoney(playerid,10000);
- return 1;
- }
- public MetroDepart()
- {
- if(MetroPos == LV)
- {
- MoveObject(Metro[FloorS],1598.367,-1011.050,-60.258,10);
- MoveObject(Metro[FloorMID],1598.359,-1005.546,-60.231,10);
- MoveObject(Metro[FloorN],1598.367,-1000.058,-60.243,10);
- MoveObject(Metro[WallS],1598.357,-1013.808,-57.514,10);
- MoveObject(Metro[WallN],1598.418,-997.317,-57.498,10);
- MoveObject(Metro[WallNE],1601.678,-1000.632,-57.509,10);
- MoveObject(Metro[WallSE],1601.698,-1010.498,-57.509,10);
- MoveObject(Metro[WallSW],1595.014,-1010.471,-57.504,10);
- MoveObject(Metro[WallNW],1595.079,-1000.607,-57.538,10);
- MoveObject(Metro[RoofS],1598.349,-1011.032,-54.769,10);
- MoveObject(Metro[RoofMID],1598.341,-1005.539,-54.754,10);
- MoveObject(Metro[RoofN],1598.350,-1000.048,-54.733,10);
- }
- else
- {
- MoveObject(Metro[FloorS],1598.363,1052.322,-60.243,10);
- MoveObject(Metro[FloorMID],1598.363,1057.890,-60.243,10);
- MoveObject(Metro[FloorN],1598.361,1063.373,-60.224,10);
- MoveObject(Metro[WallS],1598.360,1049.746,-57.543,10);
- MoveObject(Metro[WallN],1598.350,1066.085,-57.515,10);
- MoveObject(Metro[WallNE],1601.697,1062.839,-57.543,10);
- MoveObject(Metro[WallSE],1601.705,1053.088,-57.559,10);
- MoveObject(Metro[WallSW],1595.026,1053.040,-57.556,10);
- MoveObject(Metro[WallNW],1595.020,1062.747,-57.515,10);
- MoveObject(Metro[RoofS],1598.355,1052.497,-54.795,10);
- MoveObject(Metro[RoofMID],1598.350,1057.898,-54.782,10);
- MoveObject(Metro[RoofN],1598.346,1063.358,-54.787,10);
- }
- MetroPos = Moving;
- MetroUpdateTime = SetTimer("MetroUpdate",500,1);
- }
- public MetroUpdate()
- {
- for(new i = 0; i < MAX_PLAYERS; i++)
- {
- if(IsPlayerConnected(i))
- {
- if(InMetro[i])
- {
- TogglePlayerControllable(i,0);
- new floor;
- new floorpart = random(3);
- switch(floorpart)
- {
- case 0: floor = Metro[FloorS];
- case 1: floor = Metro[FloorMID];
- case 2: floor = Metro[FloorN];
- }
- new Float:X,Float:Y,Float:Z;
- GetObjectPos(floor,X,Y,Z);
- SetObjectPos(i,X,Y,Z+0.3);
- }
- }
- }
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- Ticket[playerid] = 0;
- InMetro[playerid] = false;
- return 1;
- }
- public OnObjectMoved(objectid)
- {
- if(objectid == Metro[FloorMID])
- {
- new Float:X,Float:Y,Float:Z;
- GetObjectPos(Metro[FloorMID],X,Y,Z);
- if(Y < 0)
- {
- MetroPos = LS;
- SendClientMessageToAll(0xFF0000FF, "The train has arrived to station Los Santos.");
- }
- else
- {
- MetroPos = LV;
- SendClientMessageToAll(0xFF0000FF, "The train has arrived to station Las Vegas.");
- }
- for(new i = 0; i < MAX_PLAYERS; i++) InMetro[i] = false;
- KillTimer(MetroUpdateTime);
- }
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- if(strcmp("/buyticket", cmdtext, true) == 0)
- {
- if(IsPlayerConnected(playerid))
- {
- if(GetPlayerMoney(playerid) < TICKET_COST) return SendClientMessage(playerid, 0xFFFFFFFF, "You do not have enough money! ($100)");
- else
- {
- Ticket[playerid]++;
- GivePlayerMoney(playerid,-100);
- SendClientMessage(playerid, 0xFFFFFFFF, "You have bought a ticket for metro for $100.");
- }
- }
- return 1;
- }
- if(strcmp("/enter", cmdtext, true) == 0)
- {
- if(IsPlayerConnected(playerid))
- {
- if(Ticket[playerid] == 0) return SendClientMessage(playerid, 0xFFFFFFFF, "You do not have a valid ticket, use /buyticket");
- else
- {
- if(MetroPos == LV)
- {
- SetPlayerPos(playerid, 1598.363, 1057.890, -60.600);
- TogglePlayerControllable(playerid,0);
- InMetro[playerid] = true;
- }
- else if(MetroPos == LS)
- {
- SetPlayerPos(playerid, 1598.359,-1005.546,-60.600);
- TogglePlayerControllable(playerid,0);
- InMetro[playerid] = true;
- }
- }
- }
- return 1;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement