Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > Script de prison, nouvelle Ă©dition
Script de prison, nouvelle Ă©dition
Par Elmo le 16/2/2003 Ă 20:03:39 (#3250008)
#include "NW_I0_GENERIC"
//::///////////////////////////////////////////////
//:: Name EN TAULE!
//:: FileName
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/* Ce script est a mettre dans ele OnDamaged d'une creature
Pour que son agresseur soit teleporte en prison.
*/
//:://////////////////////////////////////////////
//:: Created By: Elmo, eMRaistlin et Coolstar
//:: Created On: 10/01/2003
//:://////////////////////////////////////////////
void main()
{
if (!GetFleeToExit())
{
if (!GetSpawnInCondition (NW_FLAG_SET_WARNINGS))
{
if (!GetIsObjectValid (GetAttemptedAttackTarget ()) && (!GetIsObjectValid (GetAttemptedSpellTarget ())))
{
if (GetBehaviorState (NW_FLAG_BEHAVIOR_SPECIAL))
{
DetermineSpecialBehavior (GetLastDamager ());
}
else if (GetIsObjectValid (GetLastDamager ()))
{
DetermineCombatRound ();
if (!GetIsFighting (OBJECT_SELF))
{
object oTarget = GetLastDamager();
if (!GetObjectSeen(oTarget) && GetArea (OBJECT_SELF) == GetArea(oTarget))
{
ActionMoveToLocation (GetLocation (oTarget), TRUE);
ActionDoCommand (DetermineCombatRound ());
}
}
}
}
else if (!GetIsObjectValid (GetAttemptedSpellTarget ()))
{
object oTarget = GetAttackTarget();
object oAttacker = GetLastHostileActor();
if (GetIsObjectValid(oAttacker) && oTarget != oAttacker && GetIsEnemy(oAttacker) &&(GetTotalDamageDealt() > (GetMaxHitPoints(OBJECT_SELF) / 4) ||(GetHitDice(oAttacker) - 2) > GetHitDice(oTarget) ) )
{
DetermineCombatRound (oAttacker);
}
}
}
}
if (GetSpawnInCondition (NW_FLAG_DAMAGED_EVENT))
{
SignalEvent (OBJECT_SELF, EventUserDefined (1006));
}
object oPC = GetLastDamager();
int iPC = GetIsPC(oPC);
if (iPC)
{
string sTagWP;
int iRandom = Random(9); //ici tu changes le 9 en nombre de waypoints total que tu as dans ta prison.
switch (iRandom)
//ici tu dois mets tes lignes pour les cellules ATTENTION: le 0 compte donc si tu as 9 cellule tu vas jusqu'a huit en commenant par 0
{
case 0: sTagWP = "wp_taule1"; break;
case 1: sTagWP = "wp_taule2"; break;
case 2: sTagWP = "wp_taule3"; break;
case 3: sTagWP = "wp_taule4"; break;
case 4: sTagWP = "wp_taule5"; break;
case 5: sTagWP = "wp_taule6"; break;
case 6: sTagWP = "wp_taule7"; break;
case 7: sTagWP = "wp_taule8"; break;
case 8: sTagWP = "wp_taule9"; break;
}
int nDurationType = DURATION_TYPE_TEMPORARY;
object oTarget = GetObjectByTag(sTagWP);
DelayCommand(1.5, SpeakString("Allez hop, au trou!"));
DelayCommand(2.0, AssignCommand(oPC, JumpToObject(oTarget)));
}
}
je trouve un peu brinqueballant de directement téléporter le joueur en taule, pas très RP j'avais pensé mettre un Clearallactions suivi d'un EffectKnockDown, mais quand je les ai ajouté dans la suite de delay command, le PJ restait comme une andouille à terre sans etre téléporté, ou l'inverse il étéait téléporté et ne tombait pas KO si quelqu'un à une idée ça serait cool
Par caarheim le 16/2/2003 Ă 21:13:46 (#3250434)
Des elfes assoment et emene le corps dans une autre zone !
Par RAT le 16/2/2003 Ă 23:15:31 (#3250992)
Mais pour l'instant ce n'est qu'un projet. Par contre cela sera très RP.:)
JOL Archives 1.0.1
@ JOL / JeuxOnLine