SA-MP Forums Archive
No logro hacer esto, ayuda! - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: No logro hacer esto, ayuda! (/showthread.php?tid=282161)



No logro hacer esto, ayuda! - TiNcH010 - 09.09.2011

Hola, resulta que quiero que detecte que a tal hora (yo lo pongo eso) setee una variable a 1.
Ejemplo mнo:

pawn Код:
// En OnGameModeInit tengo esto el timer (1 segundo) que es este:
                        new hora, minutos;
            gettime(hora, minutos);

            for (new i=0; i < MAX_PLAYERS; i++)
            {
            if(hora == 23 || minutos >= 00)
            {
            CerrarBanco[playerid] = 1;
            }
            }
Lo malo es que siempre esta en 1, ya puse en OnPlayerConnect CerrarBanco[playerid] = 0; pero sigue igual :S
No detecta que son las 23hs
Quiero eso, que a las 23 hs setee la variable a edit: 1, y si no son las 23 horas, no lo setee.
Pero no funciona, que hago mal?


Respuesta: No logro hacer esto, ayuda! - Jovanny - 09.09.2011

LOL, Como no puedes detectar ese error tan facil ?

pawn Код:
new hora, minutos;
            gettime(hora, minutos);

            for (new i=0; i < MAX_PLAYERS; i++)
            {
            if(hora == 23 || minutos >= 00)
            {
            CerrarBanco[i] = 1;
            }
            }
Eso solo se llama una vez, al iniciar el gamemode, no va a quedar repitiйndose para estar checando si esta abierto o cerrado. Hazlo asн

pawn Код:
public OnGameModeInit()
{
SetTimer("ChecarBanco",300,true);
}
forward ChecarBanco(); public ChecarBanco()
{
new hora, minutos;
gettime(hora, minutos);
for (new i=0; i < MAX_PLAYERS; i++)
{
if(hora == 23 || minutos >= 00)CerrarBanco[i] = 1;
}
}
EDIT:
Ademas ya que sean las 23 jamas se abrira el banco de nuevo si no pones otra condicion if

pawn Код:
public OnGameModeInit()
{
SetTimer("ChecarBanco",300,true);
}
forward ChecarBanco(); public ChecarBanco()
{
new hora, minutos;
gettime(hora, minutos);
for (new i=0; i < MAX_PLAYERS; i++)
{
if(hora == 23 && hora <= 7)CerrarBanco[i] = 1;
else if (hora >= 7 && minutos >= 00)CerrarBanco[i]=0;
}
}
Eso cerrara el banco a las 23 y lo abrirб a las 7.


EDIT 2: Puedes hacerlo sin array, solу haciendo una variable que indique si el banco esta cerrado o abierto y al momento de querer entrar compruebe la variable si es igual a 1 o 0


Re: No logro hacer esto, ayuda! - Daniel-92 - 09.09.2011

EDIT: No dije nada


Respuesta: Re: No logro hacer esto, ayuda! - Jovanny - 09.09.2011

Quote:
Originally Posted by Daniel-92
Посмотреть сообщение
EDIT: No dije nada
Lo alcancй a ver xD


Respuesta: No logro hacer esto, ayuda! - TiNcH010 - 09.09.2011

Gracias Daniel me sirvio, pero la unica cagada es que si el jugador tiene la hora de su PC como el quiera, el banco estara abierto a la hora que el quiera :S
Lo acabo de comprobar.
Como hago para que detecte mi propia hora (que yo le puse al sv) ?


Re: Respuesta: Re: No logro hacer esto, ayuda! - Daniel-92 - 09.09.2011

Quote:
Originally Posted by josta
Посмотреть сообщение
Lo alcancй a ver xD
el primer ejemplo que pusistes estб igual que el de tincho, el banco siempre estarб cerrado por que verificas los minutos, por ejemplo si son las 12:00 el banco estarб cerrado por que los minutos son igual a 0 (no hay necesidad de verificarlos) tambien una solucion es hacerlo asн
pawn Код:
if(hora == 23 && minutos >= 0)
pero ahi los minutos practicamente no cumplen ninguna funciуn, lo mejor es borrarlos

Quote:
Originally Posted by TiNcH010
Посмотреть сообщение
Como hago para que detecte mi propia hora (que yo le puse al sv) ?
gettime solo obtiene la hora del servidor no la del cliente


Respuesta: No logro hacer esto, ayuda! - TiNcH010 - 09.09.2011

Debe ser xq puse esto? :P
pawn Код:
new horareal, minutoreal;
    gettime(horareal, minutoreal);
    SetWorldTime(horareal);
   
    gettime(horareal, minutoreal);
    for(new i; i<GetMaxPlayers(); i++){
    if(IsPlayerConnected(i))SetPlayerTime(i, horareal, minutoreal);}
Es la hora de mi Paнs, a eso me refiero

edit: xdd
ademas cambie la hora de mi pc y paso eso (se cambio la hora del server a la de mi pc)

EDIT 2: Me parece que ya no hace falta lo que dije xD
La hora que hice ahi es la hora del host, y cuando lo hostee nadie cambiara la hora del host. Como yo ahora estoy hosteando desde mi PC, la hora logicamente cambia xD
Gracias problema resuelto



Re: Respuesta: No logro hacer esto, ayuda! - Daniel-92 - 09.09.2011

Quote:
Originally Posted by TiNcH010
Посмотреть сообщение
Debe ser xq puse esto? :P
pawn Код:
new horareal, minutoreal;
    gettime(horareal, minutoreal);
    SetWorldTime(horareal);
   
    gettime(horareal, minutoreal);
    for(new i; i<GetMaxPlayers(); i++){
    if(IsPlayerConnected(i))SetPlayerTime(i, horareal, minutoreal);}
Es la hora de mi Paнs, a eso me refiero

edit: xdd
ademas cambie la hora de mi pc y paso eso (se cambio la hora del server a la de mi pc)
el servidor obtiene la hora del host, en este caso el host es tu pc si tu cambias la hora de tu pc en el server tambien sera cambiada.

para cambiar la hora del host puedes usar settime();
pawn Код:
//el nativo
native settime(hour=cellmin, minute=cellmin, second=cellmin);



Respuesta: No logro hacer esto, ayuda! - El Bardo - 09.09.2011

No uses playerid en CerrarBanco.
Hace unos meses hize el mismo sistemita, a tal hora se cierra el banco y no es posible robarlo, lo usamos a la madrugada cuando entraban los vivos en bolas a robar el banco..
Toma la hora del servidor, no del cliente.


Respuesta: Re: Respuesta: No logro hacer esto, ayuda! - Jovanny - 10.09.2011

Quote:
Originally Posted by Daniel-92
Посмотреть сообщение
pawn Код:
//el nativo
native settime(hour=cellmin, minute=cellmin, second=cellmin);
No funciona en linux, solamente en windows