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

Script de subrazas


7 respuestas al tema

#1 egbertus

egbertus

    Humano

  • Miembro
  • Pip
  • 73 posts

Posteado 08 August 2012 - 02:41 PM

Bueno, no se mucho de scripts asi que os expongo mis dudas y a ver si me lo solucionais, esto es lo que quiero :) :

Las propiedades del vampiro son:

Raza: Muerto viviente

Inmunidad a ataque furtivo.
Inmunidad a conjuros enajenadores.
Inmunidad a consunción de nivel.
Inmunidad a enfermedad.
Inmunidad a golpes críticos.
Inmunidad a magia de muerte.
Inmunidad a parálisis.
Inmunidad a veneno.
Regeneración [5].
Inmunidad al daño aumentada: Ácido 80%
Inmunidad al daño aumentada: Frío 100%
Vulnerabilidad al daño reducida: Positivo 80%
Vulnerabilidad al daño reducida: Fuego 100%
Resistencia a expulsión: [4]

La única aptitud que tendría el vampiro sería que se convirtiese en niebla. Ah, y la mirada dominante.

Liche

Raza: Muerto viviente

Inmunidad a ataque furtivo.
Inmunidad a conjuros enajenadores.
Inmunidad a consunción de nivel.
Inmunidad a enfermedad.
Inmunidad a golpes críticos.
Inmunidad a magia de muerte.
Inmunidad a parálisis.
Inmunidad a veneno.
Inmunidad al daño aumentada: Eléctrico 100%
Inmunidad al daño aumentada: Frío 80%
Vulnerabilidad al daño: Ácido 100%
Vulnerabilidad al daño: Positivo 80%
Resistencia a expulsión: [6]
Reducción del daño: 1[absorver 15 de daño]

Las aptitudes de liche sería el aura de miedo, aura antinatural.

Cambiaformas

Raza: Cambiaformas

Reducción del daño: 7[Absorver 15 de daño)
Inmunidad al daño aumentada: Fuego 50%
Inmunidad al daño aumentada: Eléctrico 50%
Inmunidad al daño aumentada: Ácido 50%
Velocidad de movimiento aumentada 50%
Regeneración [3]

Aptitud: Queremos habilitar distintos licántropos... Rata, lobo, jabalí y gato. Lo que queremos es que tengan apariencia humana y tengan la posibilidad de transformarse, y ganen esos bonos. Si no, que tengan esos bonos de por sí y al transformarse sigan igual. La gracia está el transformarse...

Gracias por comprenderlo :).

Editado por egbertus, 08 August 2012 - 03:04 PM.


#2 Txibi

Txibi

    Antediluvian

  • Miembro DLAN
  • PipPipPipPipPip
  • 4647 posts

Posteado 08 August 2012 - 10:57 PM

Podría hacerse, pero tendrán niveles altos, mínimo nivel 7-10 de jugador para poder tener esos poderes en una piel.

#3 egbertus

egbertus

    Humano

  • Miembro
  • Pip
  • 73 posts

Posteado 09 August 2012 - 10:54 AM

a vale, pero....¿como se podria hacer?xD.

#4 Setaka

Setaka

    Ancillae

  • Miembro
  • PipPipPip
  • 370 posts

Posteado 17 August 2012 - 01:21 PM

Nunca he trasteado demasiado con los objetos "pieles", pero imagino que será:

- Creas el objeto "piel" con las propiedades que desees en la paleta.
- Por script, le dices que borre la "piel" actual del jugador, cree el item creado en su inventario, y que se lo equipe. El espacio de inventario de la "piel" (no visible en el juego) es el

INVENTORY_SLOT_CARMOUR.



Como dice Txibi, si tienes lo de nivel de objeto, será más difícil.

Según la nwnwikia:

http://nwn.wikia.com/wiki/Skin_item

"Furthermore, a PC's skin item will be destroyed upon entering a server if the server has either item level restrictions or enforce legal characters turned on."

Que significa que si tienes el server con restricción de nivel de objeto y lo de reforzar PJs legales, tendrás que crear otro script en el evento OnEnter del módulo para eliminar y añadir otra vez la "piel".

Editado por Setaka, 17 August 2012 - 01:21 PM.

Tutorial NWN Scripting: Click aquí


#5 Khan51

Khan51

    Neonato

  • Miembro
  • PipPip
  • 152 posts

