| Mini Optimizacija #2 | Streamer_UpdateEx |


Započeo King of the Jungle, Avgust 16, 2020, 23:02:03 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

| 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) :D

compensatedtime je koliko dugo streamer prestaje sa automatskim apdejtanjem objekata i koliko dugo je igrac zamrznut :D
Poslednja Izmena: Avgust 16, 2020, 23:03:06 POSLE PODNE od King of the Jungle
Citat: XunderNebitno koliko god bio dobar i sa tobom Makenzi, Vedranom, Ziletom, Lanijem i ko se vec sve tu proziva moram se sloziti sa Krampom.
Umjesto toga sto se prozivate, ovaj forum bi mogao biti mnogo ljepse mjesto za pocetnike kada bi vi iskusniji usli u normalnu raspravu - podijelite svoj kod i napisite zasto je bolji od koda koji je neko drugi podijelio.


Pa... Hajde da probamo?

Znao od prije, ovako treba da i bude. Gg
You'll be always in my heart, the end and thanks for amazing times. #WeAreLords

Zanimljivo :D

Gamemod: Spotify Community
Owner: Nodze ( Dzenan Levic )


Citat: // xunder poslato Avgust 17, 2020, 00:00:52 PRE PODNE
U type koristi STREAMER_TYPE_OBJECT
Yep, mada sumnjam da ima potrebe jer uglavnom nije pretrpano drugim stvarima nego iskljucivo objektima ali kontam da streameru interno i to znači... :D

EDIT:
if (static_cast<int>(params[8]) >= 0)
		{
			sampgdk::SetPlayerPos(p->first, p->second.position[0], p->second.position[1], p->second.position[2]);
			if (static_cast<int>(params[9]))
			{
				sampgdk::TogglePlayerControllable(p->first, false);
			}
			p->second.delayedUpdate = true;
			p->second.delayedUpdateType = static_cast<int>(params[7]); // OVO
			p->second.delayedUpdateTime = boost::chrono::steady_clock::now() + boost::chrono::milliseconds(static_cast<int>(params[8]));
			p->second.delayedUpdateFreeze = static_cast<int>(params[9]) != 0;
		}


startManualUpdate(p->second, p->second.delayedUpdateType);


void Streamer::startManualUpdate(Player &player, int type)
{
	std::bitset<STREAMER_MAX_TYPES> enabledItems = player.enabledItems;
	if (player.delayedUpdate)
	{
		if (player.delayedUpdateTime.time_since_epoch() <= boost::chrono::steady_clock::now().time_since_epoch())
		{
			if (player.delayedUpdateFreeze)
			{
				sampgdk::TogglePlayerControllable(player.playerId, true);
			}
			player.delayedUpdate = false;
		}
	}
	if (type >= 0 && type < STREAMER_MAX_TYPES)
	{
		if (core->getChunkStreamer()->getChunkStreamingEnabled())
		{
			switch (type)
			{
				case STREAMER_TYPE_OBJECT:
				{
					player.discoveredObjects.clear();
					player.existingObjects.clear();
					player.processingChunks.reset(STREAMER_TYPE_OBJECT);
					break;
				}
				case STREAMER_TYPE_MAP_ICON:
				{
					player.discoveredMapIcons.clear();
					player.existingMapIcons.clear();
					player.processingChunks.reset(STREAMER_TYPE_MAP_ICON);
					break;
				}
				case STREAMER_TYPE_3D_TEXT_LABEL:
				{
					player.discoveredTextLabels.clear();
					player.existingTextLabels.clear();
					player.processingChunks.reset(STREAMER_TYPE_3D_TEXT_LABEL);
					break;
				}
			}
		}
		player.enabledItems.reset();
		player.enabledItems.set(type);
	}
	else if (core->getChunkStreamer()->getChunkStreamingEnabled())
	{
		player.discoveredMapIcons.clear();
		player.discoveredObjects.clear();
		player.discoveredTextLabels.clear();
		player.existingMapIcons.clear();
		player.existingObjects.clear();
		player.existingTextLabels.clear();
		player.processingChunks.reset();
	}
	processActiveItems();
	performPlayerUpdate(player, false);
	if (core->getChunkStreamer()->getChunkStreamingEnabled())
	{
		core->getChunkStreamer()->performPlayerChunkUpdate(player, false);
	}
	player.enabledItems = enabledItems;
}


Ipak unosite tip :D
Poslednja Izmena: Avgust 17, 2020, 00:16:26 PRE PODNE od King of the Jungle
Citat: XunderNebitno koliko god bio dobar i sa tobom Makenzi, Vedranom, Ziletom, Lanijem i ko se vec sve tu proziva moram se sloziti sa Krampom.
Umjesto toga sto se prozivate, ovaj forum bi mogao biti mnogo ljepse mjesto za pocetnike kada bi vi iskusniji usli u normalnu raspravu - podijelite svoj kod i napisite zasto je bolji od koda koji je neko drugi podijelio.


Pa... Hajde da probamo?

Citat: King of the Jungle poslato Avgust 17, 2020, 00:14:18 PRE PODNE
Yep, mada sumnjam da ima potrebe jer uglavnom nije pretrpano drugim stvarima nego iskljucivo objektima ali kontam da streameru interno i to znači... :D

Iz iskustva ne brini haha :D

Fino :)
Balkan Moon v1.0 by Foxy

Owner // Scripter Balkan Moon

u Potpisu Foxy.

Ne pipaj lava Foxy, radi na BM-u :D :D :D
[4.7.2019] Respect For: Purda | Basovski | Mister Naithan | BICEL KO MI BUNTA | 7.9: Vasic[/b]

* Server [5.1.2019 Created]
* Scripter on Power Gaming
* Scripter on Night Life
* Scripter on Arena Gaming
* Scripter on duty (Balkan Moon)

[23.5.2k19] Messi u skriptanju hehe ;)
[7.8.2k19]OLD Minecraft Developer & Player (2016-2018)

#FOXYSCRIPT[/b]
MAPPER U POKUŠAJU :/[/b]