26.10.2012, 12:45
(
Последний раз редактировалось hbzi; 26.10.2012 в 15:28.
)
Boa tarde.
Criei um sistema que escolhe aleatoriamente um jogador e o faz ser um Zombie.
A funзгo para escolher o Zombie chama-se Infectar. Funciona tudo bem, desde a escolha do Zombie atй а entrega de um prйmio de 2 de EXP a quem o matar.
Chamo esta funзгo com o comando /inf.
O que eu queria era tirar o jogador de Zombie passados 10 minutos e dar-lhe 2 de EXP caso ele nгo morra nesse espaзo de tempo.
Para isso fiz a funзгo CheckInfect(playerid).
Com o OnPlayerUpdate verifico quando um jogador passa a Zombie:
A funзгo Infectar() coloca a PVar eInf do jogador infectado igual a 1.
Fiz um new timerInf[MAX_PLAYERS] para chamar a funзгo CheckInfect.
ficando o meu OnPlayerUpdate assim:
Os 10000ms (10 seg) sгo sу para testar se a funзгo funciona.
O que isto faz й: Quando o jogador й escolhido para Zombie, inicia o Timer para o tempo que ele precisa de sobreviver para ganhar a EXP.
O problema estб aqui:
Quando alguйm mata o Zombie o timer nгo para de contar.
Na minha OnPlayerDeath tenho a verificaзгo:
Essa cor й a cor do jogador quando й escolhido para Zombie, ou seja: Se o jogador que morreu for o Zombie..
Aqui faзo o KillTimer ao timer do CheckInfect quando o Zombie morre mas, mesmo assim, o Zombie ganha 2 EXP mesmo depois de morrer.
Exemplo da situaзгo:
Jogador 1: /inf
Jogador 2: Escolhido para ser Zombie
Jogador 1: mata Zombie ganha 2 de EXP
Jogador 2: Passados 10s recebe os 2 de EXP а mesma mesmo depois de ser morto.
Alguma sugestгo para resolver isto?
Criei um sistema que escolhe aleatoriamente um jogador e o faz ser um Zombie.
A funзгo para escolher o Zombie chama-se Infectar. Funciona tudo bem, desde a escolha do Zombie atй а entrega de um prйmio de 2 de EXP a quem o matar.
Chamo esta funзгo com o comando /inf.
O que eu queria era tirar o jogador de Zombie passados 10 minutos e dar-lhe 2 de EXP caso ele nгo morra nesse espaзo de tempo.
Para isso fiz a funзгo CheckInfect(playerid).
Com o OnPlayerUpdate verifico quando um jogador passa a Zombie:
Код:
if(GetPVarInt(playerid, "eInf") == 1)
Fiz um new timerInf[MAX_PLAYERS] para chamar a funзгo CheckInfect.
Код:
timerInf[playerid] = SetTimerEx("CheckInfect", 10000, false, "i", playerid);
Код:
if(GetPVarInt(playerid, "eInf") == 1) { timerInf[playerid] = SetTimerEx("CheckInfect", 10000, false, "i", playerid); }
O que isto faz й: Quando o jogador й escolhido para Zombie, inicia o Timer para o tempo que ele precisa de sobreviver para ganhar a EXP.
O problema estб aqui:
Quando alguйm mata o Zombie o timer nгo para de contar.
Na minha OnPlayerDeath tenho a verificaзгo:
Код:
if(GetPlayerColor(playerid) == 0xFF00BFFF) { new msg[128]; format(msg, sizeof(msg), "O jogador {FFFF00}%s {00FF00}matou o jogador infectado! Ganhou {FFFF00}2 de EXP {00FF00}de bуnus!", GetNick(killerid)); SendClientMessageToAll(0x00FF00FF, msg); SetPlayerColor(playerid, 0xFFA500FF); d[killerid][exp] += 2; KillTimer(timerInf[playerid]); VerificarResp(killerid); }
Aqui faзo o KillTimer ao timer do CheckInfect quando o Zombie morre mas, mesmo assim, o Zombie ganha 2 EXP mesmo depois de morrer.
Exemplo da situaзгo:
Jogador 1: /inf
Jogador 2: Escolhido para ser Zombie
Jogador 1: mata Zombie ganha 2 de EXP
Jogador 2: Passados 10s recebe os 2 de EXP а mesma mesmo depois de ser morto.
Alguma sugestгo para resolver isto?