QUOTE (Lex @ Dec 8 2005, 09:49) |
на волте глять TC Interior. Там есть пустые комнаты. никуда от этого не денешься. (могу объяснить, откуда этот эффект вставания после того, как уже отошел) |
QUOTE (Апельсинов @ Dec 8 2005, 13:46) |
На счет снимать Usebale - спасибо, за совет, вот только как выставлять обратно, когда персонажу кликаешь встать? |
QUOTE (NedWarN @ Dec 8 2005, 02:47) |
Свойства Звуков/Позиционное/Воспроизведение в Оп. точке. Я просто запихивал сырой WAV в Overred/ |
QUOTE (Lex @ Dec 8 2005, 14:07) |
не, юзабл это не то. В том скрипте, что ты привел уже все учтено и нормально сделано. |
QUOTE (Апельсинов @ Dec 8 2005, 15:15) |
А юзебл, не юзебл - просто хочу хранить переменную сидит человек или нет (в человеке), когда садится выставляем 1 , а как выставить в 0 когда встает? |
Neverwinter Script Source |
if (GetCurrentAction(oPC)==ACTION_SIT) { // сидит ![]() } |
QUOTE (Апельсинов @ Dec 8 2005, 14:15) |
УУУУб спасибо за ссылочку. А юзебл, не юзебл - просто хочу хранить переменную сидит человек или нет (в человеке), когда садится выставляем 1 , а как выставить в 0 когда встает? |
QUOTE |
И все-таки можно WAV ставить как 3D звук? У меня его просто становится не слышно, какой формат использован для 3D звуков? |
Neverwinter Script Source |
void main() { object oPC=GetPCSpeaker(); object oChair = GetObjectByTag(GetLocalString(oPC,"sitplace")); if(GetIsObjectValid(oChair) && GetIsObjectValid(oPC)) { object oSurf = GetLocalObject(oChair, "surf"); AssignCommand(oPC, ActionSit(oSurf)); // SetLocalString(oPC,"sitplace",GetTag(oChair)); } } |
Neverwinter Script Source |
void main() { object oPC=GetPCSpeaker(); SetLocalInt(OBJECT_SELF,"BUSY",0); AssignCommand(oPC,ClearAllActions()); object oChair = GetObjectByTag(GetLocalString(oPC,"sitplace")); if(GetIsObjectValid(oChair) && GetIsObjectValid(oPC)) { object oSurf = GetLocalObject(oChair, "surf"); DestroyObject(oSurf); vector vSurf = GetPosition(oChair); vSurf.z = 0.0; location lSurf = Location(GetArea(oChair), vSurf, GetFacing(oChair)); object oNewSurf = CreateObject(OBJECT_TYPE_PLACEABLE, "sittingsurface", lSurf, FALSE); SetLocalObject(oChair, "surf", oNewSurf); AssignCommand(oPC, ActionSit(oNewSurf)); SetLocalString(oPC,"sitplace",GetTag(oChair)); } } |
QUOTE (Апельсинов @ Dec 9 2005, 22:19) |
Хотя эффект интересный - если посадить ПС в разговоре - он следит взглядом за НПС даже по окончанию - крутится на стуле. Кто-нибудь сталкивался с таким? |
Neverwinter Script Source |
//:://///////////////////////////////////////////// //:: Name: am_ccn_spider //:: Copyright © 2005 WRG! //:://///////////////////////////////////////////// /* Скрипт am_ccn_spider, позволяет разговаривать с мертвым пауком. */ //::////////////////////////////////////////////// //:: Created By: Aiwan //:: Created On: 18.09.2005 //::////////////////////////////////////////////// void main() { /* Теперь НПС не встанет при диалоге */ if (GetCommandable(OBJECT_SELF)==TRUE) // Если стек команд НПС работает { SetCommandable(FALSE,OBJECT_SELF); DelayCommand(1.0, SetCommandable(TRUE,OBJECT_SELF)); } /* Если НПС уже не понимает команды, то сразу начнем диалог */ BeginConversation(); } |
QUOTE (Nashman @ Dec 10 2005, 00:47) |
Возможно очень лажный вопрос, но попробую задать... - В какой "слот" прописывать скрипты анимации, например мне нужно ActionRandomMovie(), куда его лепить?(Обычные НПС). И можно как-то зацикоить что-то? |
QUOTE (Апельсинов @ Dec 10 2005, 05:12) |
Хочешь зациклить? Можно на хартбит повесить и дать длину 6 секунд - можно добиться эффекта зацикливания. |
QUOTE (Aiwan @ Dec 10 2005, 09:14) |
Ни в коем случае так делать нельзя. Может произойти накапливание команд и когда их будет больше 75 начнется дикий ужас. ![]() |
Neverwinter Script Source |
if (GetCurrentAction(OBJECT_SELF)!=ACTION_SIT) { object oChair = GetNearestObjectBtTag("chair"); ClearAllActions(); ActionSit(oChair); } |
QUOTE (Aiwan @ Dec 10 2005, 09:14) |
Ни в коем случае так делать нельзя. Может произойти накапливание команд и когда их будет больше 75 начнется дикий ужас. ![]() |
Neverwinter Script Source |
if (GetCurrentAction(OBJECT_SELF)!=ACTION_SIT) { object oChair = GetNearestObjectBtTag("chair"); ClearAllActions(); ActionSit(oChair); } |
QUOTE |
как сделать что бы на все стулья, лавки мой персонаж седал, как в «Проклятии Левора»? |
Neverwinter Script Source |
void main() { object oPC = GetLastUsedBy(); //Игрок. А вообще тот кто юзает (использует) обьект. object oSt = OBJECT_SELF; //Сам обьект, т.е стул, лавка и т.п. if (GetIsObjectValid(GetSittingCreature(oSt)) == FALSE) //Проверка если стул не занят то садимся. { AssignCommand(oPC, ActionSit(oSt)); } else if (GetIsObjectValid(GetSittingCreature(oSt)) == TRUE) //А если на стуле кто то сидит то чистим игроку акиции. { AssignCommand(oPC, ClearAllActions()); } } |
QUOTE |
Как сделать скриптик, что бы его можно было весить на других персонажей, а сам скриптик должен уметь: есть у нас объект «стул» и есть НПС «lol», как его посадить(Выше читал, но у меня не работает, и я навел пример названий объекта что бы все понять |
QUOTE |
ПС: Не пробовал, но ПС или НПС может на сделанные мной лавки, если так само скажите, если не так само то тоже скажите…. |
Neverwinter Script Source |
void main() { object oPC = GetLastUsedBy(); object oChair = OBJECT_SELF; if (GetIsPC(oPC)) { if (GetIsObjectValid(oChair) && !GetIsObjectValid(GetSittingCreature(oChair))) { AssignCommand(oPC, ActionSit(oChair)); } else if (GetIsObjectValid(GetSittingCreature(oChair))) { AssignCommand(oPC, ClearAllActions()); AssignCommand(oPC, SpeakString("А куда садитьсЯ? На руки, что ли?")); } } } |
QUOTE (-fenix- @ Dec 11 2005, 00:06) |
Nashman, три раза перечитал твой вопрос, так ни чего и не понял! |
QUOTE (maximal_up @ Dec 11 2005, 00:51) |
Он просит скрипт для того, что-бы можно было садиться на стулья! На все стулья! |
QUOTE |
А стулья у Нашмана, как я понял, плейсовые. |
QUOTE |
Nashman, три раза перечитал твой вопрос, так ни чего и не понял! |
QUOTE |
А есть разница между тайловыми и плейсовыми? |
QUOTE (Nashman @ Dec 11 2005, 02:30) |
А есть разница между тайловыми и плейсовыми? |
QUOTE (-fenix- @ Dec 11 2005, 01:38) |
Аваддон там про тайловые скамейки спрашивает, что у него ПС садится в одну сторону. |
QUOTE (maximal_up @ Dec 11 2005, 13:35) |
На тайловые садиться можно через специальный плейсовый объект. На него кидается тот-же скрипт, что и на стулья. Он там, вроде, написан. |
QUOTE |
Fixed an issue that was causing creatures to always face east when sitting on a stool placeable |
Neverwinter Script Source |
void main() { object oPC = GetEnteringObject(); object oFriam = GetNearestObjectByTag("FRIAM", oPC); SetCutsceneMode(oPC,TRUE); DelayCommand(0.1, AssignCommand(oPC, ClearAllActions())); DelayCommand(0.1, AssignCommand(oFriam, ClearAllActions())); DelayCommand(0.2, ActionDoCommand(AssignCommand(oPC, SetCameraFacing(210.0,30.0,45.0,CAMERA_TRANSITION_TYPE_SLOW)))); DelayCommand(0.3, AssignCommand(oFriam, ActionStartConversation(oPC, "friam"))); } |
Neverwinter Script Source |
void main() { object oFriam = GetNearestObjectByTag("FRIAM", oPC); object oDoor = GetNearestObjectByTag("friam_home", oPC); AssignCommand(oFriam, ActionForceMoveToObject(oDoor)); AssignCommand(oFriam, ActionPlayAnimation(13, 1.0, 3.0)); //анимашка открывания замков AssignCommand(oFriam, ActionOpenDoor(oDoor)); AssignCommand(oFriam, ActionDoCommand(SetCutsceneMode(oPC,FALSE))); AssignCommand(oFriam, ActionDoCommand(DestroyObject(oFriam))); } |
QUOTE |
) Хочу написать скрипт поведения неписям, ну, например, если ночь - иди домой, если день - по городу шляйся, или в таверне бухай. Так вот идеи - то есть, типа определить день\ночь и ActionDumpToObject. Но тогда неписи после джампа стоят как бараны на одном месте. А я хочу, чтобы они ПО ЛОКАЦИИ ХОДИЛИ!!! |
Neverwinter Script Source |
// The action subject will generate a random location near its current location // and pathfind to it. ActionRandomwalk never ends, which means it is neccessary // to call ClearAllActions in order to allow a creature to perform any other action // once ActionRandomWalk has been called. // * No return value, but if an error occurs the log file will contain // "ActionRandomWalk failed." void ActionRandomWalk() |
Neverwinter Script Source |
// Cause the action subject to move to a certain distance from oMoveTo. // If there is no path to oMoveTo, this command will do nothing. // - oMoveTo: This is the object we wish the action subject to move to // - bRun: If this is TRUE, the action subject will run rather than walk // - fRange: This is the desired distance between the action subject and oMoveTo // * No return value, but if an error occurs the log file will contain // "ActionMoveToObject failed." void ActionMoveToObject(object oMoveTo, int bRun=FALSE, float fRange=1.0f) |
QUOTE |
3) как лучше - расставить готовых неписей или создавать их ч\з енкаутер? (сошел с ума!!!) |
QUOTE |
yudgi В первом коде одна лишняя скобка: DelayCommand(0.3, AssignCommand(oFriam, ActionStartConversation(oPC, "friam")))); |
QUOTE (alMuk @ Dec 11 2005, 13:57) |
В версии 1.66 вроде это пофиксили, хотя сам не проверял. unsure.gif |
QUOTE (maximal_up @ Dec 11 2005, 13:35) |
Там вообще обсуждается скрипт посадки. На тайловые садиться можно через специальный плейсовый объект. На него кидается тот-же скрипт, что и на стулья. Он там, вроде, написан. |
QUOTE (zmey @ Dec 12 2005, 09:14) |
2) Какие 2ДА править и как, чтобы при повышении уровня нельзя было выбирать некоторые фиты(к примеру, двуправорукость; и заклинания) diablo.gif |
QUOTE (Vhall @ Dec 12 2005, 18:18) |
На самом деле, посадка происходит не на сам тайл, а на его внутренний вокмеш. |
QUOTE |
у меня городские локации тормозят? Главное, модуль нормально пашет, а как в город войдешь - тормоз на тормозе! Есть идеи, почему такое? |
QUOTE |
ишо одна вопроса, однако! Мне надо разобраться со временем. Как его проверить, как его изменить, как скриптом вызвать событие, которое произойдет, скажем, через 6 дней игрового времени? Если кому не лень, объясните,а? Феникс, может ты помогешь? В свое время циклы мне и рандом здорово объяснил |
Neverwinter Script Source |
//Список нужных функций: int GetCalendarDay() //Календарный день; int GetCalendarMonth() //Календарный месяц; int GetCalendarYear() //Календарный год; int GetIsDawn() //Проверка на ночь; int GetIsDay() //Проверка на день; int GetIsDusk() //Возращение если сумерки; int GetIsNight() //Возращение если ночь; int GetTimeHour() //Проверка на час; int GetTimeMillisecond() //Проверка на милисекунды; int GetTimeMinute() //Проверка на минуты; int GetTimeSecond() // Проверка на секунды; void SetTime(int nHour,int nMinute,int nSecond,int nMillisecond) // Установить время. (Начиная от часа, и заканчивая милисекундой) |
Neverwinter Script Source |
//Ставится на строчку в диалоге. void main() { if (GetTimeHour()==10)//Если сейчас 10 часов то строчка в диалоге будет доступной: { } } |
Neverwinter Script Source |
void main() { object oPC = GetItemActivator();//Тот кто активирует предмет; object oItem_1 = GetItemActivated();//Сам активируемый предмет; if ((GetTag(oItem_1)== "TAG_PREDMETA") && GetLocalInt(oPC,"LOCA")==!TRUE) //Проверка. Если таг предмета равен: TAG_PREDMETA и локалка: LOCA не включена, то происходит условие; { AssignCommand(oPC, SpeakString("Я использовал первую уник. силу!")); //Например игрок произносит фразу; SetLocalInt(oPC,"LOCA",TRUE); //Включаем локалку, нужно для второго использования; } else if ((GetTag(oItem_1)== "TAG_PREDMETA") && GetLocalInt(oPC,"LOCA")==TRUE) //Аналогично первой проверке, но здесь локалка включена; { AssignCommand(oPC, SpeakString("Я использовал вторую уник. силу!")); //Траляля... SetLocalInt(oPC,"LOCA",FALSE); //Выключаем локалку, чтоб второй раз произошло первое событие... } } |
Neverwinter Script Source |
void main() { object oPC = GetFirstPC(); /*мы установили переменную, где: oPC - на ком запомнить + "Hour" - ее название GetTimeHour() + 1 - Тут мы получили текущее время функцией GetTimeHour() и прибавили один час. Вместо одного можно сделать сколько надо. */ SetLocalInt(oPC, "Hour", GetTimeHour() + 1); //так можно запомнить и минуты и секунды SetLocalInt(oPC, "Minute", GetTimeMinute() + 1);//минуты SetLocalInt(oPC, "Second", GetTimeSecond() + 1);//секунды } //в другом скрипте мы проверим время void main() { //если текущий час равен запомненному if(GetTimeHour() == GetLocalInt(oPC, "Hour")) { } //если текущие час, минуты и секунды совпадают с запомненными if(GetTimeHour() == GetLocalInt(oPC, "Hour") && GetTimeMinute() == GetLocalInt(oPC, "Minute") && GetTimeSecond() == GetLocalInt(oPC, "Second")) { } } |
QUOTE (zmey @ Dec 16 2005, 19:15) |
Мне надо ОДНОМУ предмету присвоит ДВЕ уникальные силы (только собственное питание) как это сделать? |
QUOTE (zmey @ Dec 16 2005, 18:15) |
Мне надо ОДНОМУ предмету присвоит ДВЕ уникальные силы (только собственное питание) как это сделать? |
QUOTE (Master Wu @ Dec 4 2005, 23:30) |
Такой вопрос. Можно ли как-то заставить появившихся гвардов бежать к ПС и атаковать только его (в пределах одной локи),где бы и как бы далеко от них он нибыл, а не стоять и ждать, пока он подойдет ближе. Не знаю, может я туплю, но противники (НПС) все равно реагируют на меня только когдя я подхожу к ним в зону прямой видимости. А мне нужно несколько иное. Нужно чтобы они бежали к ПС вне зависимости от того, насколько он далеко от них. |
Neverwinter Script Source |
void main() { object oNPC = GetObjectByTag("");//Таг появившихся гвардов object oPC = GetLastHostileActor(OBJECT_SELF); AssignCommand(oNPC, ActionMoveToObject(oPC)); } |
Neverwinter Script Source |
// Force the action subject to move to oMoveTo. void ActionForceMoveToObject(object oMoveTo, int bRun=FALSE, float fRange=1.0f, float fTimeout=30.0f) |
QUOTE (Master Wu @ Dec 18 2005, 19:14) |
Но мне никак не удавалось заставить их бежать к убившему гварда. |
QUOTE |
Такой вопрос. Можно ли как-то заставить появившихся гвардов бежать к ПС и атаковать только его (в пределах одной локи),где бы и как бы далеко от них он нибыл, а не стоять и ждать, пока он подойдет ближе. |
Neverwinter Script Source |
// Get the object that killed the caller. object GetLastKiller() // Attack oAttackee. // - bPassive: If this is TRUE, attack is in passive mode. void ActionAttack(object oAttackee, int bPassive=FALSE) |
Neverwinter Script Source |
void main() { object oPC = GetEnteringObject(); if (!GetIsPC(oPC)) return; if (GetSubRace(oPC)=="Drow") return; object oTarget = oPC; int nLevel = GetHitDice(oPC); int nDamage; int nRealDamage; int nDC = 20; effect eEffect; nDamage = 2 * d10(); nRealDamage = GetReflexAdjustedDamage(nDamage, oPC, nDC, SAVING_THROW_TYPE_TRAP, OBJECT_SELF); eEffect = EffectDamage(nRealDamage, DAMAGE_TYPE_NEGATIVE, DAMAGE_POWER_ENERGY); ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oPC); nDamage = 2 * d10(); nRealDamage = GetReflexAdjustedDamage(nDamage, oPC, nDC, SAVING_THROW_TYPE_TRAP, OBJECT_SELF); eEffect = EffectDamage(nRealDamage, DAMAGE_TYPE_NEGATIVE, DAMAGE_TYPE_POSITIVE); ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oPC); ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_DESTRUCTION), GetLocation(oTarget)); } |
Neverwinter Script Source |
// Set the destroyable status of the caller. // - bDestroyable: If this is FALSE, the caller does not fade out on death, but // sticks around as a corpse. // - bRaiseable: If this is TRUE, the caller can be raised via resurrection. // - bSelectableWhenDead: If this is TRUE, the caller is selectable after death. void SetIsDestroyable(int bDestroyable, int bRaiseable=TRUE, int bSelectableWhenDead=FALSE) |