Верно скрипт на локацыю, и не невидемым а примерно призрочное лицо
Добавлено в [mergetime]1107432927[/mergetime]
QUOTE |
object oNPC=GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR,PLAYER_CHAR_NOT_PC,oPC,1, CREATURE_TYPE_PLAYER_CHAR,PLAYER_CHAR_NOT_PC, CREATURE_TYPE_PLAYER_CHAR,PLAYER_CHAR_NOT_PC); |
Neverwinter Script Source |
object oPC=GetEnteringObject(); |
Neverwinter Script Source |
void main() { object oPC = GetEnteringObject(); object oTarget1 = GetWaypointByTag("WP_ELF"); object oTarget2 = GetWaypointByTag("WP_ORC"); object oTarget3 = GetWaypointByTag("WP_DARK_ELF"); if (GetRacialType(oPC) == RACIAL_TYPE_ELF) AssignCommand(oPC, JumpToObject(oTarget1)); if (GetRacialType(oPC) == RACIAL_TYPE_HUMANOID_ORC) AssignCommand(oPC, JumpToObject(oTarget2)); //наверное через проверку субрасы, но... if (GetSubRace(oPC) == "DARK_ELF") //С этим не работал. Если у тебя есть раса дроу, то ставь ее AssignCommand(oPC, JumpToObject(oTarget3)); if (GetRacialType(oPC) == RACIAL_TYPE_HUMAN) if (GetAlignmentGoodEvil(oPC) == ALIGNMENT_GOOD) AssignCommand(oPC, JumpToObject(oTarget1)); if (GetAlignmentGoodEvil(oPC) == ALIGNMENT_EVIL) AssignCommand(oPC, JumpToObject(oTarget2)); if (GetAlignmentGoodEvil(oPC) == ALIGNMENT_NEUTRAL) AssignCommand(oPC, JumpToObject(oTarget3)); } |
Neverwinter Script Source |
void main() { object oPC = GetEnteringObject(); object oTarget1 = GetWaypointByTag("WP_ELF"); object oTarget2 = GetWaypointByTag("WP_ORC"); object oTarget3 = GetWaypointByTag("WP_DARK_ELF"); object oDist; if (GetRacialType(oPC) == RACIAL_TYPE_ELF) {oDist = oTarget1;} if (GetRacialType(oPC) == RACIAL_TYPE_HUMANOID_ORC) {oDist = oTarget2;} if (GetSubRace(oPC) == "DARK_ELF") {oDist = oTarget3;} if (GetAlignmentGoodEvil(oPC) == ALIGNMENT_GOOD) {oDist = oTarget1;} if (GetAlignmentGoodEvil(oPC) == ALIGNMENT_EVIL) {oDist = oTarget2;} if (GetAlignmentGoodEvil(oPC) == ALIGNMENT_NEUTRAL) {oDist = oTarget3;} AssignCommand(oPC, ClearAllActions()); AssignCommand(oPC, JumpToObject(oDist)); } |
QUOTE (baskan @ Feb 4 2005, 17:57) |
...если входит эльф кидало в одну точку, если орк в другую, если Дроу то в третью, а если человек то нетрала в одну, гуда в другую, ивела в третью. |
Neverwinter Script Source |
void JUMP(object oPC, object oPoint) { AssignCommand(oPC, ClearAllActions()); AssignCommand(oPC, JumpToObject(oPoint)); { void main() { object oPC = GetEnteringObject(); object oTarget3 = GetWaypointByTag("WP_DARK_ELF"); if (GetRacialType(oPC) == RACIAL_TYPE_ELF) { JUMP(oPC,GetWaypointByTag("WP_ELF")); return; } if (GetRacialType(oPC) == RACIAL_TYPE_HUMANOID_ORC) { JUMP(oPC,GetWaypointByTag("WP_ORC")); return; } if (GetSubRace(oPC) == "DARK_ELF") { JUMP(oPC,GetWaypointByTag("WP_DROW")); return; } if (GetRacialType(oPC) != RACIAL_TYPE_HUMAN) return; if (GetAlignmentGoodEvil(oPC) == ALIGNMENT_GOOD) { JUMP(oPC,GetWaypointByTag("WP_HUMAN_GOOD")); return; } if (GetAlignmentGoodEvil(oPC) == ALIGNMENT_EVIL) { JUMP(oPC,GetWaypointByTag("WP_HUMAN_EVIL")); return; } if (GetAlignmentGoodEvil(oPC) == ALIGNMENT_NEUTRAL) { JUMP(oPC,GetWaypointByTag("WP_HUMAN_NEUTRAL")); } } |
QUOTE (Lex @ Feb 7 2005, 21:29) | ||
ни 1 из 2 написанных выше скриптов не удовлетворяет требованию заказчика. А именно:
|
QUOTE (MasterMage @ Feb 8 2005, 18:44) |
DBColl поподробнее, что за трабла....не понял |
QUOTE (Tiger Greyhawk @ Feb 8 2005, 05:53) |
Lex, если можно, то поподробнее. Почему? И чем так отличается твой скрипт от нашего, кроме введения и описания доп. функции и введения для НЕчеловека (у тебя проверка расы человека "!=") других точек? |
QUOTE (DBColl @ Feb 8 2005, 19:54) |
А задача - узнать скриптом УРОВЕНЬ ПЕРСА, КОТОРЫЙ НУЖЕН, ЧТОБЫ НОСИТЬ ДАННУЮ ШМОТКУ. |
QUOTE (dumbo @ Feb 9 2005, 17:48) |
следущий вопрос (вот запарил=): есть ли аналог OnDamage для PC? или еще какой заднепроходный метод поймать удар персу по жбану? тут цель в общем такова - определить, бъет PC или нет, а также словить урон. |
Neverwinter Script Source |
//Neverwinter Script Source //:://///////////////////////////////////////////// //:: Created By: MasterMage © //:: Created On: 30.01.05 //:://///////////////////////////////////////////// void main() { object oPC=GetPCItemLastEquippedBy(); object oRing=GetPCItemLastEquipped(); object oNPC=GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR,PLAYER_CHAR_NOT_PC,oPC,1, CREATURE_TYPE_PLAYER_CHAR,PLAYER_CHAR_NOT_PC, CREATURE_TYPE_PLAYER_CHAR,PLAYER_CHAR_NOT_PC); if (GetTag(oRing)=="Ring") { effect eEf=EffectInvisibility(INVISIBILITY_TYPE_IMPROVED); effect eEf2=EffectVisualEffect(VFX_DUR_GHOSTLY_VISAGE); ApplyEffectToObject(DURATION_TYPE_PERMANENT,eEf,oPC); ApplyEffectToObject(DURATION_TYPE_PERMANENT,eEf2,oPC); AssignCommand(oNPC,ClearAllActions()); } return; } |
Neverwinter Script Source |
//:://///////////////////////////////////////////// //:: Created By: MasterMage © //:: Created On: 30.01.05 //:://///////////////////////////////////////////// void main() { object oPC=GetPCItemLastUnequippedBy(); object oRing=GetPCItemLastUnequipped(); object oNPC=GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR,PLAYER_CHAR_NOT_PC,oPC,1, CREATURE_TYPE_PLAYER_CHAR,PLAYER_CHAR_NOT_PC, CREATURE_TYPE_PLAYER_CHAR,PLAYER_CHAR_NOT_PC); if (GetTag(oRing)=="Ring") { effect eEf=EffectInvisibility(INVISIBILITY_TYPE_IMPROVED); while(GetFirstEffect(oPC)==eEf) { RemoveEffect(oPC,eEf); eEf=GetNextEffect(oPC); } } return; } |
QUOTE (dumbo @ Feb 9 2005, 18:48) |
была еще идея использовать IPGetIsItemEquipable (т.е. без получения конкретной цифры, но этого в принципе достаточно), но это те же .. - вид сбоку. я почему спросил - заметил в PRC-скриптах кучу функций, о которых в лексиконе ни слова - подумалось, может и на эту тему есть что-нибудь эдакое, типа GetItemLevel... ![]() следущий вопрос (вот запарил=): есть ли аналог OnDamage для PC? или еще какой заднепроходный метод поймать удар персу по жбану? тут цель в общем такова - определить, бъет PC или нет, а также словить урон. ps. кстати, предудыщий вопрос решил пока просто - снимаю все при делевеле... ![]() |
QUOTE (MasterMage @ Feb 10 2005, 18:03) |
Так вот никак эффект не снять Remov`ем... А переборкой тоже никак... |
Neverwinter Script Source |
effect eEf=EffectInvisibility(INVISIBILITY_TYPE_IMPROVED); while(GetFirstEffect(oPC)==eEf) { RemoveEffect(oPC,eEf); eEf=GetNextEffect(oPC); } |
Neverwinter Script Source |
effect eEf=EffectInvisibility(INVISIBILITY_TYPE_IMPROVED); |
Neverwinter Script Source |
effect eEf = GetFirstEffect(oPC); while (GetIsEffectValid(eEf)) { if (GetEffectType(eEf) == EFFECT_TYPE_IMPROVEDINVISIBILITY) RemoveEffect(oPC, eEf); eEf = GetNextEffect(oPC); } |
Neverwinter Script Source |
void main() { object oDoor = GetObjectByTag("Door_dragons_1");//Дверь object oGuard = GetObjectByTag("Guard_dragons_1");//Охранник object oPC = GetEnteringObject();//Игрок if (!GetIsPC(oPC))//Проверка: Игрок енто или НеПиСь return; if (GetClickingObject("Door_dragons_1"))//Если Игорок кликнул на дверке, то появляется...... { DelayCommand(2.0, AssignCommand(oGuard, SpeakString("What are you doing? Get out small thief!")));//ВОТ ЕНТО } else//А, если ж нет,то...... { DelayCommand(1.0, AssignCommand(oGuard, ClearAllActions()));//ПОЧИСТИМ ВСЕ ДЕЙСТВИЯ У ОХРАННИКА } } |
QUOTE (Archangel @ Feb 12 2005, 20:02) |
Lex сказал, что с вопросами по сриптам надо сюда(насколько я его понял). |
Neverwinter Script Source |
if (GetClickingObject("Door_dragons_1")) |
QUOTE |
смысл строки такой: если объект, который кликает на дверь..... и все. Условие то где? |
QUOTE |
И вообще скрипт какой-то странный.... на чем он стоит? Похоже на входе в локу или на триггер... Тогда GetClickingObject тебе ничего не выдаст... |
QUOTE (Archangel @ Feb 12 2005, 20:50) |
Я имел ввиду вот, что: Игрок кликает на дверь, и если дверь заперта, то охранник говорит: " What are you doing? Get out small thief! " |
Neverwinter Script Source |
void main() { object oPC = GetLastUsedBy(); if (!GetIsPC(oPC)) return; object oGuard = GetNearestObjectByTag("Guard_dragons_1"); AssignCommand(oGuard,SpeakString("What are you doing? Get out small thief!")); } |
Neverwinter Script Source |
ActionCastSpellAtObject(SPELL_RAY_OF_FROST, GetWaypointByTag("sWPTag"), METAMAGIC_ANY, 1); |
Neverwinter Script Source |
ActionCastSpellAtLocation(SPELL_RAY_OF_FROST, GetLocation(GetWaypointByTag(sWPTag+"1")), METAMAGIC_ANY, 1); |
Neverwinter Script Source |
ActionCastFakeSpellAtLocation(SPELL_RAY_OF_FROST, GetLocation(GetWaypointByTag("sWPTag")));//Непись машет пальцами и бормочет, повернувшись в нужном направлении ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, EffectBeam(VFX_BEAM_COLD, OBJECT_SELF, BODY_NODE_HAND), GetLocation(GetWaypointByTag("sWPTag")), 3.0);//Собственно виз. эффект |
Neverwinter Script Source |
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, EffectBeam(VFX_BEAM_COLD, GetWaypointByTag("sWPTag"), BODY_NODE_HAND), GetLocation(GetWaypointByTag("sWPTag1")), 3.0); |
Neverwinter Script Source |
void main() { object oGuard = GetObjectByTag("Guard_dragons_1");//Охрана object oPC = GetLastUsedBy();//Игрок if (!GetIsPC(oPC)) return;//Проверка-игрок енто или НеПиСь object oDoor = GetObjectByTag("Door_dragons_1");//Дверь int iDoorLocked = GetLocked(oDoor);//Переменная двери if (iDoorLocked == TRUE)//Разветвление { AssignCommand(oGuard, ActionAttack(oPC));//Стражник атакует Игрока AssignCommand(oGuard,SpeakString("I kill you small thief!"));//Стражник скажет это SetLocked(oDoor, FALSE);//Ну я думаю енто понятно } else { AssignCommand(oGuard,SpeakString("What are you doing? Get out small thief!"));//Стражник скажет это SetLocked(oDoor, TRUE);//Ну я думаю енто понятно } } |
QUOTE (Archangel @ Feb 13 2005, 17:46) |
if (iDoorLocked == TRUE)//Разветвление |
Neverwinter Script Source |
if (GetLocked(oDoor)==FALSE)//или GetLastUnlocked()==oDoor { AssignCommand(oGuard, ActionAttack(oPC));//Стражник атакует Игрока AssignCommand(oGuard,SpeakString("I kill you small thief!"));//Стражник скажет это } else if (GetLocked(oDoor)==FALSE && (тут надо проверку на то, что PC кликнул дверь)) { AssignCommand(oGuard,SpeakString("What are you doing? Get out small thief!"));//Стражник скажет это } } |
QUOTE (Archangel @ Feb 13 2005, 17:46) |
Есть Игрок, он пытается открыть дверь(точнее взломать-сначало дверь закрыта). Если у него енто получается, то рядом стоящий охранник говорит:"I kill you small thief!" |
Neverwinter Script Source |
void main() { object oGuard = GetNearestObjectByTag("Guard_dragons_1"); object oPC = GetLastUsedBy(); if (!GetIsPC(oPC)) return; AssignCommand(oGuard,ClearAllActions()); AssignCommand(oGuard,ActionAttack(oPC)); AssignCommand(oGuard,SpeakString("I kill you small thief!")); } |
QUOTE (Archangel @ Feb 13 2005, 17:46) |
Если ж у Игрока не получается тпереть дверь, то тогда охранник просто говорит: "What are you doing? Get out small thief!". |
Neverwinter Script Source |
void main() { object oPC = GetLastUsedBy(); if (!GetIsPC(oPC)) return; object oGuard = GetNearestObjectByTag("Guard_dragons_1"); AssignCommand(oGuard,SpeakString("What are you doing? Get out small thief!")); } |
Neverwinter Script Source |
void GetItem(string sTag, object oCreature ) { object oItem = GetFirstItemInInventory(oCreature); while (GetTag(oItem)!=sTag) { oItem = GetNextItemInInventory(oCreature); if (!GetIsObjectValid(oItem)) return OBJECT_INVALID; } return oItem; } /// тут стандартный скрипт ХБ if (GetIsDay())&&(GetLocalInt(OBJECT_SELF,"TORCH")) { ClearAllActions(); ActionUnequipItem(GetItemInSlot(INVENTORY_SLOT_LEFTHAND,OBJECT_SELF); SetLocalInt(OBJECT_SELF,"TORCH",FALSE); } if (GetIsNight())&&(!GetLocalInt(OBJECT_SELF,"TORCH")) { ClearAllActions(); ActionEquipItem(GetItem("ITM_TORCH",OBJECT_SELF),INVENTORY_SLOT_LEFTHAND); SetLocalInt(OBJECT_SELF,"TORCH",TRUE); } |
QUOTE |
И еще вопросик как мне соединить в скрипте на локации 4 заклинания Луч Мороза Например 4 Точки маршрута и из 1 точки бьёт луч во 2 и т.д |
QUOTE |
На вейпоинты, по-моему, вообще ничего накладывать нельзя. На не статичные невидимые плейсаблы - можно. |
QUOTE |
Nokoll ЧТО???? ничего не понятно!!! |
QUOTE (Nokoll @ Feb 14 2005, 12:41) |
Самым злобным образом приветствую всех многоуважаемых участников форума. Возник небольшой вопрос по скриптам - мне в определенный момент времени нужно "потрясти экран" - эффект землетрясения. Каким образом можно это реализовать? Чесно говоря неохота перерывать Lexicon и родные NWN-новские скрипты. Может подскажет кто? |
Neverwinter Script Source |
effect eEf=EffectVisualEffect(не помню, но вместо этой строки ставь константу,что-то связанное со "screen"); object oWp=GetWaypointByTag("Тэг твоей точки");//а можно GetObjectByTag("Тэг"); - если ты на объект ставишь// ApplyEffectAtLocation(DURATION_TUPE_TEMPORARY,eEf,GetLocation(oWp),2.5); |
Neverwinter Script Source |
//:://///////////////////////////////////////////// //:: Created By: MasterMage © //:: Created On: 30.01.05 //:://///////////////////////////////////////////// void main() { object oPC=GetPCItemLastUnequippedBy(); object oRing=GetPCItemLastUnequipped(); object oNPC=GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR,PLAYER_CHAR_NOT_PC,oPC,1, CREATURE_TYPE_PLAYER_CHAR,PLAYER_CHAR_NOT_PC, CREATURE_TYPE_PLAYER_CHAR,PLAYER_CHAR_NOT_PC); if (GetTag(oRing)=="Ring") { effect eEf = GetFirstEffect(oPC); while (GetIsEffectValid(eEf)) { if (GetEffectType(eEf) == EFFECT_TYPE_IMPROVEDINVISIBILITY) RemoveEffect(oPC, eEf); eEf = GetNextEffect(oPC); } } return; } |