Posteado 19 September 2017 - 07:36 PM

Se que este post es viejo, pero estaba buscando algo de este estilo. 

 

No son subrazas exactamente lo que queremos hacer, pero se parecen mucho. La idea es que la clase X al crearse el pj y entrar le salte una conversación y elija una de las opciones de pieles, esta se cree en su inventario y se equipe. 

 

Una vez hecho esto, en algunos niveles, esa piel se cambiaría. Se que tengo que modificar el OnPlayerLevelUp pero a partir de ahí llevo la picha hecha un lío. 

 

El problema es que hay 5 ramas de pieles y cada una de esas ramas tienes 5 pieles. La primera se gana a nivel 1 y es la que marca que rama has elegido, la segunda a nivel 3, tercera nivel 9, nivel 15 y nivel 20 las otras dos. 

 

Había pensado que cuando suba a esos niveles a la clase en cuestión le salte una conversación, pero supongo que habrá una manera más simple de hacerlo, pero a mi no se me ocurre. Si a alguno se le ocurre como hacer todo esto solo con el OnPlayerLevelUp y así evitar conversaciónes y varios scripts para que el pj elija la piel que le toca por rama y nivel, eternisimamente agradecido. 

 

Un saludo.


"La ignoracia convencida, no tiene remedio. . ."

 

Tierras Desoladas: Un servidor para NWN http://tierrasdesola...foroactivo.com/


#6 MenemDoIt

MenemDoIt

    Antediluvian

  • Miembro
  • PipPipPipPipPip
  • 1162 posts

Posteado 19 September 2017 - 09:00 PM

en el onplayerlevelup usas GetHitDice para saber el nivel del personaje, si por ejemplo GetHitDice es igual a 3, podes usar DestroyObject para eliminar el item que este en el slot de la piel ( la piel nivel 1 ), y despues creas una nueva piel en el mismo slot ( la piel nivel 3 ).

 

lo mismo con los niveles siguientes, metes varios if / else if nivel 3, 9, 15, 20...asi no necesitas usar conversaciones, excepto la inicial de nivel 1 para que el jugador elija la "subraza" que quiera.


10016077DS1515734551.gif


#7 Khan51

Khan51

    Neonato

  • Miembro
  • PipPip
  • 152 posts

Posteado 19 September 2017 - 09:14 PM

Vale, veo que es completamente factible. Voy a ver que sale :D 


"La ignoracia convencida, no tiene remedio. . ."

 

Tierras Desoladas: Un servidor para NWN http://tierrasdesola...foroactivo.com/


#8 Txibi

Txibi

    Antediluvian

  • Miembro DLAN
  • PipPipPipPipPip
  • 4647 posts

Posteado 21 September 2017 - 02:54 PM

Saludos.

 

Igual ya has solucionado, pero mira a ver si te sirve: http://perso.ya.com/...razas_Txibi.zip

 

En el script que testea la entrada, al final tendrás que crear algo parecido a este, pero en vez de chequear la subraza, chequeas la clase del jugador. En vez de usar string sSubRaza = GetSubRace(oJugador); deberas coger la clase, usando int GetLevelByClass(int nClassType, object oCreature=OBJECT_SELF). Donde nClassType es la clase y oCreature es el jugador.

 

