19.12.2010, 14:48
Ya sabes que no lo podes hacer en OnPlayerKeyStateChange porque no detecta el arriba-abajo ni el izquierda-derecha.
Tenes que hacer un timer que puede ser de medio segundo en el cual se encuentre la funcion GetPlayerKeys.
Aca tenes un pequeсo ejempo (no lo uses textual esta aca):
Aca tenes una funcion que si apretas arriba te suma 10, si apretas abajo te resta 10, si apretas para la derecha te suma 1, y si apretas para la izquierda te suma 1.
Para que funcione tenes que hacer que el temporizador corra:
HASTA ACA LO IMPORTANTE, EL RESTO DEL MENSAJE ES POR LAS DUDAS
Y para ver el resultado:
Y por ultimo si queres que se reinicie cada vez que un jugador entra al juego solo agregas:
Aclaro que no esta probado...
Tenes que hacer un timer que puede ser de medio segundo en el cual se encuentre la funcion GetPlayerKeys.
Aca tenes un pequeсo ejempo (no lo uses textual esta aca):
pawn Код:
new numero[MAX_PLAYERS];
forward Timer_Test();
public Timer_Test()
{
new
keys,
arr_ab,
izq_der;
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
GetPlayerKeys(i, keys, arr_ab, izq_der);
if(arr_ab > 0) {numero[i] = numero[i] + 10;} // esta no es la forma mas simplificada de ponerlo, pero
// lo hago asi para que lo entiendas sin dificultad.
else if(arr_ab < 0) {numero[i] = numero[i] - 10;}
else if(izq_der > 0) {numero[i] = numero[i] + 1;} // (numero = numero + 1) es igual a (numero ++)
else if(izq_der < 0) {numero[i] = numero[i] - 1;}
}
}
}
Para que funcione tenes que hacer que el temporizador corra:
pawn Код:
public OnGameModeInit()
{
SetTimer("Timer_Test", 500, true);
// resto del codigo
}
Y para ver el resultado:
pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
if(!strcmp(cmdtext, "/resultado", true))
{
new s[70];
format(s, sizeof(s), "Tu resultado es:{FFFF00} %d", numero[playerid]);
SendClientMessage(playerid, 0xFFFFFFFF, s);
printf("Id: %d -- Resultado: %d", playerid, numero[playerid]);
numero[playerid] = 0; // reinicia el contador
return 1;
}
// resto del codigo
}
pawn Код:
public OnPlayerConnect(playerid)
{
numero[playerid] = 0;
// resto del codigo...
}

