SA-MP Forums Archive
[Ajuda] OnPlayerUpdate - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] OnPlayerUpdate (/showthread.php?tid=634241)



OnPlayerUpdate - iTzMatheus - 15.05.2017

Existe algum problema em usa-la? Qual й?

Estou com um sistema de tapete de pregos mas percebi um problema em sincronismo que nгo faz a verificaзгo da posiзгo do jogador da maneira adequada, o timer dessa funзгo й chamado em 1s, usando apenas e unicamente essa funзгo, pode resultar em problemas? Temo a resultar em chamados infinitos ou em conflitos com outros chamados.

Apenas esse cуdigo serб alocado na public OnPlayerUpdate.

Код:
if(GetPlayerState(i) == PLAYER_STATE_DRIVER) //pregos
		{
		    new Veiculo_ID = GetPlayerVehicleID(i);
	     	for(new s = 0; s < sizeof(SpikeInfo); s++)
		  	{
 				if(IsPlayerInRangeOfPoint(i, 3.0, SpikeInfo[s][sX], SpikeInfo[s][sY], SpikeInfo[s][sZ]))
    			{
  	            	if(SpikeInfo[s][sCreated] == 1)
       				{
       					new panels, doors, lights, tires;
			           	GetVehicleDamageStatus(Veiculo_ID, panels, doors, lights, tires);
			         	tires = encode_tires(1, 1, 1, 1);
	            		UpdateVehicleDamageStatus(Veiculo_ID, panels, doors, lights, tires);



Re: OnPlayerUpdate - klap - 15.05.2017

onPlayerUpdate, й executado sempre que um player manda um socket para o servidor...
isso deve ocorrer a cada "frame" do player... exemplo... se o player joga a 60 FPS's, significa que ele manda 60 sockets num segundo.. (na tenho certeza consoante isso)
se vc tem 100 players, a jogar a 60 fps's, significa que esse codigo corre 6000x por segundo...

se 30 dos player estiverem conduzindo...
significa que vai ocorrer aquele "for(" ali, 1800x,
e se vc tem 3 (sim, vamos fazer as contas com apenas 3) , tapetes de picos...
significa que esse codigo dentro do for vai correr 1800 * 3 , ou seja 5400 vezes...

ou seja, num server com apenas 30 pessoas a conduzir, e 3 tapetes de picos, vc estara verificando a posiзгo de todos os picos 5400x...

se vc acha pouco... nao tem problema...se vc acha muito...tem problema sim... tudo depende do cpu do seu host...
mas obviamente vc quer o server correndo ate em hosts fracos ne? entao talvez seja bom n usar esse onPlayerUpdate


Re: OnPlayerUpdate - iTzMatheus - 15.05.2017

Alguem possui alguma outra informaзгo? Estou com dъvida em usar isso ou nгo.

Caso nгo use o OnPlayerUpdate, como posso fazer uma atualizaзгo melhor para o sistema? Quase que em tempo real para uma melhor eficiкncia?


Re: OnPlayerUpdate - klap - 15.05.2017

Quote:
Originally Posted by iTzMatheus
Посмотреть сообщение
Alguem possui alguma outra informaзгo? Estou com dъvida em usar isso ou nгo.

Caso nгo use o OnPlayerUpdate, como posso fazer uma atualizaзгo melhor para o sistema? Quase que em tempo real para uma melhor eficiкncia?
pode usar um timer, mas nгo seria tгo preciso... se quer precisao.. usa mesmo OnPlayerUpdate... o callback existe para ser usado tambem ne '-' ... nao й bom.. mas tem alturas que tem que ser ne