Bienvenue sur JeuxOnLine - MMO, MMORPG et MOBA !
Les sites de JeuxOnLine...
 

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

[Script] Soigner un personnage

Par Daynos le 14/10/2002 à 15:14:57 (#2333579)

Posté par Chaco :

Voici mon premier post sur le forum

Je n'ai pas testé le script (je suis à mon TAF), mais cela devrait fonctionner ; j'espère que cela aidera


//Script pour guérir un perso et lui redonner ses PV
//Il suffit de placer le script dans une conversation à ACTION TAKEN
//Exemple :
//PC : Pouvez-vous me guérir ?
//NPC : Oui ! (Action Taken : insérer le script après l'avoir nommé)

void main() {
object oSpeaker = GetPCSpeaker();
//Le PC recupère la totalité de ses points de vie
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(GetMaxHitPoints(oSpeaker)),oSpeaker);
//On vire éventuellement les maux dont est affecté le speaker
RemoveEffects(oSpeaker);
//SPELL_BLESS : Effet de sort de BLess à remplacer par ce que tu veux
//Cette fonction simule le sort, il n'a aucune conséquence
ActionCastFakeSpellAtObject(SPELL_BLESS, oSpeaker);
}

Posté par Nethaneel

Par Daynos le 14/10/2002 à 15:16:04 (#2333589)

Pour le script de guérison cela fonctionne. Le seul hic, c'est pour les statuts. Ben oui, le removeeffect, c pour un effet. Alors peut être le mieux c'est de créer une macro(un include) qui rassemble tous les effets en un, comme ça on appel cet unique effet dans la fonction. Sinon faut se taper les dizaines de maladies, de mal sorts, de ploymorphes....

Posté par Koryl

Par Daynos le 14/10/2002 à 15:17:09 (#2333597)

Pour la guérison, voici le script utilisé dans la campagne solo:



//::///////////////////////////////////////////////
//:: Temple Cast Heal
//:: NW_D1_TEMPLEHEAL.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Fakes the effects of a greater restorations spell on the PC and
any associates.
*/
//:://////////////////////////////////////////////
//:: Created By: Aidan
//:: Created On: May29,2002
//:://////////////////////////////////////////////
void FakeRestore(object oTarget);

void main()
{
object oPC = GetPCSpeaker();
object oHenchman = GetAssociate(ASSOCIATE_TYPE_HENCHMAN,oPC);
object oAnimal = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION,oPC);
object oFamiliar = GetAssociate(ASSOCIATE_TYPE_FAMILIAR,oPC);
object oDominated = GetAssociate(ASSOCIATE_TYPE_DOMINATED,oPC);
object oSummoned = GetAssociate(ASSOCIATE_TYPE_SUMMONED,oPC);
ActionPauseConversation();
ActionCastFakeSpellAtObject(SPELL_GREATER_RESTORATION, OBJECT_SELF);
ActionDoCommand(FakeRestore(oPC));
if(GetIsObjectValid(oHenchman))
{
ActionDoCommand(FakeRestore(oHenchman));
// checks to see if they have any cure crital wound potions; if not, creates it on them.
if (!GetIsObjectValid(GetItemPossessedBy(oHenchman,"NW_IT_MPOTION003")))
{
CreateItemOnObject("NW_IT_MPOTION003",oHenchman,3);
}
}
if(GetIsObjectValid(oAnimal))
{
ActionDoCommand(FakeRestore(oAnimal));
}
if(GetIsObjectValid(oFamiliar))
{
ActionDoCommand(FakeRestore(oFamiliar));
}
if(GetIsObjectValid(oDominated))
{
ActionDoCommand(FakeRestore(oDominated));
}
if(GetIsObjectValid(oSummoned))
{
ActionDoCommand(FakeRestore(oSummoned));
}
ActionResumeConversation();
}

void FakeRestore(object oTarget)
{
effect eVisual = EffectVisualEffect(VFX_IMP_RESTORATION_GREATER);

effect eBad = GetFirstEffect(oTarget);
//Search for negative effects
while(GetIsEffectValid(eBad))
{
if (GetEffectType(eBad) == EFFECT_TYPE_ABILITY_DECREASE ||
GetEffectType(eBad) == EFFECT_TYPE_AC_DECREASE ||
GetEffectType(eBad) == EFFECT_TYPE_ATTACK_DECREASE ||
GetEffectType(eBad) == EFFECT_TYPE_DAMAGE_DECREASE ||
GetEffectType(eBad) == EFFECT_TYPE_DAMAGE_IMMUNITY_DECREASE ||
GetEffectType(eBad) == EFFECT_TYPE_SAVING_THROW_DECREASE ||
GetEffectType(eBad) == EFFECT_TYPE_SPELL_RESISTANCE_DECREASE ||
GetEffectType(eBad) == EFFECT_TYPE_SKILL_DECREASE ||
GetEffectType(eBad) == EFFECT_TYPE_BLINDNESS ||
GetEffectType(eBad) == EFFECT_TYPE_DEAF ||
GetEffectType(eBad) == EFFECT_TYPE_CURSE ||
GetEffectType(eBad) == EFFECT_TYPE_DISEASE ||
GetEffectType(eBad) == EFFECT_TYPE_POISON ||
GetEffectType(eBad) == EFFECT_TYPE_PARALYZE ||
GetEffectType(eBad) == EFFECT_TYPE_NEGATIVELEVEL)
{
//Remove effect if it is negative.
RemoveEffect(oTarget, eBad);
}
eBad = GetNextEffect(oTarget);
}
if(GetRacialType(oTarget) != RACIAL_TYPE_UNDEAD)
{
//Apply the VFX impact and effects
int nHeal = GetMaxHitPoints(oTarget) - GetCurrentHitPoints(oTarget);
effect eHeal = EffectHeal(nHeal);
if (nHeal > 0)
ApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, oTarget);
}
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVisual, oTarget);


:cool:

Par Zariel le 22/1/2003 à 21:28:37 (#3079520)

Ces deux scripts ne marchent pas :( Ils ne se compilent pas du tout.

JOL Archives 1.0.1
@ JOL / JeuxOnLine