SA-MP Forums Archive
[Consulta]: їCуmo hago esto? - 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: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: [Consulta]: їCуmo hago esto? (/showthread.php?tid=244805)



[Consulta]: їCуmo hago esto? - AustinT - 28.03.2011

Hola, buenas tardes.

El caso es que hecho un timer (con SetTimerEx) que se activa en OnGameModeInit. Cuando ese timer finaliza, llamo a un callback para que le pasen una serie de cosas a todos los jugadores conectados.

Код:
public final()
{
SendClientMessageToAll(0x0000FF17, "Partida terminada. El misil va a ser lanzado, pero los Black Ops no tendrбn problemas para interceptarlo.");
	for(new i = 0; i < MAX_PLAYERS; i++)
	{
		SetPlayerCameraPos(i,24.328460693359,1559.7244873047,26.649225234985);
		SetPlayerCameraLookAt(i,73.827621459961,1524.6826171875,12.809228897095);
		TogglePlayerControllable(i,0);
		MoveObject(misil,59.92907715,1510.05053711,400, 15);
		CreateExplosion(61.453193664551,1513.5461425781,12.809228897095,6,8);
		CreateExplosion(59.907691955566,1510.1938476563,12.809228897095,6,8);
		CreateExplosion(57.977577209473,1511.3337402344,12.809,6,8);
		CreateExplosion(60.104454040527,1510.3148193359,14.559228897095,1,8);
		SetTimerEx("reinicio",7000,0,"d");
			}
	return 1;
}
El problema es que realiza todas las funciones de ese callback 500 veces, incluyendo SendClientMessageToAll(nъmero mбximo de jugadores en el servidor). їCуmo podrнa hacerse para que sуlo lo haga una vez por jugador, pero a todos los jugadores?

__________________________________________
Otra consulta. їAlguien conoce algъn tipo de tutorial que explique como hacer que los equipos de un TDM estйn equilibrados automбticamente (es decir, si tъ te unes a un equipo y sois 2 y en el otro equipo 1, a mн me va a obligar a unirme al otro equipo)?їEs muy complicado de hacer?

Muchas gracias por la ayuda.


Respuesta: [Consulta]: їCуmo hago esto? - Code8976Man - 28.03.2011

Muestra el SetTimerEx.

Код:
MoveObject(misil,59.92907715,1510.05053711,400, 15);
		CreateExplosion(61.453193664551,1513.5461425781,12.809228897095,6,8);
		CreateExplosion(59.907691955566,1510.1938476563,12.809228897095,6,8);
		CreateExplosion(57.977577209473,1511.3337402344,12.809,6,8);
		CreateExplosion(60.104454040527,1510.3148193359,14.559228897095,1,8);
y eso no hace falta que vaya en el loop.

Код:
SetTimerEx("reinicio",7000,0,"d",playerid);
Te olvidaste el "playerid", creo.

Pero si es una funciуn sin parбmetros por quй usar SetTimerEx? Usa SetTimer, ya que al llegar a la funciуn esta ya se encarga de hacer el loop.


Re: [Consulta]: їCуmo hago esto? - MaRcOsWeB - 28.03.2011

їY para quй usas SetTimerEx si quieres hacerlo a todos los jugadores? Directamente hacй SetTimer.


Respuesta: [Consulta]: їCуmo hago esto? - AustinT - 30.03.2011

Ah, їsi pongo directamente SetTimer afecta a todos los jugadores? Muchas gracias, me habйis ayudado mucho.


Re: [Consulta]: їCуmo hago esto? - MaRcOsWeB - 30.03.2011

Claro, SetTimer es para ejecutar un callback tantas veces como se te cante.

SetTimer

Sets a timer to call a function after some time.

Parameters: (funcname[], interval, repeating)

funcname[] -> Name of the function to call as a string. Needs to be a public!
interval -> Interval in milliseconds.
repeating -> Boolean if the timer should occur repeatedly or only once



Re: [Consulta]: їCуmo hago esto? - murdoxix - 30.03.2011

Perdon, no vengo a ayudar directamente, si no que indirectamente XD.
@AustinT siempre que vallas a poner codigos Pawn, usa [pawn] ACA EL CODIGO [ /pawn] ([ /pawn] todo junto ) en ves de usar [code] ACA EL CODIGO [ /code] es porque es mas facil leerlo con [pawn] SUERTE