у меня вот такий скрипт на OnPlayerDeath
CODE | void main() { object oPlayer = GetLastPlayerDied(); ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_DEATH), GetLocation(oPlayer));
DelayCommand(6.0,AssignCommand(oPlayer,ClearAllActions())); DelayCommand(2.5, PopUpGUIPanel(oPlayer,GUI_PANEL_PLAYER_DEATH)); } |
Чтобы всплывало окошко нужна например такая строка
CODE | DelayCommand(2.5, PopUpGUIPanel(oPlayer,GUI_PANEL_PLAYER_DEATH)); |
А для снятия экспы можно использовать этот стандартный скрипт :yes:
CODE | #include "nw_i0_plot" void ApplyPenalty(object oDead) { int nXP = GetXP(oDead); int nPenalty = 100 * GetHitDice(oDead); int nHD = GetHitDice(oDead); // * You can not lose a level with this respawning int nMin = ((nHD * (nHD - 1)) / 2) * 1000;
int nNewXP = nXP - nPenalty; if (nNewXP < nMin) nNewXP = nMin; SetXP(oDead, nNewXP); int nGoldToTake = FloatToInt(0.10 * GetGold(oDead)); // * a cap of 10 000gp taken from you if (nGoldToTake > 10000) { nGoldToTake = 10000; } AssignCommand(oDead, TakeGoldFromCreature(nGoldToTake, oDead, TRUE)); DelayCommand(4.0, FloatingTextStrRefOnCreature(58299, oDead, FALSE)); DelayCommand(4.8, FloatingTextStrRefOnCreature(58300, oDead, FALSE));
} void main() { object oRespawner = GetLastRespawnButtonPresser(); AssignCommand(oRespawner,JumpToLocation(GetLocation(GetObjectByTag("WP_RAISE")))); ApplyPenalty(oRespawner); ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectResurrection(),oRespawner); ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(GetMaxHitPoints(oRespawner)), oRespawner); RemoveEffects(oRespawner); } |
Я его немножко изменил...не знаю насколько хорошо, но все пашет :good:
Сообщение отредактировал Лито - Nov 22 2004, 10:53
|