| Mini Optimizacija #2 | Streamer_UpdateEx |
Bićemo brzi, ništa mnogo objašnjavanja 🙂
Više informacija na ovom linku!
a) Kako ne?
// RELEASED(keys)
#define RELEASED(%0) \
(((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0)))
forward UnfreezePlayer(playerid);
public UnfreezePlayer(playerid)
{
TogglePlayerControllable(playerid, true);
SendClientMessage(playerid, -1, "Objekti ucitani, jeej!");
return;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
// Kada igrac pusti `ENTER`
if(RELEASED(KEY_SECONDARY_ATTACK))
{
const interior_pos_x = 250.0;
const interior_pos_y = 250.0;
const interior_pos_z = 500.0;
const delay = 2000;
// Zamrzni Igraca
TogglePlayerControllable(playerid, false);
SendClientMessage(playerid, -1, "Ucitavanje objekata molimo stagod");
// Teleportuj Igraca
SetPlayerPos(playerid, interior_pos_x, interior_pos_y, interior_pos_z);
// Odmrzni Igraca
SetTimerEx("UnfreezePlayer", delay, false, "d", playerid);
}
return 1;
}b) Kako da?
// RELEASED(keys)
#define RELEASED(%0) \
(((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0)))
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
// Kada igrac pusti `ENTER`
if(RELEASED(KEY_SECONDARY_ATTACK))
{
const interior_pos_x = 250.0;
const interior_pos_y = 250.0;
const interior_pos_z = 500.0;
const delay = 2000;
// Teleportuj, zamrzni, odmrzni (sve streamer uradi) :)
Streamer_UpdateEx(playerid, interior_pos_x, interior_pos_y, interior_pos_z, .compensatedtime = delay);
}
return 1;
}native Streamer_UpdateEx(playerid, Float:x, Float:y, Float:z, worldid = -1, interiorid = -1, type = -1, compensatedtime = -1, freezeplayer = 1);Napomena:
Morate koristiti compensatedtime da bi se pozicija automatski promenila i da bi se INT/VW automatski ažurirali!
Bez toga streamer samo učita objekte na x, y, z tj spremi ih da bi vi ručno igrača teleportovali (loaduje objekte pre nego što igrač dođe u streamer distancu) 😄
compensatedtime je koliko dugo streamer prestaje sa automatskim apdejtanjem objekata i koliko dugo je igrac zamrznut 😄

