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

Forzar combate?


9 respuestas al tema

#1 Rk.Sayan

Rk.Sayan

    Ancillae

  • Miembro
  • PipPipPip
  • 429 posts

Posteado 20 May 2019 - 12:27 AM

Buenas, aqui otra vez despues de mucho tiempo, quitando el polvo al proyecto de nunca acabar, y me surgió la dudilla.

 

¿Hay alguna función que fuerce el combate?

 

me explico:

 

cuando mi personaje le entra hambre y se daña así mismo no fuerza el combate, es decir, puedo descansar y tal, quiero forzarlo de alguna forma, como si me atacasen, vamos que mi personaje quede alterado hasta que se calme la situación por tiempo.

 

¿existe tal función?, y si no existiera, alguna solución para alterar al pj, que lo ataque algo invisible durante 1 segundo o yo que se , no se muy bien como llevar esto.

 

Gracias.



#2 MenemDoIt

MenemDoIt

    Antediluvian

  • Miembro
  • PipPipPipPipPip
  • 1229 posts

Posteado 21 May 2019 - 05:52 PM

.


Editado por MenemDoIt, 27 December 2019 - 07:57 PM.


#3 lavafuego

lavafuego

    Ancillae

  • Miembro
  • PipPipPip
  • 409 posts

Posteado 26 May 2019 - 11:26 AM

..puedes vía script crear una facción hostil al resto, cuando le entre el hambre cambias la facción del pj a esa facción y al descansar recupere la suya. Es lo que se me ocurre a voz de pronto


Editado por lavafuego, 26 May 2019 - 11:27 AM.

http://tierrasdenemar.mi-foro.es/  (abierto para test 79.109.30.79:5121 )


#4 Txibi

Txibi

    Antediluvian

  • Miembro DLAN
  • PipPipPipPipPip
  • 4759 posts

Posteado 31 May 2019 - 09:27 PM

Había una opción de anular acciones, incluida el descanso, pero hace eones que no miro, a ver si miro y  pego.



#5 Rk.Sayan

Rk.Sayan

    Ancillae

  • Miembro
  • PipPipPip
  • 429 posts

Posteado 13 August 2019 - 05:08 PM

Retomo lo preguntado:

 

Bueno la razón de esto es que por que buscaba (y sigo buscando) una solución en cuanto al sol y los vampiros, si sale el sol, te daña , pero por ejemplo si mi personaje se pone a descansar en pleno sol no moriría nunca, mientras le daña se cura, asi que quería dejar al personaje jugador, alterado con la imposibilidad de descansar, ( ya se que hay métodos para ello, poner un contador y tal, que realmente es lo que he hecho), pero es más complejo de lo que parece, busco concretamente esa función por una razón.

 

En mi servidor esta enfocado en el mundo de vampiros, por lo tanto hay horas diurnas y nocturnas, ahora bien, ¿recordais Minecraft?, , si todos los que estan en el servidor se ponen a dormir ala misma hora, pasan las horas de golpe para jugar de día.

 

Esta es una idea parecida, no pasan de golpe , pero si más rapidas, si no hay nadie en combate en el servidor durante el día, las horas van pasando al doble de su velocidad real, hasta ahí todo bien,

pero no puedo hacer lo mismo ,si sale el Sol ,y me quema, pero  no se considera que está en combate, por lo tanto las horas diurnas van el doble de rápido por eso quería forzar el combate con alguna función o algo que lo fuerce.

 

o se me ocurre que alo mejor si detecta de alguna forma que estoy siendo dañado pero no se si hay tal función.

 

 

Respecto a esto si no se os ocurre nada, ya le daré otra vuelta que me vino ala cabeza con el ejemplo de minecraft XD, pero mi siguiente duda es de hoy, y si que me tiene un poco jodido jeje, a ver que os parece.

----------

DUDA 2: esto es un removedor de 2 tipos de efectos , remueve incremento de CA, y relentizaciones, estoy buscando remover modificadores de Ataque, y resulta que no encuentro la constante(creo que no existe), ¿se os ocurre algo?

 

void main()
{
object oPC= GetItemActivator();
if (!GetIsPC(oPC)) return;

//Remove blindness from the PC
effect eLoop=GetFirstEffect(oPC);

while (GetIsEffectValid(eLoop))
   {
   if (GetEffectType(eLoop)==EFFECT_TYPE_MOVEMENT_SPEED_DECREASE)
         RemoveEffect(oPC, eLoop);
        
   if (GetEffectType(eLoop)==EFFECT_TYPE_AC_INCREASE)
         RemoveEffect(oPC, eLoop);
   
   
   eLoop=GetNextEffect(oPC);
   }
}

con esto aumento el NÚMERO DE ATAQUES a 5  durante 60 segundos,

effect eMasAtaque = EffectModifyAttacks(5);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eMasAtaque , oJugador,59.9);

pero quiero poder removerlo con otra función, no ponerlo por tiempo, ¿Alguna idea?

 

Gracias.

 

Edito:

se me olvidaba,¿Alguien sabría indicarme donde puedo destripar un conjuro para ver el script?, busco concretamente el de acelerar, estaba pensando que alo mejor puedo encontrar la respuesta ahí ala segunda duda

