CMD:r(playerid)
{
if(JaReparou[playerid] == 1)
{
AbaixarTempo = GetTickCount();
format(gString, sizeof(gString), "[ERRO]: Vocк ja reparou seu veнculo, por favor espere %d segundos.", GetTickCount() - AbaixarTempo[playerid] < LiberarReparo*1000);
SendClientMessage(playerid, erro, gString);
}
if(BlockCMD[playerid] == 1) return SendClientMessage(playerid, erro, "[ERRO]: Vocк estб em uma Arena DM, para sair use /SairDM");
if (GetPlayerMoney(playerid) < 500) return SendClientMessage(playerid, erro, "[ERRO]: Vocк nгo tem grana suficiente !"),PlayerPlaySound(playerid, 1053, 0.0, 0.0, 0.0);
RepairVehicle(GetPlayerVehicleID(playerid));
GivePlayerMoney(playerid, -500);
format(gString, sizeof(gString), "{FFFF00}%s {FFD700}reparou o seu veнculo {9ACD32}( /R & /Reparar )", nome(playerid));
SendClientMessageToAll(comando, gString);
SetTimerEx("LiberarReparo", 30000, false, "i", playerid);
JaReparou[playerid] = 1;
return 1;
}
forward LiberarReparo(playerid)
{
JaReparou[playerid] = 0;
KillTimer(LiberarReparo(playerid));
return 1;
}
new JaReparou[MAX_PLAYERS];
new AbaixarTempo[MAX_PLAYERS];
CMD:r(playerid)
{
if(JaReparou[playerid] == 1)
{
format(gString, sizeof(gString), "[ERRO]: Vocк ja reparou seu veнculo, por favor espere %d segundos.", ((LiberarReparo*1000)-(GetTickCount() - AbaixarTempo[playerid])/1000));//LiberarReparo estб em segundos, e queremos liberar em 3 segundos, 3*1000 = 3000, o GetTickCount-AbaixarTempo, ou seja, ao tempo de agora vamos subetrair o de quand digitamos o comando, imagine que ja passaram dois segundos ou seja 2000 sejundo o GetTickCount, ora, 3000-2000=1000, dividimos por 1000 e й =1 ou seja, falta 1 segundo
SendClientMessage(playerid, erro, gString);
return 1;//usamos o return 1 porque no caso de dar este erro nao queremos que execute o restante comando!
}
//o resto do cmd
SetTimerEx("LiberarReparo", 30000, false, "i", playerid);
JaReparou[playerid] = 1;
AbaixarTempo[playerid] = GetTickCount();//isso vem para aqui, nao dentro do if(JaReparou[playerid] == 1) porque senao cada vez que desse esse erro, contaria novamente e assim nunca terminava
return 1;
}
forward LiberarReparo(playerid)
{
JaReparou[playerid] = 0;
KillTimer(LiberarReparo(playerid));//nao precisa disso, so se o timer usa-se "repeating", ou seja, se fosse SetTimerEx("LiberarReparo", 30000, true, "i", playerid); portanto pode apagar isso
return 1;
}
entao, GetTickCount(); obtem o um valor em milesimos de segundo, nao vou falar mt pq nao й mt relevante para o caso, mas pense, se ele obtem em milesimos de segundo a cada instante, й so criar uma logica
pawn Код:
|
C:\Users\Cliente\Desktop\BRASIL ULTIMATE WAR EM LOS SANTOS!\gamemodes\BGLS.pwn(7663) : error 075: input line too long (after substitutions) C:\Users\Cliente\Desktop\BRASIL ULTIMATE WAR EM LOS SANTOS!\gamemodes\BGLS.pwn(7664) : error 076: syntax error in the expression, or invalid function call C:\Users\Cliente\Desktop\BRASIL ULTIMATE WAR EM LOS SANTOS!\gamemodes\BGLS.pwn(7665) : error 017: undefined symbol "gundo" C:\Users\Cliente\Desktop\BRASIL ULTIMATE WAR EM LOS SANTOS!\gamemodes\BGLS.pwn(7686) : error 075: input line too long (after substitutions) C:\Users\Cliente\Desktop\BRASIL ULTIMATE WAR EM LOS SANTOS!\gamemodes\BGLS.pwn(8601) : error 001: expected token: ";", but found "{" C:\Users\Cliente\Desktop\BRASIL ULTIMATE WAR EM LOS SANTOS!\gamemodes\BGLS.pwn(8604) : error 010: invalid function or declaration Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase 6 Errors.
C:\Users\Cliente\Desktop\BRASIL ULTIMATE WAR EM LOS SANTOS!\gamemodes\BGLS.pwn(7663) : error 075: input line too long (after substitutions) C:\Users\Cliente\Desktop\BRASIL ULTIMATE WAR EM LOS SANTOS!\gamemodes\BGLS.pwn(7664) : error 076: syntax error in the expression, or invalid function call C:\Users\Cliente\Desktop\BRASIL ULTIMATE WAR EM LOS SANTOS!\gamemodes\BGLS.pwn(7665) : error 017: undefined symbol "gundo" C:\Users\Cliente\Desktop\BRASIL ULTIMATE WAR EM LOS SANTOS!\gamemodes\BGLS.pwn(7686) : error 075: input line too long (after substitutions) Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase 4 Errors.
C:\Users\Cliente\Desktop\BRASIL ULTIMATE WAR EM LOS SANTOS!\gamemodes\BGLS.pwn(7664) : error 076: syntax error in the expression, or invalid function call Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase 1 Error.
format(gString, sizeof(gString), "[ERRO]: Vocк ja reparou seu veнculo, por favor espere %d segundos.", ((LiberarReparo*1000)-(GetTickCount() - AbaixarTempo[playerid])/1000));
format(gString, sizeof(gString), "[ERRO]: Vocк ja reparou seu veнculo, por favor espere %d segundos.", GetTickCount() - AbaixarTempo[playerid]*60000);
format(gString, sizeof(gString), "[ERRO]: Vocк ja reparou seu veнculo, por favor espere %d segundos.",((LiberarReparo*1000)-(GetTickCount()-AbaixarTempo[playerid]))/1000);
(GetTickCount()-AbaixarTempo[playerid])*60000
pawn Код:
lembrando que LiberarReparo e AbaixarTempo sao to tipo new certo? se tiver a usar Float ou bool й obvio que da erro! @EDIT obvio que da esses segundos todos ... segundo a lei da matematica, divisao e multiplicacao tem prioridade sobre soma e subtracao, logo vai multiplicar primeiro AbaixarTempo por 60000 e so depois tirar o GetTickCount() pra tirar primeiro o GetTickCount() tinha de usar () pawn Код:
|
Vocк ja reparou seu veнculo, por favor espere 30 segundos! Vocк ja reparou seu veнculo, por favor espere 29 segundos! Vocк ja reparou seu veнculo, por favor espere 28 segundos! Vocк ja reparou seu veнculo, por favor espere 27 segundos! Vocк ja reparou seu veнculo, por favor espere 26 segundos! Vocк ja reparou seu veнculo, por favor espere 25 segundos! Vocк ja reparou seu veнculo, por favor espere 24 segundos! ... E assim por diante. |