[Ajuda] Criando um timer simples -
arakuta - 04.07.2011
Criei um timer simples sem ler tutorial algum, e na hora de compilar teve erros. Sei que ta tudo errado e sou novato, mas eu acho que a tentativa foi boa ._.
Primeiro criei uma forward para definir a public no topo do GM.
Depois eu criei a public com as funзхes:
pawn Код:
public PayDay()
{
GivePlayerMoney(playerid, 5000);
SendClientMessageToAll(playerid, COLOR_DGREEN, "Payday! Salбrio: 5000");
}
E setei o timer em OnGameModeInit:
pawn Код:
SetTimer("PayDay", 600000, true);
E deu erros:
pawn Код:
C:\Documents and Settings\Samuel\Desktop\Projeto Samp\gamemodes\lvdm.pwn(634) : error 017: undefined symbol "playerid"
C:\Documents and Settings\Samuel\Desktop\Projeto Samp\gamemodes\lvdm.pwn(635) : error 017: undefined symbol "playerid"
As linhas que deram errados sao as funзхes de giveplayermoney e de senclientmessagetoall
Re: [Ajuda] Criando um timer simples -
Transferencia - 04.07.2011
faзa assim:
pawn Код:
public PayDay(playerid)
{
GivePlayerMoney(playerid, 5000);
SendClientMessageToAll(playerid, COLOR_DGREEN, "Payday! Salбrio: 5000");
}
Re: [Ajuda] Criando um timer simples -
Macintosh - 04.07.2011
Se vocк quiser enviar para todos a public faзa isso.
pawn Код:
public PayDay()
{
do
{
i++;
GivePlayerMoney(playerid, 5000);
SendClientMessageToAll(playerid, COLOR_DGREEN, "Payday! Salбrio: 5000");
}
while(i<MAX_PLAYERS);
}
Obs.: Meu primeiro cуdigo com do e while. ^^
Re: [Ajuda] Criando um timer simples -
TheGarfield - 04.07.2011
Quote:
Originally Posted by Shickcard
Se vocк quiser enviar para todos a public faзa isso.
pawn Код:
public PayDay() { do { i++; GivePlayerMoney(playerid, 5000); SendClientMessageToAll(playerid, COLOR_DGREEN, "Payday! Salбrio: 5000"); } while(i<MAX_PLAYERS); }
Obs.: Meu primeiro cуdigo com do e while. ^^
|
nem, ele sу repetirб 500 veses no xat.
se quiser usar o do...while:
pawn Код:
new i = 0xFFFFFF;
do
{
if(IsPlayerConnected(i))
{
GivePlayerMoney(i, 5000);
SendClientMessageToAll(i, COLOR_DGREEN, "Payday! Salбrio: 5000");
}
++i;
}
while(i <= MAX_PLAYERS);
a sintax й igual do loop.
pawn Код:
SendClientMessageToAll(50, COLOR_DGREEN, "Payday! Salбrio: 5000");
/\ sу mandarб a mensagem para o id 50.
pawn Код:
SendClientMessageToAll(250, COLOR_DGREEN, "Payday! Salбrio: 5000");
/\ sу mandarб a mensagem para o id 250.
entende?
Atenciosamente falcon -qq
Re: [Ajuda] Criando um timer simples - [BEP]AcerPilot - 04.07.2011
@Shickcard, pelo que sei vocк precisa declarar a variбvel i antes do while atravйs do new i; senгo nгo terб como aumentб-la muito menos usar em um while.
@arakuta Sugiro que sete timers ao player conectar, usando SetTimerEx e mudando PayDay() para PayDay(playerid), assim nгo darб indefined symbol e nгo terб lag. Se quiser continuar usando do jeito que estб, adicione um loop no PayDay(), desta forma:
pawn Код:
for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(playerid)) { //teu cуdigo }
Use o IsPlayerConnected para sу aplicar a aзгo em quem estб conectado, evitarб perda de desempenho
@Garfield: ao mesmo tempo ^^
Vocк nгo precisa definir que i й igual a 0 no comeзo, mesmo que seja em hexadecimal, pois quando uma variбvel й criada, ela automaticamente tem seu valor igual a zero.
Re: [Ajuda] Criando um timer simples -
arakuta - 04.07.2011
Com o cуdigo do @Transferencia eu obtive outros erros:
pawn Код:
C:\Documents and Settings\Samuel\Desktop\Projeto Samp\gamemodes\lvdm.pwn(631) : error 025: function heading differs from prototype
C:\Documents and Settings\Samuel\Desktop\Projeto Samp\gamemodes\lvdm.pwn(634) : error 035: argument type mismatch (argument 2)
4 erros com o cуdigo do @Shikcard.
pawn Код:
C:\Documents and Settings\Samuel\Desktop\Projeto Samp\gamemodes\lvdm.pwn(636) : error 017: undefined symbol "i"
C:\Documents and Settings\Samuel\Desktop\Projeto Samp\gamemodes\lvdm.pwn(636) : warning 215: expression has no effect
C:\Documents and Settings\Samuel\Desktop\Projeto Samp\gamemodes\lvdm.pwn(637) : error 017: undefined symbol "playerid"
C:\Documents and Settings\Samuel\Desktop\Projeto Samp\gamemodes\lvdm.pwn(638) : error 017: undefined symbol "playerid"
C:\Documents and Settings\Samuel\Desktop\Projeto Samp\gamemodes\lvdm.pwn(640) : error 017: undefined symbol "i"
EDIT
Com o post do garfield eu deixei assim:
pawn Код:
public PayDay()
{
new i = 0xFFFFFF;
do
{
if(IsPlayerConnected(i))
{
GivePlayerMoney(i, 5000);
SendClientMessageToAll(i, COLOR_DGREEN, "Payday! Salбrio: 5000");
}
++i;
}
while(i <= MAX_PLAYERS);
}
Com o erro:
[pawn]C:\Documents and Settings\Samuel\Desktop\Projeto Samp\gamemodes\lvdm.pwn(640) : error 035: argument type mismatch (argument 2)[/pawn
Re: [Ajuda] Criando um timer simples -
Macintosh - 04.07.2011
Sim Acer, й meu primeiro cуdigo com essas funзхes x). Estou tentando aprender.
Obrigado por ajudarem :*
pawn Код:
forward PayDay(playerid);
pawn Код:
public PayDay(playerid)
{
for(new i; i<MAX_PLAYERS; i++)
{
GivePlayerMoney(playerid, 5000);
SendClientMessageToAll(playerid, COLOR_DGREEN, "Payday! Salбrio: 5000");
}
return 1;
}
Re: [Ajuda] Criando um timer simples - [BEP]AcerPilot - 04.07.2011
@arakuta Estб dando erros no do Shickcard porque vocк nгo declarou a variбvel i (faзa-a atravйs de new i
e playerid (PayDay deveria ter o argumento playerid, mas no caso vocк precisaria de um SetTimerEx no OnPlayerConnect ou no OnPlayerSpawn).
@Shickcard hehe й sу lembrar que nгo dб pra mudar uma coisa que nгo existe
Vamos acabar de vez com isso, nгo adianta querer usar do e while quando se pode usar for, й mais fбcil para ele. Ficaria:
pawn Код:
public PayDay()
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
GivePlayerMoney(i, 5000);
SendClientMessage(i, COLOR_DGREEN, "Payday! Salбrio: 5000");
}
}
}
@Garfield: SendClientMessageToAll nгo tem o parвmetro playerid, como vocк tinha feito (SendClientMessageToAll(i, ..)) pois manda a mensagem para todos. Para especificar playerid, use SendClientMessage.
Re: [Ajuda] Criando um timer simples -
arakuta - 05.07.2011
[BEP]AcerPilot
Deu erro no seu cуdigo tambйm. o mesmo que deu com o do garfield.
pawn Код:
error 035: argument type mismatch (argument 2)
na linha do GivePlayerMoney
Edit:
AcerPilot, se eu colocar settimer no onplayerspawn ele sу daria o payday se o jogador ficar vivo atй o fim do timer. Em on player connect dando payday a 10 minutos de cada player conectado, ou seja, ia virar bagunзa . Colocando no OnGameModeInit ele da o payday pra todos num tempo fixo.
Re: [Ajuda] Criando um timer simples -
TheGarfield - 05.07.2011
Quote:
Originally Posted by [BEP]AcerPilot
@Garfield: ao mesmo tempo ^^
Vocк nгo precisa definir que i й igual a 0 no comeзo, mesmo que seja em hexadecimal, pois quando uma variбvel й criada, ela automaticamente tem seu valor igual a zero.
|
o certo й defini-la como 0.
porque alguns casos pode bugar.
nos casos de bug a variбvel i nгo terб o valor 0.
este й o motivo de eu ter definida.
Quote:
Originally Posted by [BEP]AcerPilot
@arakuta Estб dando erros no do Shickcard porque vocк nгo declarou a variбvel i (faзa-a atravйs de new i e playerid (PayDay deveria ter o argumento playerid, mas no caso vocк precisaria de um SetTimerEx no OnPlayerConnect ou no OnPlayerSpawn).
@Shickcard hehe й sу lembrar que nгo dб pra mudar uma coisa que nгo existe
|
pawn Код:
new i = 0xFFFFFF;
do
{
GivePlayerMoney(i, 5000);
SendClientMessage(i, -1, "Payday! Salбrio: 5000");
++i;
}
while(IsPlayerConnected(i) <= MAX_PLAYERS);
meu mesmo cуdigo funcionando, com menas linha e otimizado.