Ik ben een base aan het bouwen, en ik was van plan vandaag de base in mijn SA-MP te zetten, maar het lukt niet.
Mijn base is gemaakt in MTA Map Editor, dus een .MAP bestand, en die heb ik met deze converter omgezet naar een SA-MP bestand, en die had ik geplaatst enzo, maar dat werkte niet.
Toen dacht ik: misschien moet ik een objectstreamer gebruiken.
Ik heb dus bij in mijn server config bij filterscripts dit gezet:
filterscripts base gl_actions gl_property gl_realtime xObjects
en in de map 'filterscripts' 'xObjects.pwn' geplaatst.
En in 'xObjects.pwn' heb ik de uitvoercode van de hierbovengeposte converter geplaatst, natuurlijk met de 'xObjects Simple Objects Streamer' manier, omdat ik nu xObjects gebruik.
Mijn xObjects ziet er nu zo uit:
#include <a_samp>
forward xTimer();
//------------------------------------------------------------------------------
enum object_info
{
modelid,
Float:ox,
Float:oy,
Float:oz,
Float:orx,
Float:ory,
Float:orz,
Float:viewdist
}
#undef MAX_PLAYERS
#define MAX_PLAYERS 500 // Verander '500' naar het aantal spelers wat maximaal in je server kan.
new Objects[][object_info] =
{
{HIER AL DIE OBJECTS GEPLAATST
// Plaats hier al je objecten
//{modelid, X, Y, Z, rX, rY, rZ, viewdistance} | Let op: De laatste regel hoort GÉÉN komma te hebben. Alle regels ervoor WÉL. Voorbeeld:
{8171, 1992.3522, 3365.2273, 25.3598, 0.0000, 0.0000, 0.0000, 200.0},
{8171, 1992.3522, 3365.2273, 25.3598, 0.0000, 0.0000, 0.0000, 200.0}
};
enum player_info
{
objid[sizeof(Objects)],
bool:view[sizeof(Objects)]
}
new Player[MAX_PLAYERS][player_info];
//------------------------------------------------------------------------------
new timer;
public OnFilterScriptInit()
{
timer = SetTimer("xTimer", 500, true);
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 xTimer()
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
PlayerObjectUpdate(i);
}
}
}
PlayerObjectUpdate(playerid)
{
for(new i = 0; i < sizeof(Objects); i++)
{
if(!Player[playerid][view][i])
{
if(IsPlayerInRangeOfPoint(playerid, Objects[i][viewdist], Objects[i][ox], Objects[i][oy], Objects[i][oz]))
{
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(!IsPlayerInRangeOfPoint(playerid, Objects[i][viewdist], Objects[i][ox], Objects[i][oy] ,Objects[i][oz]))
{
Player[playerid][view][i] = false;
DestroyPlayerObject(playerid,Player[playerid][objid][i]);
}
}
}
Hey,
Ik ben een base aan het bouwen, en ik was van plan vandaag de base in mijn SA-MP te zetten, maar het lukt niet.
Mijn base is gemaakt in MTA Map Editor, dus een .MAP bestand, en die heb ik met deze converter omgezet naar een SA-MP bestand, en die had ik geplaatst enzo, maar dat werkte niet.
Toen dacht ik: misschien moet ik een objectstreamer gebruiken.
Ik heb dus bij in mijn server config bij filterscripts dit gezet:
en in de map 'filterscripts' 'xObjects.pwn' geplaatst.
En in 'xObjects.pwn' heb ik de uitvoercode van de hierbovengeposte converter geplaatst, natuurlijk met de 'xObjects Simple Objects Streamer' manier, omdat ik nu xObjects gebruik.
Mijn xObjects ziet er nu zo uit:
En nu ben ik benieuwd naar wat ik fout doe.
Bewerkt: door patrick1995