void main()
{
    object oJugador = GetEnteringObject(); //Esta linea ya la tendras, las otras 2 no.
    string sSubRaza = GetSubRace(oJugador);
    int iNivel = GetHitDice(oJugador);
    //Reequipacion Nomuerto al entrar "desequipa" sus manos y dientes.... ntzs... nos riais.
    if ((sSubRaza == "Nomuerto") && (iNivel>6))
    {
        object oPielGhoul = CreateItemOnObject("tx_zombi_pj_1", oJugador,1);
        AssignCommand(oJugador, ActionEquipItem(oPielGhoul, INVENTORY_SLOT_CARMOUR));
        object oMordisco = GetItemInSlot(INVENTORY_SLOT_CWEAPON_B,oJugador);
        object oGarraIzquierda = GetItemInSlot(INVENTORY_SLOT_CWEAPON_L,oJugador);
        object oGarraDerecha = GetItemInSlot(INVENTORY_SLOT_CWEAPON_R,oJugador);
        DestroyObject(oMordisco);
        DestroyObject(oGarraIzquierda);
        DestroyObject(oGarraDerecha);
        if (IsInInventory(oJugador,"tx_zombi_pj_1_c"))
        {DestroyObject(GetObjectByTag("tx_zombi_pj_1_c"));}
        if (IsInInventory(oJugador,"tx_zombi_pj_1_b"))
        {DestroyObject(GetObjectByTag("tx_zombi_pj_1_b"));}
        if (IsInInventory(oJugador,"tx_zombi_pj_1_a"))
        {DestroyObject(GetObjectByTag("tx_zombi_pj_1_a"));}
        object oMordiscoGhoul = CreateItemOnObject("tx_zombi_pj_1_c", oJugador,1);
        object oGarraIzquierdaGhoul = CreateItemOnObject("tx_zombi_pj_1_b", oJugador,1);
        object oGarraDerechaGhoul = CreateItemOnObject("tx_zombi_pj_1_a", oJugador,1);
        AssignCommand(oJugador, ActionEquipItem(oMordiscoGhoul, INVENTORY_SLOT_CWEAPON_B));
        AssignCommand(oJugador, ActionEquipItem(oGarraIzquierdaGhoul, INVENTORY_SLOT_CWEAPON_L));
        AssignCommand(oJugador, ActionEquipItem(oGarraDerechaGhoul, INVENTORY_SLOT_CWEAPON_R));
    }
    if ((sSubRaza == "Nomuerto") && (iNivel<7))
    {
        object oPielGhoul = CreateItemOnObject("tx_pielzombipalo", GetPCSpeaker(),1);
        AssignCommand(oJugador, ActionEquipItem(oPielGhoul, INVENTORY_SLOT_CARMOUR));
    }
    //Fin de raza Nomuerto
    //----------------------------------------------------------------------
    //Subraza Trasgo
    if ((sSubRaza == "Trasgo") && (iNivel>6))
    {
        object oPielTrasgoide = CreateItemOnObject("tx_pieltrasgoide", oJugador,1);
        AssignCommand(oJugador, ActionEquipItem(oPielTrasgoide, INVENTORY_SLOT_CARMOUR));
    }
    if ((sSubRaza == "Trasgo") && (iNivel<7))
    {
        object oPiel = CreateItemOnObject("tx_piel", oJugador,1);
        AssignCommand(oJugador, ActionEquipItem(oPiel, INVENTORY_SLOT_CARMOUR));
    }
    //Fin de raza Trasgo
    //----------------------------------------------------------------------
    //Subraza Minotauro
    if ((sSubRaza == "Minotauro") && (iNivel>6))
    {
        object oPielMinotauro = CreateItemOnObject("tx_pielmino", oJugador,1);
        AssignCommand(oJugador, ActionEquipItem(oPielMinotauro, INVENTORY_SLOT_CARMOUR));
    }
    if ((sSubRaza == "Minotauro") && (iNivel<7))
    {
        object oPiel = CreateItemOnObject("tx_piel", oJugador,1);
        AssignCommand(oJugador, ActionEquipItem(oPiel, INVENTORY_SLOT_CARMOUR));
    }
    //Fin de raza Minotauro
    //----------------------------------------------------------------------
    //Subraza Ogro
    if ((sSubRaza == "Ogro") && (iNivel>6))
    {
        object oPielOgro = CreateItemOnObject("tx_pielogro", oJugador,1);
        AssignCommand(oJugador, ActionEquipItem(oPielOgro, INVENTORY_SLOT_CARMOUR));
    }
    if ((sSubRaza == "Ogro") && (iNivel<7))
    {
        object oPiel = CreateItemOnObject("tx_piel", oJugador,1);
        AssignCommand(oJugador, ActionEquipItem(oPiel, INVENTORY_SLOT_CARMOUR));
    }
    //Fin de raza Ogro
    //----------------------------------------------------------------------

}

     Y ya sólo es ir haciendo las combinaciones, ante de poner una piel nueva, asegurate de destruir la vieja con DestroyObject para la piel que tenga en INVENTORY_SLOT_CARMOUR, algo así:

    object oPiel = GetItemInSlot(INVENTORY_SLOT_CARMOUR,oJugador);
    DestroyObject(oPiel);

     Y de tener los pellejos listos y personalizados (Objetos de criaturas, Piel/pellejo). Pon objeto de trama e identificado.

 

 

    

 

T

 

 





Responder



  


A Bragol. Tus amigos te echan de menos.