20.11.2007, 19:26 | #11 |
Гость
Регистрация: 11.11.2007
Адрес: Санкт-Петербург
Сообщения: 25
Власть репутации: 0
|
Re: Вопрос: OnPlayerDying
Necrosis
Я не про это, я про отступы. Так. Скрипты написал. Логически - должны работать. На практике - событие модуля OnHeartbeat не выполняется в принципе. Ни разу. Вот скрипты: ek_lib01 Код:
string GetDyingString (object oCharacter) { string sDyingString = ""; int iGender = GetGender(oCharacter); int iAlignmentGE = GetAlignmentGoodEvil(oCharacter); int iAlignmentLC = GetAlignmentLawChaos(oCharacter); if (iGender == GENDER_MALE) { if (iAlignmentGE == ALIGNMENT_GOOD && iAlignmentLC == ALIGNMENT_LAWFUL) { sDyingString = "Вот и все... я... ухожу. Прощайте, друзья, прощайте..."; } if (iAlignmentGE == ALIGNMENT_GOOD && iAlignmentLC == ALIGNMENT_NEUTRAL) { sDyingString = ""; } if (iAlignmentGE == ALIGNMENT_GOOD && iAlignmentLC == ALIGNMENT_CHAOTIC) { sDyingString = ""; } if (iAlignmentGE == ALIGNMENT_NEUTRAL && iAlignmentLC == ALIGNMENT_LAWFUL) { sDyingString = ""; } if (iAlignmentGE == ALIGNMENT_NEUTRAL && iAlignmentLC == ALIGNMENT_NEUTRAL) { sDyingString = "Это конец."; } if (iAlignmentGE == ALIGNMENT_NEUTRAL && iAlignmentLC == ALIGNMENT_CHAOTIC) { sDyingString = ""; } if (iAlignmentGE == ALIGNMENT_EVIL && iAlignmentLC == ALIGNMENT_LAWFUL) { sDyingString = ""; } if (iAlignmentGE == ALIGNMENT_EVIL && iAlignmentLC == ALIGNMENT_NEUTRAL) { sDyingString = ""; } if (iAlignmentGE == ALIGNMENT_EVIL && iAlignmentLC == ALIGNMENT_CHAOTIC) { sDyingString = "Аргх! Проклятые твари! *кашель* Ну давайте! Подходите! Я перегрызу вам глотки!"; } } if (iGender == GENDER_FEMALE) { if (iAlignmentGE == ALIGNMENT_GOOD && iAlignmentLC == ALIGNMENT_LAWFUL) { sDyingString = ""; } if (iAlignmentGE == ALIGNMENT_GOOD && iAlignmentLC == ALIGNMENT_NEUTRAL) { sDyingString = ""; } if (iAlignmentGE == ALIGNMENT_GOOD && iAlignmentLC == ALIGNMENT_CHAOTIC) { sDyingString = ""; } if (iAlignmentGE == ALIGNMENT_NEUTRAL && iAlignmentLC == ALIGNMENT_LAWFUL) { sDyingString = ""; } if (iAlignmentGE == ALIGNMENT_NEUTRAL && iAlignmentLC == ALIGNMENT_NEUTRAL) { sDyingString = ""; } if (iAlignmentGE == ALIGNMENT_NEUTRAL && iAlignmentLC == ALIGNMENT_CHAOTIC) { sDyingString = ""; } if (iAlignmentGE == ALIGNMENT_EVIL && iAlignmentLC == ALIGNMENT_LAWFUL) { sDyingString = ""; } if (iAlignmentGE == ALIGNMENT_EVIL && iAlignmentLC == ALIGNMENT_NEUTRAL) { sDyingString = ""; } if (iAlignmentGE == ALIGNMENT_EVIL && iAlignmentLC == ALIGNMENT_CHAOTIC) { sDyingString = ""; } } return sDyingString; } Код:
#include "ek_lib01" void main() { object oPC = GetLastPlayerDying(); AssignCommand(oPC, ClearAllActions()); AssignCommand(oPC, SpeakString(GetDyingString(oPC))); AssignCommand(oPC, ActionPlayAnimation(ANIMATION_FIREFORGET_KNEELDEATH)); SetLocalInt(oPC, "iDying", 1); } Код:
void main() { object oPC = OBJECT_SELF; //========================== if (GetLocalInt(oPC, "iDying") == 1) { int iDamage = d3(2) - (GetAbilityScore(oPC, ABILITY_CONSTITUTION)-10)/2; effect eDeath = EffectDeath(TRUE, TRUE, TRUE, TRUE); effect eDamageOrHeal; string sDamageOrHeal; if(WillSave(oPC, d12()) == 0) { ApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oPC); } if(iDamage < 0) { iDamage = -iDamage; eDamageOrHeal = EffectHeal(iDamage); sDamageOrHeal = "*кашель*"; } if(iDamage >= 0) { eDamageOrHeal = EffectDamage(iDamage, DAMAGE_TYPE_ALL, DAMAGE_POWER_NORMAL, TRUE); sDamageOrHeal = "*стон*"; } ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamageOrHeal, oPC); AssignCommand(oPC, SpeakString(sDamageOrHeal)); if(GetCurrentHitPoints(oPC) <= -10) { ApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oPC); FloatingTextStringOnCreature ("Смерть", oPC); } } //========================== }
__________________
Истина там, во тьме, и во тьме ты иди - мыслящий бродит во тьме. В себя самого загляни, открой свою дорогу в Ничто. В Ничто ты войди, во тьму, и пойми: Пока ты во тьме, не может она быть Ничем - ведь там ты. |
|
|