[DUDA] їProblema con Timer o que pasa?
#1

Muy buenas Scripters! Hoy les traigo mi duda, he estado haciendo un sistema de radar de 0 con creaciуn InGame, el problema estб en que cuando voy solo y excedo de la velocidad funciona ya que desde OnGamemodeInit he echo un timer repetitivo que revise con un loop si algъn usuario estб cerca de un radar y excede de la velocidad marcada, este se repite cada 800 milйsimas de segundo, cree una variable para que cuando te multe te dй 15 segundos para que vuelvas a ser multado ya que si no te darнa todo el rato: Fuiste multado. El problema estб en que si pasan dos personas rбpido y les multa a las dos una de ellas no es multada, solo una.

Dejarй un fragmento del cуdigo ya que paso de plagies y copias.

pawn Код:
// Esto es cuando te va a multar, abajo estб la variable que te dб 15 segundos para ser multado.
if(pInfo[i][pMultadorecientemente] == 0)
{
GivePlayerMoney(i, -1000);
SendClientMessage(i,COLOR_RED,"Fuiste multado.");
pInfo[i][pMultadorecientemente] = 1;
SetTimerEx("Sacarmultareciente", 15000, false, "b", i); //Creo que el problema estб acб, este timer desactiva la variable para poder ser multado de nuevo por eso creo que al pasar una vez dos personas y ser multadas, al volver solo multa a una. їQue puedo hacer? La i es del Loop que revisa cada 800 milesimas de segundo si estбs cerca de un radar mediante un timer repetitivo.
Si es necesario puedo publicar mбs del codigo con el fin de que me ayuden. Mil gracias.
Reply
#2

1є Como Usas La ''I'' ? Como Playerid?
2є Asi queda bueno, que pasen los 2 y no cobre, si no solo a uno. їPOR QUE D: ? Por que que darнa mas rolero, que uno se salve por que engaсaron el medidor de velocidades :3. En la vida real, nada es perfecto. (digo, en el tema de tecnologнa.)Ademas, No todos lo saben, seria un rol de que los ladrones '' (ejemplo) lo saben.. Entiendes?
Reply
#3

Y que tal si lo pones para que se repita algo haci?

pawn Код:
if(pInfo[i][pMultadorecientemente] == 0)
{
GivePlayerMoney(i, -1000);
SendClientMessage(i,COLOR_RED,"Fuiste multado.");
pInfo[i][pMultadorecientemente] = 1;
SetTimerEx("Sacarmultareciente", 15000, true, "b", i);
Reply
#4

Quote:
Originally Posted by Daniel_Ruiz
Посмотреть сообщение
Y que tal si lo pones para que se repita algo haci?

pawn Код:
if(pInfo[i][pMultadorecientemente] == 0)
{
GivePlayerMoney(i, -1000);
SendClientMessage(i,COLOR_RED,"Fuiste multado.");
pInfo[i][pMultadorecientemente] = 1;
SetTimerEx("Sacarmultareciente", 15000, true, "b", i);
Lo ъnico que hiciste fue editar el SetTimerEx, y lo que le cambiaste, aras que se repita u.u
Reply
#5

Quote:
Originally Posted by yesid001
Посмотреть сообщение
Lo ъnico que hiciste fue editar el SetTimerEx, y lo que le cambiaste, aras que se repita u.u
Pues claro para que se repita y se ejecute rapidamente a los 2 jugadores no?

o que tal haci?

pawn Код:
if(pInfo[i][pMultadorecientemente] == 0)
{
GivePlayerMoney(i, -1000);
SendClientMessage(i,COLOR_RED,"Fuiste multado.");
pInfo[i][playerid][pMultadorecientemente] = 1;
SetTimerEx("Sacarmultareciente", 15000, false, "b", i);
Reply
#6

Yassid la i aparece de un Loop, tampoco soy Imbйcil. Dйjenme explicarme, tengo la variable seteada a 0 por lo tanto que me multa, entonces pasa mi amigo y no le multa, como si se nos hubiera seteado a los dos, tras esto el timer solo me afecta a mi y a el no.
Reply
#7

Tienen razуn Pero se repetirб en 15 Segundos, no sirve de nada

Quisas, funcione si cambias el playerid, por uno para TODOS los users, igual, solo se activa cuando pasan por hay a alta velocidad, esa pienso que seria la ъnica.

Para cuando pasen, asi sean 5, como es para todos los users, no se gastara en solo 1, si no en todos.
Reply
#8

Obvio, el problema es que me setea la variable de multadorecientemente y es como si a el otro tambiйn y no puede ser multado.

Os dejarй el cуdigo, espero que no se copie nadie y robe crйditos

pawn Код:
public Radarcomprobar()
{
for(new i = 0; i < MAX_PLAYERS; i++)
if(IsPlayerInAnyVehicle(i))
{
for(new u = 0; i < MAXIMO_RADARES; u++)
{
new string[128];
new Float:PosicionX = RadarInfo[u][xPos];
new Float:PosicionY = RadarInfo[u][yPos];
new Float:PosicionZ = RadarInfo[u][zPos];
new VehiculoID[MAX_PLAYERS];
VehiculoID[i] = GetPlayerVehicleID(i);
if(IsPlayerInRangeOfPoint(i, 50, PosicionX, PosicionY, PosicionZ))
{
if(GetVehicleSpeed(VehiculoID[i]) >= RadarInfo[u][Limitevelocidad])
{
if(pInfo[i][pMultadorecientemente] == 0)
{
format(string,sizeof(string), "Te grabу el radar y corrias a %d KM/H. [Prueba de script :3] y el limite del radar es %d.", GetVehicleSpeed(VehiculoID[i]), RadarInfo[u][Limitevelocidad]);
SendClientMessage(i,COLOR_GREEN,string);
GivePlayerMoney(i, -1000);
SendClientMessage(i,COLOR_RED,"Fuiste multado.");
pInfo[i][pMultadorecientemente] = 1;
SetTimerEx("Sacarmultareciente", 15000, true, "b", i);
}
}
}
}
}
return 0;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)