![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#3911
|
|
Level 2 ![]() Класс: Волшебник Характер: Lawful Neutral Раса: Человек ![]() |
Хотелось бы что б было как в Проклятье Левора, чтоб персонаж появлялся типо на родной земле без денег и инвентаря , а не какойто полубог со стороны приходит.
В скриптах познания не велики, ранее лепил только торговце и перемещения, пытался тут инвентарь убить, подскажите непутевому волшебнику как тут лучше можно... Neverwinter Script //::////////////////////////////////////////////// //:: OnEnter am_mod_enter //:: Copyright © 2005 WRG! //::////////////////////////////////////////////// /* */ //::////////////////////////////////////////////// //:: Created By: Aiwan //:: Created On: 22.08.2005 //::///////////////////////////////////////////// void main() { object oMod = GetModule(); object oPC = GetEnteringObject(); if (!GetIsPC(oPC) || GetLocalInt(oMod, "START_GAME")) {return;} { SetLocalInt(oMod, "START_GAME", TRUE); AssignCommand(oPC, TakeGoldFromCreature(GetGold(oPC),oPC,TRUE)); object oItem = GetFirstItemInInventory(oPC); while(GetIsObjectValid(oItem)) { int i=0; while(i<14) { DestroyObject(GetItemInSlot(i, oPC)); i++; { } P.S. Слышал существует генератор модулей , хоть закрученный сюжет он не делает , но зато за пару сек расставит монстров и сгенерит примитивные квесты и торговцев. Где такой скачать можно? |
![]()
Сообщение
#3912
|
|
Level 3 ![]() Класс: Воин Характер: Lawful Evil Раса: Человек ![]() |
Так и можно, ты правильно взял скрипт Айвана.
Да, и еще... ты в другой теме спрашивал: Цитата Я тут недавно , может это и не в тему , кто знает скрипт чтоб воскрешение отменить, что бы в модуле только загружаться можно было? Все просто: В редакторе Aurora выбираешь меню "Редактировать", подпункт "Модульные свойства", вкладку "События". Ищещь событие OnPlayerDeath, открываешь скрипт, прописанный этому событию. Смотришь в самый конец. Одна из последних строчек будет DelayCommand(2.5, PopUpGUIPanel(oPlayer,GUI_PANEL_PLAYER_DEATH)). Меняй ее на такую строчку DelayCommand(2.5, PopUpDeathGUIPanel(oPlayer, FALSE, FALSE)); Потом сохраняй скрипт как свой. Т.е. не сохраняй изменения в имеющемся, а выбери пункт Сохранить Как и сохрани под своим именем. Так всегда лучше делать при редактировании имеющихся скриптов. Все, нажимай кнопку ОК в модульных свойствах. Теперь игрок может только загрузиться или выйти из игры. |
![]()
Сообщение
#3913
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Эм *посмотрел на скрипт* А это точно скрипт Айвана без изменений? о.О Такое впечатление, что там куска не хватает. Да и операторные скобки странно расставлены (IMG:style_emoticons/kolobok_light/snoozer_17.gif)
Neverwinter Script void main() { object oPC = GetEnteringObject(), oItem; int nSlot; TakeGoldFromCreature(GetGold(oPC), oPC); //забираем золото SetXP(oPC, 0); //забираем опыт for(nSlot = 0; nSlot <= 17; nSlot++) DestroyObject(GetItemInSlot(nSlot, oPC)); //убиваем надетые вещи oItem = GetFirstItemInInventory(oPC); while(GetIsObjectValid(oItem)) { DestroyObject(oItem); //убиваем инвентарь oItem = GetNextItemInInventory(oPC); } } Если игрок злобный и напихал в инвентарь кучу всего, будут тормоза из-за DestroyObject без задержки. Сообщение отредактировал Ilerien - Oct 23 2008, 16:56 |
![]()
Сообщение
#3914
|
|
Level 2 ![]() Класс: Волшебник Характер: Lawful Neutral Раса: Человек ![]() |
Благодарю всех , все пашет отлично.
Сюжет моего моего модуля посвящен племени орков, желательно вписать в этот скрипт ограничения , чтоб можно было играть только полуорками(только ограничения по расе). Кто-нибудь знает как лучше подправить автоматы в редакторе Aurora, большенство простейших скриптов можно сгенерить автоматически , только по каким то причинам генерят они не верно , можно ли их подправить. |
![]()
Сообщение
#3915
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
Благодарю всех , все пашет отлично. Странно... Если это скрипт для слота OnClientEnter, то золото у него останется. (IMG:style_emoticons/kolobok_light/wacko.gif) Нужно так: Neverwinter Script // забрать все золото AssignCommand(oPC, TakeGoldFromCreature(GetGold(oPC), oPC, TRUE)); Кто-нибудь знает как лучше подправить автоматы в редакторе Aurora, большенство простейших скриптов можно сгенерить автоматически , только по каким то причинам генерят они не верно , можно ли их подправить Мастер скриптов пишет все верно! Но не копилятся они могут по причине малой "я". Нужет патч Думбо или замена "я" на "Я" в комментариях к скрипту... (можно воспользовать авто заменой редактора скриптов) |
![]()
Сообщение
#3916
|
|
Level 1 Класс: Тайный Лучник Характер: Chaotic Neutral Раса: Нежить ![]() |
Мастера,Помогите чайнику, плз! Как присвоить переменной типа object самого персонажа, в сааамом начале модуля(onClientEnter)? Надо чтобы над ним появлялась всплывающая сторока типа 'Кто я? ничего не помню трам папам...'. Heelp! (IMG:style_emoticons/kolobok_light/help.gif)
|
![]()
Сообщение
#3917
|
|
Level 3 ![]() Класс: Воин Характер: Lawful Evil Раса: Человек ![]() |
2 Ksanatos:
Цитата Мастер скриптов пишет все верно! Но не копилятся они могут по причине малой "я". Нужет патч Думбо или замена "я" на "Я" в комментариях к скрипту... (можно воспользовать авто заменой редактора скриптов) А можно не париться и просто потереть все комментарии в базовом скрипте (IMG:style_emoticons/kolobok_light/wink3.gif) Просто у меня, например, Aurora базовая, но ведь все пашет!) По поводу ограничения по расе... К сожалению, я не знаю, как красиво завершить игру... Могу только предложить сырой способ: Neverwinter Script if (GetRacialType(oPC) != RACIAL_TYPE_HALFORC) //ЕСЛИ раса игрока НЕ полуорк, { //ТО с задержкой в 3 секунды вывести игроку сообщение о смерти. DelayCommand(3.0, PopUpDeathGUIPanel(oPC, FALSE, FALSE, 0, "Your message")); } Воть... в кавычках вместо "Your message" введи то, что будет появляться на окне смерти персоонажа. Что-то вроде "Вы должны быть полуорк!". Только на русский он будет ругаться. Воть... почему окно смерти? Нуу... потому что я знаю еще только два способе выкинуть игрока: 1. BootPC(oPC); //Это выкидывает игрока С СЕРВЕРА. При условии, что игрок играет на сервере. 2. EndGame(""); //Это просто завершает игру Казалось бы, то, что надо! Но в кавычках надо обязательно указать имя финального ролика. Не укажешь его или укажешь несуществующий - покажут просто базовый ролик. Вот... так что я решил, что через панельку смерти более красиво. К тому же у игрока тогда будет возможность прочитать в заголовке, почему же он "умер". Все, времени нет, убегаю... 2 DarkDante: Нет, не убегаю... Еще отвечу на твой пост... Чтобы игрок при старте модуля сказал нужную тебе фразу, воспользуйся следующим куском кода (из верно тобой указанного события OnClientEnter): Neverwinter Script //Объект oPC = вошедший объект; object oPC = GetEnteringObject(); //С задержкой в 3.0 секунды, Заставить oPC выполнить действие, ДействиеСказатьСтрочку "Message" DelayCommand(3.0, AssignCommand(oPC, ActionSpeakString("Message", TALKVOLUME_TALK))); Все, потом "Message" меняешь на нужное тебе сообщение. Кавычки сохраняются! Сообщение отредактировал Neakris - Oct 25 2008, 18:30 |
![]()
Сообщение
#3918
|
|
Level 1 Класс: Тайный Лучник Характер: Chaotic Neutral Раса: Нежить ![]() |
Спс, Neakris.
Сразу задам еще один вопрос - создав триггер, в собтие onEnter я вставляю следующий код: Код void main() { AssignCommand (OBJECT_SELF, ActionDoCommand(SpeakString("Недавно здесь была битва. Трупы ещё относительно свежие, но вороны уже успели выклевать им глаза и лица..."))); } и ничего не происходит (IMG:style_emoticons/kolobok_light/sorry.gif) Тоже самое если я пишу Код void main() { object oPC = GetEnteringObject(); AssignCommand (oPC, ActionDoCommand(SpeakString("Недавно здесь была битва. Трупы ещё относительно свежие, но вороны уже успели выклевать им глаза и лица..."))); } Мож я что делаю неправильно? И если да, то как надо? |
![]()
Сообщение
#3919
|
|
Level 1 ![]() Класс: Маг Характер: Lawful Evil Раса: Дракон NWN: Скриптинг [PW] ![]() |
OBJECT_SELF у тебя в первом варианте выступает как сам триггер.
ActionDoCommand там не надо. Лучше всего кстати использовать SendMessageToPC. |
![]()
Сообщение
#3920
|
|
Level 1 Класс: Тайный Лучник Характер: Chaotic Neutral Раса: Нежить ![]() |
Насчет OBJECT_SELF я сразу понял, а вот на счет ActionDoCommand это спс (IMG:style_emoticons/kolobok_light/yes3.gif)
|
![]()
Сообщение
#3921
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
DarkDante, для скриптов есть форумный тег nss (IMG:style_emoticons/kolobok_light/smile.gif)
Если хочется, чтобы над головой появлялось, надо юзать FloatingTextStringOnCreature (IMG:style_emoticons/kolobok_light/smile.gif) Сообщение отредактировал Ilerien - Oct 25 2008, 21:36 |
![]()
Сообщение
#3922
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
Сразу задам еще один вопрос - создав триггер, в собтие onEnter я вставляю следующий код: (...) Мож я что делаю неправильно? И если да, то как надо? Код сам по себе верный. Но вот подход нет. Триггеры не выводят текст над собой, как и произносят звуки... Это раз. А во-вторых, и самое главное, каждый скрипт нужно компилировать, а не просто сохранять! В этом основная ошибка, т.к. второй скрипт записан как раз для триггера, и почти верно... В этом скрипте не нужен оператор ActionDoCommand, т.к. переводит код в акцию и ГГ может её сбить. Кстати вывод строки может сразу быть записан, как акция: ActionSpeakString |
![]()
Сообщение
#3923
|
|
Level 1 Класс: Тайный Лучник Характер: Chaotic Neutral Раса: Нежить ![]() |
DarkDante, для скриптов есть форумный тег nss Сорри, это я перепутал малость (IMG:style_emoticons/kolobok_light/rolleyes.gif) Спс всем(IMG:style_emoticons/kolobok_light/yes3.gif) Хмм, тут ещё вопрос нарисовался... В некоторых модулях, в начале игры есть такая фишка - диалог героя самим с собой(поднять левел, тарам-парам...).Вот мне интересно - как с помощью скрипта запустить этот диалог(или вообще диалог)? Сорри, уж не надо, сам разобрался))))) |
![]()
Сообщение
#3924
|
|
Level 7 ![]() ![]() Класс: Некромант Характер: True Neutral Раса: Нежить ![]() |
Можно ли при помощи базовых функций организовать подсчет наносимого урона от игроков и их петов?
Если да, то как, если нет, то почему(логика подсказывает, что если эта информация отражается в battlechat'е, то ее можно использовать). Буду премного благодарен за ответ. |
![]()
Сообщение
#3925
|
|
Level 1 ![]() Класс: Маг Характер: Lawful Evil Раса: Дракон NWN: Скриптинг [PW] ![]() |
Есть две функции полезные в этом плане - GetTotalDamageDealt и GetDamageDealtByType.
Обе вешаются в OnDamaged. Первая возвращает весь урон, полученный коллером, вторая по типу. Кстати GetTotalDamageDealt помоему возвращает 0, если на плейсебле или двери их использовать. |
![]()
Сообщение
#3926
|
|
Level 7 ![]() ![]() Класс: Некромант Характер: True Neutral Раса: Нежить ![]() |
Спасибо, конечно, но я, видимо неправильно сформулировал вопрос. Можно ли подсчитать нанесенный урон за раунд для каждого нападающего по отдельности?
|
![]()
Сообщение
#3927
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
По идее можно, если использовать функции GetLastDamager() & GetTotalDamageDealt().
Только ещё хитрым образом надо будет отмерять раунд (IMG:style_emoticons/kolobok_light/smile.gif) Сообщение отредактировал Ilerien - Oct 27 2008, 00:20 |
![]()
Сообщение
#3928
|
|
Level 6 ![]() ![]() Класс: Волшебник Характер: Chaotic Good Раса: Человек ![]() |
Уважаемые мастера, подскажите, реально ли заменить имя непися с помощью скрипта? Я чего только не перепробовал! "DestroyObject" - явно не то, "DestroyString" - редактор не понимает, "DeletelString" - то же самое, нет у него такой команды, только "DeleteLocalString" - но это опять не то! Также нет в редакторе такой команды, как "ChangeString"! Понимаете, это не блажь и не придурь. Сюжет требует! Я сочиняю сказку, где герой знает героиню только по кличке. А потом берет нужный артефвкт и узнает Истиное Имя героини. То есть у него на глазах "кличка" меняется на "Истиное Имя". Эффектно, но как такого эффекта добиться?
И еще вопрос, простите за назойливость. Запертая дверь пропускает только "своих". То есть тех, на ком определенная одежда (тег). Я тупо поставил тег ключа тот же, что и тег одежды. И дверь открывается, если ты эту шмотку просто имеешь в инвентаре. Но мне-то надо не это! Надо, чтобы она одета была! С уважением, Chiffa |
![]()
Сообщение
#3929
|
|
Level 7 ![]() ![]() Класс: Некромант Характер: True Neutral Раса: Нежить ![]() |
Заменить имя можно удалив персонажа DestroyObject, а потом поместить нового, абсолютно такого же, но просто с другим именем(создаешь в палитре).
А со шмоткой поставь проверку тега не по инвентарю, а по слоту в нем GetItemInSlot(INVENTORY_SLOT_CHEST, object) |
![]()
Сообщение
#3930
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Чтобы имя у непися изменить, можно применить функцию SetName().
А с дверью - скрипт на неё повесить (IMG:style_emoticons/kolobok_light/smile.gif) Какой, нет времени писать, мб попозже. Сообщение отредактировал Ilerien - Nov 1 2008, 23:12 |
![]()
Сообщение
#3931
|
|
Level 1 ![]() Класс: Маг Характер: Lawful Evil Раса: Дракон NWN: Скриптинг [PW] ![]() |
Насчет двери что-то типа, ставить в OnFailedToOpen:
Neverwinter Script void main() { object oPC = GetClickingObject(); if(GetItemInSlot(INVENTORY_SLOT, oPC) == "tag_of_item") { ActionOpenDoor(OBJECT_SELF); DelayCommand(2.5f,ActionCloseDoor(OBJECT_SELF)); } } Эм... там INVENTORY_SLOT_CHEST, недоглядел, и править не могу... и GetTag(GetItemInSlot(INVENTORY_SLOT, oPC)) еще, тьфу, туплю (IMG:style_emoticons/kolobok_light/smile.gif) |
![]()
Сообщение
#3932
|
|
Level 6 ![]() ![]() Класс: Волшебник Характер: Chaotic Good Раса: Человек ![]() |
Спасибо, Drago! Мне бы когда-нибудь научиться так "тупить" - сел и играючи написал скрипт для незнакомого "чайника". И скрипт, кстати, грамотный, я уже понимаю, что должно сработать! Только наверно надо еще и не "CloseDoor" (она изначально "Closе"), о все-таки "OpenDoor"? Щас проверю.
Насчет уничтожения непися и закидывания на его место нового, с палитры - фишка известная, но мне она не подходит, сорри. Я грил, что по сюжету герой узнает Истиное Имя своей возлюбленной. И замена имени происходит (Хех, ДОЛЖНА происходить!) у него на глазах. А если эта возлюбленная вдруг испарится, и на ее месте появится точно такая же, будет не "Сказка", а пародия. Попробую поэкспериментировать с "SetName()". Ilerien, будут проблемы, я тя еще побеспокою, можно? Кстати, я тут новенький. Прочитал форум. Тема была интересная насчет "сохраненок". Ну, чтобы скрипты проверить в последних локациях без прохождения всего модуля заново. И правда, обидно, что нельзя конвертировать сейвы в моды и, главное, обратно! Но есть куча способов это обойти. У меня свой. Простой, как мычание. Я никогда не делаю модуль целиком. Делаю кучу маленьких. У меня есть "Poligon", "Poligon1" "Poligon2" и т. д. Точнее, этот "микро-модуль" делается один раз, со всеми "свойствами", "настройками пользователя", фракциями, палитрой и пр., а потом размножается, с заменой тега и имени, ессно .Делаю их на полном серьезе, как части будущей "Сказки". На этих "Полигонах испытываю все скрипты, триггеры и пр. А потом экспорт-импорт" и готово. Уважаемые админы, если я глупость написал про эти "Полигоны", просто сотрите! Не хочу флудером прослыть. Спасибо. |
![]()
Сообщение
#3933
|
|
Level 3 ![]() Класс: Псионик Характер: Neutral Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
...У меня есть "Poligon", "Poligon1" "Poligon2" и т. д. Точнее, этот "микро-модуль" делается один раз, со всеми "свойствами", "настройками пользователя", фракциями, палитрой и пр., а потом размножается, с заменой тега и имени, ессно .Делаю их на полном серьезе, как части будущей "Сказки". На этих "Полигонах испытываю все скрипты, триггеры и пр. А потом экспорт-импорт" и готово. Делаю тоже самое, (IMG:style_emoticons/kolobok_light/smile.gif) ток кол-во модулей у меня обычно не больше 2х (основной + еще 1 с единственной локой для тестирования скриптов).
Уважаемые админы, если я глупость написал про эти "Полигоны", просто сотрите! Не хочу флудером прослыть. Спасибо. |
![]()
Сообщение
#3934
|
|
Level 6 ![]() ![]() Класс: Волшебник Характер: Chaotic Good Раса: Человек ![]() |
А я и не сомневался, что изобрел велосипед. Просто хотел, чтобы изобретанием таких велосипедов не занимались другие начинающие, вроде меня. Кстати, раз уж идея "Полигонов" оказалась не такой уж глупой, выскажу еще одну.
Моим "букварем" по скриптам были модулм "Проклятия Левора". Там почти у каждого скрипта сверху ПО РУССКИ написано для чего он и что делает. Кто основательно покопался в модах "Проклятья", не станет задавать вопрос типа: "Как проверить, вооружен ли игрок?". Подобные проверки во втором модуле - на диалоге каждого сюжетного непися. Как, кстати, проверки навыков, скилов, пола, "одет-раздет" - и т.д. и т.п. И еще много всякого полезного. Не думаю, что русские комментарии к скриптам писались для меня, "чайника", скорее это просто пояснения для других членов команды. Но суть дела от этого не меняется, и потому СПАСИБО мастерам! А новичкам совет: копайтесь глубже в модулях "Проклятия", там почти на все случаи жизни есть скрипты которые можно как использовать без переделки, как и "лопатить" в зависимости от собственных потребностей. Учился я еще и на том, что исправил "легендарный" квест с "доилкой". Нашел пропавшего капитана Крола (Винсент, гад, превратил его в вампира, а дальше герой с высоким навыком убеждения возвращает бедняге жизнь с помощью богини Сан. Ну а если навык низкий - хеппи энда не будет, с Кролом-вампиром приходится драться, брать с трупа его мандат и нести расстроеннму лорду Бренгу. Так или иначе, но квест завершен.) Еще раз отдельное спасибо мастерам и тем, кого хватило терпения это все прочитать. |
![]()
Сообщение
#3935
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата А если эта возлюбленная вдруг испарится, и на ее месте появится точно такая же, будет не "Сказка", а пародия. Если грамотно организовать замену непися, то игрок подмены и не заметит (IMG:style_emoticons/kolobok_light/smile.gif) Цитата Попробую поэкспериментировать с "SetName()". Ilerien, будут проблемы, я тя еще побеспокою, можно? Попытка - не пытка... (IMG:style_emoticons/kolobok_light/wink3.gif) Кстати, SetName() иногда глючит, по меньшей мере у нас переименование неписей/вещей/плейсов и т. д. работает с поправкой на то, что иногда у ДМ-а, который переименовывал обжект, отображается старое имя. Сообщение отредактировал Ilerien - Nov 2 2008, 22:42 |
![]() ![]() |
Текстовая версия | Сейчас: 7th August 2025 - 09:59 |