Level 10
  
Класс: Воин
Характер: Lawful Neutral
Раса: Человек
NWN: Скриптинг [PW]

|
LEX: Ты бы описал в общих чертах, что эти скрипты делают. Описываю: Если Хит поинты игрока < 0 >-11 то он падает наземь.корчится, кричит и у него отнимаются хит поинты. Если его не успеют вылечить - он умрет. А когда умрет - станет призраком и перенесется в фугу. А еще экран гаснет...ну вроде как: В глазах потемнело.
За основу взят скрипт Tarre
OnPlayerDying Neverwinter Script Source | void bleed(int iBleedAmt) {
effect eShake=EffectVisualEffect(VFX_FNF_SCREEN_SHAKE); effect eBleedEff; if (GetCurrentHitPoints() <= 0) { if (iBleedAmt > 0) { eBleedEff = EffectDamage(iBleedAmt); } else { eBleedEff = EffectDamage(iBleedAmt); } ApplyEffectToObject(DURATION_TYPE_INSTANT, eBleedEff, OBJECT_SELF); if (GetCurrentHitPoints() <= -10) { PlayVoiceChat(VOICE_CHAT_DEATH); ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(), OBJECT_SELF); return; }
if (iBleedAmt > 0) { if (d10(1) == 1) { iBleedAmt = -iBleedAmt; } else { switch (d6()) { case 1: PlayVoiceChat(VOICE_CHAT_PAIN1); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eShake,OBJECT_SELF,10.0); DelayCommand(1.5,FadeToBlack(OBJECT_SELF)); BlackScreen(OBJECT_SELF); DelayCommand(3.0, FadeFromBlack(OBJECT_SELF,FADE_SPEED_SLOWEST)); break; case 2: PlayVoiceChat(VOICE_CHAT_PAIN2); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eShake,OBJECT_SELF,10.0); DelayCommand(1.5,FadeToBlack(OBJECT_SELF,FADE_SPEED_SLOWEST)); BlackScreen(OBJECT_SELF); DelayCommand(3.0, FadeFromBlack(OBJECT_SELF,FADE_SPEED_SLOWEST)); break; case 3: PlayVoiceChat(VOICE_CHAT_PAIN3); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eShake,OBJECT_SELF,10.0); DelayCommand(1.5,FadeToBlack(OBJECT_SELF,FADE_SPEED_SLOWEST)); BlackScreen(OBJECT_SELF); DelayCommand(3.0, FadeFromBlack(OBJECT_SELF,FADE_SPEED_SLOWEST)); break; case 4: PlayVoiceChat(VOICE_CHAT_HEALME); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eShake,OBJECT_SELF,10.0); DelayCommand(1.5,FadeToBlack(OBJECT_SELF,FADE_SPEED_SLOWEST)); BlackScreen(OBJECT_SELF); DelayCommand(3.0, FadeFromBlack(OBJECT_SELF,FADE_SPEED_SLOWEST)); break; case 5: PlayVoiceChat(VOICE_CHAT_NEARDEATH); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eShake,OBJECT_SELF,10.0); DelayCommand(1.5,FadeToBlack(OBJECT_SELF,FADE_SPEED_SLOWEST)); BlackScreen(OBJECT_SELF); DelayCommand(3.0, FadeFromBlack(OBJECT_SELF,FADE_SPEED_SLOWEST)); break; case 6: PlayVoiceChat(VOICE_CHAT_HELP); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eShake,OBJECT_SELF,10.0); DelayCommand(1.5,FadeToBlack(OBJECT_SELF,FADE_SPEED_SLOWEST)); BlackScreen(OBJECT_SELF); DelayCommand(3.0, FadeFromBlack(OBJECT_SELF,FADE_SPEED_SLOWEST));
} } } DelayCommand(6.0,bleed(iBleedAmt)); } {
} } void main() { effect eBlood=EffectVisualEffect(VFX_COM_CHUNK_RED_MEDIUM); object oDying = GetLastPlayerDying(); object oEnemy = GetLastAttacker(); float fWho = (GetFacing(oEnemy)); ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eBlood, GetLocation(oDying), 10.0); AssignCommand(oDying, ClearAllActions()); AssignCommand(oDying, bleed(1)); CreateObject(OBJECT_TYPE_PLACEABLE,"bloody",GetLocation(oDying),TRUE);
} |
"bloody" - синька с кровью. З.Ы. Tarre там с Object_Type перепутал кажется(IMG: style_emoticons/kolobok_light/smile.gif) Далее OnPlayerDeath Neverwinter Script Source | void main() { object oPlayer = GetLastPlayerDied(); ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_DEATH), GetLocation(oPlayer)); ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_DUR_GHOSTLY_VISAGE), oPlayer); //превращается уже тут в призрака, и в фуге появляется как душа. ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectVisualEffect(VFX_DUR_PROTECTION_GOOD_MAJOR), oPlayer,6.0); DelayCommand(2.0,FadeToBlack(oPlayer)); DelayCommand(5.0,BlackScreen(oPlayer));
DelayCommand(5.5,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectResurrection(),oPlayer)); DelayCommand(5.8,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(GetMaxHitPoints(oPlayer)), oPlayer)); DelayCommand(6.0,AssignCommand(oPlayer,ClearAllActions())); DelayCommand(6.2,AssignCommand(oPlayer,JumpToLocation(GetLocation(GetObjectByTag("WP_RAISE"))))); } |
WP_RAISE - вейпоинт в фуге
И еще в локации фуги - куда перемещается мертвый игрок OnEnter
Neverwinter Script Source | void main() { object oPC = GetEnteringObject(); DelayCommand(2.0,FadeFromBlack(oPC,FADE_SPEED_SLOWEST)); } |
|