22.04.2009, 16:43
Hi, I need help with xObjects. Script does not have any errors or warning in fact it works fine...all objects are shown but in some areas it constantly crashers ![confused](images/smilies/confused.gif)
This is the code of the script...is something wrong in it but doesn't show the error or what
![smiley](images/smilies/question.gif)
Please someone help me
![confused](images/smilies/confused.gif)
This is the code of the script...is something wrong in it but doesn't show the error or what
![undecided](images/smilies/neutral.gif)
![smiley](images/smilies/question.gif)
![smiley](images/smilies/question.gif)
pawn Код:
#include <a_samp>
forward Timer();
forward SetPlayerPosWithObjects(playerid,Float:x,Float:y,Float:z);
/*
SetPlayerPosWithObjects usage in your gamemode:
CallRemoteFunction("SetPlayerPosWithObjects","ifff",playerid,newx,newy,newz);
*/
//------------------------------------------------------------------------------
enum object_info
{
modelid,
Float:ox,
Float:oy,
Float:oz,
Float:orx,
Float:ory,
Float:orz,
Float:viewdist
}
new Objects[][object_info] = {
//---------------------------BURGER SHOT----------------------------------------
{700, 1225.874390, -922.005981, 41.914085, 0.0000, 0.0000, 0.0000, 1000.0},
{700, 1210.125854, -924.952576, 42.440826, 0.0000, 0.0000, 0.0000, 1000.0},
{777, 1201.924561, -926.014832, 41.967731, 0.0000, 0.0000, 11.2500, 1000.0},
{1281, 1180.751587, -924.900085, 43.024994, 0.0000, 0.0000, 11.1727, 1000.0},
{1281, 1184.504395, -924.136108, 42.981861, 0.0000, 0.0000, 11.1727, 1000.0},
{1281, 1188.030640, -923.357361, 42.947521, 0.0000, 0.0000, 11.1727, 1000.0},
{1281, 1191.383057, -922.506653, 42.911713, 0.0000, 0.0000, 11.1727, 1000.0},
{1281, 1177.860352, -919.790405, 43.089825, 0.0000, 0.0000, 97.0121, 1000.0},
{1281, 1177.175781, -915.864563, 43.100082, 0.0000, 0.0000, 97.0121, 1000.0},
{1281, 1176.656006, -912.159973, 43.092846, 0.0000, 0.0000, 97.0121, 1000.0},
{18284, 1222.772583, -881.385925, 44.847000, 0.0000, 0.0000, 6.8755, 1000.0},
{18284, 1225.057495, -899.824463, 44.839207, 0.0000, 0.0000, 6.8755, 1000.0},
{18284, 1205.763794, -878.249268, 44.873699, 0.0000, 0.0000, 277.4941, 1000.0},
{18284, 1180.734375, -881.255859, 45.134827, 0.0000, 0.0000, 277.4941, 1000.0},
{622, 1189.268921, -960.057373, 39.804420, 8.5944, 0.0000, 0.0000, 1000.0},
{622, 1183.847168, -930.430664, 41.850361, 10.3132, 344.5301, 192.4096, 1000.0},
{622, 1243.392334, -950.769531, 38.502052, 10.3132, 342.8113, 352.1612, 1000.0},
{622, 1237.907349, -920.237244, 40.909061, 14.6104, 342.8113, 181.9931, 1000.0},
{16776, 1195.769531, -901.633240, 48.813343, 0.0000, 0.0000, 98.8352, 1000.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 by Boylett\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);
![Sad](images/smilies/sad.gif)
![Sad](images/smilies/sad.gif)
![Sad](images/smilies/sad.gif)