Neverwinter Nights
Menú
Gamersmafia es ahora un archivo de solo lectura.

Pregunta de Hoy: Ke un enemigo herido hable

Lo dicho. Kiero ke, después de mampurrear un poco a un goblo, el desgraciao se suelte de la lengua y me cuente su vida amorosa, y donde se esconde la llave pa la puerta, jejeje. Os animo a todos a colaborar, así me haceis la vida un poco más facil, y os lo puedo agradecer (muxo morro es lo k yo tengo ) Imrishale N´her Orbdrin P.D. Explicación cientifica: Goblo al 100% de vida, me ataka. Goblo al 25% de vida, se acojona y me habla, cambiando su faccion a algo neutral a la mia. —-> esto por si no se me entiende muxo

Vamos a hacer algo de magia, movemos la varita y …..

[code:1:48191d470d]
int nMaxHP = GetMaxHitPoints();
int nCurrHP = GetCurrentHitPoints();

     // * generic surrender should only fire once

    if&#40;&#40;GetIsDead&#40;OBJECT_SELF&#41; == FALSE&#41; &amp;&amp; &#40;nCurrHP <= 30&#41; &amp;&amp; GetLocalInt&#40;OBJECT_SELF,&quot;Generic_Surrender&quot;&#41; == 0&#41;
    &#123;
        SetLocalInt&#40;OBJECT_SELF, &quot;Generic_Surrender&quot;,1&#41;;
        SurrenderToEnemies&#40;&#41;;
        ClearAllActions&#40;&#41;;
        SpeakOneLinerConversation&#40;&#41;;
        GiveXPToCreature&#40;GetNearestCreature&#40;CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC&#41;, 10 * FloatToInt&#40;GetChallengeRating&#40;OBJECT_SELF&#41;&#41;&#41;;
    &#125; [/code:1:48191d470d]

Bueno, me dejo de tonterias, la verdad es que no lo he escrito yo, si no mas bien lo he consultao de los modulos de la campaña oficial del NWN, vale ha sio cortar y pegar pero asi tambien se aprende…. ¿tu q me dices?

nCurrHP <= 30 —> supongo k si pongo 5, cuando keden 3 puntos de vida, el tio se me rendiría… en fin, gracias por el script, haber si rula. Lo k no entiendo es eso de dar experiencia al pnj… o es al pj?

Imrishale N´her Orbdrin

Ten cuidao q a lo mejor si pones q se rinda cuando le queden 5 puntejos de vida a ver si se te va a morir antes de q le de tiempo a hablar, no se tu pero mi personaje a base de hechizos va haciendo la burrada de daño, y los 5 puntejos creo q no los oleria.

GiveXPToCreature(GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC), 10 * FloatToInt(GetChallengeRating(OBJECT_SELF)));

Esta instruccion coge el rating de dificultad de la criatura q lanza este script, es decir el bicho con el q peleas, la multiplica por 10, y le da los puntos de experiencia a la criatura mas cercana q sea de tipo jugador.

La verdad no se si, en el caso de q halla mas PJ se los da a todos, creo q solo al q este mas cerca del bicho. Espero haberte servido de ayuda.

Haber. Acabo de probar este script pero no se ni donde ponerlo. Lo he puesto en UnDefinedUser, pero no he conseguido k mi maldito goblin se acojone y se me rinda. Solo kiere morir por una causa perdida

En los scripts de rendire, he visto 3, el nw_surrender, el nw_surrender1 y el 2. He trabajado con el nw_surrender, pero no he conseguido nada. Haber si alguien me hecha un cable con grua y remolque porfaplis. Danke ser.

Imrishale N´her Orbdrin

Pon exactamente este código, dentro del evento OnDamaged. Ademas te creas una conversacion pa tu bicho. Si ya tenias una conversacion pal bicho puedes añadir otra rama de conversacion a nivel del root de la conversacion q se active cuando la variable “Generic_Surrender” sea 1, y a la otra rama q tenias le pones q se active cuando “Generic_Surrender” sea 0.

[code:1:b2ecaf1f1e]
#include "NW_I0_GENERIC"

