Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <mapandreas>
- #include <sscanf2>
- #define RA_FILE_NAME "rails.txt"
- #define EQ_FILE_NAME "equip.txt"
- #define MAX_RAILCHECK 258
- #define DIALOG_MANAGE 15
- enum en_ed {
- Float: ed_pos[4],
- ed_objects[22],
- bool: ed_state[2],
- o_ed_state[2],
- bool: ed_spawned
- };
- new File: rail_file,
- v, g,
- Float: rails[MAX_RAILCHECK][3],
- gstring[320],
- equipment_data[MAX_RAILCHECK][en_ed],
- eq_timer,
- rails_recursive,
- pd_command[32],
- on_admin,
- train_vehicle;
- static const pre_rails[MAX_RAILCHECK][2] = {
- {929, 968}, {948, 970}, {969, 972}, {990, 976}, {1011, 982}, {1040, 992}, {1071, 1006}, {1097, 1020}, {1126, 1039}, {1166, 1069},
- {1191, 1090}, {1219, 1114}, {1249, 1142}, {1277, 1168}, {1309, 1190}, {1355, 1194}, {1399, 1194},
- {692, 442}, {731, 435}, {770, 426}, {809, 419}, {851, 411}, {891, 411}, {932, 415}, {967, 424}, {1005, 430},
- {1048, 425}, {1081, 410}, {1111, 391}, {1122, 357}, {1121, 316}, {1120, 274}, {1120, 233}, {1119, 197}, {1115, 157}, {1122, 117},
- {1141, 85}, {1171, 58}, {1206, 57}, {1235, 75}, {1274, 88}, {1327, 87}, {1366, 87}, {1398, 87}, {1443, 74}, {1506, 73},
- {1551, 73}, {1598, 75}, {1642, 76}, {1662, 102}, {1665, 155}, {1678, 188}, {1704, 206}, {1732, 233}, {1733, 283}, {1731, 325},
- {1759, 358}, {1758, 391}, {1759, 427}, {1748, 450}, {1728, 471}, {1729, 522}, {1727, 572}, {1729, 626}, {1734, 668}, {1748, 704},
- {1748, 749}, {1726, 785}, {1699, 790}, {1656, 789}, {1616, 788}, {1598, 794}, {311, 793}, {313, 759}, {315, 724}, {316, 685},
- {325, 651}, {352, 629}, {383, 614}, {426, 592}, {464, 570}, {506, 547}, {541, 526}, {575, 509}, {605, 487}, {640, 469},
- {665, 456}, {322, 697}, {330, 726}, {357, 729}, {390, 728}, {410, 712}, {436, 691}, {307, 818}, {308, 855}, {306, 886},
- {309, 919}, {308, 953}, {309, 988}, {320, 1013}, {343, 1033}, {366, 1058}, {396, 1072}, {431, 1082}, {464, 1086}, {494, 1086},
- {529, 1086}, {557, 1087}, {594, 1087}, {629, 1079}, {647, 1052}, {654, 1014}, {678, 995}, {708, 994}, {735, 1011}, {763, 1026},
- {792, 1018}, {814, 996}, {846, 973}, {885, 968}, {925, 968}, {1407, 1194}, {1441, 1193}, {1480, 1194}, {1513, 1195}, {1542, 1194},
- {1558, 1182}, {1560, 1153}, {1560, 1128}, {1570, 1102}, {1583, 1076}, {1586, 1045}, {1585, 1015}, {1582, 984}, {1581, 954}, {1581, 923},
- {1568, 898}, {1539, 879}, {1513, 863}, {1499, 842}, {1507, 815}, {1540, 812}, {1573, 807}, {1590, 800}, {1534, 1198}, {1554, 1212},
- {1573, 1230}, {1592, 1244}, {1583, 1264}, {1561, 1282}, {1420, 1207}, {1412, 1202}, {1585, 1002}, {1585, 979}, {1581, 951}, {1580, 926},
- {1570, 901}, {1538, 881}, {1514, 862}, {1500, 837}, {1516, 816}, {1546, 812}, {1575, 809}, {1592, 798}, {1619, 787}, {1654, 791}, {1686, 791},
- {1715, 791}, {1731, 775}, {1746, 752}, {1749, 722}, {1745, 698}, {1736, 666}, {1733, 635}, {1729, 599}, {1730, 568}, {1726, 540}, {1731, 507},
- {1727, 474}, {1736, 463}, {1749, 447}, {1760, 428}, {1761, 392}, {1761, 364}, {1746, 339}, {1735, 321}, {1736, 295}, {1736, 265}, {1732, 239},
- {1728, 223}, {1714, 212}, {1691, 197}, {1671, 180}, {1663, 135}, {1662, 114}, {1653, 86}, {1606, 73}, {1566, 78}, {1526, 74}, {1491, 75}, {1452, 76},
- {1419, 80}, {1382, 87}, {1345, 89}, {1308, 91}, {1264, 87}, {1238, 74}, {1211, 61}, {1172, 61}, {1150, 75}, {1134, 103}, {1120, 128},
- {695, 995}, {702, 995}, {711, 998}, {718, 1002}, {725, 1004}, {731, 1007}, {735, 1011}, {740, 1015}, {746, 1019},
- {754, 1023}, {763, 1026}, {770, 1026}, {778, 1027}, {786, 1023}, {793, 1020}, {799, 1015}, {805, 1009}, {810, 1002}, {815, 996},
- {820, 991}, {826, 983}, {821, 987}, {832, 981}, {837, 979}, {842, 976}, {847, 975}, {855, 971}, {864, 970}, {852, 972},
- {872, 969}, {880, 967}, {887, 969}, {894, 969}, {900, 967}, {908, 967}, {915, 969}, {923, 967}, {931, 967}, {689, 994},
- {681, 995}, {674, 998}, {667, 1004}, {663, 1009}, {657, 1015}, {653, 1023}, {651, 1030}
- };
- static const l_models[3] = { 19123, 19125, 19124 };
- forward UpdateSafety();
- forward Float: GetDistanceFromPointToPoint( Float:X,Float:Y,Float:Z,Float:tX,Float:tY,Float:tZ );
- public OnFilterScriptInit() {
- MapAndreas_Init( MAP_ANDREAS_MODE_FULL );
- new temp[2];
- rail_file = fopen( RA_FILE_NAME, io_readwrite );
- // ----
- if( rail_file ) {
- fread( rail_file, temp );
- if( !temp[0] ) {
- fclose( rail_file );
- CreateRailChecks( "/pd-eq" );
- }
- else {
- fclose( rail_file );
- LoadRailChecks();
- }
- }
- rails_recursive = 0;
- v = 0;
- for( ; v < GetMaxPlayers(); v ++ ) {
- if( !IsPlayerConnected(v) ) continue;
- OnPlayerSpawn( v );
- SetPlayerTime( v, 21, 0 );
- }
- train_vehicle = AddStaticVehicle(538, 1738.7935, -1954.1925, 12.6451, 48.6520, -1, -1);
- LoadEquipments();
- eq_timer = SetTimer( "UpdateSafety", 100, true );
- }
- public OnFilterScriptExit() {
- v = 0;
- for( ; v < MAX_RAILCHECK; v ++ ) {
- if( !equipment_data[v][ed_spawned] ) continue;
- g = 0;
- for( ; g < 22; g ++ ) {
- DestroyObject( equipment_data[v][ed_objects][g] );
- }
- equipment_data[v][ed_spawned] = false;
- }
- DestroyVehicle( train_vehicle );
- KillTimer( eq_timer );
- }
- public UpdateSafety() {
- if( CountEquipment() < 3 ) return 0;
- new Float: sp[9],
- sign[2][64],
- ret = CountEquipment()-1;
- v = 0;
- for( ; v < MAX_RAILCHECK; v ++ ) {
- if( !equipment_data[v][ed_spawned] ) continue;
- sp[0] = equipment_data[v][ed_pos][0];
- sp[1] = equipment_data[v][ed_pos][1];
- sp[2] = equipment_data[v][ed_pos][3];
- sp[3] = equipment_data[v][ed_pos][0];
- sp[4] = equipment_data[v][ed_pos][1];
- sp[5] = equipment_data[v][ed_pos][0];
- sp[6] = equipment_data[v][ed_pos][1];
- sp[7] = equipment_data[v][ed_pos][0];
- sp[8] = equipment_data[v][ed_pos][1];
- // ----------------------------------
- sp[0] += (5.0 * floatsin(-sp[2], degrees));
- sp[1] += (5.0 * floatcos(-sp[2], degrees));
- sp[0] += (2.05 * floatsin(-sp[2]-90, degrees));
- sp[1] += (2.05 * floatcos(-sp[2]-90, degrees));
- sp[5] += (5.0 * floatsin(-sp[2] + 180, degrees));
- sp[6] += (5.0 * floatcos(-sp[2] + 180, degrees));
- sp[5] += (2.05 * floatsin(-sp[2]-90, degrees));
- sp[6] += (2.05 * floatcos(-sp[2]-90, degrees));
- sp[3] += (5.0 * floatsin(-(sp[2] + 180), degrees));
- sp[4] += (5.0 * floatcos(-(sp[2] + 180), degrees));
- sp[3] += (2.05 * floatsin(-sp[2]+90, degrees));
- sp[4] += (2.05 * floatcos(-sp[2]+90, degrees));
- sp[7] += (5.0 * floatsin(-(sp[2]), degrees));
- sp[8] += (5.0 * floatcos(-(sp[2]), degrees));
- sp[7] += (2.05 * floatsin(-sp[2]+90, degrees));
- sp[8] += (2.05 * floatcos(-sp[2]+90, degrees));
- g = 0;
- for( ; g < MAX_VEHICLES; g ++ ) {
- if( !GetVehicleModel(g) ) continue;
- if( 536 > GetVehicleModel(g) < 539 ) continue;
- // ----------------------------------------------------------
- if( IsVehicleInRangeOfPoint(g, 2.5, sp[0], sp[1], equipment_data[v][ed_pos][2]) ) {
- if( v == 0 ) {
- if( equipment_data[v+1][ed_state][0] ) {
- equipment_data[v+1][ed_state][0] = false;
- equipment_data[v][ed_state][0] = false;
- }
- }
- if( v-1 >= 0 ) {
- if( equipment_data[v-1][ed_state][0] ) {
- equipment_data[v-1][ed_state][0] = false;
- }
- }
- if( v+1 <= ret ) {
- if( equipment_data[v+1][ed_state][0] ) {
- equipment_data[v+1][ed_state][0] = false;
- }
- }
- equipment_data[v][ed_state][0] = true;
- break;
- }
- else if( IsVehicleInRangeOfPoint(g, 2.5, sp[5], sp[6], equipment_data[v][ed_pos][2]) ) {
- if( equipment_data[v][ed_state][0] ) {
- equipment_data[v][ed_state][0] = false;
- if( v != 0 ) {
- equipment_data[v-1][ed_state][0] = true;
- }
- else {
- if( rails_recursive ) {
- equipment_data[ret][ed_state][0] = true;
- }
- }
- }
- }
- else if( IsVehicleInRangeOfPoint(g, 2.5, sp[3], sp[4], equipment_data[v][ed_pos][2]) ) {
- if( v == 0 ) {
- if( equipment_data[v+1][ed_state][1] ) {
- equipment_data[v+1][ed_state][1] = false;
- equipment_data[v][ed_state][1] = false;
- }
- }
- if( v-1 >= 0 ) {
- if( equipment_data[v-1][ed_state][1] ) {
- equipment_data[v-1][ed_state][1] = false;
- }
- }
- if( v+1 <= ret ) {
- if( equipment_data[v+1][ed_state][1] ) {
- equipment_data[v+1][ed_state][1] = false;
- }
- }
- equipment_data[v][ed_state][1] = true;
- break;
- }
- else if( IsVehicleInRangeOfPoint(g, 2.5, sp[7], sp[8], equipment_data[v][ed_pos][2]) ) {
- if( equipment_data[v][ed_state][1] ) {
- equipment_data[v][ed_state][1] = false;
- if( v <= ret ) {
- equipment_data[v+1][ed_state][1] = true;
- }
- }
- }
- }
- // -----------
- if( !rails_recursive ) {
- if( (v + 1) <= ret+1 ) {
- if( equipment_data[v][ed_state][0] == false && equipment_data[v + 1][ed_state][0] == false && equipment_data[v][o_ed_state][0] != 0 ) {
- format( sign[0], 64, "{ffffff}-------------\n{cfffc6}CLEAR\n{ffffff}-------------" );
- SetObjectMaterialText( equipment_data[v][ed_objects][0], sign[0], 0, OBJECT_MATERIAL_SIZE_512x256, "Arial", 100, 1, 0xffffffFF, 416788, 1 );
- equipment_data[v][o_ed_state][0] = 0;
- RefreshLights( v, 0, equipment_data[v][o_ed_state][0] );
- }
- }
- }
- else {
- if( v == ret ) {
- if( equipment_data[v][ed_state][0] == false && equipment_data[0][ed_state][0] == false && equipment_data[v][o_ed_state][0] != 0 ) {
- format( sign[0], 64, "{ffffff}-------------\n{cfffc6}CLEAR\n{ffffff}-------------" );
- SetObjectMaterialText( equipment_data[v][ed_objects][0], sign[0], 0, OBJECT_MATERIAL_SIZE_512x256, "Arial", 100, 1, 0xffffffFF, 416788, 1 );
- equipment_data[v][o_ed_state][0] = 0;
- RefreshLights( v, 0, equipment_data[v][o_ed_state][0] );
- }
- }
- else if( (v + 1) <= ret+1 ) {
- if( equipment_data[v][ed_state][0] == false && equipment_data[v + 1][ed_state][0] == false && equipment_data[v][o_ed_state][0] != 0 ) {
- format( sign[0], 64, "{ffffff}-------------\n{cfffc6}CLEAR\n{ffffff}-------------" );
- SetObjectMaterialText( equipment_data[v][ed_objects][0], sign[0], 0, OBJECT_MATERIAL_SIZE_512x256, "Arial", 100, 1, 0xffffffFF, 416788, 1 );
- equipment_data[v][o_ed_state][0] = 0;
- RefreshLights( v, 0, equipment_data[v][o_ed_state][0] );
- }
- }
- }
- if( (v + 1) <= ret ) {
- if( equipment_data[v + 1][ed_state][0] == true && equipment_data[v][o_ed_state][0] != 1 ) {
- if( v == 0 && equipment_data[ret][o_ed_state][0] != 0 ) {
- if( rails_recursive ) {
- format( sign[0], 64, "{ffffff}-------------\n{cfffc6}CLEAR\n{ffffff}-------------" );
- SetObjectMaterialText( equipment_data[ret][ed_objects][0], sign[0], 0, OBJECT_MATERIAL_SIZE_512x256, "Arial", 100, 1, 0xffffffFF, 416788, 1 );
- equipment_data[ret][o_ed_state][0] = 0;
- RefreshLights( ret, 0, equipment_data[ret][o_ed_state][0] );
- }
- }
- // -----
- format( sign[0], 64, "{ffffff}-------------\n{ffea00}SLOW!\n{ffffff}-------------" );
- SetObjectMaterialText( equipment_data[v][ed_objects][0], sign[0], 0, OBJECT_MATERIAL_SIZE_512x256, "Arial", 100, 1, 0xffffffFF, 416788, 1 );
- equipment_data[v][o_ed_state][0] = 1;
- RefreshLights( v, 0, equipment_data[v][o_ed_state][0] );
- }
- }
- if( equipment_data[v][ed_state][0] == true && equipment_data[v][o_ed_state][0] != 2 ) {
- if( rails_recursive ) {
- if( v == 0 && equipment_data[ret][o_ed_state][0] != 1 ) {
- equipment_data[ret][ed_state][0] = false;
- format( sign[0], 64, "{ffffff}-------------\n{ffea00}SLOW!\n{ffffff}-------------" );
- SetObjectMaterialText( equipment_data[ret][ed_objects][0], sign[0], 0, OBJECT_MATERIAL_SIZE_512x256, "Arial", 100, 1, 0xffffffFF, 416788, 1 );
- equipment_data[ret][o_ed_state][0] = 1;
- RefreshLights( ret, 0, equipment_data[ret][o_ed_state][0] );
- }
- else {
- if( v == ret && equipment_data[v][o_ed_state][0] != 2 ) {
- format( sign[0], 64, "{ffffff}-------------\n{ff8181}STOP!\n{ffffff}-------------" );
- SetObjectMaterialText( equipment_data[v][ed_objects][0], sign[0], 0, OBJECT_MATERIAL_SIZE_512x256, "Arial", 100, 1, 0xffffffFF, 416788, 1 );
- equipment_data[v][o_ed_state][0] = 2;
- RefreshLights( v, 0, equipment_data[v][o_ed_state][0] );
- }
- else {
- format( sign[0], 64, "{ffffff}-------------\n{ff8181}STOP!\n{ffffff}-------------" );
- SetObjectMaterialText( equipment_data[v][ed_objects][0], sign[0], 0, OBJECT_MATERIAL_SIZE_512x256, "Arial", 100, 1, 0xffffffFF, 416788, 1 );
- equipment_data[v][o_ed_state][0] = 2;
- RefreshLights( v, 0, equipment_data[v][o_ed_state][0] );
- }
- }
- }
- // -----
- else {
- format( sign[0], 64, "{ffffff}-------------\n{ff8181}STOP!\n{ffffff}-------------" );
- SetObjectMaterialText( equipment_data[v][ed_objects][0], sign[0], 0, OBJECT_MATERIAL_SIZE_512x256, "Arial", 100, 1, 0xffffffFF, 416788, 1 );
- equipment_data[v][o_ed_state][0] = 2;
- RefreshLights( v, 0, equipment_data[v][o_ed_state][0] );
- }
- }
- // --------------------------------------------------------------------------------
- if( v == 0 ) {
- if( equipment_data[v][ed_state][1] == false && equipment_data[v][o_ed_state][1] != 0 ) {
- format( sign[1], 64, "{ffffff}-------------\n{cfffc6}CLEAR\n{ffffff}-------------" );
- SetObjectMaterialText( equipment_data[v][ed_objects][1], sign[1], 0, OBJECT_MATERIAL_SIZE_512x256, "Arial", 100, 1, 0xffffffFF, 416788, 1 );
- equipment_data[v][o_ed_state][1] = 0;
- RefreshLights( v, 1, equipment_data[v][o_ed_state][1] );
- }
- }
- if( (v - 1) >= 0 ) {
- if( equipment_data[v][ed_state][1] == false && equipment_data[v - 1][ed_state][1] == false && equipment_data[v][o_ed_state][1] != 0 ) {
- format( sign[1], 64, "{ffffff}-------------\n{cfffc6}CLEAR\n{ffffff}-------------" );
- SetObjectMaterialText( equipment_data[v][ed_objects][1], sign[1], 0, OBJECT_MATERIAL_SIZE_512x256, "Arial", 100, 1, 0xffffffFF, 416788, 1 );
- equipment_data[v][o_ed_state][1] = 0;
- RefreshLights( v, 1, equipment_data[v][o_ed_state][1] );
- }
- }
- if( (v - 1) >= 0 ) {
- if( equipment_data[v - 1][ed_state][1] == true && equipment_data[v][o_ed_state][1] != 1 ) {
- format( sign[1], 64, "{ffffff}-------------\n{ffea00}SLOW!\n{ffffff}-------------" );
- SetObjectMaterialText( equipment_data[v][ed_objects][1], sign[1], 0, OBJECT_MATERIAL_SIZE_512x256, "Arial", 100, 1, 0xffffffFF, 416788, 1 );
- equipment_data[v][o_ed_state][1] = 1;
- RefreshLights( v, 1, equipment_data[v][o_ed_state][1] );
- }
- }
- if( equipment_data[v][ed_state][1] == true && equipment_data[v][o_ed_state][1] != 2 ) {
- format( sign[1], 64, "{ffffff}-------------\n{ff8181}STOP!\n{ffffff}-------------" );
- SetObjectMaterialText( equipment_data[v][ed_objects][1], sign[1], 0, OBJECT_MATERIAL_SIZE_512x256, "Arial", 100, 1, 0xffffffFF, 416788, 1 );
- equipment_data[v][o_ed_state][1] = 2;
- RefreshLights( v, 1, equipment_data[v][o_ed_state][1] );
- }
- }
- return 1;
- }
- public OnPlayerCommandText( playerid, cmdtext[] ) {
- if( !strcmp(cmdtext, pd_command) ) {
- if( on_admin ) { if( !IsPlayerAdmin(playerid) ) { return SendClientMessage( playerid, 0x7e0000AA, "ERROR: {acacac}You must have admin privileges to use this command." ); } }
- if( !IsPlayerAtRail(playerid) ) return SendClientMessage( playerid, 0x7e0000AA, "ERROR: {acacac}You must be close to the railway." );
- new eq_id = CreateSafetyEquipmentOnPlayer( playerid );
- if( eq_id == -1 ) return SendClientMessage( playerid, 0x7e0000AA, "ERROR: {acacac}Unknown error occured, maybe limit reached?" );
- format( gstring, sizeof(gstring), "SUCCESS: {acacac}Equipment no. %d placed successfully.", eq_id );
- SendClientMessage( playerid, 0x298700AA, gstring );
- return 1;
- }
- else if( !strcmp(cmdtext, "/manage") ) {
- if( on_admin ) { if( !IsPlayerAdmin(playerid) ) { return SendClientMessage( playerid, 0x7e0000AA, "ERROR: {acacac}You must have admin privileges to use this command." ); } }
- ShowManageWindow( playerid );
- return 1;
- }
- else if( !strcmp(cmdtext, "/back") ) {
- if( on_admin ) { if( !IsPlayerAdmin(playerid) ) { return SendClientMessage( playerid, 0x7e0000AA, "ERROR: {acacac}You must have admin privileges to use this command." ); } }
- if( !CountEquipment() ) return SendClientMessage( playerid, 0x7e0000AA, "ERROR: {acacac}Place some equipment first." );
- g = 0;
- for( ; g < 22; g ++ ) {
- DestroyObject( equipment_data[CountEquipment()-1][ed_objects][g] );
- }
- equipment_data[CountEquipment()-1][ed_spawned] = false;
- format( gstring, sizeof(gstring), "SUCCESS: {acacac}Equipment no. %d undoed successfully.", CountEquipment() );
- SendClientMessage( playerid, 0x298700AA, gstring );
- return 1;
- }
- else if( !strcmp(cmdtext, "/id") ) {
- if( on_admin ) { if( !IsPlayerAdmin(playerid) ) { return SendClientMessage( playerid, 0x7e0000AA, "ERROR: {acacac}You must have admin privileges to use this command." ); } }
- new e_id = GetClosestEQID( playerid );
- if( e_id == -1 ) return SendClientMessage( playerid, 0x7e0000AA, "ERROR: {acacac}There is no equipment in your area." );
- format( gstring, sizeof(gstring), "Closest equipment's ID: {acacac}%d", e_id );
- SendClientMessage( playerid, 0xd8e75dAA, gstring );
- return 1;
- }
- else if( !strcmp(cmdtext, "/help") ) {
- format( gstring, sizeof(gstring), "Avaible commands: {acacac}/manage, %s, /back, /id, /help.", pd_command );
- SendClientMessage( playerid, 0xd8e75dAA, gstring );
- return 1;
- }
- return 1;
- }
- public OnDialogResponse( playerid, dialogid, response, listitem, inputtext[] ) {
- switch( dialogid ) {
- case DIALOG_MANAGE: {
- if( !response ) return 1;
- // ---
- switch( listitem ) {
- case 2: {
- if( CountEquipment() > 2 ) { rails_recursive = !rails_recursive; }
- if( rails_recursive ) {
- v = 0;
- for( ; v < MAX_RAILCHECK; v ++ ) {
- if( !equipment_data[v][ed_spawned] ) continue;
- equipment_data[v][ed_state][0] = false;
- equipment_data[v][ed_state][1] = false;
- }
- }
- ShowManageWindow( playerid );
- }
- case 3: {
- ShowManageWindow( playerid, 1 );
- }
- case 4: {
- on_admin = !on_admin;
- ShowManageWindow( playerid );
- }
- case 8: {
- if( !CountEquipment() ) return SendClientMessage( playerid, 0x7e0000AA, "ERROR: {acacac}Place some equipment first." ), ShowManageWindow( playerid );
- v = 0;
- for( ; v < MAX_RAILCHECK; v ++ ) {
- if( !equipment_data[v][ed_spawned] ) continue;
- g = 0;
- for( ; g < 22; g ++ ) {
- DestroyObject( equipment_data[v][ed_objects][g] );
- }
- equipment_data[v][ed_spawned] = false;
- }
- fremove( EQ_FILE_NAME );
- SendClientMessage( playerid, 0x298700AA, "SUCCESS: {acacac}All equipment deleted." );
- ShowManageWindow( playerid );
- }
- case 9: {
- if( CountEquipment() > 0 ) { SaveEquipments(); SendClientMessage( playerid, 0x298700AA, "SUCCESS: {acacac}All equipment saved." ); }
- ShowManageWindow( playerid );
- }
- case 10: {
- if( CountEquipment() > 2 ) ShowManageWindow( playerid, 2 );
- else ShowManageWindow( playerid );
- }
- default: ShowManageWindow( playerid );
- }
- }
- case DIALOG_MANAGE + 1: {
- if( !response ) return ShowManageWindow( playerid );
- // ---
- if( strlen(inputtext) < 2 || inputtext[0] != '/' ) return ShowManageWindow( playerid, 1 );
- format( pd_command, sizeof(pd_command), "%s", inputtext );
- CreateRailChecks( pd_command );
- ShowManageWindow( playerid );
- }
- case DIALOG_MANAGE + 2: {
- if( !response ) return ShowManageWindow( playerid );
- // ---
- if( !IsNumeric(inputtext) ) return ShowManageWindow( playerid, 2 );
- if( strval(inputtext) < 0 || strval(inputtext) >= CountEquipment() ) return ShowManageWindow( playerid, 2 );
- v = strval(inputtext);
- for( ; v < MAX_RAILCHECK; v ++ ) {
- if( !equipment_data[v][ed_spawned] ) continue;
- g = 0;
- for( ; g < 22; g ++ ) {
- DestroyObject( equipment_data[v][ed_objects][g] );
- }
- equipment_data[v][ed_spawned] = false;
- }
- SendClientMessage( playerid, 0x298700AA, "SUCCESS: {acacac}Railway interrupted at position." );
- ShowManageWindow( playerid );
- }
- }
- return 1;
- }
- public OnPlayerSpawn( playerid ) {
- SetPlayerPos( playerid, 1734.9142, -1949.0009, 14.1172 );
- SetPlayerFacingAngle( playerid, 180 );
- SetCameraBehindPlayer( playerid );
- return 1;
- }
- CreateRailChecks( newcommand[] ) {
- rail_file = fopen( RA_FILE_NAME, io_readwrite );
- format( pd_command, 32, newcommand );
- on_admin = 1;
- format( gstring, 40, "%i %s\r\n", on_admin, pd_command );
- fwrite( rail_file, gstring );
- v = 0;
- for( ; v < MAX_RAILCHECK; v++ ) {
- ConvertPosFromPicture( pre_rails[v][0], pre_rails[v][1], rails[v][0], rails[v][1], rails[v][2] );
- format( gstring, 37, "%.4f %.4f %.4f\r\n", rails[v][0], rails[v][1], rails[v][2] );
- fwrite( rail_file, gstring );
- }
- fclose( rail_file );
- printf( " %d railcheck successfully created and loaded. ", v );
- }
- LoadRailChecks() {
- rail_file = fopen( RA_FILE_NAME, io_readwrite );
- v = 0;
- if( rail_file ) {
- while( fread(rail_file, gstring) ) {
- if( v > 0 ) {
- sscanf( gstring, "fff", rails[v - 1][0], rails[v - 1][1], rails[v - 1][2] );
- }
- else {
- sscanf( gstring, "is[32]", on_admin, pd_command );
- strdel( pd_command, strlen(pd_command) - 2, strlen(pd_command) );
- }
- v ++;
- }
- }
- fclose( rail_file );
- printf( " %d railcheck successfully loaded. ", v );
- }
- stock ShowManageWindow( playerid, mstate = 0 ) {
- switch( mstate ) {
- case 0: {
- format( gstring, sizeof(gstring), "{573d25}Informations{ffffff}\t \n \t \
- \n\
- Rail Connection\t{b0b0b0}%s{ffffff}\n\
- Equipment Command\t{b0b0b0}%s{ffffff}\n\
- Only Admin\t{b0b0b0}%s{ffffff}\n \t \
- \n\
- {573d25}Data Management{ffffff}\t \n \t \
- \n\
- Delete Equipments\t \n\
- Save Equipments\t \n\
- {640505}- Rail Interruption -\t \n", (rails_recursive ? ("Enabled") : ("Disabled")), pd_command, (on_admin ? ("Yes") : ("No")) );
- ShowPlayerDialog( playerid, DIALOG_MANAGE, 4, "Railway Safety SYS", gstring, "Okay", "Back" );
- }
- case 1: {
- format( gstring, sizeof(gstring), "Current command to put down equipment: %s\n \nPlease write down a new one or press Back button.\nExample: /pd-eq" );
- ShowPlayerDialog( playerid, DIALOG_MANAGE + 1, DIALOG_STYLE_INPUT, "Railway Safety SYS - Command changing", gstring, "Okay", "Back" );
- }
- case 2: {
- format( gstring, sizeof(gstring), "Write the rail's ID. (Where you want to interrupt the railway.)" );
- ShowPlayerDialog( playerid, DIALOG_MANAGE + 2, DIALOG_STYLE_INPUT, "Railway Safety SYS - Interruption", gstring, "Okay", "Back" );
- }
- }
- return 1;
- }
- stock CountEquipment() {
- new temp, t;
- t = 0;
- for( ; t < MAX_RAILCHECK; t ++ ) {
- if( !equipment_data[t][ed_spawned] ) continue;
- temp ++;
- }
- return temp;
- }
- stock ConvertPosFromPicture( desk_x, desk_y, &Float: x, &Float: y, &Float: z ) {
- x = floatmul( (desk_x - 900), floatdiv(3000, 900) );
- y = floatmul( floatmul((desk_y - 723), floatdiv(3000, 723)), -1 );
- MapAndreas_FindZ_For2DCoord( x, y, z );
- return 1;
- }
- stock IsPlayerAtRail( playerid ) {
- new t;
- t = 0;
- for( ; t < MAX_RAILCHECK; t++ ) {
- if( IsPlayerInRangeOfPoint(playerid, 100.0, rails[t][0], rails[t][1], rails[t][2]) ) {
- return true;
- }
- }
- return false;
- }
- stock GetXYByPos( Float: gx, Float:gy, Float: ga, direction, &Float:x, &Float:y, Float:distance ) {
- new Float:a = ga;
- switch( direction ) {
- case 1: {
- a += 180.0;
- }
- case 2: {
- a += 90.0;
- }
- case 3: {
- a -= 90.0;
- }
- }
- x = gx;
- y = gy;
- x += (distance * floatsin(-a, degrees));
- y += (distance * floatcos(-a, degrees));
- return 1;
- }
- stock GetXYByPlayer( playerid, direction, &Float:x, &Float:y, Float:distance ) {
- new Float:a;
- GetPlayerPos(playerid, x, y, a);
- GetPlayerFacingAngle(playerid, a);
- if (GetPlayerVehicleID(playerid))
- {
- GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
- }
- // ------------
- switch( direction ) {
- case 1: {
- a += 180.0;
- }
- case 2: {
- a += 90.0;
- }
- case 3: {
- a -= 90.0;
- }
- }
- x += (distance * floatsin(-a, degrees));
- y += (distance * floatcos(-a, degrees));
- return 1;
- }
- stock RefreshLights( equipment, light, l_state ) {
- new Float: op[3];
- switch( light ) {
- case 0: {
- GetObjectPos( equipment_data[equipment][ed_objects][3], op[0], op[1], op[2] );
- DestroyObject( equipment_data[equipment][ed_objects][3] );
- equipment_data[equipment][ed_objects][3] = CreateObject(l_models[l_state], op[0], op[1], op[2], 0.00000, 0.00000, 0.00000);
- GetObjectPos( equipment_data[equipment][ed_objects][4], op[0], op[1], op[2] );
- DestroyObject( equipment_data[equipment][ed_objects][4] );
- equipment_data[equipment][ed_objects][4] = CreateObject(l_models[l_state], op[0], op[1], op[2], 0.00000, 0.00000, 0.00000);
- GetObjectPos( equipment_data[equipment][ed_objects][5], op[0], op[1], op[2] );
- DestroyObject( equipment_data[equipment][ed_objects][5] );
- equipment_data[equipment][ed_objects][5] = CreateObject(l_models[l_state], op[0], op[1], op[2], 0.00000, 0.00000, 0.00000);
- }
- case 1: {
- GetObjectPos( equipment_data[equipment][ed_objects][13], op[0], op[1], op[2] );
- DestroyObject( equipment_data[equipment][ed_objects][13] );
- equipment_data[equipment][ed_objects][13] = CreateObject(l_models[l_state], op[0], op[1], op[2], 0.00000, 0.00000, 0.00000);
- GetObjectPos( equipment_data[equipment][ed_objects][14], op[0], op[1], op[2] );
- DestroyObject( equipment_data[equipment][ed_objects][14] );
- equipment_data[equipment][ed_objects][14] = CreateObject(l_models[l_state], op[0], op[1], op[2], 0.00000, 0.00000, 0.00000);
- GetObjectPos( equipment_data[equipment][ed_objects][15], op[0], op[1], op[2] );
- DestroyObject( equipment_data[equipment][ed_objects][15] );
- equipment_data[equipment][ed_objects][15] = CreateObject(l_models[l_state], op[0], op[1], op[2], 0.00000, 0.00000, 0.00000);
- }
- }
- return 1;
- }
- stock CreateSafetyEquipmentOnPlayer( playerid ) {
- new Float: c_fp[2],
- e_id = -1;
- v = 0;
- for( ; v < MAX_RAILCHECK; v ++ ) {
- if( !equipment_data[v][ed_spawned] ) { e_id = v; break; }
- }
- // --------
- GetPlayerPos( playerid, equipment_data[e_id][ed_pos][0], equipment_data[e_id][ed_pos][1], equipment_data[e_id][ed_pos][2] );
- GetPlayerFacingAngle( playerid, equipment_data[e_id][ed_pos][3] );
- if( IsPlayerInAnyVehicle(playerid) ) GetVehicleZAngle( GetPlayerVehicleID(playerid), equipment_data[e_id][ed_pos][3] );
- // --------
- rails_recursive = 0;
- equipment_data[e_id][ed_spawned] = true;
- equipment_data[e_id][o_ed_state][0] = -1;
- equipment_data[e_id][o_ed_state][1] = -1;
- GetXYByPlayer( playerid, 2, c_fp[0], c_fp[1], 4.5 );
- equipment_data[e_id][ed_objects][0] = CreateObject(7246, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 2.5, 0.00000, 0.00000, equipment_data[e_id][ed_pos][3]);
- GetXYByPlayer( playerid, 3, c_fp[0], c_fp[1], 4.5 );
- equipment_data[e_id][ed_objects][1] = CreateObject(7246, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 2.5, 0.00000, 0.00000, equipment_data[e_id][ed_pos][3] + 180.00000);
- GetXYByPlayer( playerid, 2, c_fp[0], c_fp[1], 5.55 );
- c_fp[0] += (0.3 * floatsin(-(equipment_data[e_id][ed_pos][3]-180), degrees));
- c_fp[1] += (0.3 * floatcos(-(equipment_data[e_id][ed_pos][3]-180), degrees));
- equipment_data[e_id][ed_objects][2] = CreateObject(940, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 5.35, 0.00000, 90.00000, equipment_data[e_id][ed_pos][3] + 90.00000);
- GetXYByPlayer( playerid, 2, c_fp[0], c_fp[1], 5.55 );
- c_fp[0] += (0.1 * floatsin(-(equipment_data[e_id][ed_pos][3]-180), degrees));
- c_fp[1] += (0.1 * floatcos(-(equipment_data[e_id][ed_pos][3]-180), degrees));
- equipment_data[e_id][ed_objects][3] = CreateObject(19123, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 5.85, 0.00000, 0.00000, 0.00000);
- GetXYByPlayer( playerid, 2, c_fp[0], c_fp[1], 5.55 );
- c_fp[0] += (0.1 * floatsin(-(equipment_data[e_id][ed_pos][3]-180), degrees));
- c_fp[1] += (0.1 * floatcos(-(equipment_data[e_id][ed_pos][3]-180), degrees));
- equipment_data[e_id][ed_objects][4] = CreateObject(19123, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 5.05, 0.00000, 0.00000, 0.00000);
- GetXYByPlayer( playerid, 2, c_fp[0], c_fp[1], 5.55 );
- c_fp[0] += (0.1 * floatsin(-(equipment_data[e_id][ed_pos][3]-180), degrees));
- c_fp[1] += (0.1 * floatcos(-(equipment_data[e_id][ed_pos][3]-180), degrees));
- equipment_data[e_id][ed_objects][5] = CreateObject(19123, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 4.25, 0.00000, 0.00000, 0.00000);
- GetXYByPlayer( playerid, 2, c_fp[0], c_fp[1], 5.5601 );
- c_fp[0] -= (0.242 * floatsin(-(equipment_data[e_id][ed_pos][3]), degrees));
- c_fp[1] -= (0.242 * floatcos(-(equipment_data[e_id][ed_pos][3]), degrees));
- equipment_data[e_id][ed_objects][6] = CreateObject(1628, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 6, 0.00000, 0.00000, equipment_data[e_id][ed_pos][3]-90.00000);
- GetXYByPlayer( playerid, 2, c_fp[0], c_fp[1], 5.56 );
- c_fp[0] -= (0.24 * floatsin(-(equipment_data[e_id][ed_pos][3]), degrees));
- c_fp[1] -= (0.24 * floatcos(-(equipment_data[e_id][ed_pos][3]), degrees));
- equipment_data[e_id][ed_objects][7] = CreateObject(1628, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 5, 0.00000, 0.00000, equipment_data[e_id][ed_pos][3]-90.00000);
- GetXYByPlayer( playerid, 2, c_fp[0], c_fp[1], 5.5602 );
- c_fp[0] -= (0.241 * floatsin(-(equipment_data[e_id][ed_pos][3]), degrees));
- c_fp[1] -= (0.241 * floatcos(-(equipment_data[e_id][ed_pos][3]), degrees));
- equipment_data[e_id][ed_objects][8] = CreateObject(1628, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 4, 0.00000, 0.00000, equipment_data[e_id][ed_pos][3]-90.00000);
- GetXYByPlayer( playerid, 2, c_fp[0], c_fp[1], 5.5502 );
- c_fp[0] += (0.041 * floatsin(-(equipment_data[e_id][ed_pos][3]), degrees));
- c_fp[1] += (0.041 * floatcos(-(equipment_data[e_id][ed_pos][3]), degrees));
- equipment_data[e_id][ed_objects][9] = CreateObject(1628, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 6, 0.00000, 0.00000, equipment_data[e_id][ed_pos][3]+90.00000);
- GetXYByPlayer( playerid, 2, c_fp[0], c_fp[1], 5.55 );
- c_fp[0] += (0.04 * floatsin(-(equipment_data[e_id][ed_pos][3]), degrees));
- c_fp[1] += (0.04 * floatcos(-(equipment_data[e_id][ed_pos][3]), degrees));
- equipment_data[e_id][ed_objects][10] = CreateObject(1628, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 5, 0.00000, 0.00000, equipment_data[e_id][ed_pos][3]+90.00000);
- GetXYByPlayer( playerid, 2, c_fp[0], c_fp[1], 5.5501 );
- c_fp[0] += (0.042 * floatsin(-(equipment_data[e_id][ed_pos][3]), degrees));
- c_fp[1] += (0.042 * floatcos(-(equipment_data[e_id][ed_pos][3]), degrees));
- equipment_data[e_id][ed_objects][11] = CreateObject(1628, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 4, 0.00000, 0.00000, equipment_data[e_id][ed_pos][3]+90.00000);
- // ---
- GetXYByPlayer( playerid, 3, c_fp[0], c_fp[1], 5.55 );
- c_fp[0] -= (0.3 * floatsin(-(equipment_data[e_id][ed_pos][3]-180), degrees));
- c_fp[1] -= (0.3 * floatcos(-(equipment_data[e_id][ed_pos][3]-180), degrees));
- equipment_data[e_id][ed_objects][12] = CreateObject(940, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 5.35, 0.00000, 90.00000, equipment_data[e_id][ed_pos][3] + 90.00000 + 180);
- GetXYByPlayer( playerid, 3, c_fp[0], c_fp[1], 5.55 );
- c_fp[0] -= (0.1 * floatsin(-(equipment_data[e_id][ed_pos][3]-180), degrees));
- c_fp[1] -= (0.1 * floatcos(-(equipment_data[e_id][ed_pos][3]-180), degrees));
- equipment_data[e_id][ed_objects][13] = CreateObject(19123, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 5.85, 0.00000, 0.00000, 0.00000+ 180);
- GetXYByPlayer( playerid, 3, c_fp[0], c_fp[1], 5.55 );
- c_fp[0] -= (0.1 * floatsin(-(equipment_data[e_id][ed_pos][3]-180), degrees));
- c_fp[1] -= (0.1 * floatcos(-(equipment_data[e_id][ed_pos][3]-180), degrees));
- equipment_data[e_id][ed_objects][14] = CreateObject(19123, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 5.05, 0.00000, 0.00000, 0.00000+ 180);
- GetXYByPlayer( playerid, 3, c_fp[0], c_fp[1], 5.55 );
- c_fp[0] -= (0.1 * floatsin(-(equipment_data[e_id][ed_pos][3]-180), degrees));
- c_fp[1] -= (0.1 * floatcos(-(equipment_data[e_id][ed_pos][3]-180), degrees));
- equipment_data[e_id][ed_objects][15] = CreateObject(19123, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 4.25, 0.00000, 0.00000, 0.00000+ 180);
- GetXYByPlayer( playerid, 3, c_fp[0], c_fp[1], 5.5601 );
- c_fp[0] += (0.242 * floatsin(-(equipment_data[e_id][ed_pos][3]), degrees));
- c_fp[1] += (0.242 * floatcos(-(equipment_data[e_id][ed_pos][3]), degrees));
- equipment_data[e_id][ed_objects][16] = CreateObject(1628, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 6, 0.00000, 0.00000, equipment_data[e_id][ed_pos][3]-90.00000+ 180);
- GetXYByPlayer( playerid, 3, c_fp[0], c_fp[1], 5.56 );
- c_fp[0] += (0.24 * floatsin(-(equipment_data[e_id][ed_pos][3]), degrees));
- c_fp[1] += (0.24 * floatcos(-(equipment_data[e_id][ed_pos][3]), degrees));
- equipment_data[e_id][ed_objects][17] = CreateObject(1628, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 5, 0.00000, 0.00000, equipment_data[e_id][ed_pos][3]-90.00000+ 180);
- GetXYByPlayer( playerid, 3, c_fp[0], c_fp[1], 5.5602 );
- c_fp[0] += (0.241 * floatsin(-(equipment_data[e_id][ed_pos][3]), degrees));
- c_fp[1] += (0.241 * floatcos(-(equipment_data[e_id][ed_pos][3]), degrees));
- equipment_data[e_id][ed_objects][18] = CreateObject(1628, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 4, 0.00000, 0.00000, equipment_data[e_id][ed_pos][3]-90.00000+ 180);
- GetXYByPlayer( playerid, 3, c_fp[0], c_fp[1], 5.5502 );
- c_fp[0] -= (0.041 * floatsin(-(equipment_data[e_id][ed_pos][3]), degrees));
- c_fp[1] -= (0.041 * floatcos(-(equipment_data[e_id][ed_pos][3]), degrees));
- equipment_data[e_id][ed_objects][19] = CreateObject(1628, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 6, 0.00000, 0.00000, equipment_data[e_id][ed_pos][3]+90.00000+ 180);
- GetXYByPlayer( playerid, 3, c_fp[0], c_fp[1], 5.55 );
- c_fp[0] -= (0.04 * floatsin(-(equipment_data[e_id][ed_pos][3]), degrees));
- c_fp[1] -= (0.04 * floatcos(-(equipment_data[e_id][ed_pos][3]), degrees));
- equipment_data[e_id][ed_objects][20] = CreateObject(1628, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 5, 0.00000, 0.00000, equipment_data[e_id][ed_pos][3]+90.00000+ 180);
- GetXYByPlayer( playerid, 3, c_fp[0], c_fp[1], 5.5501 );
- c_fp[0] -= (0.042 * floatsin(-(equipment_data[e_id][ed_pos][3]), degrees));
- c_fp[1] -= (0.042 * floatcos(-(equipment_data[e_id][ed_pos][3]), degrees));
- equipment_data[e_id][ed_objects][21] = CreateObject(1628, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 4, 0.00000, 0.00000, equipment_data[e_id][ed_pos][3]+90.00000+ 180);
- return e_id;
- }
- stock SaveEquipments() {
- rail_file = fopen( EQ_FILE_NAME, io_readwrite );
- format( gstring, 20, "%i\r\n", rails_recursive );
- fwrite( rail_file, gstring );
- v = 0;
- for( ; v < MAX_RAILCHECK; v ++ ) {
- if( !equipment_data[v][ed_spawned] ) continue;
- format( gstring, 64, "%.4f %.4f %.4f %.4f\r\n", equipment_data[v][ed_pos][0], equipment_data[v][ed_pos][1], equipment_data[v][ed_pos][2], equipment_data[v][ed_pos][3] );
- fwrite( rail_file, gstring );
- }
- fclose( rail_file );
- return 1;
- }
- stock LoadEquipments() {
- new e_id,
- Float: c_fp[2];
- rail_file = fopen( EQ_FILE_NAME, io_readwrite );
- v = 0;
- if( rail_file ) {
- while( fread(rail_file, gstring) ) {
- if( v > 0 ) {
- e_id = v-1;
- sscanf( gstring, "ffff", equipment_data[e_id][ed_pos][0], equipment_data[e_id][ed_pos][1], equipment_data[e_id][ed_pos][2], equipment_data[e_id][ed_pos][3] );
- // ------
- equipment_data[e_id][ed_spawned] = true;
- equipment_data[e_id][o_ed_state][0] = -1;
- equipment_data[e_id][o_ed_state][1] = -1;
- GetXYByPos( equipment_data[e_id][ed_pos][0], equipment_data[e_id][ed_pos][1], equipment_data[e_id][ed_pos][3], 2, c_fp[0], c_fp[1], 4.5 );
- equipment_data[e_id][ed_objects][0] = CreateObject(7246, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 2.5, 0.00000, 0.00000, equipment_data[e_id][ed_pos][3]);
- GetXYByPos( equipment_data[e_id][ed_pos][0], equipment_data[e_id][ed_pos][1], equipment_data[e_id][ed_pos][3], 3, c_fp[0], c_fp[1], 4.5 );
- equipment_data[e_id][ed_objects][1] = CreateObject(7246, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 2.5, 0.00000, 0.00000, equipment_data[e_id][ed_pos][3] + 180.00000);
- GetXYByPos( equipment_data[e_id][ed_pos][0], equipment_data[e_id][ed_pos][1], equipment_data[e_id][ed_pos][3], 2, c_fp[0], c_fp[1], 5.55 );
- c_fp[0] += (0.3 * floatsin(-(equipment_data[e_id][ed_pos][3]-180), degrees));
- c_fp[1] += (0.3 * floatcos(-(equipment_data[e_id][ed_pos][3]-180), degrees));
- equipment_data[e_id][ed_objects][2] = CreateObject(940, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 5.35, 0.00000, 90.00000, equipment_data[e_id][ed_pos][3] + 90.00000);
- GetXYByPos( equipment_data[e_id][ed_pos][0], equipment_data[e_id][ed_pos][1], equipment_data[e_id][ed_pos][3], 2, c_fp[0], c_fp[1], 5.55 );
- c_fp[0] += (0.1 * floatsin(-(equipment_data[e_id][ed_pos][3]-180), degrees));
- c_fp[1] += (0.1 * floatcos(-(equipment_data[e_id][ed_pos][3]-180), degrees));
- equipment_data[e_id][ed_objects][3] = CreateObject(19123, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 5.85, 0.00000, 0.00000, 0.00000);
- GetXYByPos( equipment_data[e_id][ed_pos][0], equipment_data[e_id][ed_pos][1], equipment_data[e_id][ed_pos][3], 2, c_fp[0], c_fp[1], 5.55 );
- c_fp[0] += (0.1 * floatsin(-(equipment_data[e_id][ed_pos][3]-180), degrees));
- c_fp[1] += (0.1 * floatcos(-(equipment_data[e_id][ed_pos][3]-180), degrees));
- equipment_data[e_id][ed_objects][4] = CreateObject(19123, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 5.05, 0.00000, 0.00000, 0.00000);
- GetXYByPos( equipment_data[e_id][ed_pos][0], equipment_data[e_id][ed_pos][1], equipment_data[e_id][ed_pos][3], 2, c_fp[0], c_fp[1], 5.55 );
- c_fp[0] += (0.1 * floatsin(-(equipment_data[e_id][ed_pos][3]-180), degrees));
- c_fp[1] += (0.1 * floatcos(-(equipment_data[e_id][ed_pos][3]-180), degrees));
- equipment_data[e_id][ed_objects][5] = CreateObject(19123, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 4.25, 0.00000, 0.00000, 0.00000);
- GetXYByPos( equipment_data[e_id][ed_pos][0], equipment_data[e_id][ed_pos][1], equipment_data[e_id][ed_pos][3], 2, c_fp[0], c_fp[1], 5.5601 );
- c_fp[0] -= (0.242 * floatsin(-(equipment_data[e_id][ed_pos][3]), degrees));
- c_fp[1] -= (0.242 * floatcos(-(equipment_data[e_id][ed_pos][3]), degrees));
- equipment_data[e_id][ed_objects][6] = CreateObject(1628, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 6, 0.00000, 0.00000, equipment_data[e_id][ed_pos][3]-90.00000);
- GetXYByPos( equipment_data[e_id][ed_pos][0], equipment_data[e_id][ed_pos][1], equipment_data[e_id][ed_pos][3], 2, c_fp[0], c_fp[1], 5.56 );
- c_fp[0] -= (0.24 * floatsin(-(equipment_data[e_id][ed_pos][3]), degrees));
- c_fp[1] -= (0.24 * floatcos(-(equipment_data[e_id][ed_pos][3]), degrees));
- equipment_data[e_id][ed_objects][7] = CreateObject(1628, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 5, 0.00000, 0.00000, equipment_data[e_id][ed_pos][3]-90.00000);
- GetXYByPos( equipment_data[e_id][ed_pos][0], equipment_data[e_id][ed_pos][1], equipment_data[e_id][ed_pos][3], 2, c_fp[0], c_fp[1], 5.5602 );
- c_fp[0] -= (0.241 * floatsin(-(equipment_data[e_id][ed_pos][3]), degrees));
- c_fp[1] -= (0.241 * floatcos(-(equipment_data[e_id][ed_pos][3]), degrees));
- equipment_data[e_id][ed_objects][8] = CreateObject(1628, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 4, 0.00000, 0.00000, equipment_data[e_id][ed_pos][3]-90.00000);
- GetXYByPos( equipment_data[e_id][ed_pos][0], equipment_data[e_id][ed_pos][1], equipment_data[e_id][ed_pos][3], 2, c_fp[0], c_fp[1], 5.5502 );
- c_fp[0] += (0.041 * floatsin(-(equipment_data[e_id][ed_pos][3]), degrees));
- c_fp[1] += (0.041 * floatcos(-(equipment_data[e_id][ed_pos][3]), degrees));
- equipment_data[e_id][ed_objects][9] = CreateObject(1628, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 6, 0.00000, 0.00000, equipment_data[e_id][ed_pos][3]+90.00000);
- GetXYByPos( equipment_data[e_id][ed_pos][0], equipment_data[e_id][ed_pos][1], equipment_data[e_id][ed_pos][3], 2, c_fp[0], c_fp[1], 5.55 );
- c_fp[0] += (0.04 * floatsin(-(equipment_data[e_id][ed_pos][3]), degrees));
- c_fp[1] += (0.04 * floatcos(-(equipment_data[e_id][ed_pos][3]), degrees));
- equipment_data[e_id][ed_objects][10] = CreateObject(1628, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 5, 0.00000, 0.00000, equipment_data[e_id][ed_pos][3]+90.00000);
- GetXYByPos( equipment_data[e_id][ed_pos][0], equipment_data[e_id][ed_pos][1], equipment_data[e_id][ed_pos][3], 2, c_fp[0], c_fp[1], 5.5501 );
- c_fp[0] += (0.042 * floatsin(-(equipment_data[e_id][ed_pos][3]), degrees));
- c_fp[1] += (0.042 * floatcos(-(equipment_data[e_id][ed_pos][3]), degrees));
- equipment_data[e_id][ed_objects][11] = CreateObject(1628, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 4, 0.00000, 0.00000, equipment_data[e_id][ed_pos][3]+90.00000);
- // ---
- GetXYByPos( equipment_data[e_id][ed_pos][0], equipment_data[e_id][ed_pos][1], equipment_data[e_id][ed_pos][3], 3, c_fp[0], c_fp[1], 5.55 );
- c_fp[0] -= (0.3 * floatsin(-(equipment_data[e_id][ed_pos][3]-180), degrees));
- c_fp[1] -= (0.3 * floatcos(-(equipment_data[e_id][ed_pos][3]-180), degrees));
- equipment_data[e_id][ed_objects][12] = CreateObject(940, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 5.35, 0.00000, 90.00000, equipment_data[e_id][ed_pos][3] + 90.00000 + 180);
- GetXYByPos( equipment_data[e_id][ed_pos][0], equipment_data[e_id][ed_pos][1], equipment_data[e_id][ed_pos][3], 3, c_fp[0], c_fp[1], 5.55 );
- c_fp[0] -= (0.1 * floatsin(-(equipment_data[e_id][ed_pos][3]-180), degrees));
- c_fp[1] -= (0.1 * floatcos(-(equipment_data[e_id][ed_pos][3]-180), degrees));
- equipment_data[e_id][ed_objects][13] = CreateObject(19123, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 5.85, 0.00000, 0.00000, 0.00000+ 180);
- GetXYByPos( equipment_data[e_id][ed_pos][0], equipment_data[e_id][ed_pos][1], equipment_data[e_id][ed_pos][3], 3, c_fp[0], c_fp[1], 5.55 );
- c_fp[0] -= (0.1 * floatsin(-(equipment_data[e_id][ed_pos][3]-180), degrees));
- c_fp[1] -= (0.1 * floatcos(-(equipment_data[e_id][ed_pos][3]-180), degrees));
- equipment_data[e_id][ed_objects][14] = CreateObject(19123, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 5.05, 0.00000, 0.00000, 0.00000+ 180);
- GetXYByPos( equipment_data[e_id][ed_pos][0], equipment_data[e_id][ed_pos][1], equipment_data[e_id][ed_pos][3], 3, c_fp[0], c_fp[1], 5.55 );
- c_fp[0] -= (0.1 * floatsin(-(equipment_data[e_id][ed_pos][3]-180), degrees));
- c_fp[1] -= (0.1 * floatcos(-(equipment_data[e_id][ed_pos][3]-180), degrees));
- equipment_data[e_id][ed_objects][15] = CreateObject(19123, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 4.25, 0.00000, 0.00000, 0.00000+ 180);
- GetXYByPos( equipment_data[e_id][ed_pos][0], equipment_data[e_id][ed_pos][1], equipment_data[e_id][ed_pos][3], 3, c_fp[0], c_fp[1], 5.5601 );
- c_fp[0] += (0.242 * floatsin(-(equipment_data[e_id][ed_pos][3]), degrees));
- c_fp[1] += (0.242 * floatcos(-(equipment_data[e_id][ed_pos][3]), degrees));
- equipment_data[e_id][ed_objects][16] = CreateObject(1628, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 6, 0.00000, 0.00000, equipment_data[e_id][ed_pos][3]-90.00000+ 180);
- GetXYByPos( equipment_data[e_id][ed_pos][0], equipment_data[e_id][ed_pos][1], equipment_data[e_id][ed_pos][3], 3, c_fp[0], c_fp[1], 5.56 );
- c_fp[0] += (0.24 * floatsin(-(equipment_data[e_id][ed_pos][3]), degrees));
- c_fp[1] += (0.24 * floatcos(-(equipment_data[e_id][ed_pos][3]), degrees));
- equipment_data[e_id][ed_objects][17] = CreateObject(1628, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 5, 0.00000, 0.00000, equipment_data[e_id][ed_pos][3]-90.00000+ 180);
- GetXYByPos( equipment_data[e_id][ed_pos][0], equipment_data[e_id][ed_pos][1], equipment_data[e_id][ed_pos][3], 3, c_fp[0], c_fp[1], 5.5602 );
- c_fp[0] += (0.241 * floatsin(-(equipment_data[e_id][ed_pos][3]), degrees));
- c_fp[1] += (0.241 * floatcos(-(equipment_data[e_id][ed_pos][3]), degrees));
- equipment_data[e_id][ed_objects][18] = CreateObject(1628, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 4, 0.00000, 0.00000, equipment_data[e_id][ed_pos][3]-90.00000+ 180);
- GetXYByPos( equipment_data[e_id][ed_pos][0], equipment_data[e_id][ed_pos][1], equipment_data[e_id][ed_pos][3], 3, c_fp[0], c_fp[1], 5.5502 );
- c_fp[0] -= (0.041 * floatsin(-(equipment_data[e_id][ed_pos][3]), degrees));
- c_fp[1] -= (0.041 * floatcos(-(equipment_data[e_id][ed_pos][3]), degrees));
- equipment_data[e_id][ed_objects][19] = CreateObject(1628, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 6, 0.00000, 0.00000, equipment_data[e_id][ed_pos][3]+90.00000+ 180);
- GetXYByPos( equipment_data[e_id][ed_pos][0], equipment_data[e_id][ed_pos][1], equipment_data[e_id][ed_pos][3], 3, c_fp[0], c_fp[1], 5.55 );
- c_fp[0] -= (0.04 * floatsin(-(equipment_data[e_id][ed_pos][3]), degrees));
- c_fp[1] -= (0.04 * floatcos(-(equipment_data[e_id][ed_pos][3]), degrees));
- equipment_data[e_id][ed_objects][20] = CreateObject(1628, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 5, 0.00000, 0.00000, equipment_data[e_id][ed_pos][3]+90.00000+ 180);
- GetXYByPos( equipment_data[e_id][ed_pos][0], equipment_data[e_id][ed_pos][1], equipment_data[e_id][ed_pos][3], 3, c_fp[0], c_fp[1], 5.5501 );
- c_fp[0] -= (0.042 * floatsin(-(equipment_data[e_id][ed_pos][3]), degrees));
- c_fp[1] -= (0.042 * floatcos(-(equipment_data[e_id][ed_pos][3]), degrees));
- equipment_data[e_id][ed_objects][21] = CreateObject(1628, c_fp[0], c_fp[1], equipment_data[e_id][ed_pos][2] + 4, 0.00000, 0.00000, equipment_data[e_id][ed_pos][3]+90.00000+ 180);
- }
- else {
- rails_recursive = strval( gstring );
- }
- v ++;
- }
- }
- fclose( rail_file );
- return 1;
- }
- stock GetClosestEQID( playerid ) {
- new eqid = -1,
- Float:dists[2],
- Float:ppos[3];
- dists[0] = 10.0;
- GetPlayerPos( playerid, ppos[0], ppos[1], ppos[2] );
- v = 0;
- for( ; v < MAX_RAILCHECK; v ++ ) {
- if( !equipment_data[v][ed_spawned] ) continue;
- dists[1] = GetDistanceFromPointToPoint( equipment_data[v][ed_pos][0], equipment_data[v][ed_pos][1], equipment_data[v][ed_pos][2], ppos[0], ppos[1], ppos[2] );
- if( dists[1] <= dists[0] ) {
- dists[0] = dists[1];
- eqid = v;
- }
- }
- return eqid;
- }
- // --------------------------------------------------------------------------------------------------- Nem általam írt sorok.
- stock IsVehicleInRangeOfPoint(vehicleid, Float:radi, Float:x, Float:y, Float:z) {
- new Float:oldposx, Float:oldposy, Float:oldposz;
- new Float:tempposx, Float:tempposy, Float:tempposz;
- GetVehiclePos(vehicleid, oldposx, oldposy, oldposz);
- tempposx = (oldposx -x);
- tempposy = (oldposy -y);
- tempposz = (oldposz -z);
- if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi))) {
- return 1;
- }
- return 0;
- }
- stock IsNumeric(const string[]) {
- new length=strlen(string);
- if (length==0) return false;
- for (new i = 0; i < length; i++) {
- if (
- (string[i] > '9' || string[i] < '0' && string[i]!='-' && string[i]!='+')
- || (string[i]=='-' && i!=0)
- || (string[i]=='+' && i!=0)
- ) return false;
- }
- if (length==1 && (string[0]=='-' || string[0]=='+')) return false;
- return true;
- }
- public Float: GetDistanceFromPointToPoint( Float:X,Float:Y,Float:Z,Float:tX,Float:tY,Float:tZ ) {
- return Float: floatsqroot( (tX-X)*(tX-X)+(tY-Y)*(tY-Y)+(tZ-Z)*(tZ-Z) );
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement