Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- forward Timer();
- forward SetPlayerPosWithObjects(playerid,Float:x,Float:y,Float:z);
- enum object_info
- {
- modelid,
- Float:ox,
- Float:oy,
- Float:oz,
- Float:orx,
- Float:ory,
- Float:orz,
- Float:viewdist
- }
- new Objects[][object_info] = {
- // {modelid,x,y,z,rotx,roty,rotz,viewdistance}
- // todos os parâmetros são os mesmos que criar o objeto, exceto que há um parâmetro viewdistance adicionais. Esta é a distância
- // um jogador deve ser o de ver o objeto
- {983, 2301.2490, 1403.4020, 42.5040, 0.0000, 0.0000, -90.0000, 200.0},
- {983, 2307.6940, 1403.3830, 42.5040, 0.0000, 0.0000, -90.0000, 200.0},
- {983, 2314.0680, 1403.3830, 42.5040, 0.0000, 0.0000, -90.0000, 200.0},
- {9833, 2297.6200, 1505.8890, 38.6240, 0.0000, 0.0000, 0.0000, 200.0},
- {9833, 2297.3420, 1509.4380, 38.6240, 0.0000, 0.0000, 0.0000, 200.0},
- {9833, 2296.9950, 1512.2400, 38.6240, 0.0000, 0.0000, 0.0000, 200.0},
- {9833, 2297.3700, 1514.7610, 38.6240, 0.0000, 0.0000, 0.0000, 200.0},
- {9833, 2296.5410, 1521.8440, 38.6240, 0.0000, 0.0000, 0.0000, 200.0},
- {9833, 2297.2150, 1517.2890, 38.6240, 0.0000, 0.0000, 0.0000, 200.0},
- {3749, 2327.2800, 1401.5610, 47.6790, 0.0000, 0.0000, 0.0000, 200.0},
- {983, 2353.4780, 1403.5850, 42.5040, 0.0000, 0.0000, -90.0000, 200.0},
- {983, 2347.0640, 1403.5560, 42.5040, 0.0000, 0.0000, -90.0000, 200.0},
- {983, 2340.5620, 1403.5500, 42.5040, 0.0000, 0.0000, -90.0000, 200.0},
- {979, 2312.0750, 1403.6850, 36.2560, 0.0000, 0.0000, -180.0000, 200.0},
- {979, 2303.0090, 1403.6270, 36.2560, 0.0000, 0.0000, -180.0000, 200.0},
- {979, 2301.7500, 1403.5850, 36.2560, 0.0000, 0.0000, -180.0000, 200.0},
- {978, 2312.9030, 1502.9900, 29.8710, 0.0000, 0.0000, 0.0000, 200.0},
- {978, 2303.5280, 1502.9740, 29.8640, 0.0000, 0.0000, 0.0000, 200.0},
- {979, 2301.8120, 1404.3150, 23.4710, 0.0000, 0.0000, 180.4820, 200.0},
- {979, 2311.1880, 1404.4080, 23.4710, 0.0000, 0.0000, 180.4820, 200.0},
- {979, 2302.4910, 1502.9590, 17.0640, 0.0000, 0.0000, 0.0000, 200.0},
- {979, 2311.8910, 1502.9420, 17.0640, 0.0000, 0.0000, 0.0000, 200.0},
- {981, 2328.6000, 1470.2590, 10.7720, 0.0000, 0.0000, -90.0000, 200.0},
- {981, 2328.4470, 1486.7860, 10.7720, 0.0000, 0.0000, -90.0000, 200.0},
- {981, 2328.3700, 1439.5680, 10.7970, 0.0000, 0.0000, -90.0000, 200.0},
- {981, 2328.3720, 1418.5490, 10.7720, 0.0000, 0.0000, -90.0000, 200.0},
- {981, 2336.1080, 1485.4780, 10.7720, 0.0000, 0.0000, -271.3410, 200.0},
- {981, 2336.7400, 1475.0010, 11.0660, 0.0000, -0.8590, -271.3410, 200.0},
- {981, 2336.3230, 1451.7810, 10.7720, 0.0000, 0.0000, 90.0000, 200.0},
- {981, 2336.2260, 1422.6340, 10.7720, 0.0000, 0.0000, 90.0000, 200.0},
- {1320, 2337.3890, 1408.1880, 11.3050, 0.0000, 0.0000, 90.0000, 200.0},
- {1238, 2338.3560, 1393.5400, 10.1380, 0.0000, 0.0000, 0.0000, 200.0},
- {1238, 2339.2170, 1394.8230, 10.1380, 0.0000, 0.0000, 0.0000, 200.0},
- {1238, 2340.2350, 1395.9910, 10.1380, 0.0000, 0.0000, 0.0000, 200.0},
- {1238, 2341.3310, 1397.4430, 10.1380, 0.0000, 0.0000, 0.0000, 200.0},
- {1238, 2342.4850, 1398.7390, 10.1380, 0.0000, 0.0000, 0.0000, 200.0},
- {1238, 2343.5840, 1400.1670, 10.1380, 0.0000, 0.0000, 0.0000, 200.0},
- {1238, 2344.8590, 1400.2660, 10.1380, 0.0000, 0.0000, 0.0000, 200.0},
- {1238, 2345.7610, 1400.2170, 10.1380, 0.0000, 0.0000, 0.0000, 200.0},
- {1238, 2346.9850, 1400.2910, 10.1380, 0.0000, 0.0000, 0.0000, 200.0},
- {1262, 2332.7750, 1403.1300, 42.5800, 0.0000, 0.0000, -168.7500, 200.0},
- {1262, 2327.4030, 1403.0850, 42.5800, 0.0000, 0.0000, -168.7500, 200.0},
- {1262, 2321.6540, 1403.0850, 42.5800, 0.0000, 0.0000, -172.1880, 200.0},
- {978, 2333.3010, 1393.3990, 10.6610, 0.0000, 0.0000, 0.0000, 200.0},
- {978, 2333.2250, 1405.7080, 10.6610, 0.0000, 0.0000, -157.5000, 200.0},
- {1362, 2344.3580, 1396.6800, 10.4190, 0.0000, 0.0000, 0.0000, 200.0},
- {2038, 2349.3500, 1393.7640, 14.4070, 0.0000, 0.0000, 0.0000, 200.0},
- {3461, 2344.3550, 1396.8270, 9.3430, 0.0000, 0.0000, 0.0000, 200.0},
- {3374, 2295.3620, 1518.0070, 30.5170, 0.0000, 0.0000, 0.0000, 200.0},
- {3374, 2298.6320, 1517.9690, 30.5170, 0.0000, 0.0000, 0.0000, 200.0},
- {3374, 2302.2140, 1517.9730, 30.5170, 0.0000, 0.0000, 0.0000, 200.0},
- {3374, 2306.2250, 1517.9280, 30.5170, 0.0000, 0.0000, 0.0000, 200.0},
- {3374, 2308.9630, 1517.8620, 30.5170, 0.0000, 0.0000, 0.0000, 200.0},
- {3374, 2311.8060, 1517.8910, 30.5170, 0.0000, 0.0000, 0.0000, 200.0},
- {3374, 2315.7860, 1517.8830, 30.5170, 0.0000, 0.0000, 0.0000, 200.0},
- {3374, 2319.4320, 1517.8920, 30.5170, 0.0000, 0.0000, 0.0000, 200.0},
- {3374, 2295.6660, 1389.1080, 36.9160, 0.0000, 0.0000, 90.0000, 200.0},
- {3374, 2298.9690, 1389.1740, 36.9160, 0.0000, 0.0000, 90.0000, 200.0},
- {3374, 2301.7500, 1389.2970, 36.9160, 0.0000, 0.0000, 90.0000, 200.0},
- {3374, 2305.7710, 1389.3480, 36.9160, 0.0000, 0.0000, 90.0000, 200.0},
- {3374, 2309.3240, 1389.4220, 36.9160, 0.0000, 0.0000, 90.0000, 200.0},
- {3374, 2313.3370, 1389.4110, 36.9160, 0.0000, 0.0000, 90.0000, 200.0},
- {3374, 2316.6250, 1389.4910, 36.9930, 0.0000, 0.0000, 90.0000, 200.0},
- {3374, 2318.8170, 1389.3210, 36.9100, 0.0000, 0.0000, 90.0000, 200.0},
- {3374, 2295.5440, 1388.7880, 24.1190, 0.0000, 0.0000, 90.0000, 200.0},
- {3374, 2299.4860, 1388.9370, 24.1190, 0.0000, 0.0000, 90.0000, 200.0},
- {3374, 2303.3370, 1389.2110, 24.1190, 0.0000, 0.0000, 90.0000, 200.0},
- {3374, 2307.3560, 1389.2610, 24.1190, 0.0000, 0.0000, 90.0000, 200.0},
- {3374, 2310.4860, 1389.1870, 24.1190, 0.0000, 0.0000, 90.0000, 200.0},
- {3374, 2312.7640, 1389.4170, 24.1240, 0.0000, 0.0000, 90.0000, 200.0},
- };
- enum player_info
- {
- objid[sizeof(Objects)],
- bool:view[sizeof(Objects)]
- }
- new Player[MAX_PLAYERS][player_info];
- //------------------------------------------------------------------------------
- bool:IsInReach(Float:x,Float:y,Float:z,Float:x2,Float:y2,Float:z2,Float:dist)
- {
- x = (x > x2) ? x - x2 : x2 - x;
- if(x > dist) return false;
- y = (y > y2) ? y - y2 : y2 - y;
- if(y > dist) return false;
- z = (z > z2) ? z - z2 : z2 - z;
- if(z > dist) return false;
- return true;
- }
- //------------------------------------------------------------------------------
- new timer;
- public OnFilterScriptInit()
- {
- print("---\nLoaded xObjects\n---");
- timer = SetTimer("Timer",500,1);
- return 1;
- }
- public OnFilterScriptExit()
- {
- for(new i = 0; i < MAX_PLAYERS; i++)
- {
- for(new o = 0; o < sizeof(Objects); o++)
- {
- if(Player[i][view][o])
- {
- Player[i][view][o] = false;
- DestroyPlayerObject(i,Player[i][objid][o]);
- }
- }
- }
- KillTimer(timer);
- }
- //------------------------------------------------------------------------------
- public OnPlayerConnect(playerid)
- {
- for(new i = 0; i < sizeof(Objects); i++) Player[playerid][view][i] = false;
- }
- public OnPlayerDisconnect(playerid)
- {
- for(new i = 0; i < sizeof(Objects); i++)
- {
- if(Player[playerid][view][i])
- {
- Player[playerid][view][i] = false;
- DestroyPlayerObject(playerid,Player[playerid][objid][i]);
- }
- }
- }
- //------------------------------------------------------------------------------
- public Timer()
- {
- for(new i = 0; i < MAX_PLAYERS; i++)
- if(IsPlayerConnected(i))
- PlayerObjectUpdate(i);
- }
- PlayerObjectUpdate(playerid)
- {
- new Float:pos[3];
- GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
- for(new i = 0; i < sizeof(Objects); i++)
- {
- if(!Player[playerid][view][i])
- {
- if(IsInReach(pos[0],pos[1],pos[2],Objects[i][ox],Objects[i][oy],Objects[i][oz],Objects[i][viewdist]))
- {
- Player[playerid][view][i] = true;
- Player[playerid][objid][i] = CreatePlayerObject(playerid,Objects[i][modelid],Objects[i][ox],Objects[i][oy],Objects[i][oz],Objects[i][orx],Objects[i][ory],Objects[i][orz]);
- }
- } else if(!IsInReach(pos[0],pos[1],pos[2],Objects[i][ox],Objects[i][oy],Objects[i][oz],Objects[i][viewdist]))
- {
- Player[playerid][view][i] = false;
- DestroyPlayerObject(playerid,Player[playerid][objid][i]);
- }
- }
- }
- public SetPlayerPosWithObjects(playerid,Float:x,Float:y,Float:z)
- {
- for(new i = 0; i < sizeof(Objects); i++)
- {
- if(!Player[playerid][view][i])
- {
- if(IsInReach(x,y,z,Objects[i][ox],Objects[i][oy],Objects[i][oz],Objects[i][viewdist]))
- {
- Player[playerid][view][i] = true;
- Player[playerid][objid][i] = CreatePlayerObject(playerid,Objects[i][modelid],Objects[i][ox],Objects[i][oy],Objects[i][oz],Objects[i][orx],Objects[i][ory],Objects[i][orz]);
- }
- } else if(!IsInReach(x,y,z,Objects[i][ox],Objects[i][oy],Objects[i][oz],Objects[i][viewdist]))
- {
- Player[playerid][view][i] = false;
- DestroyPlayerObject(playerid,Player[playerid][objid][i]);
- }
- }
- SetPlayerPos(playerid,Float:x,Float:y,Float:z);
- }
- public OnPlayerSpawn(playerid)
- PlayerObjectUpdate(playerid);
Advertisement
Add Comment
Please, Sign In to add comment