Мефистофель
Jul 17 2005, 00:52
Vhall Спасибо! заменил, я балван.
Добавлено в [mergetime]1121565207[/mergetime]
Очень нужен скрипт, чтобы ПК полиморфился в заранее созданного в политре существа. такое возможно реализовать?
Zirrex
Jul 17 2005, 12:01
Мефистофель, полиморфиться можно не во всех существ, если ты посмотришь 2da, то увидишь, что там не все существа рассмотрены, а сменить облик можно на любое существо. Меняешь ему облик, добавляешь скриптово возможности, и готово. Если ты решишь добавлять невидимые объекты, то нужно убедиться, что они соответствуют уровню персонажа. Хотя бы так:
Neverwinter Script Source |
void main() { object oPC = OBJECT_SELF;
effect eSummon = EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_3); effect eWerewolf = EffectPolymorph(POLYMORPH_TYPE_WEREWOLF, TRUE);
if (GetAppearanceType(oPC) != APPEARANCE_TYPE_WEREWOLF) { ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSummon, oPC); DelayCommand(1.0, AssignCommand(oPC, SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_WEREWOLF))); } // или же обычный полиморф
effect eEffect = GetFirstEffect(oPC);
while (GetIsEffectValid(eEffect)) { if (GetEffectType(eEffect) != EFFECT_TYPE_POLYMORPH) { AssignCommand(oPC, ApplyEffectToObject(DURATION_TYPE_PERMANENT, eWerewolf, oPC)); return; } eEffect = GetNextEffect(oPC); } } |
Zirrex, застрелю!

это еще мелочи, что в первом блоке скрипта явно затянувшееся вступление: "DelayCommand(1.0, AssignCommand(oPC,"... а вот то, что во втором - уже ни в какие ворота. т.е. страшного, конечно, ничего не случится от того, что полиморф наложится столько раз, сколько эффектов в данный момент на игроке, но это не может быть примером хорошего поведения для скриптера!

