Neverwinter Script Source |
object oPC = GetExitingObject(); void main() { AssignCommand(oPC, SpeakString("EXIT")); } |
Neverwinter Script Source |
effect EffectMovementSpeedDecrease( int nPercentChange ); |
QUOTE (Lex @ Apr 7 2005, 21:46) |
2. Я же говорил что в этом случае делать ужа наверное раза 3. Вскрывать бифы (все равно лучше работать на 2дашка оттуда, чем на тех, что в сорсах) |
QUOTE (][umepa @ Apr 8 2005, 21:10) |
как заставить непися переходит из локации в локацию(через тригер)? Добавлено в [mergetime]1112984114[/mergetime] и что такое ЮД? |
QUOTE (Amellun @ Apr 8 2005, 20:46) |
Срочно нужны скрипты, которые описаны ниже... |
Neverwinter Script Source |
void main() { object oPC = GetPCSpeaker(); object oPivi = GetObjectByTag("Piviga"); //-------------------------------------- effect eCutIn = EffectVisualEffect(VFX_DUR_CUTSCENE_INVISIBILITY); effect eE1 = EffectVisualEffect(VFX_FNF_UNDEAD_DRAGON); effect eE2 = EffectVisualEffect(VFX_FNF_SUMMONDRAGON); effect eSt = EffectParalyze(); //--------------------------------------- object oCam2 = GetWaypointByTag("era2"); object oCam3 = GetWaypointByTag("era3"); //-------------------------------------- object oEFE = GetObjectByTag("EFFECT"); object oSU1 = GetWaypointByTag("SU1"); object oSU2 = GetWaypointByTag("SU2"); object oSU3 = GetWaypointByTag("SU3"); //------------------------------------- DelayCommand(2.0, AssignCommand(oPC, ActionJumpToObject(oCam2))); DelayCommand(2.0, AssignCommand(oPC, SetCameraFacing(90.0, 0.0, 90.0, CAMERA_TRANSITION_TYPE_MEDIUM))); DelayCommand(3.0, AssignCommand(oPC, ActionForceMoveToObject(oSU1))); DelayCommand(4.0, ApplyEffectToObject(DURATION_TYPE_INSTANT,eE1,oEFE)); DelayCommand(6.0, ApplyEffectToObject(DURATION_TYPE_INSTANT,eE2,oEFE)); DelayCommand(9.0, AssignCommand(oPivi, ActionJumpToObject(oEFE))); DelayCommand(11.5,AssignCommand(oPivi,ActionSpeakString("Чиво зырете падлы ща всех драть буду мразюги"))); DelayCommand(16.0, AssignCommand(oPC, ActionJumpToObject(oCam3))); DelayCommand(17.0, AssignCommand(oPC, SetCameraFacing(270.0, 0.0, 70.0, CAMERA_TRANSITION_TYPE_SNAP))); DelayCommand(16.5, ApplyEffectToObject(DURATION_TYPE_INSTANT,eSt,oPivi)); ActionDoCommand(AssignCommand(oPivi, SetFacingPoint(GetPosition(oPC)))); DelayCommand(19.5, AssignCommand(oPC, ActionStartConversation(oPC, "givi_talk2", FALSE,TRUE))); } |
Neverwinter Script Source |
ActionDoCommand(AssignCommand(oPivi, SetFacingPoint(GetPosition(oPC)))); |
Neverwinter Script Source |
DelayCommand(12.0,AssignCommand(oPivi,ActionDoCommand(SetFacingPoint(GetPosition(oPC))))); |
Neverwinter Script Source |
void DealTemperatureDamage(object oPC) { // Игрок без сознаниЯ if (GetCurrentHitPoints(oPC)<1) return; // Где находитсЯ игрок? object oArea=GetArea(oPC); // И какаЯ там температура? int iT=GetLocalInt(oArea,"Temperature"); // Температура комфортабельна или не установлена // (значение 0 рассматриваетсЯ как неустановленнаЯ температура. Вместо 0 ставьте -1) if (((iT<=32) && (iT>=4)) || (iT==0)) return; // ОпределЯем переменные int iDamType; int iDamAmount; int iSaveType; float iInterval; object oFire; int iSlow=FALSE; int iFortSave; int i; effect eDam; // Носим тЯжелую броню и/или плащ? int iArmor = GetItemACValue(GetItemInSlot(INVENTORY_SLOT_CHEST,oPC))>5; int iCloak = GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_CLOAK,oPC)); // Сколько раз мы уже "стучали" по игроку? int iTimes=GetLocalInt(oPC,"TemperatureDamageTimer"); int iDC=15+iTimes; // Подсчет DC if (iT>32) { // Жарко! FloatingTextStringOnCreature("Мне жарко!",oPC); iDamType=DAMAGE_TYPE_FIRE; if (GetLocalInt(oPC,"TemperatureType")==2) { iTimes = 0; iDC = 15; } SetLocalInt(oPC,"TemperatureType",1); // HOT iSaveType=SAVING_THROW_TYPE_FIRE; iDamAmount=d4(); if (iArmor) iDC=iDC+4; if (iCloak) iDC=iDC+4; if (iT>60) { eDam=EffectDamage(d6(),iDamType); ApplyEffectToObject(DURATION_TYPE_INSTANT,eDam,oPC); DelayCommand(2.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,eDam,oPC)); DelayCommand(4.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,eDam,oPC)); iSlow=TRUE; } else if (iT>43) { // Очччень жарко! FloatingTextStringOnCreature("Очччень жарко!",oPC); iSlow=TRUE; } else { // Просто жарко iInterval=120.0; } } else if (iT<4) { oFire=GetNearestObjectByTag("ku_campfire",oPC); if ((GetIsObjectValid(oFire)) && (GetDistanceBetween(oFire,oPC)<5.0)) { iDC=0; if (iTimes>=3) SetLocalInt(oPC,"TemperatureDamageTimer",iTimes-3); FloatingTextStringOnCreature("Отогреваюсь",oPC); } else { if (GetLocalInt(oPC,"TemperatureType")==1) { iTimes = 0; iDC = 15; } SetLocalInt(oPC,"TemperatureType",2); // COLD iDamType=DAMAGE_TYPE_COLD; iSaveType=SAVING_THROW_TYPE_COLD; iDamAmount=d6(); FloatingTextStringOnCreature("Мне холодно!",oPC); if (iT<-18) { // Жуткий мороз if (iArmor) iDC=iDC+4; if (iCloak) iDC=iDC-4; iSlow=TRUE; } else { // Very cold if (iCloak) iDC=0; } } } if (iDC>0) { iFortSave=FortitudeSave(oPC,iDC,iSaveType); SetLocalInt(oPC,"TemperatureDamageTimer",iTimes+1); if (iFortSave==0) { ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(iDamAmount,iDamType),oPC); if (iSlow) ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectSlow(),oPC,6.2); } } } void main() { object oPC=GetFirstPC(); AssignCommand(oPC,DealTemperatureDamage(oPC)); } |
QUOTE (Лито @ Apr 12 2005, 13:30) |
Правда не понял, как можно спастись от мороза, одеждой... |
QUOTE |
Ставится на ХБ МОДУЛЯ. (или какого-нить особого объекта) |
QUOTE (Aiwan @ Apr 12 2005, 22:46) |
Алексашка у тебя какой-то перевод. Говори на английском все подскажем. Русский тулсет закинь, если не хочешь мертвого модуля по прошествии времени... |
Neverwinter Script Source |
object oItem = GetItemActivated(); object oActivator = GetItemActivator(); object oUser = oActivator; object oTarget = GetItemActivatedTarget(); string sRes = GetResRef(oItem); location lLoc = GetItemActivatedTargetLocation(); location lTarget = lLoc; void main() { if (GetIsPC(oActivator)&&(GetTag(oItem)=="az_sword1")) { if (GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oActivator)!=oItem) AssignCommand(oActivator,ActionEquipItem(oItem,INVENTORY_SLOT_RIGHTHAND)); DelayCommand(1.0,ExecuteScript("sword_skript2",oActivator)); } } |
Neverwinter Script Source |
if(GetLocalInt(oPC, "RESTZONE") !=1) |
QUOTE (Алексашка @ Apr 13 2005, 23:14) |
Свойство предмета: Cast spell: Talk to(Unlimited Uses\Day) |
Neverwinter Script Source |
if (GetIsObjectValid(GetNearestObjectByTag("WP_TAVERNREST",oPC))) // если в таверне |
QUOTE (Aiwan @ Apr 12 2005, 22:46) |
Русский тулсет закинь, если не хочешь мертвого модуля по прошествии времени... |
QUOTE (Lex @ Apr 13 2005, 23:08) | ||
поставь уникальное свойство, точно будет работать. 2. Я бы проверял наличие в локации валидного вэйпоинта
|
Neverwinter Script Source |
//////////////////////////////////// //////Created By: Avaddon/////////// //////Date: 04. 12. 2004//////////// //////Подкорректирован Алексашка//// ///////Дата: 14.04.2005///////////// /////////////////////////////////// #include "nw_i0_tool" #include "nw_i0_generic" #include "lib_colortext" void main() { effect eBlack = EffectVisualEffect(VFX_DUR_BLACKOUT); effect eZzz = EffectVisualEffect(VFX_IMP_SLEEP); effect eSlow = EffectSlow(); object oPC = GetLastPCRested(); object oBed = GetNearestObjectByTag("BED",oPC); object oSleep = GetNearestObjectByTag("SLEEP",oPC); object oArmor =GetItemInSlot(INVENTORY_SLOT_CHEST,oPC); object oRightHand = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oPC); object oLeftHand = GetItemInSlot(INVENTORY_SLOT_LEFTHAND,oPC); object oBoots = GetItemInSlot(INVENTORY_SLOT_BOOTS,oPC); object oHelmet = GetItemInSlot(INVENTORY_SLOT_HEAD,oPC); object oBelt = GetItemInSlot(INVENTORY_SLOT_BELT,oPC); object oCloak = GetItemInSlot(INVENTORY_SLOT_CLOAK,oPC); object oArms = GetItemInSlot(INVENTORY_SLOT_ARMS,oPC); string sFree = GetTag(GetArea(oPC)); string sArmor = GetLocalString(oPC,"armor"); string sRightHand = GetLocalString(oPC,"right"); string sLeftHand = GetLocalString(oPC,"left"); string sHelmet = GetLocalString(oPC,"helmet"); string sBoots = GetLocalString(oPC,"boots"); string sBelt = GetLocalString(oPC,"belt"); string sCloak = GetLocalString(oPC,"cloak"); string sArms = GetLocalString(oPC,"arms"); if(GetStringLeft(sFree,4)=="free") { if(GetLocalInt(GetLastPCRested(),"on_bed")!=1) { SetLocalString(oPC,"armor",GetTag(oArmor)); SetLocalString(oPC,"right",GetTag(oRightHand)); SetLocalString(oPC,"left",GetTag(oLeftHand)); SetLocalString(oPC,"helmet",GetTag(oHelmet)); SetLocalString(oPC,"boots",GetTag(oBoots)); SetLocalString(oPC,"belt",GetTag(oBelt)); SetLocalString(oPC,"cloak",GetTag(oCloak)); SetLocalString(oPC,"arms",GetTag(oArms)); DelayCommand(2.0,AssignCommand(oPC,ActionUnequipItem(oArmor))); DelayCommand(2.0,AssignCommand(oPC,ActionUnequipItem(oRightHand))); DelayCommand(2.0,AssignCommand(oPC,ActionUnequipItem(oLeftHand))); DelayCommand(2.0,AssignCommand(oPC,ActionUnequipItem(oHelmet))); DelayCommand(2.0,AssignCommand(oPC,ActionUnequipItem(oBoots))); DelayCommand(2.0,AssignCommand(oPC,ActionUnequipItem(oBelt))); DelayCommand(2.0,AssignCommand(oPC,ActionUnequipItem(oCloak))); DelayCommand(2.0,AssignCommand(oPC,ActionUnequipItem(oArms))); if (GetLastRestEventType()==REST_EVENTTYPE_REST_STARTED) { AssignCommand(oPC,ClearAllActions()); AssignCommand(oPC,ActionMoveToObject(oBed)); DelayCommand(2.0,AssignCommand(oPC,ActionJumpToObject(oSleep))); DelayCommand(2.5,SetLocalInt(oPC,"on_bed",1)); DelayCommand(3.0,AssignCommand(oPC,ActionRest())); DelayCommand(3.5,ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eZzz,oPC,10.0)); DelayCommand(4.0,ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eBlack,oPC,60.0)); } } } else { object oPC = GetLastPCRested(); object oCamp = GetNearestObjectByTag("camp",oPC); object oBedroll = GetNearestObjectByTag("krovatka",oPC); effect eSleep = EffectVisualEffect(VFX_IMP_SLEEP); effect eBlind = EffectBlindness(); effect eDisease = EffectDisease(DISEASE_SOLDIER_SHAKES); if (GetLocalInt(oPC, "RESTZONE") != 1) { AssignCommand(oPC,ClearAllActions()); FloatingTextStringOnCreature("Это неудачное место для лагеря. Нужно поискать место поукромнее.",oPC,FALSE); } else { if (GetLastRestEventType() == REST_EVENTTYPE_REST_STARTED) { if(GetIsObjectValid(oCamp)!=TRUE) { FloatingTextStringOnCreature("Надо бы развести костер",oPC,FALSE); AssignCommand(oPC,ClearAllActions()); } else { if(GetDistanceBetween(oPC,oCamp)>3.0) { FloatingTextStringOnCreature("Зачем тогда костер? Если ты отправляешь меня спать так далеко от него.",oPC,FALSE); AssignCommand(oPC,ClearAllActions()); } else { if (HasItem(oPC,"bedroll")==TRUE) { if (HasItem(oPC,"NW_IT_MMIDMISC05")==TRUE) { CreateObject(OBJECT_TYPE_PLACEABLE,"krovatka",GetLocation(oPC)); DestroyObject(GetItemPossessedBy(oPC,"NW_IT_MMIDMISC05")); DestroyObject(GetItemPossessedBy(oPC,"bedroll")); SetLocalInt(oPC,"slept",1); DelayCommand(1.0,ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eSleep,oPC,30.0)); DelayCommand(2.0, FadeToBlack(oPC, FADE_SPEED_SLOW)); } else { FloatingTextStringOnCreature("Есть охота! На голодный желудок не уснешь.",oPC,FALSE); AssignCommand(oPC,ClearAllActions()); } } else { FloatingTextStringOnCreature("Куда делась моя подстилка? На голой земле я спать не буду.",oPC,FALSE); AssignCommand(oPC,ClearAllActions()); } } } } if (GetLastRestEventType() == REST_EVENTTYPE_REST_FINISHED) { FadeFromBlack(oPC, FADE_SPEED_SLOW); SetLocalInt(oPC,"slept",0); CreateItemOnObject("bedroll", oPC,1); SetTime(GetTimeHour() + 8, GetTimeMinute(), GetTimeSecond(), GetTimeMillisecond()); DelayCommand(1.0, AssignCommand(oPC, SpeakString(colorText("Прошло 8 часов", TXT_COLOR_GREEN)))); DelayCommand(1.5, DestroyObject(oCamp)); DelayCommand(2.5, DestroyObject(oBedroll)); if (GetWeight(GetItemInSlot(INVENTORY_SLOT_CHEST,oPC))>20) { effect eDamage = EffectDamage(d20(1) + 20); ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC); FloatingTextStringOnCreature("Спать в доспехах было плохой идеей.",oPC,FALSE); } } } } ////////////////////////////////////////////////////////////////////// /*Если Отдых Окончен или Прерван в арене с тегом начинающимсЯ с "free" и игрок находитсЯ на кровати.*////////////////////////////////////// if(GetStringLeft(sFree,4)=="free" && GetLocalInt(oPC,"on_bed")==1) { //Если Отдых Завершен if (GetLastRestEventType()==REST_EVENTTYPE_REST_FINISHED) { //Одеваем игрока обратно (теги предметов бывших на нем одетыми читаем из локалок игрока) DelayCommand(2.0,AssignCommand(oPC, ActionEquipItem(GetItemPossessedBy(oPC,sArmor), INVENTORY_SLOT_CHEST))); DelayCommand(2.0,AssignCommand(oPC, ActionEquipItem(GetItemPossessedBy(oPC,sRightHand), INVENTORY_SLOT_RIGHTHAND))); DelayCommand(2.0,AssignCommand(oPC, ActionEquipItem(GetItemPossessedBy(oPC,sLeftHand), INVENTORY_SLOT_LEFTHAND))); DelayCommand(2.0,AssignCommand(oPC, ActionEquipItem(GetItemPossessedBy(oPC,sBoots), INVENTORY_SLOT_BOOTS))); DelayCommand(2.0,AssignCommand(oPC, ActionEquipItem(GetItemPossessedBy(oPC,sHelmet), INVENTORY_SLOT_HEAD))); DelayCommand(2.0,AssignCommand(oPC, ActionEquipItem(GetItemPossessedBy(oPC,sBelt), INVENTORY_SLOT_BELT))); DelayCommand(2.0,AssignCommand(oPC, ActionEquipItem(GetItemPossessedBy(oPC,sCloak), INVENTORY_SLOT_CLOAK))); DelayCommand(2.0,AssignCommand(oPC, ActionEquipItem(GetItemPossessedBy(oPC,sArms), INVENTORY_SLOT_ARMS))); //Встаем с кровати AssignCommand(oPC,ActionJumpToObject(oBed)); //Стираем с игрока все локалки предметов и того что он был на кровати. DeleteLocalInt(oPC,"on_bed"); DeleteLocalString(oPC,"armor"); DeleteLocalString(oPC,"right"); DeleteLocalString(oPC,"left"); DeleteLocalString(oPC,"helmet"); DeleteLocalString(oPC,"boots"); DeleteLocalString(oPC,"belt"); DeleteLocalString(oPC,"cloak"); DeleteLocalString(oPC,"arms"); //Убираем эффекты сна RemoveEffect(oPC,eBlack); SetTime(GetTimeHour() + 8, GetTimeMinute(), GetTimeSecond(), GetTimeMillisecond()); DelayCommand(1.0, AssignCommand(oPC, SpeakString(colorText("Прошло 8 часов", TXT_COLOR_GREEN)))); }//Заканчиваем условие "Если Отдых Завершен } } |
QUOTE (fali @ Apr 15 2005, 06:06) |
1. Как сделать переключатель музыки на локации? Минимум -- включить/выключить музыку, максимум -- с выбором из нескольких заранее определенных мелодий. ![]() ![]() ![]() |
QUOTE (fali @ Apr 15 2005, 06:06) |
2. Как сделать "предмет", с помощью которого можно было бы провести что-то вроде соревнования? Объясняю на примере. ![]() ![]() |
QUOTE (fali @ Apr 15 2005, 06:06) |
3. Продолжение второго. ![]() ![]() ![]() |
QUOTE (fali @ Apr 15 2005, 06:06) |
4. Не знаю даже, возможно ли такое. ![]() ![]() ![]() ![]() |
QUOTE (Lex @ Apr 15 2005, 17:56) |
(в предмете закладка advanced там есть состояния. В тч там есть и destroyed). Они окажутся под локацией, нивидимые для игроков. Теперь когда надо, вытаскиваем их оттуда посредством например ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE) |
Neverwinter Script Source |
string sTag = "SOME_HIDDEN_OBJECT"; int i = 0; object oPlc; while( GetIsObjectValid(oPlc = GetObjectByTag(sTag, i++)) )// ![]() { AssignCommand(oPlc, ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE)); } |
QUOTE (Friedrich @ Apr 15 2005, 21:39) |
void MusicBackgroundChangeDay(object oArea, int nTrack); void MusicBackgroundChangeNight(object oArea, int nTrack); |
QUOTE (Friedrich @ Apr 15 2005, 21:39) |
И эти "уничтоженные" объекты спокойно находится посредством, н.п. GetObjectByTag()? |
QUOTE (fali @ Apr 17 2005, 16:49) |
Большущее спасибо всем уже ответившим. ![]() ![]() |
QUOTE (Lex @ Apr 17 2005, 14:56) |
Хм...с лучниками можно так. Есть мишень и кто-то в нее стреляет. (кстати надо еще подумать и о дистанции). Результат - мишень выдает кол-во очков, которые набрал игрок. Можно их например суммировать. И сравнивать с суммами других игроков.... |
Neverwinter Script Source |
#include "nw_i0_tool" void main() { object oAttacker = GetLastAttacker(); //* Should only register if hit with a ranged weapon if( GetIsPC(oAttacker)) { if(GetWeaponRanged(GetLastWeaponUsed(oAttacker))) { SpeakOneLinerConversation(); if(GetDistanceToObject(oAttacker) > 12.0) { if(GetLocalInt(GetModule(),"archer_trening")< 100) { SetLocalInt(GetModule(),"archer_trening",(GetLocalInt(GetModule(),"archer_trening")+1)); if(GetLocalInt(GetModule(),"archer_trening")== 100) { effect eDamage = EffectDamage(5000); DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, OBJECT_SELF)); SetLocalInt(GetModule(), "archer_trening", 0); RewardPartyXP(500, oAttacker); } } else { } AssignCommand(GetNearestObjectByTag("Olodrin"),SpeakOneLinerConversation("arch_uspeh",oAttacker)); } else { AssignCommand(GetNearestObjectByTag("Olodrin"),SpeakOneLinerConversation("blisko",oAttacker)); } } else { AssignCommand(GetNearestObjectByTag("Olodrin"),SpeakOneLinerConversation("bow",oAttacker)); } } else { { int nHeal = GetMaxHitPoints(OBJECT_SELF) - GetCurrentHitPoints(OBJECT_SELF); effect eHeal = EffectHeal(nHeal); { if (nHeal > 0) ApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, OBJECT_SELF); } } AssignCommand(GetNearestObjectByTag("Olodrin"),SpeakOneLinerConversation("signboard11",oAttacker)); } } |
QUOTE (Алексашка @ Apr 17 2005, 18:15) |
Подскажите, как правильно сделать проверку по времени. Я подхожу к неписю, а он говорит приходи через 3 часа. Как запомнить время в которое он мне это сказал и как проверить, что три часа прошло. |
Neverwinter Script Source |
effect eCutS = EffectCutsceneDominated(); effect eMind = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED); // что-нибудь // красивое effect eLink = EffectLinkEffects(eMind, eCuts); object oTarget = GetAttackTarget(oPC); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oPC, 6.00); //DelayCommand(6.00,AssignCommand(oPC,ClearAllActions(TRUE))); AssignCommand(oPC,DelayCommand(6.00,ActionAttack(oTarget))); |
QUOTE (Lex @ Apr 18 2005, 08:31) |
в пределах одного дня через GetTimeHoure(), но если чел придет на сдел. день в тот же час, то облом. Надо преобразовывать месяц, день и час в часы и запомнить. Потом сравнивать с тамки же преобразованием. Разница больше 3-х значить прошло более 3-х часов. У меня в Тсурле все временные штуки на этом построены |