[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