ps. вот вылез с критикой, а глаза не разул - return не заметил. тем не менее, правильнее от этого скрипт не становится - на первом же не полиморф-эффекте он вывалится - зачем тогда вообще цикл?
Мефистофель
Jul 19 2005, 00:14
Дело в том что у меня кут-сценка где ведьма превращает ПК в "что угодно" и мне нужно реализовать превращение в кат-сценке что делать?
Добавлено в 00:15 И ещё нужно чтобы некая волшебница в разговоре вернула нормальный облик.
//пк в лягушку
Добавлено в 00:21 Попробовал добавить в кут-сцену.
SQL |
effect eP = EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_2); effect eW = EffectPolymorph(POLYMORPH_TYPE_WEREWOLF, TRUE);
if (GetAppearanceType(oPC) != APPEARANCE_TYPE_WEREWOLF) { ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSummon, oPC); DelayCommand(1.0, AssignCommand(oPC, SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_WEREWOLF))); |
}
-----------------------------
Найн не пашет?
Мефистофель
Jul 19 2005, 03:50
dumbo Вы што я не так умён чтоб это понять.
тулсет орёт что нет функции пустоты?
1) ведьма: где тег ведьмы, и вабще как скрипт находит нужного Непися?
2) волшебница: тож самое?
Мефистофель
Jul 19 2005, 04:57
dumbo извени плиз за тот пост, просто ночь мозги не работают.
вот состряпал кажись работать должно, глянь.
ето ведьма превратит ПК во пингвина верно?
Neverwinter Script Source |
void main() { object oPC = GetEnteringObject(); object oM1 = GetObjectByTag("MM1"); object oCAM1 = GetObjectByTag("CAM1"); //--------------------------------- if (GetIsPC(oPC) == FALSE) return; SetCutsceneMode(oPC); //-------------------------------- DelayCommand(1.0, AssignCommand(oPC, ActionJumpToObject(oCAM1))); DelayCommand(1.6, AssignCommand(oPC, SetCameraFacing(180.0, 3.0, 90.0, CAMERA_TRANSITION_TYPE_FAST))); } void PenguinPC(object oPC) { if (!GetLocalInt(oPC, "SavedAppearance")) SetLocalInt(oPC, "SavedAppearance", GetAppearanceType(oPC)); SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_PENGUIN); } |
Раскалдовываем.
Neverwinter Script Source |
void main() { object oPC = GetPCSpeaker(); object oVol = GetObjectByTag("Vol"); } void UnpenguinPC(object oPC) { if (GetLocalInt(oPC, "SavedAppearance")) SetCreatureAppearanceType(oPC, GetLocalInt(oPC, "SavedAppearance")); } |
Разумееется будет добавлена пара спеллов.
Мефистофель, процедуры являются отдельными блоками скрипта, которые нужно вызывать, чтобы код, находящийся в них, исполнялся. предназначены процедуры для того, чтобы избежать постоянного повторения однотипных операций - один раз написал блока кода, а потом его просто вызываешь в разных местах. ы? я же оформил эти куски в виде процедур потому, что не знал как именно у тебя протекают кут-сцены. процедуры сами ты вставил, а вызывать их кто будет?!
Neverwinter Script Source |
void PenguinPC(object oPC) { if (!GetLocalInt(oPC, "SavedAppearance")) SetLocalInt(oPC, "SavedAppearance", GetAppearanceType(oPC)); SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_PENGUIN); }
void main() { object oPC = GetEnteringObject(); object oM1 = GetObjectByTag("MM1"); object oCAM1 = GetObjectByTag("CAM1"); //--------------------------------- if (GetIsPC(oPC) == FALSE) return; SetCutsceneMode(oPC); //-------------------------------- DelayCommand(1.0, AssignCommand(oPC, ActionJumpToObject(oCAM1))); DelayCommand(1.6, AssignCommand(oPC, SetCameraFacing(180.0, 3.0, 90.0, CAMERA_TRANSITION_TYPE_FAST))); DelayCommand(2.0, PenguinPC(oPC)); } |
если вызов скрипта висит на диалоге волшебницы, то не нужно ее искать по тэгу - скрипт и так выполняется "от ее имени" - т.е. волшебница = OBJECT_SELF. и обрати внимание, как надо делать, чтобы размещать процедуры ниже основной процедуры main().
Neverwinter Script Source |
// опережающее объявление процедуры void UnpenguinPC(object oPC);
void main() { object oPC = GetPCSpeaker(); object oVol = OBJECT_SELF; //GetObjectByTag("Vol"); UnpenguinPC(oPC); }
// непосредственно само описание процедуры void UnpenguinPC(object oPC) { if (GetLocalInt(oPC, "SavedAppearance")) SetCreatureAppearanceType(oPC, GetLocalInt(oPC, "SavedAppearance")); } |
Мефистофель
Jul 19 2005, 05:38
Спасиб Думбо всё проверил пашит как надо!

.
респект! и просьба потри тут половину всего ты "мастер" ты можеш, а то мне достанется.
Добавлено в [mergetime]1121741079[/mergetime] Думбо пока ты не ушёл ещё вопросик, вот у меня например кут-сценка, идтёт и вдруг бац, и появляются 2ПК передо мной. т.е. скриптом откопировать ПК, и сделать и поставить 2, но чтоб они были враждебны против истенного ПК.
Мефистофель, удалять чужие посты могут модераторы, но не мастера. а вот свои ты можешь сам грохнуть, чем и рекомендую заняться. начиная с 1:14 можно все убивать. я свои протру - и будет чистота. а потом иди в скрипты и там повтори свой последний вопрос - там отвечу, как время будет.
Мефистофель
Jul 19 2005, 06:13
Неполучается грохать есть только редактировать.
Zirrex
Jul 19 2005, 09:13
dumbo, сейчас посмотрел, не помню, зачем цикл сделал, видимо я вначале хотел снять полиморф, а потом зачем-то сделал, что он наоборот должен наложиться. Все верно, цикл там не нужен. А в первом блоке у меня задержка лишь для того, чтобы вначале проиграл эффект, а уж потом наложился облик. На практике все работает.
Мефистофель, не совсем понял, что ты подразумеваешь под ПК? Слово ПК актуально в онлайновой игре, но ни как не в одиночной. Тут они будут просто убийцами.
Batkom
Jul 19 2005, 13:00
Zirrex скорее всего PC (Player Char)
-=PsyXaoc=-
Jul 19 2005, 15:38
Наверное все же сюда... Такс
Есть две команды А и Б, они постоянно воюют,
Есть нондроп дивайс, на него нужно положить скрипт, чтобы:
1)Записывал кол-во убийств(фрагов) (число X)
2)При убийтве перса ниже чем на 10 уровне вычитать из X единицу
3)Команда, при которой можно узнать хонор статус другого игрока...
Как это реализовать?
Почти уверен, что такая херь есть на волте, только никак не найду...
Batkom
Jul 19 2005, 15:50
вставь в скрипт смерти игрока счетчик, а потом сделай чтобы дейвас подводил статистику
-=PsyXaoc=-
Jul 19 2005, 18:22
А можно конкретней чуть-чуть?
Loxness
Jul 19 2005, 20:57
Здравсвуйте
Подскажите пожалуйста где можно найти что нибудь типа справочника или описания на русском языке скриптов использовавшихся в стандарстной компании и 2 официальных адднонах
Под описнаием подразумеваю - скрипт компании -называется -так то испльзуеться там -то так то и так -то
Например Скрипт (.....) вставляется в диалог и после этой фразы оппонент атакует
Спасибо
Zirrex
Jul 19 2005, 21:01
-=PsyXaoc=- посмотри в базе скриптов код скрипта, который сохраняет координаты персонажа даже после рестарта. Тебе нужно на его подобии сделать предмет, на который впоследствии записывать любые переменные, которые должны сохраняться даже после рестарта.
И еще, учись писать понятно, я твое сообщение перечитал несколько раз, и все равно не понял некоторые слова. Зачем заменять слова бредом, если их можно написать по-русски?
Мефистофель
Jul 20 2005, 00:17
Zirrex ПК, Перс, персонаж кем играешь в одиночной игре.
-fenix-
Jul 20 2005, 08:11
Loxness, есть только незаконченный перевод функций!
тут
Я ещё не
(вырезано цензурой) вас со своими глупостями? так вот тут такое дело: возможно ли значения переменных хоть каким - нибудь раком перенести из одного модуля в другой (у меня задумано шесть взаимосвязанных модулей, пока готово два).
Добавлено в [mergetime]1121939686[/mergetime] и ещё, в Ордах (второй эпизод) один хмырь, забыл кто, усовершенствовал экиперованное оружие. Но, насколько я понял, замены оружия из инвентаря на новое там нет. Тогда как же это работает?
Добавлено в [mergetime]1121939955[/mergetime] и последнее. Если я атакую в своем модуле простолюдина в одной из локаций, то за мной охотятся во всех. Например, убил я фермера на затеряной в полях ферме, а потом в городе за три (ВЫРЕЗАНО ЦЕНЗУРОЙ) оттуда вся стража меня гоняет. Как от этого избавиться НЕ МЕНЯЯ ФРАКЦИИ НЕПИСЕЙ?
Аваддон
Jul 21 2005, 13:19
QUOTE (zmey @ Jul 21 2005, 11:37) |
Я ещё не (вырезано цензурой) вас со своими глупостями? так вот тут такое дело: возможно ли значения переменных хоть каким - нибудь раком перенести из одного модуля в другой (у меня задумано шесть взаимосвязанных модулей, пока готово два). |
Глобальных или каких? Переменные сохраняются на вещах, которые у игрока в инвентаре. И если игрок перенесет эти вещи с собой то и переменные. В свое время в файле игрока хранятся все переменные присвоенные вещам. Или же можно при выходе из одного модуля записывать все переменные в базу данных, а при входе в другой мод их считывать и присваивать. Или вобще все переменные в БД хранить.
QUOTE (zmey @ Jul 21 2005, 11:37) |
и ещё, в Ордах (второй эпизод) один хмырь, забыл кто, усовершенствовал экиперованное оружие. Но, насколько я понял, замены оружия из инвентаря на новое там нет. Тогда как же это работает? crazy.gif |
Вероятно так же как в стандартном НВН-крафте. Посмотри в скриптах.
QUOTE (zmey @ Jul 21 2005, 11:37) |
и последнее. Если я атакую в своем модуле простолюдина в одной из локаций, то за мной охотятся во всех. Например, убил я фермера на затеряной в полях ферме, а потом в городе за три (ВЫРЕЗАНО ЦЕНЗУРОЙ) оттуда вся стража меня гоняет. Как от этого избавиться НЕ МЕНЯЯ ФРАКЦИИ НЕПИСЕЙ? |
А ты в свойствах фракции Commoner убери галочку "Глобальный эффект" (Global Effect).
Аваддону: смотрел в скриптах, не врубился. Я - маг начинающий, к тому же по инглишски не спикаю.
А за совет про глобальный эффект - спаибище! Попробую испытать.
Batkom
Jul 21 2005, 13:44
вот кстати, в сепе есть моделька шеи для армора(например 06) изображающая плащик, можно ли смены модельки повесить на onEquip, чтобы когда одеваешь плащ, менялась моделька шеи на соответствующую с плащом?
Здрасьте, снова я вернулся засерать ваши мозги.
1. Как сделать, чтобы при входе непися в триггер менялось значение переменной
2. как сделать, чтобы при входе в триггер вещь "размножалась"? Например, есть кольцо, которое время от времени "рождает" еще несколько...
3. Если можно, то подробно, и с примерами, мы, драконы, пока маленькие - страшно тупые...
-fenix-
Jul 21 2005, 14:35
QUOTE (zmey @ Jul 21 2005, 13:55) |
2. как сделать, чтобы при входе в триггер вещь "размножалась"? Например, есть кольцо, которое время от времени "рождает" еще несколько... |
ВСЕ СТАВЕТСЯ НА ОнЭнтер ТРИГЕРА
Не уверен, но вроде должно работать
Neverwinter Script Source |
void main() { object oPC = GetEnteringObject(); object oCol = GetObjectByTag ("Таг кольца"); object oItem = GetFirstItemInInventory(oPC);
if (GetIsPC(oPC)) // проверяем, что наступил PC
{ while (GetIsObjectValid(oItem)) // проверяем, что взятый объект - это // правельный объект { if (GetTag(oItem) == GetTag(oCol)) // проверяем тот ли тег у объекта { ActionGiveItem(oCol, oPC); // даем кольцо } oItem = GetNextItemInInventory(oPC); // берем следующий предмет } } } |
QUOTE (zmey @ Jul 21 2005, 13:55) |
1. Как сделать, чтобы при входе непися в триггер менялось значение переменной |
Neverwinter Script Source |
void main() { SetLocalInt(object oObject, string sVarName, int nValue); // object oObject - объект на котором будет записана переменная // string sVarName - название переменной // int nValue - значение переменной } |
З.Ы Скачай из файлов туториал Айвана по авроре!
З.З.Ы это скорее уже в вопросы по скриптам
Fenixу, вечно живому и из пепла возрождающемуся! Спасибо! Но ты это, раскладку клавиатуры менять не ленись, З.Ы - этокак- то странно смотрится...
Добавлено в [mergetime]1121949907[/mergetime] Вопрос номер следующий: я хочу добавит в игру новые иконки (кольца, амулеты и т д.) создаю рисунки в формате tga засовываю их в hak и... ничего не работает.
а иконки, выдранные из других hak-ов и засунутые в один новый прекрасно отображаются. НЕ ВРУБЛЮСЬ, В ЧЁМ ДЕЛО? Вроде размеры соблюдены...
и ещё... у меня в модуле 50 различных иконок колец. Достал ещё несколько (HAk) подключил... а их нет. Больше 50 нельзя, что - ли? Ведь заменить их получается.
Аваддон
Jul 21 2005, 17:46
zmey надо править baseitems.2da там есть столбец отвечающий за кол-во иконок.
Loxness
Jul 21 2005, 21:42
Подскажите пожалуйста пример скрипта вставляемых в диалог что бы персонаж
1.падал и дрых
2.Герой получал ХР за получение вещи (в диалоге передали и с трупа взяли)
3.Герой получает ХР за финальную фразу
4.Герой менял свой пол
5.Как перейти в область что бы наемники не перешли с главным героем ?
6.как перейти в диалоге последней фразой в новый модуль и соотв. в новом модуле активировать старого перса?
Также как задать в области тригггер что бы при наступлении на него героем появились NPS но не нападающие на героя?
Как регулировать фразы в диалогах - как сделать так что бы в первый раз когда подошли к персонажу была одна фраза а во второй другая?
QUOTE (Loxness @ Jul 21 2005, 22:42) |
1.падал и дрых |
не совсем понятно, что ты имеешь ввиду. самое простое:
Neverwinter Script Source |
AssignCommand(GetPCSpeaker(), ActionPlayAnimation(ANIMATION_LOOPING_DEAD_BACK, 1.0, 9999.0));// 9999 - длительность в секундах |
QUOTE (Loxness @ Jul 21 2005, 22:42) |
2.Герой получал ХР за получение вещи (в диалоге передали и с трупа взяли) |
обратно не понять тебя - с какого трупа? что значит в "диалоге передали"? если я правильно понимаю процесс окончания стандартного квеста "пойди-принеси-пошелнахнемешай", то на строку PC "на тебе вещь" проверку типа:
Neverwinter Script Source |
return GetIsObjectValid(GetItemPossessedBy(GetPCSpeaker(), "тэг мегавещи")); |
и Actions Taken типа:
Neverwinter Script Source |
DestroyObject(GetItemPossessedBy(GetPCSpeaker(), "тэг мегавещи")); GiveXPToCreature(GetPCSpeaker(), 1000); |
QUOTE (Loxness @ Jul 21 2005, 22:42) |
3.Герой получает ХР за финальную фразу |
мда. опять же, только по предположениям о том, что ты имел ввиду - на строку("финальную") повесь Actions Taken:
Neverwinter Script Source |
GiveXPToCreature(GetPCSpeaker(), 1000); |
QUOTE (Loxness @ Jul 21 2005, 22:42) |
4.Герой менял свой пол |
ура! четко и ясно. но. буу. это невозможно.

можно только поменять вид игрока(SetCreatureAppearance), но пол останется неизменным.
QUOTE (Loxness @ Jul 21 2005, 22:42) |
5.Как перейти в область что бы наемники не перешли с главным героем ? |
отцепить их - RemoveHenchman. либо корректировать стандартные скрипты хенчей. может и есть такая возможность в изначальном варианте, но я насчет такого не в курсе(не смотрел).
QUOTE (Loxness @ Jul 21 2005, 22:42) |
6.как перейти в диалоге последней фразой в новый модуль и соотв. в новом модуле активировать старого перса? |
Neverwinter Script Source |
//для шарда ActivatePortal(GetPCSpeaker(), "nwn.blabla.ru:5151", "пароль", "ВЭЙПОИНТ В НОВОМ МОДУЛЕ(только верхний регистр)", TRUE); //для сингла StartNewModule("имя файла нового модуля(без расширения)"); |
QUOTE (Loxness @ Jul 21 2005, 22:42) |
Также как задать в области тригггер что бы при наступлении на него героем появились NPS но не нападающие на героя? |
простой single-shot encounter. NPC фракции Commoner, но в свойствах encounter'а фракция должна быть Hostile - иначе не сработает.
QUOTE (Loxness @ Jul 21 2005, 22:42) |
Как регулировать фразы в диалогах - как сделать так что бы в первый раз когда подошли к персонажу была одна фраза а во второй другая? |
сто пятьдесят тысяч раз уже жевали. в скриптах на фразах надо ставить/проверять локальные переменные.
ps. устал. уехал в иные страны на моря.
Loxness
Jul 22 2005, 02:01
Прошу прощения за неточные вопросы и за дельные ответы
итак продолжим
1.Как сделать так что бы после сказанной фразы - произошел мультик вызова какой нибудь зверюги
(не помощника а например Демона из круга...там скалы из земли лезут )?
2.Как сделать так что бы наемник сам отделялся , отказываясь далее идти (наступив на триггер какой нибудь)?
3.Предположим сделаны 3 одинаковых персонажа , поместив их в одну локацию и создать точки маршрута , все трое туда ломятся, как сделать так что бы ходил один а остальные стояли?
Dik Morris
Jul 22 2005, 09:56
1. Не помню
2. Дык вот скриптик на onEnter тригерра: (попозже выложу)
3. Нет ничего проще! Просто сделай этим персам уникальные (свои разные тэги) тэги, и все.
-fenix-
Jul 22 2005, 12:24
QUOTE (Loxness @ Jul 22 2005, 02:01) |
1.Как сделать так что бы после сказанной фразы - произошел мультик вызова какой нибудь зверюги (не помощника а например Демона из круга...там скалы из земли лезут )? |
Тут надо сценку писать! А для этого либо ты сам в них разбераешься, с задаванием вопросов, либо досконально объясняешь, что тебе точно нужно - может кто тут напишет.
QUOTE (Loxness @ Jul 22 2005, 02:01) |
2.Как сделать так что бы наемник сам отделялся , отказываясь далее идти (наступив на триггер какой нибудь)? |
Loxness, тут уже спрашивали
QUOTE (zmey @ Jul 21 2005, 11:01) |
Люди! Мне нужна такая хреновина: Например, с моим персом идет напарник. Мне надо, чтобы в определенном месте он остановился, и сказав типа "Я дальше не пойду" выбыл из компаниии уже НЕ ПРИСОЕДИНЯЛСЯ НИКОГДА. |
QUOTE (-fenix- @ Jul 21 2005, 12:07) |
zmey, есть функция
Neverwinter Script Source | void RemoveHenchman(object oMaster, object oHenchman=OBJECT_SELF) |
где oMaster - это тот от кого уходит хенчмен oHenchman - это хенчмен, каторый уходит
То, что ты хочешь можно сделать с помощью тригера и скрипта на нем проверяющего кто наступил. Рисуешь тригер и на ОнЭнтер ставишь скрипт
Neverwinter Script Source | void main() { object oMaster = GetEnteringObject(); object oHenchman = GetHenchman(oMaster);
if (GetIsPC (oMaster) && !GetLocalInt(OBJECT_SELF, "TRIGER") == 1) { AssignCommand(oHenchman, ActionSpeakString("Я дальше не пойду")); RemoveHenchman(oMaster, oHenchman); SetLocalInt(OBJECT_SELF, "TRIGER", 1); SetLocalInt(oHenchman, "TRUS", 1); // устанавливаем локалку, а на ветке // диалога, где хенча можно обратно взять, ставим проверку на эту локалку } } |
|
Loxness
Jul 22 2005, 19:45
Вопрос по скрипту об удалении из гурппы наемника
я попробовал что то не получается
взял тестовую локацию вставил туда наемника Alex с тегом 123 - далее диалог = он со мной
ставлю триггер (настраиваемый ) в onenter добавляю заранее созданный скрипт как написано
выше ) запускаю игру ...все хорошо только наемник пробегает местность где триггер и ничго..не уходит

что я делаю не так?
-fenix-
Jul 22 2005, 21:32
У меня все работает!!!
Не знаю ,какой настраиваем, наверное перевод разный - у меня называется новый общий.
QUOTE (Loxness @ Jul 22 2005, 19:45) |
с тегом 123 |
Плохой тег, мож из-за него?
QUOTE (Loxness @ Jul 22 2005, 19:45) |
далее диалог |
Диалог, чтоб он присоеденился?
Тут должен наступить ты, а не хэнчмен!
--------------------------
Есть функции
Neverwinter Script Source |
void SetPCDislike(object oPlayer, object oTarget) void SetPCLike(object oPlayer, object oTarget) |
А как понять устаналивает oPlayer и oTarget , чтобы испытывать неприязнь/приязнь друг к другу. В чем заключается эта неприязнь/приязнь.
Zirrex
Jul 22 2005, 22:57
-fenix- они должны менять отношение одного персонажа к другому персонажу. Данная опция работает только в онлайновом режиме. Если ты обратил внимание, то при нажатии на кнопку "P", появляется список персонажей, в данный момент играющих на шарде. Там же есть иконка "любит, не любит". При ее переключении твой персонаж может стать врагом выбранному персонажу.
Эти функции должны скриптовым путем переключать это отношение. Я в свое время пробовал их использовать даже на хартбите, проверяя, если персонаж отвечает требованиям низкой репутации, то выставить автоматически для всех находящихся персонажей на сервере отрицательное отношение. Почему-то не получается. Либо я не то делал, либо эти функции так не работают.
Batkom
Jul 23 2005, 04:35
Эмм....может я чего то не до конца понимаю, везде, где я использую локальные переменные или "базы данных" а ля SetCampaigin[впиши недостающее], они прилично проглюкивают, гдето не считываются, или не записываются... хз, я логически размышляя пришел к выводу, что эти функции должны сохранять то, что тебе нужно, вроде сохраняют, но далеко не всегда.
Расскажите пожалуйста об этом как можно поподробнее и как могут себя повести вункции установки переменных и работы с базами данных с тех или иных случаях.
З.Ы. у меня он лайн модуль, потому нужно какое то сохранение некоторых данных.
wolverine
Jul 23 2005, 10:30
Многоуважаемое комьюнити :) Возник на досуге вопрос животрепещущий. Как отключить меню крафта (изменения вида вещей) в кастомном модуле ? Т.к. хочется все таки уникальность вида вещей сделать, а то иначе все будут либо в мантия бегать , либо доспехи рыцарские одевать.
Зарание большое сенкс.
С уважением , Wolv
Zirrex
Jul 23 2005, 14:37
wolverine очень просто, находишь диалог "x0_skill_ctrap", и либо удаляешь его, оставляя пустым, либо добавляешь новый раздел диалога, например "Крафт отключен". Теперь при попытке активации всегда будет выводиться эта фраза.
Batkom ты их постоянно что ли используешь? Дело в том, что эти функции нужны 1 раз. Они создают запись в файл базы, а дальше ты уже просто изменяешь ее содержимое. Т.е., тебе надо создать уникальный файл, куда записать переменную, а потом ее изменять, но не создавать каждый раз файл заново.
Например, входит на шард первый раз игрок, ему присуждается номер, который сохраняется в уже существующий файл базы данных. Далее, когда он перезайдет, этот номер просто считается, а не создастся новый номер на одного и того же персонажа.
Batkom
Jul 23 2005, 14:55
ну допустим крафт
сначала считывается навык игрока
а = GetCampaignInt("craft", "Weapon" + GetName(oPC))
если ничего такого нет, то помоему а = 0
а далее при удачных обстоятельствах навык может прокачаться тогда
SetCampaignInt("craft", "Weapon" + GetName(oPC), a+1)
Zirrex
я тебя не совсем понял, у меня не получилось с установкой флажка смерти игроку и дальнейшей телепортации в фугу при заходе
игрок либо все время варпалсяв фугу при любом положении флажка, либо вообще оставался стоять на месте
Zirrex
Jul 23 2005, 15:24
Batkom это лишь говорит о том, что у тебя флажок не изменяется. Т.е., если у тебя персонаж воскрес, то флажок должен стать равным нулю, и не иначе. Если у тебя он не записался при этом в базу, значит что-то не так делаешь.
Например, как у меня, при входе серия скриптов, там идет проверка, был ли воскрешен персонаж, определенные цифры одной переменной, если нет, то дальше идет проверка, если персонаж жив, соответствующая цифра переменной равная нулю, то дополнительная проверка, а верно ли, что он жив, и тут вступает в силу еще одна переменная, если она равна 1, то персонаж умирает и переносится в фугу, а его труп размещается на кладбище, чтобы могли воскресить другие игроки. Переменная, которая отвечает за проверку, жив или мертв персонаж, у меня сохраняется на предмет, который постоянно носит с собой каждый из персонажей, и соответственно не затирается с рестартом.
Функция SetCampaignInt у меня сработала 1 раз, когда только персонаж создавался, потом она уже не используется, а все значения берутся с предмета. Конечно, если ты не хочешь смешивать переменные в одном месте, то создавай разные базы.
Batkom
Jul 23 2005, 17:38
то есть SetCampaign лучге не пользоваться?
Zirrex
Jul 23 2005, 20:13
Batkom нет, его использовать можно, но верно, а не работать как с переменной, которую надо часто перезаписывать.
Larrel
Jul 24 2005, 21:47
Какой скрипт нужно юзать, чтобы переместить НПС по окончании диалога к конкретному вэйпоинту и обратно?
Nick Parker
Jul 25 2005, 02:49
Меня стал мучить один вопрос. Можно сделать так, чтобы играть в модуле можно было только за одну рассу? В ПЛ, если уровень больше был, то Game Over, тут наверное также: если не человек, то GoodBye. Но как это сделать?
Tiger Greyhawk
Jul 25 2005, 04:21
QUOTE (Larrel @ Jul 24 2005, 22:47) |
Какой скрипт нужно юзать, чтобы переместить НПС по окончании диалога к конкретному вэйпоинту и обратно? |
Это обсуждалось по отдельности уже немерено раз. Смотри
FAQ по Aurora Toolset Вопросы и ответы и читай темы "Скрипты" и "Вопросов новичков"
На последней ветке диалога, во вкладке "Action Taken" (Совершены действия) пишешь скрипт:
Neverwinter Script Source |
void main() { object oPC=GetPCSpeaker(); object oWP=GetObjectByTag("TAG_WP"); location lCurrent=GetLocation(oPC); AssignCommand(oPC, ActionJumpToObject(oWP)); AssignCommand(oPC, ActionWait(5.0)); AssignCommand(oPC, ActionJumpToLocation(lCurrent)); } |
Это к вейпу и через пять сек обратно. Естественно, должен существовать вейп с тагом: TAG_WP
QUOTE (Nick Parker @ Jul 25 2005, 03:49) |
Меня стал мучить один вопрос. Можно сделать так, чтобы играть в модуле можно было только за одну рассу? В ПЛ, если уровень больше был, то Game Over, тут наверное также: если не человек, то GoodBye. Но как это сделать? |
Дык, на OnClientEnter ставишь проверку на расу...
Помогите, если это возможно!!

Можно ли свернуть окно скрипта... Я понимаю это глупый вопрос, но просто так мешает когда не можешь свернуть окно скрипта и разместить что нить в локе, посмотреть тег и т.д.
Здрасьте, это снова Я! Посидел я пару деньков, (ВЫРЕЗАНО ЦЕНЗУРОЙ), и возникла у меня вопросов куча немеряная:
1. У меня установлены Тени и Орды. Как можно сделать, чтобы в моем модуле перс не мог создавать оружие, броню, зелья и свитки из материалов?
2. Как сделать, чтобы непись утром выходил из дома, а но ночь возвращался в дом и закрывал дверь?
3. Как предмету присваивается уникальная сила?
НАПРИМЕР:
а) нужно, чтобы при использовании уникальной силы предмета игрок получал один из трех предметов случайным образом? (Сила используется 1 раз в день)
Пусть тег предмета с уникальной силой: UN, Рес реф : un
теги получаемых предметов: ITEM1 , ITEM2, ITEM3
Рес реф-ы :item1, item2 ,item3
б) нужно, чтобы три раза можно было вызвать существо. (после чего предмет исчезает)
Пусть тег предмета с уникальной силой : UN , рес реф: un
тег существа : CREATURE
ОЧЕНЬ ПРОШУ, ОБЪЯСНИТЕ ПОДРОБНО.
Добавлено в [mergetime]1122372681[/mergetime] ишо пара глупостей: как сделать, чтобы при наличии в инвентаре перса определённого предмета время от времени происходило что - то?
ПОЯСНЯЮ: например, если у перса в инвентаре есть предмет с ТЕГОМ: ITEM и рес реф-ом :item , ето каждый день в его инвентаре появляется один предмет с тегом: PREDMRT и рес реф-ом :predmet
это еще не всё!
как сделать, чтобы предмет, если он экиперован, нельзя было снять, пока lokal int A=1
пример: кольцо имеет тег :RING и рес реф ring
Добавлено в [mergetime]1122383052[/mergetime] Аваддону
QUOTE |
zmey надо править baseitems.2da там есть столбец отвечающий за кол-во иконок.
|
уже нашёл. Но за помощь - спасибо!
Добавлено в [mergetime]1122387559[/mergetime] ..............
нужон скрипт, при котором если НЕПИСЬ отойдет от объекта на определённое расстояние, то подохнет. Поделитесь, ежели не жалко!
Vitalist
Jul 26 2005, 21:04
Обьясните, плиз, шаг за шагом, как создать триггер, при прохождение которого перс скажет нужную мне фразу?
Zirrex
Jul 26 2005, 22:43
zmey краткие ответы:
1. Самое простое, запретить все. С крафтом просто, удаляется диалог "x0_skill_ctrap" или дописывается еще одна ветка диалога, где пишется, что "крафт выключен", чтобы избежать вопросов. Не создавать материалы при убийстве монстров, убрав строчку " craft_drop_items(oKiller);". Посмотреть файл "nw_o2_coninclude" и убрать из генерации вещей пустые листки для заклинаний.
2. Посмотри скрипт "nw_c2_default9", там все написано.
3. На модульном эвенте "OnActivateItem" делаешь такой скрипт:
а)
Neverwinter Script Source |
void main() { object oItem = GetItemActivated(); object oPC = GetItemActivator(); string sItemTag = GetTag(oItem);
if ((sItemTag == "un")) { if (GetLocalInt(oPC, "UnDay") == FALSE) { int iRandom = d2() + 1; float fHour = HoursToSeconds(24);
switch (iRandom) { case 1: CreateItemOnObject("item_1", oPC); break; case 2: CreateItemOnObject("item_2", oPC); break; case 3: CreateItemOnObject("item_3", oPC); break; } SetLocalInt(oPC, "UnDay", TRUE); DelayCommand(fHour, SetLocalInt(oPC, "UnDay", FALSE)); } } } |
Уникальную силу надо делать на себя.
б) В свойствах каждой вещи добавляешь требуемое заклинание, и устанавливаешь, сколько раз можно использовать вещь. Ставишь не больше 3-х раз.
4. Ставишь на эвент модуля "OnHeartbeat" сей скрипт:
Neverwinter Script Source |
void main() { object oPlayer = GetFirstPC();
while (GetIsObjectValid(oPlayer)) { if (GetLocalInt(oPlayer, "ItemDay") == FALSE) { if (GetItemPossessedBy(oPlayer, "item1") != OBJECT_INVALID && GetItemPossessedBy(oPlayer, "item2") == OBJECT_INVALID) { CreateItemOnObject("item2", oPlayer); SetLocalInt(oPlayer, "ItemDay", TRUE); DelayCommand(fHour, SetLocalInt(oPlayer, "ItemDay", FALSE)); } } oPlayer = GetNextPC(); } } |
5. На эвентах модуля "OnPlayerUnEquipItem" и "OnUnAcquireItem" делаешь такие скрипты:
На эвент "OnUnAcquireItem":
Neverwinter Script Source |
void main() { object oItem = GetModuleItemLost(); object oPC = GetModuleItemLostBy();
if (GetTag(oItem) == "ring") { CopyObject(oItem, GetLocation(oPC), oPC); DestroyObject(oItem); AssignCommand(oPC, ActionEquipItem(oItem, INVENTORY_SLOT_RIGHTRING)); } } |
На эвент "OnPlayerUnEquipItem":
Neverwinter Script Source |
void main() { object oPC = GetPCItemLastUnequippedBy(); object oItem = GetPCItemLastUnequipped();
if (GetTag(oItem) == "ring") { AssignCommand(oPC, ActionEquipItem(oItem, INVENTORY_SLOT_RIGHTRING)); } } |
6. На хартбите НПС делаешь проверку:
Neverwinter Script Source |
void main() { object oPlace = GetNearestObjectByTag("place");
if (GetDistanceBetween(OBJECT_SELF, oPlace) > 1.0) { effect eDeath = EffectDeath(FALSE, FALSE); ApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, OBJECT_SELF); } } |
Надеюсь, не ошибся. Сам не проверял, но по идее должно работать. Требует проверки.
Vitalist, самое простое, создать триггер, на его эвенте "OnEnter" повесить такой скрипт:
Neverwinter Script Source |
void main() { object oPC = GetEnteringObject();
if (GetIsPC() { if (GetLocalInt(oMod, "Trigger") == FALSE) { SetLocalInt(oMod, "Trigger", TRUE); } } } |
Далее, на хартбите НПС сделать такой скрипт:
Neverwinter Script Source |
void main() { if (GetLocalInt(oMod, "Trigger") == TRUE) { AssignCommand(OBJECT_SELF, ActionSpeakString("Сообщение НПС", TALKVOLUME_TALK)); SetLocalInt(oMod, "Trigger", FALSE); } } |
Vitalist
Jul 27 2005, 09:16
Zirrex, как я понял, эту фразу скажет NPC, да? А мне хотелось бы что бы это вякнул игрок, типа мысли вслух...