cuando un se pone las botas de acelerar, se activa la velocidad , aumenta 4 ca natural, y suma un ataque, si me las quito, se q elimina todos esos bonificadores del tirón, basandome en eso, debería de ser posible cancelar el efecto.


Editado por Rk.Sayan, 13 August 2019 - 11:32 PM.


#6 Zoraga

Zoraga

    Ancillae

  • Miembro
  • PipPipPip
  • 256 posts

Posteado 13 August 2019 - 08:38 PM

Si usas un sistema de descanso que solo permita descansar 1 vez cada varias horas, el vampiro con suerte solo se podra curar 1 vez descansando, luego tendra q correr a la sombrita.


Colaborando en:



Nombre servidor: ES) Rebelión del Submundo
Tipo de servidor: rol/acción/jvj
Jugadores: 1-25
Niveles: 1-30
Base literaria: Reinos Olvidados
IP (conectar directamente): sombrasdefaerun.no-ip.org
Foro: http://usn-rol.foroes.org/



 


#7 MenemDoIt

MenemDoIt

    Antediluvian

  • Miembro
  • PipPipPipPipPip
  • 1229 posts

Posteado 14 August 2019 - 03:35 PM

.


Editado por MenemDoIt, 27 December 2019 - 07:57 PM.


#8 Rk.Sayan

Rk.Sayan

    Ancillae

  • Miembro
  • PipPipPip
  • 429 posts

Posteado 15 August 2019 - 12:17 AM

Correcto, respecto ala duda 1 lo haré como dices, en el momento que dañe por sol, hare el cambio de hora ahí(no se como no se me ocurrió antes, gracias ), no creo que me cueste mucho, así que x ahí no pregunto más,

respecto a la duda 2, he estado probando cosas como:   

void main()
{
object oPC= GetItemActivator();

effect eMasAtaque = EffectModifyAttacks(5); //define efecto 5 ataques
ApplyEffectToObject(DURATION_TYPE_PERMANENT,eMasAtaque, oPC); //aplica 5 ataques

DelayCommand(10.0,RemoveEffect(oPC, eMasAtaque )); //pasados 10 segs, borra los ataques

}

pero este script, solo borra el efecto si es en el mismo script que le doy el efecto, es decir no me deja plantearlo asi:

void main()
{
object oPC= GetItemActivator();

if (GetLocalInt(oPC,  "POWER1")) //si el jugador tiene variable power1, me da los efectos
{
effect eMasAtaque = EffectModifyAttacks(5); //define efecto 5 ataques
ApplyEffectToObject(DURATION_TYPE_PERMANENT,eMasAtaque, oPC); //aplica 5 ataques
}


else //sino tiene power1, me borra los efectos
{
RemoveEffect(oPC, eMasAtaque ); // borra los ataques
}

}

No entiendo por que de esta forma no quiere funcionar, copila bien pero no borra nunca los efectos, en cambio si pusiera en el mismo tramo de parentesis  los efectos, si que los borra, me raya un poco , ¿sabrían decirme por qué ? :S

 

Gracias.


Editado por Rk.Sayan, 15 August 2019 - 12:24 AM.


#9 MenemDoIt

MenemDoIt

    Antediluvian

  • Miembro
  • PipPipPipPipPip
  • 1229 posts

Posteado 15 August 2019 - 04:10 AM

.


Editado por MenemDoIt, 27 December 2019 - 07:58 PM.


#10 Rk.Sayan

Rk.Sayan

    Ancillae

  • Miembro
  • PipPipPip
  • 429 posts

Posteado 17 August 2019 - 01:39 AM

Buah, despues de darle vueltas y vueltas caí en una cosa

 

que la función del juego no sirve, y que hay otra que hace lo mismo que si sirve XD

 

al releer el Lexicon nwn

esto es erroneo  EffectModifyAttacks(5);  eso aumenta el número de ataques  , y se supone que con esto, los restauras  a su estado original, RestoreBaseAttackBonus(oPC);  , pero no es verdad, el primero funciona pero el segundo no.

para hacer esto correctamente hay otra función  SetBaseAttackBonus( 5, oPC);  y se restaura con RestoreBaseAttackBonus(oPC);

 

en resumen ambas funciones hacen lo mismo, pero solo una es detenible

segun el lexicon, el primero es un efecto,  tipo conjuro que puede ser puesto permanente o temporal (pero no borrable)

el segundo es permanente, pero borrable, esta confusión me ha llevado la vida XDD

 

dejo un ejemplo pa quien le sirva de ayuda y no se tope con este problema ^^

 

if ( Objeto == "mas_ataque" )//tag del objeto
  {
  
   if(GetLocalInt(oJugador,  "DOY_ATAQUES")) // si tiene variable
      {
       DeleteLocalInt(oJugador, "DOY_ATAQUES");     //borra la variable
       RestoreBaseAttackBonus(oJugador);            //restaura los ataques
      }
  
   else    //sino tiene variable
      {
      SetBaseAttackBonus( 5, oJugador);            //da 5 ataques por turno 
      SetLocalInt(oJugador, "DOY_ATAQUES",1);      //da variable
      }
  
   }

si lo usas una vez, da los ataques, si lo vuelves a usar los quita.

Gracias Menem  y Zoraga, nos vemos en mis futuras dudas :thumb:


Editado por Rk.Sayan, 17 August 2019 - 01:42 AM.




Responder



  


A Bragol. Tus amigos te echan de menos.