SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Español/Spanish

Reply
 
Thread Tools Display Modes
Old 09/09/2011, 07:37 PM   #1
TiNcH010
High-roller
 
TiNcH010's Avatar
 
Join Date: Apr 2010
Location: Buenos Aires, Argentina.
Posts: 1,986
Reputation: 42
Exclamation No logro hacer esto, ayuda!

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

pawn Code:
// 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?
TiNcH010 is offline   Reply With Quote
Old 09/09/2011, 07:45 PM   #2
Jovanny
Banned
 
Join Date: Oct 2010
Location: Siиαloα
Posts: 1,482
Reputation: 0
Default Respuesta: No logro hacer esto, ayuda!

LOL, Como no puedes detectar ese error tan facil ?

pawn Code:
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 Code:
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 Code:
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
Jovanny is offline   Reply With Quote
Old 09/09/2011, 07:50 PM   #3
Daniel-92
Gangsta
 
Join Date: Dec 2010
Location: Nicaragua
Posts: 704
Reputation: 41
Default Re: No logro hacer esto, ayuda!

EDIT: No dije nada
Daniel-92 is offline   Reply With Quote
Old 09/09/2011, 07:53 PM   #4
Jovanny
Banned
 
Join Date: Oct 2010
Location: Siиαloα
Posts: 1,482
Reputation: 0
Default Respuesta: Re: No logro hacer esto, ayuda!

Quote:
Originally Posted by Daniel-92 View Post
EDIT: No dije nada
Lo alcancé a ver xD
Jovanny is offline   Reply With Quote
Old 09/09/2011, 07:58 PM   #5
TiNcH010
High-roller
 
TiNcH010's Avatar
 
Join Date: Apr 2010
Location: Buenos Aires, Argentina.
Posts: 1,986
Reputation: 42
Default Respuesta: No logro hacer esto, ayuda!

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) ?
TiNcH010 is offline   Reply With Quote
Old 09/09/2011, 07:59 PM   #6
Daniel-92
Gangsta
 
Join Date: Dec 2010
Location: Nicaragua
Posts: 704
Reputation: 41
Default Re: Respuesta: Re: No logro hacer esto, ayuda!

Quote:
Originally Posted by josta View Post
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 Code:
if(hora == 23 && minutos >= 0)
pero ahi los minutos practicamente no cumplen ninguna función, lo mejor es borrarlos

Quote:
Originally Posted by TiNcH010 View Post
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
Daniel-92 is offline   Reply With Quote
Old 09/09/2011, 08:04 PM   #7
TiNcH010
High-roller
 
TiNcH010's Avatar
 
Join Date: Apr 2010
Location: Buenos Aires, Argentina.
Posts: 1,986
Reputation: 42
Default Respuesta: No logro hacer esto, ayuda!

Debe ser xq puse esto? :P
pawn Code:
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
TiNcH010 is offline   Reply With Quote
Old 09/09/2011, 08:14 PM   #8
Daniel-92
Gangsta
 
Join Date: Dec 2010
Location: Nicaragua
Posts: 704
Reputation: 41
Default Re: Respuesta: No logro hacer esto, ayuda!

Quote:
Originally Posted by TiNcH010 View Post
Debe ser xq puse esto? :P
pawn Code:
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 Code:
//el nativo
native settime(hour=cellmin, minute=cellmin, second=cellmin);
Daniel-92 is offline   Reply With Quote
Old 09/09/2011, 09:18 PM   #9
El Bardo
Huge Clucker
 
Join Date: May 2010
Location: Argentina
Posts: 239
Reputation: 3
Default Respuesta: No logro hacer esto, ayuda!

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.
El Bardo is offline   Reply With Quote
Old 10/09/2011, 01:38 AM   #10
TiNcH010
High-roller
 
TiNcH010's Avatar
 
Join Date: Apr 2010
Location: Buenos Aires, Argentina.
Posts: 1,986
Reputation: 42
Default Respuesta: No logro hacer esto, ayuda!

Quote:
Originally Posted by El Bardo View Post
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.
Es lo mismo si uso playerid, es para el jugador, si uso i en este caso es para todos, pero esta funcion funciona de todas formas (testeado).
Que tiene que ver que no se puede robar? Mas vale que si cerras el banco no podes robar xDDD
Es x eso que quiero que tal hora este cerrado (xq en la vida real los bancos cierran y no estan las 24hs abiertos).
Con respecto a si toma la hora del servidor no, en este caso no toma la hora del servidor, chequea;

pawn Code:
new horareal, minutoreal; // definis hora/minuto
    gettime(horareal, minutoreal); // obtiene info de hora/minuto
    SetWorldTime(horareal); // setea la hora del server a hora/minuto de arriba
   
    gettime(horareal, minutoreal); // nuevamente obtiene info de hora/minuto
    for(new i; i<GetMaxPlayers(); i++){ // para todos los jugadores (todo el server)...
    if(IsPlayerConnected(i))SetPlayerTime(i, horareal, minutoreal);} // Si estan conectados, les da el tiempo
Conclusion, es la hora del host, en este caso si lo abro desde mi PC es mi host, mi PC x eso tendre la hora de mi PC. Si lo hosteo solamente tendra la hora del host.
A menos que la cambie como dijo Daniel con settime pero no hace falta
Saludos, gracias y cierren tema
TiNcH010 is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Como hacer esto?... TiNcH010 Español/Spanish 16 31/08/2011 05:50 PM
Como hacer esto... TiNcH010 Español/Spanish 2 25/07/2011 01:31 AM
[Ayuda] No logro enter como aser esto Andres_Garcia Español/Spanish 5 06/05/2010 08:11 PM
[AYUDA] Como Se Puede Hacer Esto? Pandax Español/Spanish 1 18/03/2010 06:06 PM
[AYUDA]Como Puedo Hacer Esto? Roymer Español/Spanish 7 15/03/2010 05:00 PM


All times are GMT. The time now is 07:03 AM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.