Chimeric, убери галку "статик" !
QUOTE (Chimeric @ Oct 4 2005, 15:02) |
Во-вторых (самокритика продолжается) не знаю, как заставить камеру увеличить масштаб. То есть не в роликах, а просто по появлении персонажа в зоне. Пусть дальше игрок увеличивает и уменьшает, как хочет, но в начале - крупный план. Идея в том, чтобы он, каждый раз появляясь в одном и том же месте, постоянно натыкался на увеличенный вид статуи в двух шагах. В двух-то в двух, а увеличение какое было до перемещения между зонами, такое и остаётся. Как поправить? |
Neverwinter Script Source |
void main() { object oPC = GetEnteringObject(); AssignCommand(oPC, SetCameraFacing(30.0, 1.0, 40.0, CAMERA_TRANSITION_TYPE_SNAP)); } |
Neverwinter Script Source |
void main() { object oItem = GetModuleItemAcquired(); string sItemTag = GetTag(oItem); object oSpam = OBJECT_INVALID; if(sItemTag == "Таг брони")//Подняли броню { oSpam = GetObjectByTag("AShaft");//Луч, в котором лежит броня DestroyObject(oSpam); } if(sItemTag == "Таг меча")//Подняли меч { oSpam = GetObjectByTag("BShaft");//Луч, в котором лежит меч DestroyObject(oSpam); } if(sItemTag == "Таг шлема")//Подняли шлем { oSpam = GetObjectByTag("SShaft");//Луч, в котором лежит шлем DestroyObject(oSpam); } } |
Neverwinter Script Source |
//Это для брони, для шлема и меча меняешь таг уничтожаемого объекта void main { DestroyObject(GetObjectByTag("AShaft")); } |
Neverwinter Script Source |
void main() { object oItem = GetModuleItemAcquired(); string sItemTag = GetTag(oItem); object oSpam = OBJECT_INVALID; ExecuteScript("scr_" + sItemTag, OBJECT_SELF); } |
Neverwinter Script Source |
object oDstrObject = GetObjectByTag("AShaft"); ApplyEffectAtLocation(0, EffectVisualEffect(74), GetLocation(oDstrObject)); DelayCommand(1.0, ApplyEffectAtLocation(0, EffectVisualEffect(286), GetLocation(oDstrObject))); DelayCommand(2.0, DestroyObject(GetObjectByTag("AShaft"))); |
QUOTE (-fenix- @ Oct 4 2005, 17:37) |
Chimeric, убери галку "статик" ! |
CODE |
void main() { object oPC = GetLastPerceived(); if (!GetIsPC(oPC)) return; if (!GetLastPerceptionSeen()) return; ActionSpeakString("Áåäíûé Ìàðêî! ×òî îíè ñ íèì ñäåëàëè!"); ActionWait(10.0f); ActionSpeakString("À ìû òàê õîðîøî æèëè. Íî ÿ è Ïîëèêðàò íåìíîãî çàðàáàòûâàëè. Íå÷åãî óäèâëÿòüñÿ, ÷òî îí ñîáëàçíèëñÿ äåíüãàìè."); ActionWait(10.0f); ActionSpeakString(" ýòîì ìèðå ïîäëîñòè íåò ïðåäåëà."); ActionWait(10.0f); ActionSpeakString("Êîãäà îí áûë ìàëåíüêèì, òî âñåãäà ïîìîãàë ìíå ïî äîìó. Âñåãäà."); ActionWait(10.0f); ActionSpeakString("Êàê-òî îí óïîìÿíóë, ÷òî ïîçíàêîìèëñÿ ñ î÷åíü âàæíûì ÷åëîâåêîì, à ÿ, èäèîòêà, íå îáðàòèëà âíèìàíèÿ."); ActionWait(10.0f); ActionSpeakString("Õëîÿ ïðîñòî íå äàâàëà åìó ïðîõîäà."); |
CODE |
void main() { object oPC = GetEnteringObject(); if (!GetIsPC(oPC)) return; int DoOnce = GetLocalInt(OBJECT_SELF, GetTag(OBJECT_SELF)); if (DoOnce==TRUE) return; SetLocalInt(OBJECT_SELF, GetTag(OBJECT_SELF), TRUE); RewardPartyGP(200, oPC, FALSE); object oTarget; oTarget = GetObjectByTag("globe1"); //Visual effects can't be applied to waypoints, so if it is a WP //apply to the WP's location instead int nInt; nInt = GetObjectType(oTarget); if (nInt != OBJECT_TYPE_WAYPOINT) ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_DISPEL_GREATER), oTarget); else ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_DISPEL_GREATER), GetLocation(oTarget)); DestroyObject(oTarget, 3.0); FloatingTextStringOnCreature("200 çîëîòûõ", oPC); } |
QUOTE (Chimeric @ Oct 8 2005, 10:44) |
Это должно запускать на OnPerception. Человечек пишет над головой фразу, ждет время, пишет еще фразу и так далее. |
Neverwinter Script Source |
oTarget = GetObjectByTag("globe1"); |
Neverwinter Script Source |
void main() { if (GetCurrentHitPoints(OBJECT_SELF)< 4) { object oPC = GetAttackTarget(OBJECT_SELF); AssignCommand(OBJECT_SELF, ActionSpeakString("Ñòîé!")); AssignCommand(oPC, ClearAllActions(TRUE)); AssignCommand(OBJECT_SELF, ClearAllActions(TRUE)); ChangeToStandardFaction(OBJECT_SELF,STANDARD_FACTION_DEFENDER); AssignCommand(OBJECT_SELF,ActionStartConversation (oPC)); } } |
Neverwinter Script Source |
void main() { object oPC = GetLastAttacker(); object oNPC = OBJECT_SELF; int iNPC = GetUserDefinedEventNumber(); if(iNPC == 1006) { int iMaxHP = GetMaxHitPoints(); int iCurrHP = GetCurrentHitPoints(); if (GetLocalInt(OBJECT_SELF,"ZDES") == 0) if((iCurrHP * 3) <= iMaxHP && GetLocalInt(OBJECT_SELF,"Surrender") == 0) { AdjustReputation(OBJECT_SELF,oPC, 100); AdjustReputation(oPC,OBJECT_SELF, 100); SurrenderToEnemies(); AssignCommand(GetLastAttacker(), ClearAllActions()); SetLocalInt(OBJECT_SELF,"Surrender",1) ; SpeakOneLinerConversation(); DelayCommand(0.0,AssignCommand(oNPC, SpeakString("Ìîß íå õîòåòü äðàòñß"))); ActionWait(2.0); AssignCommand(oNPC, ActionStartConversation(oPC, "Òàã Äèàëîãà")); SetLocalInt(OBJECT_SELF,"ZDES",1); } } } |
QUOTE (Aiwan @ Oct 8 2005, 09:53) |
Любое действо может сбить акции. И он не скажет ничего кроме первых фраз. |
QUOTE (Chimeric @ Oct 8 2005, 23:04) |
Под "предметом" ты имеешь в виду любую вещь? У меня у самого триггера такой же tag, globe1. Поменять? Или это разные категории? |
QUOTE (Белатрис @ Oct 9 2005, 00:04) |
1. Как составить скрипт, что бы человек сидел на троне. |
CODE |
ActionSit(object oChair) |
CODE |
ActionMoveToObject(oChair); SpeakString("Here's my seat!"); ActionSit(oChair); |
CODE |
void main() { object oPC = GetEnteringObject(); if (!GetIsPC(oPC)) return; if (GetLocalInt(oPC, "marco")>= 6) { if (GetLocalInt(oPC, "statuestatus")== 0) { oTarget = GetObjectByTag("statue"); //Visual effects can't be applied to waypoints, so if it is a WP //apply to the WP's location instead nInt = GetObjectType(oTarget); if (nInt != OBJECT_TYPE_WAYPOINT) ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), oTarget); else ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), GetLocation(oTarget)); DestroyObject(oTarget, 3.0); oTarget = GetWaypointByTag("statuetag"); lTarget = GetLocation(oTarget); oSpawn = CreateObject(OBJECT_TYPE_PLACEABLE, "plc_statue2", lTarget); SetLocalInt(oPC, "statuestatus", 1); } } else { SetLocalInt(oPC, "statuestatus", 1); } } |
Neverwinter Script Source |
//Visual effects can't be applied to waypoints, so if it is a WP //apply to the WP's location instead // nInt = GetObjectType(oTarget); int nInt = GetObjectType(oTarget); // <---- проблема тут. Обязательно указывать тип переменной. if (nInt != OBJECT_TYPE_WAYPOINT) ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), oTarget); |
Neverwinter Script Source |
void main() { object oPC = GetEnteringObject(); if (!GetIsPC(oPC)) return; if (GetLocalInt(oPC, "marco")>= 6) { if (GetLocalInt(oPC, "statuestatus")== 0) { object oTarget = GetObjectByTag("statue"); int nInt = GetObjectType(oTarget); ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), GetLocation(oTarget)); // Это наверняка на локацию. DestroyObject(oTarget, 3.0); oTarget = GetWaypointByTag("statuetag"); location lTarget = GetLocation(oTarget); object oSpawn = CreateObject(OBJECT_TYPE_PLACEABLE, "plc_statue2", lTarget); SetLocalInt(oPC, "statuestatus", 1); } } else { SetLocalInt(oPC, "statuestatus", 1); // Это-то зачем? Получается, если не попадает в первое условие, предыдущие операторы никогда больше не сработают? } |
Neverwinter Script Source |
void main() { if(GetIsDay() && GetIsDawn() == TRUE) { PlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE); if(GetIsNight() && GetIsDusk() == TRUE) { object oSelf =GetObjectByTag("YYY_OIO_POIUN_1"); PlayAnimation(ANIMATION_PLACEABLE_ACTIVATE); effect eLight = EffectVisualEffect(VFX_DUR_LIGHT_YELLOW_10); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLight, oSelf); } } } |
QUOTE (NedWarN @ Oct 9 2005, 16:34) |
елы, скриптёры, помогите. Я в шоке, написал скриптик а он не пашет, кто разяснит в чём проблема. наОнХарб предметика. |
Neverwinter Script Source |
void main() { //Тут нужен не "&&" - как такое можеь быть? Нужно использовать "||" !! if(GetIsDay() && GetIsDawn() == TRUE) {// тут * PlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE); //Тут нужен не "&&" - как такое можеь быть? Нужно использовать "||" !! if(GetIsNight() && GetIsDusk() == TRUE) { object oSelf =GetObjectByTag("YYY_OIO_POIUN_1"); PlayAnimation(ANIMATION_PLACEABLE_ACTIVATE); effect eLight = EffectVisualEffect(VFX_DUR_LIGHT_YELLOW_10); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLight, oSelf); } }// и тут * } |
Neverwinter Script Source |
void main() { if(GetIsDay() || GetIsDawn()) { PlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE); } if(GetIsNight() || GetIsDusk()) { object oSelf =GetObjectByTag("YYY_OIO_POIUN_1"); PlayAnimation(ANIMATION_PLACEABLE_ACTIVATE); effect eLight = EffectVisualEffect(VFX_DUR_LIGHT_YELLOW_10); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLight, oSelf); } } |
Neverwinter Script Source |
SetPlaceableIllumination (OBJECT_SELF, FALSE); RecomputeStaticLighting (GetArea(OBJECT_SELF)); |
QUOTE (Белатрис @ Oct 9 2005, 03:04) |
Времени нет листать 63 страницы, так что не сердитесь если мои вопросы будут похоже на те что уже были заданы. |
QUOTE (Белатрис @ Oct 9 2005, 07:17) |
Lemegeton, спасибо. |
Neverwinter Script Source |
object oUbo = GetObjectByTag("AM_CUT2_UBO"); object oHalib = GetObjectByTag("AM_CUT2_HAL"); DelayCommand(17.0, AssignCommand(oHal, SpeakString("Фраза #1."))); DelayCommand(18.5, AssignCommand(oUbo, SpeakString("Фраза #2."))); DelayCommand(20.0, AssignCommand(oHal, SpeakString("Фраза #3"))); DelayCommand(22.0, AssignCommand(oHal, SpeakString("Фраза #4."))); |
QUOTE |
как запретить Respawn в сингле? |
CODE |
void main() { object oPC = GetLastUsedBy(); object oTarget = GetObjectByTag("hallwaysecretrope"); if (!GetIsPC(oPC)) return; if (GetAbilityScore(oPC, ABILITY_DEXTERITY)>= 13) { oTarget = GetWaypointByTag("shrine"); lTarget = GetLocation(oTarget); if (GetAreaFromLocation(lTarget)==OBJECT_INVALID) return; oTarget=GetFirstFactionMember(oPC, FALSE); while (GetIsObjectValid(oTarget)) { AssignCommand(oTarget, ClearAllActions()); AssignCommand(oTarget, ActionJumpToLocation(lTarget)); oTarget=GetNextFactionMember(oPC, FALSE); } } else { eEffect = EffectDamage(3, DAMAGE_TYPE_MAGICAL, DAMAGE_POWER_NORMAL); ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oPC); oTarget = oPC; nInt = GetObjectType(oTarget); if (nInt != OBJECT_TYPE_WAYPOINT) ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), oTarget); else ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), GetLocation(oTarget)); eEffect = EffectDazed(); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEffect, oTarget, 30.0f); AssignCommand(OBJECT_SELF, FadeToBlack(oPC, FADE_SPEED_MEDIUM)); AssignCommand(OBJECT_SELF, ActionWait(2.0)); AssignCommand(OBJECT_SELF, FadeFromBlack(oPC, FADE_SPEED_MEDIUM)); DelayCommand(3.0, FloatingTextStringOnCreature("Ëåãêàÿ ÷åðåïíî-ìîçãîâàÿ òðàâìà (èëè åå ìûñëåííûé ýêâèâàëåíò)", oPC)); } } |
Neverwinter Script Source |
void main() { object oPC = GetLastUsedBy(); object oTarget = GetObjectByTag("hallwaysecretrope"); if (!GetIsPC(oPC)) return; if (GetAbilityScore(oPC, ABILITY_DEXTERITY)>= 13) { oTarget = GetWaypointByTag("shrine"); location lTarget = GetLocation(oTarget); //!!! location if (GetAreaFromLocation(lTarget)==OBJECT_INVALID) return; oTarget=GetFirstFactionMember(oPC, FALSE); while (GetIsObjectValid(oTarget)) { AssignCommand(oTarget, ClearAllActions()); AssignCommand(oTarget, ActionJumpToLocation(lTarget)); oTarget=GetNextFactionMember(oPC, FALSE); }} else { effect eEffect = EffectDamage(3, DAMAGE_TYPE_MAGICAL, DAMAGE_POWER_NORMAL); //!!! effect ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oPC); oTarget = oPC; int nInt = GetObjectType(oTarget);//!!! int if (nInt != OBJECT_TYPE_WAYPOINT) ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), oTarget); else ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), GetLocation(oTarget)); eEffect = EffectDazed(); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEffect, oTarget, 30.0f); AssignCommand(OBJECT_SELF, FadeToBlack(oPC, FADE_SPEED_MEDIUM)); AssignCommand(OBJECT_SELF, ActionWait(2.0)); AssignCommand(OBJECT_SELF, FadeFromBlack(oPC, FADE_SPEED_MEDIUM)); DelayCommand(3.0, FloatingTextStringOnCreature("...", oPC)); } } |
QUOTE (Chimeric @ Oct 9 2005, 23:26) |
Как же все-таки заставить NPC бормотать фразы-линии? |
Neverwinter Script Source |
if (GetAILevel() == AI_LEVEL_VERY_LOW) return; |
QUOTE (Chimeric @ Oct 10 2005, 02:59) |
Падаем и ударяемся, но только - VARIABLE DEFINED WITHOUT TYPE. Те же грабли, черт! Никак я не догоню. Подсобите, люди. |
Neverwinter Script Source |
void main() { object oPC = GetFirstPC(); // Обрати внимание на слово object. Здесь указывается, что переменная oPC // содержит в себе объект (в данном случае, непосредственно первый игрок). location lPC = getLocation(oPC); // Обрати внимание на слово location. Здесь указывается, что переменная lPC // содержит в себе координаты (в данном случае - первого игрока). // В дальнейшем (в той же ф-ции!!!), указывать тип переменной не нужно. oPC = GetPCSpeaker(); // Не нужно указывать, т.к. тип переменной указан выше. ... } |
Neverwinter Script Source |
void main() { // Сначала можно заняться объявлением переменных, object oPC; location lPC; // а уж потом работой с ними (с их значениями): oPC = GetFirstPC(); lPC = GetLocation (oPC) oPC = GetPCSpeaker(); ... } |
QUOTE (Chimeric @ Oct 10 2005, 02:59) |
И еще вот странное дело: если я в линии c DelayCommand заменю текст на другой - на одно слово из моего собственного другого скрипта, то компилятор не жалуется, а с этой фразой почему-то выдает UNKNOWN STATE IN COMPILER. Не в длине же дело, всего-то одно предложение. ![]() |
CODE |
void main() { object oPC = GetLastUsedBy(); object oTarget = GetObjectByTag("hallwaysecretrope"); if (!GetIsPC(oPC)) return; if (GetAbilityScore(oPC, ABILITY_DEXTERITY)>= 13) { oTarget = GetWaypointByTag("shrine"); location lTarget = GetLocation(oTarget); if (GetAreaFromLocation(lTarget)==OBJECT_INVALID) return; oTarget=GetFirstFactionMember(oPC, FALSE); while (GetIsObjectValid(oTarget)) { AssignCommand(oTarget, ClearAllActions()); AssignCommand(oTarget, ActionJumpToLocation(lTarget)); oTarget=GetNextFactionMember(oPC, FALSE); }} else { effect eEffect = EffectDamage(3, DAMAGE_TYPE_MAGICAL, DAMAGE_POWER_NORMAL); ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oPC); oTarget = oPC; int nInt = GetObjectType(oTarget); if (nInt != OBJECT_TYPE_WAYPOINT) ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), oTarget); else ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), GetLocation(oTarget)); eEffect = EffectDazed(); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEffect, oTarget, 30.0f); AssignCommand(OBJECT_SELF, FadeToBlack(oPC, FADE_SPEED_MEDIUM)); AssignCommand(OBJECT_SELF, ActionWait(2.0)); AssignCommand(OBJECT_SELF, FadeFromBlack(oPC, FADE_SPEED_MEDIUM)); DelayCommand(3.0, FloatingTextStringOnCreature("1", oPC)); } } |
CODE |
void main() { object oPC = GetLastUsedBy(); object oTarget = GetObjectByTag("hallwaysecretrope"); if (!GetIsPC(oPC)) return; if (GetAbilityScore(oPC, ABILITY_DEXTERITY)>= 13) { oTarget = GetWaypointByTag("shrine"); location lTarget = GetLocation(oTarget); if (GetAreaFromLocation(lTarget)==OBJECT_INVALID) return; oTarget=GetFirstFactionMember(oPC, FALSE); while (GetIsObjectValid(oTarget)) { AssignCommand(oTarget, ClearAllActions()); AssignCommand(oTarget, ActionJumpToLocation(lTarget)); oTarget=GetNextFactionMember(oPC, FALSE); }} else { effect eEffect = EffectDamage(3, DAMAGE_TYPE_MAGICAL, DAMAGE_POWER_NORMAL); ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oPC); oTarget = oPC; int nInt = GetObjectType(oTarget); if (nInt != OBJECT_TYPE_WAYPOINT) ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), oTarget); else ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), GetLocation(oTarget)); eEffect = EffectDazed(); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEffect, oTarget, 30.0f); AssignCommand(OBJECT_SELF, FadeToBlack(oPC, FADE_SPEED_MEDIUM)); AssignCommand(OBJECT_SELF, ActionWait(2.0)); AssignCommand(OBJECT_SELF, FadeFromBlack(oPC, FADE_SPEED_MEDIUM)); DelayCommand(3.0, FloatingTextStringOnCreature("void main() { object oPC = GetLastUsedBy(); object oTarget = GetObjectByTag("hallwaysecretrope"); if (!GetIsPC(oPC)) return; if (GetAbilityScore(oPC, ABILITY_DEXTERITY)>= 13) { oTarget = GetWaypointByTag("shrine"); location lTarget = GetLocation(oTarget); if (GetAreaFromLocation(lTarget)==OBJECT_INVALID) return; oTarget=GetFirstFactionMember(oPC, FALSE); while (GetIsObjectValid(oTarget)) { AssignCommand(oTarget, ClearAllActions()); AssignCommand(oTarget, ActionJumpToLocation(lTarget)); oTarget=GetNextFactionMember(oPC, FALSE); }} else { effect eEffect = EffectDamage(3, DAMAGE_TYPE_MAGICAL, DAMAGE_POWER_NORMAL); ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oPC); oTarget = oPC; int nInt = GetObjectType(oTarget); if (nInt != OBJECT_TYPE_WAYPOINT) ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), oTarget); else ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), GetLocation(oTarget)); eEffect = EffectDazed(); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEffect, oTarget, 30.0f); AssignCommand(OBJECT_SELF, FadeToBlack(oPC, FADE_SPEED_MEDIUM)); AssignCommand(OBJECT_SELF, ActionWait(2.0)); AssignCommand(OBJECT_SELF, FadeFromBlack(oPC, FADE_SPEED_MEDIUM)); DelayCommand(3.0, FloatingTextStringOnCreature("Ëåãêàÿ ÷åðåïíî-ìîçãîâàÿ òðàâìà (èëè åå ìûñëåííûé ýêâèâàëåíò)", oPC)); } } |
CODE |
void EndGame( string sEndMovie ); |
Neverwinter Script Source |
void EndGame(string sEndMovie); |
Neverwinter Script Source |
void main() { string sEndMovie = "Игра окончена"; EndGame(sEndMovie); } |
Neverwinter Script Source |
object oPC = GetFirstPC(); AssignCommand(oPC, PlaySound("...")); |
QUOTE (Chimeric @ Oct 10 2005, 22:51) |
Фраза про то, что вы, дескать, грохнулись и ушиблись. Ничего особенного. Однако не компилируется. |
QUOTE | ||
ОТВЕТ
Для работы этой схемы необходимо, чтобы в модуле был waypoint с tagом "YA" и именем "я" -------------------------------------------------- в скриптах я делаю так: - пишу сначала весь тест, какой должен быть в скрипте с буквами я. - запускаю find and replace и меняю я на "+ya+" |
Neverwinter Script Source |
void main() { object oPC = GetEnteringObject(); if(!GetIsPC(oPC) && !GetIsDM(oPC)) return; location lLoc = GetLocation(oPC); object oDialog = CreateObject(OBJECT_TYPE_PLACEABLE, "Таг твоего объекта", lLoc); AssignCommand(oPC, ClearAllActions());//На всякий пожарный случай AssignCommand(oDialog, ActionStartConversation(oPC)); } |
CODE |
void main() { string ya = GetName(GetWaypointByTag("ya")); object oPC = GetLastUsedBy(); object oTarget = GetObjectByTag("hallwaysecretrope"); if (!GetIsPC(oPC)) return; if (GetAbilityScore(oPC, ABILITY_DEXTERITY)>= 15) { oTarget = GetWaypointByTag("shrine"); location lTarget = GetLocation(oTarget); if (GetAreaFromLocation(lTarget)==OBJECT_INVALID) return; oTarget=GetFirstFactionMember(oPC, FALSE); while (GetIsObjectValid(oTarget)) { AssignCommand(oTarget, ClearAllActions()); AssignCommand(oTarget, ActionJumpToLocation(lTarget)); oTarget=GetNextFactionMember(oPC, FALSE); }} else { effect eEffect = EffectDamage(3, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_NORMAL); ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oPC); oTarget = oPC; object oTarget; oTarget = oPC; int nInt = GetObjectType(oTarget); if (nInt != OBJECT_TYPE_WAYPOINT) ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), oTarget); else if (GetGender(oPC)==GENDER_MALE) { AssignCommand(oPC, PlaySound("vs_nbeggam2_hit2")); } else { AssignCommand(oPC, PlaySound("vs_nbeggam2_hit2")); } } ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), GetLocation(oTarget)); AssignCommand(OBJECT_SELF, FadeToBlack(oPC, FADE_SPEED_FAST)); oTarget = oPC; int nInt = GetObjectType(oTarget); nInt = GetObjectType(oTarget); AssignCommand(oPC, SetCameraFacing(30.0, 6.0, 40.0, CAMERA_TRANSITION_TYPE_SNAP)); eEffect = EffectDazed(); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEffect, oTarget, 30.0f); eEffect = EffectKnockdown(); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEffect, oTarget, 8.0f); AssignCommand(OBJECT_SELF, ActionWait(3.0)); AssignCommand(OBJECT_SELF, FadeFromBlack(oPC, FADE_SPEED_MEDIUM)); ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), GetLocation(oTarget)); DelayCommand(3.0, FloatingTextStringOnCreature("Ëåãêà"+ya+" ÷åðåïíî-ìîçãîâà"+ya+" òðàâìà (èëè åå ìûñëåííûé ýêâèâàëåíò)", oPC)); } |
Neverwinter Script Source |
void main() { string ya = GetName(GetWaypointByTag("ya")); object oPC = GetLastUsedBy(); object oTarget = GetObjectByTag("hallwaysecretrope"); if (!GetIsPC(oPC)) return; if (GetAbilityScore(oPC, ABILITY_DEXTERITY)>= 15) {oTarget = GetWaypointByTag("shrine"); location lTarget = GetLocation(oTarget); if (GetAreaFromLocation(lTarget)==OBJECT_INVALID) return; oTarget=GetFirstFactionMember(oPC, FALSE); while (GetIsObjectValid(oTarget)) {AssignCommand(oTarget, ClearAllActions()); AssignCommand(oTarget, ActionJumpToLocation(lTarget)); oTarget=GetNextFactionMember(oPC, FALSE);} } else {effect eEffect = EffectDamage(3, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_NORMAL); ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oPC); eEffect = EffectDazed(); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEffect, oTarget, 30.0f); eEffect = EffectKnockdown(); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEffect, oTarget, 8.0f); ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), GetLocation(oPC)); FadeToBlack(oPC, FADE_SPEED_FAST); AssignCommand(oPC, JumpToObject(GetWaypointByTag("ropefall"))); AssignCommand(oPC, SetCameraFacing(30.0, 6.0, 40.0, CAMERA_TRANSITION_TYPE_SNAP)); DelayCommand(3.0, FadeFromBlack(oPC, FADE_SPEED_MEDIUM)); if (GetGender(oPC)==GENDER_MALE) AssignCommand(oPC, PlaySound("vs_nbeggam2_hit2")); else AssignCommand(oPC, PlaySound("vs_nbeggam2_hit2")); DelayCommand(3.0, FloatingTextStringOnCreature("...", oPC)); } } |
Neverwinter Script Source |
object oTarget = GetObjectByTag("hallwaysecretrope"); ... object oTarget; |
QUOTE (Lemegeton @ Oct 10 2005, 18:59) |
Обрати внимание, что тип переменных должен задаваться один и только один раз в области действия переменной (внутри функции, в основном). |
Neverwinter Script Source |
object oTarget = GetObjectByTag("hallwaysecretrope"); if (!GetIsPC(oPC)) return; if (GetAbilityScore(oPC, ABILITY_DEXTERITY)>= 15) { oTarget = GetWaypointByTag("shrine"); |
CODE |
void main() { string ya = GetName(GetWaypointByTag("ya")); object oPC = GetLastUsedBy(); object oTarget = GetObjectByTag("hallwaysecretrope"); if (!GetIsPC(oPC)) return; if (GetAbilityScore(oPC, ABILITY_DEXTERITY)>= 15) |
Neverwinter Script Source |
void main() { string ya = GetName(GetWaypointByTag("ya")); object oPC = GetLastUsedBy(); object oTarget = GetObjectByTag("hallwaysecretrope"); if (!GetIsPC(oPC)) return; if (GetAbilityScore(oPC, ABILITY_DEXTERITY)>= 15) |
Neverwinter Script Source |
object oUbo = GetObjectByTag("AM_CUT2_UBO"); object oHalib = GetObjectByTag("AM_CUT2_HAL"); DelayCommand(17.0, AssignCommand(oHal, SpeakString("Фраза #1."))); DelayCommand(18.5, AssignCommand(oUbo, SpeakString("Фраза #2."))); DelayCommand(20.0, AssignCommand(oHal, SpeakString("Фраза #3"))); DelayCommand(22.0, AssignCommand(oHal, SpeakString("Фраза #4."))); |
QUOTE (Chimeric @ Oct 11 2005, 09:36) |
P.S. Скажите, а можно как-нибудь сделать NPC полупрозрачным? |
Neverwinter Script Source |
object oPC = OBJECT_SELF; // Либо как-нибудь по-другому ![]() // Создаем экстраординарный эффект (его нельзя расколдовать) effect eGhost = ExtraordinaryEffect(EffectVisualEffect(VFX_DUR_GHOSTLY_VISAGE)); // Можно попробовать другие константы: // VFX_DUR_GHOSTLY_PULSE // VFX_DUR_GHOST_TRANSPARENT // Накладываем эффект навсегда ApplyEffectToObject(DURATION_TYPE_PERMANENT, eGhost, oPC, 0.0f); |
QUOTE (Chimeric @ Oct 11 2005, 09:36) |
P.P.S. Зависит ли способность говорить у NPC от AppearanceType? Я поставил одно существо, внешне монструозное, но вообще-то в ним можно нормально потолковать. Отключил агрессивность и поменял подходящие параметры, но вот уже который набор голосовых реплик для него тасую, а он так и не говорит "привет". И если нападаешь на него - дерется, а молчит. Я вроде бы уже и полные наборы беру, где есть звуки для приветствий, ну а "Я тебя закопаю!" и т.п. и вовсе присутствуют в каждом. Непонятно. |
QUOTE (Chimeric @ Oct 11 2005, 09:36) |
Учитывая спешку, помогите, пожалуйста, еще вот с этим. Вопрос все тот же: нужно, чтобы NPC говорили линии с интервалом в несколько секунд, и закольцевать все это дело, чтобы крутилось. Вот предложенный Айваном вариант: |
Neverwinter Script Source |
void main() { int nEvent = GetUserDefinedEventNumber(); if (nEvent == 1002) // Проверяем на OnPerception { // Проверка на видимость. if (GetLastPerceptionSeen()) // Если увидел, GetLocalInt(OBJECT_SELF, "Whisper", 1) // говорить. else if (GetLastPerceptionVanished()) // Если исчез GetLocalInt(OBJECT_SELF, "Whisper", 0) // молчать. } else if (nEvent == 1001) // Проверяем на Heartbeat { if (GetLocalInt(OBJECT_SELF, "Whisper") // Проверяем лок. переменную { int iSpk = GetLocalInt(OBJECT_SELF, "sturn"); switch (iSpk) { case 0: SpeakString("О, горе мне!"); break; case 1: SpeakString("Позор на мои седины..."); break; case 2: SpeakString("Бедный я, бедный..."); break; case 3: SpeakString("Я проклят всеми..."); break; default: // Если не попадает в одно из условий, обнуляем. ![]() iSpk = -1; // Ставим равным -1, поскольку после switch'а увеличим на 1 break; }; SetLocalInt(OBJECT_SELF, "sturn", iSpk+1); } } } |
Neverwinter Script Source |
void main() { string ya = GetName(GetWaypointByTag("ya")); string Yac = GetName(GetWaypointByTag("yac")); int nEvent = GetUserDefinedEventNumber(); if (nEvent == 1002) { if (GetLastPerceptionSeen()) GetLocalInt(OBJECT_SELF, "Whisper", 1) else if (GetLastPerceptionVanished()) GetLocalInt(OBJECT_SELF, "Whisper", 0) } else if (nEvent == 1001) { if (GetLocalInt(OBJECT_SELF, "Whisper") { int iSpk = GetLocalInt(OBJECT_SELF, "chloe"); switch (iSpk) { case 0: SpeakString("Ia?caaao! Ii i?aaii?ae iieo?eou ii? a nieio, ?ai iioaeiaaou iai"+ya+"."); break; case 1: SpeakString("Noieuei eao aie?oa aa ieiei."); break; case 2: SpeakString("Eaeeenoa aii"+ya+"ea ian iaieo aac eiioa ca i?iaoeoaie ia Iiaue ?uiie, eae au iie n Iieee?aoii oi?aaeeenu a eaaea aac ian?"); break; case 3: SpeakString("Aio i?eoiaeeinu ?eoaou o?uaeaie."); break; case 4: SpeakString("+yac+" ana-oaee aiaeeanu io iaai eieuoa e ee"+ya+"oau a O?aia E?ieee. Eae ?ac ca o?e ai"+ya+" ai yoiai o?ana."); break; case 5: SpeakString("+yac+" neacaea aio, ?oi oi?o nia?aea iaeu?eea, a iioii aaai?eo."); break; default: iSpk = -1; break; }; SetLocalInt(OBJECT_SELF, "chloe", iSpk+1); } } } |