void main()
{
int nMaxHP = GetMaxHitPoints();
int nCurrHP = GetCurrentHitPoints();

// * generic surrender should only fire once

if&#40;&#40;GetIsDead&#40;OBJECT_SELF&#41; == FALSE&#41; &amp;&amp; &#40;nCurrHP <= 30&#41; &amp;&amp; GetLocalInt&#40;OBJECT_SELF,&quot;Generic_Surrender&quot;&#41; == 0&#41;
&#123;
SetLocalInt&#40;OBJECT_SELF, &quot;Generic_Surrender&quot;,1&#41;;
SurrenderToEnemies&#40;&#41;;
ClearAllActions&#40;&#41;;
SpeakString&#40;&quot;Me rindo no me mates por favor&quot;&#41;;
SpeakOneLinerConversation&#40;&#41;;
GiveXPToCreature&#40;GetNearestCreature&#40;CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC&#41;, 10 * FloatToInt&#40;GetChallengeRating&#40;OBJECT_SELF&#41;&#41;&#41;;
&#125;



if&#40;!GetFleeToExit&#40;&#41;&#41;
&#123;
    if&#40;!GetSpawnInCondition&#40;NW_FLAG_SET_WARNINGS&#41;&#41;
    &#123;
        if&#40;!GetIsObjectValid&#40;GetAttemptedAttackTarget&#40;&#41;&#41; &amp;&amp; !GetIsObjectValid&#40;GetAttemptedSpellTarget&#40;&#41;&#41;&#41;
        &#123;
            if&#40;GetBehaviorState&#40;NW_FLAG_BEHAVIOR_SPECIAL&#41;&#41;
            &#123;
                DetermineSpecialBehavior&#40;GetLastDamager&#40;&#41;&#41;;
            &#125;
            else if&#40;GetIsObjectValid&#40;GetLastDamager&#40;&#41;&#41;&#41;
            &#123;
                DetermineCombatRound&#40;&#41;;
                if&#40;!GetIsFighting&#40;OBJECT_SELF&#41;&#41;
                &#123;
                    object oTarget = GetLastDamager&#40;&#41;;
                    if&#40;!GetObjectSeen&#40;oTarget&#41; &amp;&amp; GetArea&#40;OBJECT_SELF&#41; == GetArea&#40;oTarget&#41;&#41;
                    &#123;
                        ActionMoveToLocation&#40;GetLocation&#40;oTarget&#41;, TRUE&#41;;
                        ActionDoCommand&#40;DetermineCombatRound&#40;&#41;&#41;;
                    &#125;
                &#125;
            &#125;
        &#125;
        else if &#40;!GetIsObjectValid&#40;GetAttemptedSpellTarget&#40;&#41;&#41;&#41;
        &#123;
            object oTarget = GetAttackTarget&#40;&#41;;
            if&#40;!GetIsObjectValid&#40;oTarget&#41;&#41;
            &#123;
                oTarget = GetAttemptedAttackTarget&#40;&#41;;
            &#125;
            object oAttacker = GetLastHostileActor&#40;&#41;;
            if &#40;GetIsObjectValid&#40;oAttacker&#41; &amp;&amp; oTarget != oAttacker &amp;&amp; GetIsEnemy&#40;oAttacker&#41; &amp;&amp;
               &#40;GetTotalDamageDealt&#40;&#41; > &#40;GetMaxHitPoints&#40;OBJECT_SELF&#41; / 4&#41; ||
                &#40;GetHitDice&#40;oAttacker&#41; - 2&#41; > GetHitDice&#40;oTarget&#41; &#41; &#41;
            &#123;
                DetermineCombatRound&#40;oAttacker&#41;;
            &#125;
        &#125;
    &#125;
&#125;
if&#40;GetSpawnInCondition&#40;NW_FLAG_DAMAGED_EVENT&#41;&#41;
&#123;
    SignalEvent&#40;OBJECT_SELF, EventUserDefined&#40;1006&#41;&#41;;
&#125; &#125; [/code:1:b2ecaf1f1e] Sustituye todo el codigo

Voy a probarlo ahora mismo. Muchas gracias por contestarme Un saludo.

Imrishale N´her Orbdrin

¿Alguien me podría explicar los post anteriores?

Es que quiero que un pnj hable, ataque, cuando esté herido hable y se vaya. Sé hacer que se vuelva hostil y que se vaya, pero no que pare a mitad de la pelea porque esté herido, y con los post anteriores no me enterado… es que no tengo mucha idea del scripting del NwN, y eso de los eventos y todo eso no lo acabo de entender.

Los más activos en Scripting