curar a los moribundos
| Buenas como estais, bueno ise un scrip para que un clerigo cure a los heridos pero no los cura a pesar de que el scrip esta copilado mirar este es el scrip me podrian decir cual es el fallo y correjir el scrip porfavor. [code:1:7b7f028cf0] void FakeRestore(object oTarget); void main() { object oPC = GetPCSpeaker(); 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); } [/code:1:7b7f028cf0] desde ya os doy las gracias. |
Activos en NWN
Los más activos en Scripting
Subforos
Neverwinter Nights
Puedes utilizar el script que aparece en la campaña oficial para que Aribeth cure al PJ.
nw_d1_templeheal
Dos comentarios… nada más… si lo hicistes tu… ya me explicarás porqué lo pones en inglés, y porqué está perfectamente escrito si luego sigues escribiendo fatal
Además, es un script algo avanzado, y si como decías no sabías scriptear una silla… pero weno, eso no es de me incumbencia. Cada cual con su rollo, aunque se lo intente
Si, te aconsejamos que utilices el scripte ke te comenta el amigo Viko.
Ese es el script es de bioware
, y no funciona por que supongo que has intentado cambiar algo, y te faltan cosillas.
Cuando llegue del currele pa papear le echo un ojo y te lo corrigo
Pues si el scrips yo no lo hice lo coji d epor alli pero le añadi un par de cosas pero no funciona, asi que si me echais una manito please.
[code:1:e7425d004c]
void FakeRestore(object oTarget);
void main()
{
// object oPC = GetPCSpeaker(); // Descomentar para ser usado en una conversacion.
// object oPC = GetEnteringObject(); // Descomentar para ser usado en el OnEnter de un Trigger o Area.
// object oPC = GetLastUsedBy(); // Descomentar para ser usado en el OnUsed de un placeable.
FakeRestore(oPC);
}
void FakeRestore(object oTarget)
{
effect eVisual = EffectVisualEffect(VFX_IMP_RESTORATION_GREATER);
effect eBad = GetFirstEffect(oTarget);
//Busca los efectos negativos.
while((GetIsEffectValid(eBad)) && (GetRacialType(oTarget) != RACIAL_TYPE_UNDEAD)) // Me permitido el lujo de añadirte que si es No-Muerto tampoco restaure sus efectos negativos.
{
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)
{
//Quita el efecto negativo.
RemoveEffect(oTarget, eBad);
}
eBad = GetNextEffect(oTarget);
}
// Mira que el objetivo no sea un No-Muerto.
if(GetRacialType(oTarget) != RACIAL_TYPE_UNDEAD)
{
//Aplica el VFX y los efectos curativos.
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);
}
[/code:1:e7425d004c]
No te funcionaba por que el cuerpo del script, osea el void main te lo habias cargado, es mas estoy seguro que ni se te compilaria.
Te añadi una condicion en el while, para que si el objetivo es No-Muerto, no se los anule.
Tambien te comente tres frases en el void main, para que eligas cual usar descomentandola ([b:e7425d004c]borrando el // que tiene delante[/b:e7425d004c]).
Gonar eres mi angel de la guarda si no fuese hombre me casaria contigo jejejejeje………………..ultimo favor gonar me podrias decir como debo hacer para que el pj cure con la animacion (todo eso de mover las manos y que la bola de curacion se cree en el centro ¡de tus manos) creo que tengo que agregarle al scrip que me diste un playanimation pero no se cual animacion es….y ya si no es mucho pedir haber si me ayudais con los scrips de la pelea de perros que lo publique hace buen tiempo y me dijeron que le echarian un vistazo es pa que los perros se peguen y tu apuestes por uno de ellos y que si gana tu perro recivas el dinero de la apuesta bueno gracias tio te deo una.
Adios
Hola.
Por favor esq soy novato en esto de Scrip y querria q pusieseis el Scrip bien puesto no con cosas q aya q poner por q yo de eso no tengo ni idea.Esq lo querria poner en mi modulo pa q un PNJ cure a los PJ .Gracias y si me podeis poner los dos Scrip uno de curacion normal y otro de curacion con animaciones seria ya lo mejorcito q podriais hace.Gracias
Saludos!!!
Si no te quieres complicar la vida, utiliza el script que puse mas arriba.
Solo tienes que ponerlo en acciones emprendidas en la linea de dialogo del PNJ.