QUOTE (Аваддон @ Dec 10 2004, 23:30) |
Vhall’rafein а смыслв свойствах визуальных можно и в консоли |
QUOTE (MasterMage @ Dec 11 2004, 18:09) |
1. Как ставить постоянную анимацию(т.е. не время, а постоянно... Без перерыва...)? |
QUOTE (MasterMage @ Dec 11 2004, 18:09) |
2. Сделал так, чтобы маг НПС кастовал спел, когда я прохожу(мирный житель...просто якобы тренеруется маг...). Но переходить тригггер, чтобы он это постоянно делал тупо(не интересно...будет как робот)...Можно как-нибудь сделать так, чтобы через равные промежутки(а еще лучше рендомно)он сам кастовал...? |
QUOTE (MasterMage @ Dec 11 2004, 18:09) |
3. Дайте плиз ссылку на статью(если есть), где рассказывается, как писать диалоги со скриптами и сюжет не через мастера....Мастером научился...но хорошего не сделаешь с ним... |
QUOTE (MasterMage @ Dec 11 2004, 18:09) |
4. И последний... Пробовал сделать портал(как камень призыва). Думал просто.... Но не нашел у вещи никаких стеков(и ессественно OnUsed).... Как тады написать, чтоб он телепортировал куды надо????? |
Neverwinter Script Source |
void main() { object oItem = GetItemActivated(); // Сам предмет object oActivator = GetItemActivator(); //Тот кто жмет капу =) string sRes = GetResRef(oItem); if (GetTag(oItem) == "ТАГ_ТВОЕГО_itm-a") //Если ТАГ активируемого предмета равен... { object oWPs = GetWaypointByTag("WP_01"); //точка куда слать object oWPm = GetWaypointByTag("POST_M");// еще точка, можно сюда string sArea = GetTag(GetArea(oActivator)); if(!GetIsInCombat(oActivator)) //Если не в бою { if (sArea == "ТАГ_АРЕНЫ_01" || sArea == "ТАГ_АРЕНЫ_02") //Просто проверка на арену к примеру { effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE); effect eBreach = EffectVisualEffect(VFX_IMP_BREACH); effect eWord = EffectVisualEffect(VFX_FNF_WORD); AssignCommand(oActivator, ClearAllActions()); DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eBreach, oActivator)); DelayCommand(3.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eWord, oActivator)); DelayCommand(3.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eShake, oActivator)); DelayCommand(5.5, AssignCommand(oActivator, ActionJumpToObject(oWPm))); } } else { SendMessageToPC(oActivator,"Трус!!! Дерись, засранец!"); } } } |
Neverwinter Script Source |
void main() { object oItem = GetItemActivated(); // Сам предмет object oActivator = GetItemActivator(); //Тот кто жмет капу =) string sRes = GetResRef(oItem); if (GetTag(oItem) == "ТАГ_ТВОЕГО_itm-a") //Если ТАГ активируемого предмета равен... { object oWPm = GetWaypointByTag("POST_M"); string sArea = GetTag(GetArea(oActivator)); if(!GetIsInCombat(oActivator)) //Если не в бою { if (!GetLocalInt(oActivator, "USED_PORTAL")) { SetLocalInt(oActivator, "USED_PORTAL", TRUE); //Поставим локалку что мы использовали один раз камешек SetLocalLocation(oActivator,"START_POINT", GetLocation(oActivator)); // Сохраним координаты на самом игроке того места где использовали камень effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE); effect eBreach = EffectVisualEffect(VFX_IMP_BREACH); effect eWord = EffectVisualEffect(VFX_FNF_WORD); AssignCommand(oActivator, ClearAllActions()); DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eBreach, oActivator)); DelayCommand(3.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eWord, oActivator)); DelayCommand(3.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eShake, oActivator)); DelayCommand(5.5, AssignCommand(oActivator, ActionJumpToObject(oWPm))); } if (GetLocalInt(oActivator, "USED_PORTAL")) { SetLocalInt(oActivator, "USED_PORTAL", FALSE); // Уберем локалку что мы юзали камень effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE); effect eBreach = EffectVisualEffect(VFX_IMP_BREACH); effect eWord = EffectVisualEffect(VFX_FNF_WORD); AssignCommand(oActivator, ClearAllActions()); DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eBreach, oActivator)); DelayCommand(3.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eWord, oActivator)); DelayCommand(3.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eShake, oActivator)); DelayCommand(5.5, AssignCommand(oActivator, ActionJumpToLocation(GetLocalLocation(oActivator,"START_POINT")))); // Отправим в то место где был } } else { SendMessageToPC(oActivator,"Трус!!! Дерись, засранец!"); } } } |
QUOTE (Raven @ Dec 13 2004, 12:15) |
Вопрос - читал в мануале Айвана про плейсовую воду. Возник вопрос - а нафик ? Какое практическое применение плейсовой воды ? |
Neverwinter Script Source |
void JUMP(object oActivator, location Destination) { effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE); effect eBreach = EffectVisualEffect(VFX_IMP_BREACH); effect eWord = EffectVisualEffect(VFX_FNF_WORD); AssignCommand(oActivator, ClearAllActions()); AssignCommand(oActivator, SetCommandable(FALSE,oActivator)); DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eBreach, oActivator)); DelayCommand(3.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eWord, oActivator)); DelayCommand(3.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eShake, oActivator)); DelayCommand(5.5, AssignCommand(oActivator, JumpToLocation(Destination))); DelayCommand(6.0, AssignCommand(oActivator, SetCommandable(TRUE,oActivator))); } void main() { object oItem = GetItemActivated(); object oActivator = GetItemActivator(); string sRes = GetResRef(oItem); if (GetTag(oItem) == "ТАГ_ТВОЕГО_itm-a") { string sArea = GetTag(GetArea(oActivator)); if(!GetIsInCombat(oActivator)) { if (!GetLocalInt(oActivator, "USED_PORTAL")) { DelayCommand(5.0,SetLocalInt(oActivator, "USED_PORTAL", TRUE)); DelayCommand(5.0,SetLocalLocation(oActivator,"START_POINT", GetLocation(oActivator))); JUMP(oActivator,GetLocation(GetWaypointByTag("POST_M"))); } if (GetLocalInt(oActivator, "USED_PORTAL")) { DelayCommand(5.0,SetLocalInt(oActivator, "USED_PORTAL", FALSE)); JUMP(oActivator,GetLocalLocation(oActivator,"START_POINT")); } } else { SendMessageToPC(oActivator,"Трус!!! Дерись, засранец!"); } } |
QUOTE (Vhall’rafein @ Dec 14 2004, 17:17) |
Как ни подключаю любой хак с плэйсами - в модуль добавляется только палитра, но не плэйсы. Что я неправильно делаю? |
QUOTE (DBColl @ Dec 14 2004, 18:34) |
То есть "палитра, но не плэйсы"?! |
QUOTE (Vhall’rafein @ Dec 14 2004, 18:17) |
Как ни подключаю любой хак с плэйсами - в модуль добавляется только палитра, но не плэйсы. Что я неправильно делаю? |
Neverwinter Script Source |
void JUMP(object oActivator, location Destination) { effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE); effect eBreach = EffectVisualEffect(VFX_IMP_BREACH); effect eWord = EffectVisualEffect(VFX_FNF_WORD); AssignCommand(oActivator, ClearAllActions()); AssignCommand(oActivator, SetCommandable(FALSE,oActivator)); DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eBreach, oActivator)); DelayCommand(3.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eWord, oActivator)); DelayCommand(3.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eShake, oActivator)); DelayCommand(5.5, AssignCommand(oActivator, JumpToLocation(Destination))); DelayCommand(6.0, AssignCommand(oActivator, SetCommandable(TRUE,oActivator))); |
QUOTE (Raven @ Dec 16 2004, 10:53) |
Дык, мож кто знает - как сделать так, чтобы шмот со временем ломался, т.е. сделать durability ... ? |
QUOTE (Tarron @ Dec 15 2004, 20:32) |
Где-то я своими шаловливыми руками сделал так что после убийства ЛЮБОГО НПц или моба на его месте остаеться труп который очень долго лежит и исчезает минут через 5 и самое главное не роняеться лут. Сразу оговорюсь что в свойствах самого создания никакие изменения настрок не помогают.Это где-то глобально применено ко всему модулю.Вот такая вот фигня |
Neverwinter Script Source |
//:://///////////////////////////////////////////// //:: Default:On Death //:: NW_C2_DEFAULT7 //:: Copyright © 2001 Bioware Corp. //::////////////////////////////////////////////// /* Shouts to allies that they have been killed */ //::////////////////////////////////////////////// //:: Created By: Preston Watamaniuk //:: Created On: Oct 25, 2001 //::////////////////////////////////////////////// #include "hc_inc_dthcorpse" //#include "x0_i0_corpses" #include "NW_I0_GENERIC" #include "hc_inc" #include "nw_i0_tool" void ClearSlot(int iSlotID) { object oItem = GetItemInSlot(iSlotID); if (GetIsObjectValid(oItem) && !GetDroppableFlag(oItem)) DestroyObject(oItem); } void main() { object oKiller = GetLastKiller(); // Get a controlled undead's master if(GetLocalString(oKiller, "MY_MASTER_IS") != "") { string sName = GetLocalString(oKiller, "MY_MASTER_IS"); object oPC = GetFirstPC(); while(GetIsObjectValid(oPC)) { if(sName == GetPCPlayerName(oPC)) { oKiller = oPC; } oPC = GetNextPC(); } } int nClass = GetLevelByClass(CLASS_TYPE_COMMONER); int nAlign = GetAlignmentGoodEvil(OBJECT_SELF); if(nClass > 0 && (nAlign == ALIGNMENT_GOOD || nAlign == ALIGNMENT_NEUTRAL)) { AdjustAlignment(oKiller, ALIGNMENT_EVIL, 5); } SpeakString("NW_I_AM_DEAD", TALKVOLUME_SILENT_TALK); //Shout Attack my target, only works with the On Spawn In setup SpeakString("NW_ATTACK_MY_TARGET", TALKVOLUME_SILENT_TALK); if(GetSpawnInCondition(NW_FLAG_DEATH_EVENT)) { SignalEvent(OBJECT_SELF, EventUserDefined(1007)); } else if(GetRacialType(OBJECT_SELF)==RACIAL_TYPE_ANIMAL) { ExecuteScript("clear_nodrop", OBJECT_SELF); SetIsDestroyable(FALSE, FALSE, TRUE); DelayCommand(30.0,SetIsDestroyable(TRUE, FALSE, TRUE)); } else { ExecuteScript("clear_nodrop", OBJECT_SELF); // KillAndReplaceLootable(OBJECT_SELF); LeaveCorpse(); } if (GetLocalInt(oKiller,"arena")) return; // if(!GetLocalInt(oMod,"BASEXP")) return; // Beginning of XP Gen mod: // By E.G. Hornbostel, aka Whyteshadow // Created 7/11/2002 float fCR = GetChallengeRating(OBJECT_SELF); int nMonsterXP; // Get number of party members, and average Party Level int nPartyMembers; int nPartyLevelSum; int nHighestLevel=0; float fAvgPartyLevel; object oPC = GetFirstFactionMember(oKiller); object oKilledArea = GetArea(OBJECT_SELF); while(GetIsObjectValid(oPC)) { if(oKilledArea == GetArea(oPC)) nPartyMembers++; if(GetIsDM(oPC)) nPartyMembers--; else nPartyLevelSum += GetCharacterLevel(oPC); if (GetCharacterLevel(oPC)> nHighestLevel) nHighestLevel=GetCharacterLevel(oPC); oPC = GetNextFactionMember(oKiller, TRUE); } if (nPartyMembers == 0) return; fAvgPartyLevel = IntToFloat(nPartyLevelSum) / IntToFloat(nPartyMembers); // Bring partylevel up to 3 if less than 3 if (FloatToInt(fAvgPartyLevel) < 3) fAvgPartyLevel = 3.0; PrintString ("party level "+FloatToString(fAvgPartyLevel,3,1)); // Get the base Monster XP if ((FloatToInt(fAvgPartyLevel) <= 6) && (fCR < 1.5)) nMonsterXP = GetLocalInt(oMod,"BASEXP"); else { nMonsterXP = GetLocalInt(oMod,"BASEXP") * FloatToInt(fAvgPartyLevel/2); int nDiff = FloatToInt(((fCR < 1.0) ? 1.0 : fCR) - fAvgPartyLevel); switch (nDiff) { case -7: nMonsterXP /= 12; break; case -6: nMonsterXP /= 8; break; case -5: nMonsterXP = nMonsterXP * 3 / 16; break; case -4: nMonsterXP /= 4; break; case -3: nMonsterXP /= 3; break; case -2: nMonsterXP /= 2; break; case -1: nMonsterXP = nMonsterXP * 2 / 3; break; case 0: break; case 1: nMonsterXP = nMonsterXP * 3 / 2; break; case 2: nMonsterXP = nMonsterXP * 3 / 2; break; case 3: nMonsterXP = nMonsterXP * 3 / 2; break; case 4: nMonsterXP *= 2; break; case 5: nMonsterXP *= 2; break; case 6: nMonsterXP *= 2; break; case 7: nMonsterXP *= 3; break; case 8: nMonsterXP *= 3; break; case 9: nMonsterXP *= 3; break; case 10: nMonsterXP *= 4; break; case 11: nMonsterXP *= 4; break; case 12: nMonsterXP *= 4; break; case 13: nMonsterXP *= 5; break; case 14: nMonsterXP *= 5; break; case 15: nMonsterXP *= 5; break; case 16: nMonsterXP *= 6; break; case 17: nMonsterXP *= 6; break; case 18: nMonsterXP *= 6; break; case 19: nMonsterXP *= 7; break; case 20: nMonsterXP *= 7; break; case 21: nMonsterXP *= 7; break; case 22: nMonsterXP *= 8; break; case 23: nMonsterXP *= 8; break; case 24: nMonsterXP *= 8; break; case 25: nMonsterXP *= 9; break; case 26: nMonsterXP *= 9; break; case 27: nMonsterXP *= 9; break; case 28: nMonsterXP *= 10; break; case 29: nMonsterXP *= 10; break; case 30: nMonsterXP *= 10; break; case 31: nMonsterXP *= 11; break; case 32: nMonsterXP *= 11; break; case 33: nMonsterXP *= 11; break; case 34: nMonsterXP *= 12; break; case 35: nMonsterXP *= 12; break; default: nMonsterXP = 0; } } // if ((FloatToInt(fAvgPartyLevel) < 6) && (fCR < 1.5)) {...} else { // Calculations for CR < 1 if (fCR < 0.76 && nMonsterXP) { if (fCR <= 0.11) nMonsterXP = nMonsterXP / 10; else if (fCR <= 0.13) nMonsterXP = nMonsterXP / 8; else if (fCR <= 0.18) nMonsterXP = nMonsterXP / 6; else if (fCR <= 0.28) nMonsterXP = nMonsterXP / 4; else if (fCR <= 0.4) nMonsterXP = nMonsterXP / 3; else if (fCR <= 0.76) nMonsterXP = nMonsterXP /2; // Only the CR vs Avg Level table could set nMonsterXP to 0... to fix any // round downs that result in 0: if (nMonsterXP == 0) nMonsterXP = 1; } nMonsterXP += GetLocalInt(oMod,"BONUSXP"); int nCharXP; PrintString("Monster XP = "+IntToString(nMonsterXP)); // int nCharXP = FloatToInt((nMonsterXP * (1 + (0.45*(nPartyMembers-1)))) / nPartyMembers); if (nPartyMembers < 5) { nCharXP = FloatToInt((nMonsterXP*(1+(0.3*(nPartyMembers-1))))/nPartyMembers); } else { nCharXP = FloatToInt((nMonsterXP*(1+(0.5*(nPartyMembers-1))))/nPartyMembers); } if (GetTag(OBJECT_SELF)=="ATS_SAH_DEER001_DEER_0202") { nCharXP = 0; } if (GetTag(OBJECT_SELF)=="ATS_SAH_DEER002_DEER_0101") { nCharXP = 0; } // if (GetTag(OBJECT_SELF)=="ATS_SAO_BADGER1_BADG_0101") // { // nCharXP = 0; // } if (GetTag(OBJECT_SELF)=="ATS_SAO_BAT0001_BBAT_0101") { nCharXP = 0; } PrintString("Char XP = "+IntToString(nCharXP)); oPC = GetFirstFactionMember(oKiller); while(GetIsObjectValid(oPC)) { if(!GetIsDM(oPC) && oKilledArea == GetArea(oPC)) { int nCurExp=GetXP(oPC); int modXP; if (nCharXP>0) { if(GetHitDice(oPC)<12) { modXP=nCharXP; if ((abs(GetHitDice(oPC)-FloatToInt(fAvgPartyLevel))>5) || (nHighestLevel-GetHitDice(oPC)>5)) modXP=modXP/4; if (GetPersistentInt(oMod,"SOULFRAG"+GetName(oPC)+GetPCPublicCDKey(oPC))) modXP=modXP/25; if (GetLocalInt(oPC,"dropped_level")) { modXP=0; SendMessageToPC(oPC,"You have lost a level recently. You need to log off and back on again to gain XP."); FloatingTextStringOnCreature("No XP earned. Log to reset.",oPC); } GiveXPToCreature(oPC, modXP); PrintString("Rewarded "+GetName(oPC)+ " XP = "+IntToString(nCharXP)); } else { switch (GetHitDice(oPC)) { case 12:modXP=nCharXP* 7 / 8; break; case 13:modXP=nCharXP* 13 / 16; break; case 14:modXP=nCharXP* 6 / 8; break; case 15:modXP=nCharXP* 11 / 16; break; case 16:modXP=nCharXP* 5 / 8; break; case 17:modXP=nCharXP* 9 / 16; break; case 18:modXP=nCharXP* 4 / 8; break; case 19:modXP=nCharXP* 7 / 16; break; case 20:modXP=nCharXP* 3 / 8; break; default: modXP=nCharXP* 3 /8; break; } // if (modXP<40) // modXP=40; if (abs(GetHitDice(oPC)-FloatToInt(fAvgPartyLevel))>5 || (nHighestLevel-GetHitDice(oPC)>5)) modXP=modXP/4; if (GetPersistentInt(oMod,"SOULFRAG"+GetName(oPC)+GetPCPublicCDKey(oPC))) modXP=modXP/25; if (GetLocalInt(oPC,"dropped_level")) { modXP=0; SendMessageToPC(oPC,"You have lost a level recently. You need to log off and back on again to gain XP."); FloatingTextStringOnCreature("No XP earned. Log to reset.",oPC); } GiveXPToCreature(oPC, modXP); PrintString("Rewarded "+GetName(oPC)+ " XP = "+IntToString(modXP)+ " (level "+IntToString(GetHitDice(oPC))+")"); } } } oPC = GetNextFactionMember(oKiller, TRUE); } // Destroy all equipped slots int iSlotID; for (iSlotID = 0; iSlotID < NUM_INVENTORY_SLOTS; iSlotID++) { ClearSlot(iSlotID); } // Destroy all inventory items object oItem = GetFirstItemInInventory(); while (GetIsObjectValid(oItem)) { if (!GetDroppableFlag(oItem)) DestroyObject(oItem); oItem = GetNextItemInInventory(); } } |
QUOTE (DBColl @ Dec 16 2004, 19:49) |
Да вопрос совсем не тупой ![]() |
Neverwinter Script Source |
void JUMP(object oActivator, location Destination) { effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE); effect eBreach = EffectVisualEffect(VFX_IMP_BREACH); effect eWord = EffectVisualEffect(VFX_FNF_WORD); AssignCommand(oActivator, ClearAllActions()); AssignCommand(oActivator, SetCutsceneMode(oActivator,TRUE)); DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, eBreach, oActivator)); DelayCommand(1.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, eWord, oActivator)); DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eShake, oActivator)); DelayCommand(2.5, AssignCommand(oActivator, ActionJumpToLocation(Destination))); DelayCommand(3.0, AssignCommand(oActivator, SetCutsceneMode(oActivator,FALSE))); } void main() { object oItem = GetItemActivated(); object oActivator = GetItemActivator(); string sRes = GetResRef(oItem); if (GetTag(oItem) == "kamen") { string sArea = GetTag(GetArea(oActivator)); if(!GetIsInCombat(oActivator)) { if (!GetLocalInt(oActivator, "kamen")) { DelayCommand(2.0,SetLocalInt(oActivator, "kamen", TRUE)); DelayCommand(2.0,SetLocalLocation(oActivator,"START_POINT", GetLocation(oActivator))); DelayCommand(1.5,JUMP(oActivator,GetLocation(GetWaypointByTag("POST_M")))); } if (GetLocalInt(oActivator, "kamen")) { DelayCommand(5.0,SetLocalInt(oActivator, "kamen", FALSE)); DelayCommand(4.9,JUMP(oActivator,GetLocalLocation(oActivator,"START_POINT"))); } } else { SendMessageToPC(oActivator,"Трус!!! Дерись, засранец!"); } } } |
QUOTE (DBColl @ Dec 20 2004, 15:06) |
По-моему нет. Это рассовая фишка. |
QUOTE |
Есть ли такая команда, что бы у игрока выросли крылья? |