Saltar al contenido

Más en DLAN: Nuestras Traducciones | Otras Traducciones | Mods y modding | Revisiones y Guías | Videojuegos | Arte | Literatura | Rol y Rol por foro e IRC | Mapa de la web
Foto

Duda sobre script, planteamiento


1 respuesta al tema

#1 Rk.Sayan

Rk.Sayan

    Ancillae

  • Miembro
  • PipPipPip
  • 419 posts

Posteado 02 September 2018 - 06:25 AM

Buenas, tenía una duda sobre algo que hice, pero no puedo comprobarlo por mi mismo si funciona correctamente o la lie un poco, asi que quería que le echara un vistazo un ojo más experto.

Aparentemente funciona, pero no se si solo funciona conmigo o si entran más jugadores también funcionaría, a saber.

 

Bueno , como no quería gastar el heartbeat lo inicié en el onload del módulo.

 

x2_mod_def_load

 

le agregué una línea:

 

ExecuteScript("cambiarhoradiurn",OBJECT_SELF); // vamos que se ejecute sobre el módulo mismo

 

y en el que enlaza le metí esto

 

cambiarhoradiurn:

int Hora = GetTimeHour();int Minutos = GetTimeMinute();int Segundos = GetTimeSecond();int Milisegundos = GetTimeMillisecond();
void SiEstaEnCombate() //subprograma
{ object entrando = GetEnteringObject();
  object jugador = GetFirstPC();
                                while (GetIsObjectValid(jugador) == TRUE)
                                       {
                                       if (GetIsInCombat(jugador))
                                       {
                                       SendMessageToPC (jugador, "Estoy en combate no inicio script");//me avisa
                                       DelayCommand(10.0, SiEstaEnCombate());   //a los 10 segundos comprueba si sigo en combate
                                       }
                                       else
                                       {
                                       SendMessageToPC (jugador, "NO Estoy en combate si inicio script");//aviso
                                       DelayCommand(1.5,ExecuteScript("cambiarhoradiurn",OBJECT_SELF)); //reinicia el script entero
                                       }
                                         jugador = GetNextPC(); //siguiente jugador 
                                          }
}



void main()
{//inicio      
 object Jugador = GetEnteringObject();

           {
            if (Hora >= 7 && Hora <= 17)  // si esta entre las 7 y las 17
                {
                 if (GetLocalInt(OBJECT_SELF, "cambio de hora diurna") == 1) //si tiene la variable , aplica el cambio de hora
                     {
                     DelayCommand(0.0,SetTime(Hora, Minutos, Segundos+1, Milisegundos)); //avanza un segundo
                     DelayCommand(0.0, SendMessageToPC (Jugador, "+1 segundos")); //le avisa al jugador cuando avanza 1 segundo                                 
                     DelayCommand(2.0,SiEstaEnCombate()); //inicia subprograma de si esta en combate cada 2 segundos provocando un bucle
                     }
                                       else{
                                            SetLocalInt(OBJECT_SELF, "cambio de hora diurna", 1); //sino tiene la variable, se la da, y reinicia el script
                                            DelayCommand(2.0,SiEstaEnCombate());
                                           }

                 }

             else
                 {
                  DeleteLocalInt(OBJECT_SELF, "cambio de hora diurna"); //borra la variable provocando que el script se detenga por completo
                  DelayCommand(0.0, SendMessageToPC (Jugador, ">borra HORA diurna")); 
                  DelayCommand(1561.0, SendMessageToPC (Jugador, "Empieza el ciclo denuevo")); 
                  DelayCommand(1561.0,SiEstaEnCombate()); //reinicia todo cuando esta a punto de amanecer 
                  }
            }
}//fin

 

Bueno, la pregunta es, ¿está bién?

aparentemente funciona, pero como no lo puedo probar con más gente no estoy seguro

 

Se supone que lo que hace resumidamente es que , cambia las horas del juego adelantandolas el doble de rápido apartir de las 7 a 17(por el día) y fuera de esas horas (por la noche) vuelve a la normalidad.

pero la con la condición de que nadie que este dentro del server este peleando, si se ponen a pelear durante el día  el script se suspende momentaneamente hasta que dejen la pelea todos los jugadores del server.

 

¿Alguno jugó a Minecraft? , ¿recuerdan que si todos los jugadores del server se van a dormir, pasan al día siguiente?, pues es algo parecido.

 

Lo que no se si está bien planteado. ¿Cómo lo ven?

 

Gracias

 

PD: lo de los mensajes de aviso a jugador me dan un poco igual, solo es un comprobante q lo suelo poner pa ver hasta donde llega el script sin romperse. :P

 



#2 MenemDoIt

MenemDoIt

    Antediluvian

  • Miembro
  • PipPipPipPipPip
  • 1213 posts

Posteado 02 September 2018 - 04:21 PM

creo que seria mejor si lo testearas con alguien mas en un modulo de pruebas.

 

si subes un modulo que no requiera HAKs podria entrar un rato y ayudarte a testearlo.

 

en todo caso, que andes modificando el paso del tiempo hara que algunas cosas se desincronicen, como las criaturas en movimiento, la duracion de los conjuros, el tiempo entre descansos, los delaycommands, etc. no creo que sea buena idea eso de modificar el paso del tiempo.

 

por cierto, ¿probaste de que no afecte los heartbeats? creo que no deberia, pero deberias asegurarte.


10016077DS1515734551.gif




Responder



  


A Bragol. Tus amigos te echan de menos.