![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#3611
|
|
Level 2 ![]() Класс: Убийца Характер: Neutral Evil Раса: Нежить ![]() |
Да вроде нет) ошибки быть не должно все таки я копирую ресреф (ctrl + c) а не пишу его)
(IMG:http://i037.radikal.ru/1307/8e/9aeebe03b6f2.jpg) |
![]()
Сообщение
#3612
|
|
Level 11 ![]() Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов ![]() |
Neverwinter Script CreateItemOnObject("item", oPC, 1); CreateItemOnObject("item001", oPC, 1); CreateItemOnObject("item002", oPC, 1); CreateItemOnObject("item003", oPC, 1); CreateItemOnObject("item004", oPC, 99); попробуй убрать цифры |
![]()
Сообщение
#3613
|
|
Level 2 ![]() Класс: Убийца Характер: Neutral Evil Раса: Нежить ![]() |
Neverwinter Script object oPC = GetEnteringObject(); CreateItemOnObject("item",oPC); CreateItemOnObject("item001",oPC); CreateItemOnObject("item002",oPC); CreateItemOnObject("item003",oPC); CreateItemOnObject("item004",oPC); нее увы не помогло) блин чтож это за ошибка такая хитрая попалась) вечно у меня все через ж**у блин... |
![]()
Сообщение
#3614
|
|
Level 11 ![]() Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов ![]() |
Это у вас тулсет кривой значит.
Вот что пишет лексикон: Neverwinter Script object CreateItemOnObject( string sItemTemplate, object oTarget = OBJECT_SELF, int nStackSize = 1, string sNewTag = "" ); Parameters sItemTemplate The blueprint ResRef string of the item to be created or tag. oTarget The inventory where you want the item created. (Default: OBJECT_SELF) nStackSize The number of items to be created. (Default: 1) sNewTag Sets the tag. If this string is empty (""), it be set to the default tag from the template. (Default: "") Description This function creates an item with the template sItemTemplate in oTarget's inventory. If you are creating a custom item, sItemTemplate is the ResRef; if you are creating a standard item, sItemTemplate is the item's tag. Returns the object that has been created. On error, this returns OBJECT_INVALID. CreateItemOnObject will work on item containers. Additional notes added for clarification in 1.64 include: If the item created was merged into an existing stack of similar items, the function will return the merged stack object. If the merged stack overflowed, the function will return the overflowed stack that was created. Remarks The parameter nStackSize only applies to stackable items (eg. potions). If sItemTemplate refers to a non-stackable item (eg. armor) only 1 item will be created. CreateItemOnObject has interesting behaviour when called to create a stackable item. If the oTarget of the command has a stack already existing, the items created will be added to the existing stack, in which case two things can happen: 1. A new stack has to be created to hold some overflow. CreateItemOnObject returns a valid object, the overflowed stack of items (so, not the completly filled up stack) 2. The old stack object does not overflow past 99. No new stack object is created. CreateItemOnObject returns a value thats not equal to OBJECT_INVALID, but, if tested with GetIsObjectValid() will return FALSE. Known Bugs This bug will most likely be fixed in version 1.62, and thus only apply to 1.61 and possibly earlier versions as well: Returns OBJECT_INVALID when the created object is added to an existing stack. Сообщение отредактировал Melisse - Jul 20 2013, 22:40 |
![]()
Сообщение
#3615
|
|
Level 2 ![]() Класс: Убийца Характер: Neutral Evil Раса: Нежить ![]() |
Теперь я тоже так думаю) чтож спасибо всем большое кто мне помогал) попробую переустановить нвн на какую нибудь другую версию. Надеюсь поможет... (IMG:style_emoticons/kolobok_light/sorry.gif)
Да я щас на настольном пк работаю тут версия 1.69 стоит Сообщение отредактировал arcmag - Jul 20 2013, 20:35 |
![]()
Сообщение
#3616
|
|
Level 2 ![]() Класс: Убийца Характер: Neutral Evil Раса: Нежить ![]() |
Установил другой нвн все заработало. Огромное спасибо Melisse за ссылку с функциями теперь разбираться стало реально проще и быстрее. (IMG:style_emoticons/kolobok_light/i-m_so_happy.gif)
|
![]()
Сообщение
#3617
|
|
Level 11 ![]() Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов ![]() |
Цитата Установил другой нвн все заработало. Огромное спасибо Melisse за ссылку с функциями теперь разбираться стало реально проще и быстрее. Там далеко не все, остальное придется по лексикону разбирать. Копипасте в переводчик и будет тоже самое почти |
![]()
Сообщение
#3618
|
|
Level 6 ![]() ![]() Класс: Друид Характер: Chaotic Neutral Раса: Гном ![]() |
Нет, совсем не так. При 0 всегда будет FALSE, а от -2,147,483,648 до 2,147,483,647, кроме 0 всегда TRUE иначе говоря FALSE это всегда 0, а TRUE любое кроме 0 Так вопрос-то был значение переменной (...) может быть только в двух значениях (...) так получается? И ответ на него 2. Нет. а не 2. Да Значений куча, просто в некоторых частных случаях (условный оператор) некоторые из значений (не нулевые) интерпретируются одинаково. Если же кто-то захочет хранить в переменной целое число и использовать его как число, а не признак истинности, то он сможет это сделать. Сообщение отредактировал Anakondar - Jul 21 2013, 09:56 |
![]()
Сообщение
#3619
|
|
Level 11 ![]() Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов ![]() |
Anakondar
ок, я не так поняла вопрос Сообщение отредактировал Melisse - Jul 21 2013, 11:38 |
![]()
Сообщение
#3620
|
|
Level 1 Класс: Паладин Характер: Neutral Good Раса: Полуэльф ![]() |
Добрый день. Я создаю модуль для будущего Шарда (Да, да. Имя нам - легион) и столкнулся с небольшой проблемой. Не подскажете ли скрипт для автоматического закрытия и запирания дверей через определнное время (15 секунд). Это необходимо для реализации системы частной собственности для игроков. Заранее спасибо. (IMG:style_emoticons/kolobok_light/i-m_so_happy.gif)
|
![]()
Сообщение
#3621
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
Neverwinter Script // ЗАКРЫТЬ ДВЕРЬ И ЗАМОК Слот OnOpen
void main() { object oDoor = OBJECT_SELF; DelayCommand(15.0, ActionCloseDoor(oDoor)); SetLocked(oDoor, TRUE); } Сообщение отредактировал gennady - Jul 25 2013, 10:16 |
![]()
Сообщение
#3622
|
|
Level 1 Класс: Паладин Характер: Neutral Good Раса: Полуэльф ![]() |
Спасибо большое. Вместо oDoor вставить теги двери?
// ЗАКРЫТЬ ДВЕРЬ И ЗАМОК Слот OnOpen void main() { object oDoor = OBJECT_SELF; DelayCommand(15.0, ActionCloseDoor(OBJECT_SELF)); SetLocked(oDoor, TRUE); } |
![]()
Сообщение
#3623
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
Нет, этот скрипт поставить в слот OnOpen двери. Всё! (IMG:style_emoticons/kolobok_light/smile.gif)
|
![]()
Сообщение
#3624
|
|
Level 1 Класс: Паладин Характер: Neutral Good Раса: Полуэльф ![]() |
И еще раз огромное спасибо (IMG:style_emoticons/kolobok_light/i-m_so_happy.gif) Очень выручили.
|
![]()
Сообщение
#3625
|
|
Level 1 Класс: Паладин Характер: Neutral Good Раса: Полуэльф ![]() |
Друзья, никто не подскажет скрипт для крафтинга через диалог?
Что-то вроде: Изготовить "предмет" (требует X ресурса, X навыка изготовления брони). Во время проверки навыка имеется X% шанс успеха, в случае провала ингридиенты уничтожаются, но игрок предмет уже не получает. Меня интересует крафт с проверкой навыков на изготовление брони (Craft Armor), оружия (Craft Weapon), ловушек (Craft trap), зелий (Brew potion) , поясов целителя (Heal), волшебных палочек (Craft wand), свитков (Scribe scroll), отмычек (Open lock), Книг (Lore). Заранее спасибо (IMG:style_emoticons/kolobok_light/i-m_so_happy.gif) |
![]()
Сообщение
#3626
|
|
Тролль ![]() ![]() ![]() ![]() Класс: Пьяный Мастер Характер: Chaotic Neutral Раса: Тварь ![]() |
Друзья, никто не подскажет скрипт для крафтинга через диалог? >>>Что-то вроде: Изготовить "предмет" (требует X ресурса, X навыка изготовления брони). Во время проверки навыка имеется X% шанс успеха, в случае провала ингридиенты уничтожаются, но игрок предмет уже не получает. Меня интересует крафт с проверкой навыков на изготовление брони (Craft Armor), оружия (Craft Weapon), ловушек (Craft trap), зелий (Brew potion) , поясов целителя (Heal), волшебных палочек (Craft wand), свитков (Scribe scroll), отмычек (Open lock), Книг (Lore). Заранее спасибо (IMG:style_emoticons/kolobok_light/i-m_so_happy.gif) Изучай скрипт-генератор – там есть все подобные функции. Как создать данный скрипт с помощью скрипт генератора: 1. Запускаем генератор. 2. Choose script type (выберите тип скрипта) -> Normal script (нормальный скрипт). 3. Where is this script called from? (откуда запускается скрипт) -> From a conversation (из диалога). 4. Выбираем из списка арсенала генератора пункт Make an ‘if THIS then THAT condition’ (сделать «если ЭТО, то ТО условие») и жмем SCRIPT (скрипт). 5. Choose your condition (выберите ваше условие) -> Item restriction (требование предмета) -> The following event(s) will happen only if player (данный эвент(ы) случится только если игрок…) -> Has (имеет) -> The item tagged (предмет с тагом…) -> вводим таг предмета (в примере это «tag_of_resurs») -> есть возможность затребовать, чтоб этот предмет был экипирован на теле игрока в указанном слоте – она нам не нужна, не трогаем -> Okay (запилить!). 6. Операцию требования предмета можно повторить, если мы хотим, чтоб ресурсов было больше чем 1, но нам этого не надо, зато у нас есть требование навыка, поэтому все равно жмем еще раз Make an ‘if THIS then THAT condition’ (сделать «если ЭТО, то ТО условие») и жмем SCRIPT. 7. Choose your condition (выберите ваше условие) -> Successful skill check (удачная проверка навыка) -> Skill to check: (проверяемый навык) -> (тут можно ставить тот тип навыка, к которому мы относим крафт этого предмета – в примере это будет «Craft trap», ставим его; к сожалению почему-то в данном списке генератора представлены не все умения, но их можно и вручную в получившемся скрипте потом поменять будет, подсмотрев константы в тулсете или лексиконе) SKILL_CRAFT_TRAP -> Difficulty: (класс сложности; d20 + уровень навыка игрока должен быть равен или быть выше этого значения) -> (тут мы сразу одновременно устанавливаем и % успеха, т.к. чем выше разница требования и броска кубика + навыка игрока – тем меньше у него шансов на успех вплоть до «никаких»; допустим для примера мы создаем хитроумное приспособление которое должно соответствовать работе игрока-мастера не ниже 10 уровня с полностью вкачанным навыком, это около 13 пунктов навыка, добавим возможный бонус от вещей и модификаторов и повысим его до 17 пунктов, а так же установим вероятность создания такого предмета для такого мастера в 50% т.е. добавим еще 10 пунктов от предполагаемого броска кубика и получим в итоге 27, так и пишем) 27 -> Okay (запилить!). 8. Таким образом у нас получилось 2 условия – предмет и сложность крафта, теперь нам нужно описать что произойдет, если у игрока все получится. Выбираем из списка арсенала генератора пункт Give item(s)/XP/gold to PC (дать предмет(ы)/опыт/золото игроку) -> SCRIPT (скрипт) -> ResRef of item to give: (резреф получаемого предмета) -> (вбиваем/копируем сюда резреф того, что должно получиться – в примере это будет «resref_of_result») resref_of_result -> (больше мы ничего игроку не даем, поэтому жмем сразу финальную кнопку «запилить и выйти!») Okay – exit! 9. Итак у нас получается в случае прокидывания DC, игрок получает то, что он собирался скрафтить. На этом мы закрываем второе наше «if THIS then THAT» условие, для чего нажимаем 1 раз кнопку «Finish current if» (закончить текущее «если») -> Just finish (просто закончить; есть варианты еще «наветвить», но нам они тут не нужны). 10. В окошке «Current number of unfinished ‘if’ statements» (текущее число незавершенных «если» условий) видим, как 2 превратилось в 1. У нас осталось еще первое условие - предмета. Наш крафт подразумевает, что этот ресурс тратится при любом варианте, поэтому теперь мы это и осуществим в независимости от прокидываний DC. Выбираем из списка арсенала генератора пункт Take item(s)/XP/gold from PC (взять предмет(ы)/опыт/золото у игрока) -> SCRIPT (скрипт) -> (нам нужно только взять 1 предмет, поэтому мы заполняем лишь соответствующее поле) Tag of the item to take (таг забираемого предмета; у нас в примере это вышеупомянутый «tag_of_resurs») -> tag_of_resurs -> (больше мы ничего у игрока не забираем, поэтому жмем сразу финальную кнопку «запилить и выйти!») Okay – exit! 11. Теперь можно закрыть и 2 условие. Жмем «Finish current if» (закончить текущее «если») -> Just finish (просто закончить). 12. Вот собственно и весь наш скрипт. Больше нам добавить нечего и мы жмем кнопку «Close». 13. Теперь в окошке справа мы видим код нашего скрипта (выглядит кривовато, зато рабочий) – копируем его и помещаем его в нужное место в редакторе диалога (на «совершенные действия»). 14. Наслаждаемся и благодарим Лилака. Генератор можно закрывать. Вот как выглядит результат: Neverwinter Script object oItem;
/* Script generated by Lilac Soul's NWN Script Generator, v. 2.3 For download info, please visit: http://nwvault.ign.com/View.php?view=Other...683&id=625 */ //Put this on action taken in the conversation editor void main() { object oPC = GetPCSpeaker(); if (GetItemPossessedBy(oPC, "tag_of_resurs")!= OBJECT_INVALID) { if (GetIsSkillSuccessful(oPC, SKILL_CRAFT_TRAP, 27)) { CreateItemOnObject("resref_of_result", oPC); } oItem = GetItemPossessedBy(oPC, "tag_of_resurs"); if (GetIsObjectValid(oItem)) DestroyObject(oItem); } } Сообщение отредактировал Flaristan - Jul 26 2013, 05:31 |
![]()
Сообщение
#3627
|
|
Level 1 Класс: Паладин Характер: Neutral Good Раса: Полуэльф ![]() |
Огромное спасибо, друг.
Если честно, то я кажется начинаю потихоньку понимать, как это работает. И если можно, я попрошу еще один совет у мастеров. Дело в том что в редакторе я видел несколько предметов, чье предназначение не понял. А точнее: мясо, рыба, чеснок, беладонна. Не знаю, есть ли в игре кулинария (не одного упоминания я так и не обнаружил), но если они бесполезны, может подскажете младшему товарищу (это я) скрипт для того, что бы они расходовались во время отдыха. У меня уже на уме довольно простая, но в то же время интересная экономическая система для шарда. И если бы в нем присутствовали подобные расходники, это бы было очень кстати. (IMG:style_emoticons/kolobok_light/i-m_so_happy.gif) |
![]()
Сообщение
#3628
|
|
Level 2 ![]() Класс: Убийца Характер: Neutral Evil Раса: Нежить ![]() |
Цитата Если честно, то я кажется начинаю потихоньку понимать, как это работает. И если можно, я попрошу еще один совет у мастеров. Дело в том что в редакторе я видел несколько предметов, чье предназначение не понял. А точнее: мясо, рыба, чеснок, беладонна. Не знаю, есть ли в игре кулинария (не одного упоминания я так и не обнаружил), но если они бесполезны, может подскажете младшему товарищу (это я) скрипт для того, что бы они расходовались во время отдыха. У меня уже на уме довольно простая, но в то же время интересная экономическая система для шарда. И если бы в нем присутствовали подобные расходники, это бы было очень кстати. i-m_so_happy.gif Я конечно не мастер по скриптам но то что ты просишь по моему весьма просто. Допустим если игрок должен отдыхать в трактире в комнате вешаешь на кровать диалог с опцией "Отдых" которая появится в том случае если в инвентаре будет мясо, рыба ну и тд. При нажатии эти объекты дестроятся и начинается отдых. На проверку для появления текста нужно повесить Neverwinter Script #include "nw_i0_tool" int StartingConditional() { if(HasItem(GetPCSpeaker(), "ТАГ_ТВОЕГО_ПРЕДМЕТА")) return TRUE; return FALSE; } и на действие при активации диалога Neverwinter Script void main()
{ object oItemToTake = GetItemPossessedBy(GetPCSpeaker(), "ТАГ_ТВОЕГО_ПРЕДМЕТА"); if(GetIsObjectValid(oItemToTake) != 0){ DestroyObject(oItemToTake); ForceRest(GetPCSpeaker()); // насчет этой строчки я не совсем уверен но помоему она должна активировать отдых } } Сообщение отредактировал arcmag - Jul 26 2013, 17:46 |
![]()
Сообщение
#3629
|
|
Level 11 ![]() Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов ![]() |
Цитата ForceRest(GetPCSpeaker()); // насчет этой строчки я не совсем уверен но помоему она должна активировать отдых не,... сам процесс не активируется, но используется на персонаже "сила отдыха", т.е. эффект как-будто персонаж отдохнул. Если нужно заставить именно отдыхать, то там есть актион вроде, типа ActionRest Neverwinter Script if(GetIsObjectValid(oItemToTake) != 0) тут можно и не делать сравнение а просто if(GetIsObjectValid(oItemToTake)) Сообщение отредактировал Melisse - Jul 26 2013, 18:38 |
![]()
Сообщение
#3630
|
|
Level 1 Класс: Паладин Характер: Neutral Good Раса: Полуэльф ![]() |
Спасибо большое. А это будет работать если в локации стоит запрет на отдых?
|
![]()
Сообщение
#3631
|
|
Level 11 ![]() Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов ![]() |
Ну если вы делаете скриптово и не нужно нажимать кнопку отдыха на панели GUI, то ActionRest может и работает, ForceRest точно.
Сообщение отредактировал Melisse - Jul 27 2013, 12:30 |
![]()
Сообщение
#3632
|
|
Level 2 ![]() Класс: Убийца Характер: Neutral Evil Раса: Нежить ![]() |
Подскажите в чем ошибка? Хочу сделать простой такой скрипт который срабатывал бы при приближении игрока на определенное расстояние к существу чтобы тот из нейтрального состояния переходил во враждебное и крикнул бы что нибудь вроде "Тебе нельзя здесь находиться!"
Хочу повесить такой скрипт на гоблина, но не могу понять на какую ячейку вешать этот скрипт Neverwinter Script void main() { object oPC = GetLastDisturbed(); // вот с этой строчкой у меня тоже сомнения) я честно говоря не понял как называется функция для получения последнего объекта вошедшего в зону видимости ну или чего то подобного. if(GetDistanceBetween(oPC,OBJECT_SELF)<10.0){ //проверяем расстояние между объектами AssignCommand(OBJECT_SELF,ActionAttack(oPC)); AssignCommand(OBJECT_SELF,ActionSpeakString("Тебе нельзя здесь находиться!")); } } И еще 1 проблема, почему то вдруг компилятор наотрез отказыватся воспринимать русский язык. Он попросту даже не печатается в нем. В английской раскладке все нормально а вот как только перехожу на русский клавиатура как будто пропадает только пробел и печатается. Пробовал взять и написать текст на русском в блокноте а потом скопировать но компилятор начал ругаться неожиданно на букву Я хотя раньше все было нормально, даже в коментариях выявляет ее как ошибку... |
![]()
Сообщение
#3633
|
|
Level 11 ![]() Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов ![]() |
Вешайте в OnHeartbeat
что-то типа такого Neverwinter Script void main() { // Игрок (живой) object oPC = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC, OBJECT_SELF,1, CREATURE_TYPE_IS_ALIVE, TRUE); // Найден? int bValue = GetIsObjectValid(oPC); // Найден и дистанция меньше 10м if(bValue && GetDistanceBetween(OBJECT_SELF, oPC) < 10.0f) { // НПЦ не дерется if(!GetIsInCombat() ) { ClearAllActions();// Чистим стэк действий AdjustReputation(oPC, OBJECT_SELF, -100);// Репутацию к игроку скинем в враждебность (можно и не делать) SpeakString("Тебе нельзя здесь находиться!"); // Произносим фразу ActionAttack(oPC, FALSE); // Атакуем } } } Цитата И еще 1 проблема, почему то вдруг компилятор наотрез отказыватся воспринимать русский язык. Он попросту даже не печатается в нем. В английской раскладке все нормально а вот как только перехожу на русский клавиатура как будто пропадает только пробел и печатается. Пробовал взять и написать текст на русском в блокноте а потом скопировать но компилятор начал ругаться неожиданно на букву Я хотя раньше все было нормально, даже в коментариях выявляет ее как ошибку... Надо поставить патч Дамбо. Правда я не знаю что там с win 7 и дальше, у меня XP SP3 на стационаре и Vista на буке, т.к. они давно очень куплены. Еще надо в тулсете в редакторе скриптов изменить шрифт на Courer вроде, чтобы буквы показывало, а чтобы в игре отражались русские буквы нужно в папку override, в каталоге с игрой, кинуть эти шрифты/или эти шрифты Сообщение отредактировал Melisse - Jul 27 2013, 22:53 |
![]()
Сообщение
#3634
|
|
Level 2 ![]() Класс: Убийца Характер: Neutral Evil Раса: Нежить ![]() |
Да дело не в том что у меня шрифт коряво отображается. Такая проблема уже была Courer шрифт поставил и все нормально стало. У меня проблема в другом, я просто не могу ничего по русским напечатать просто жму клавиши русской раскладки а компилятор их игнорирует хотя клавиатуру видит цифры и пробелы печатает, переключаюсь на англискую клаву английский текст печатает нормально.
Хотя еще недавно этой проблемы не было. Что произошло вдруг я так и не понял. Сообщение отредактировал arcmag - Jul 27 2013, 20:52 |
![]()
Сообщение
#3635
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Через ini пропиши тулсету шрифт Courier New Cyr, выбор кириллицы через настройки у меня например не работает.
|
![]() ![]() |
Текстовая версия | Сейчас: 4th May 2025 - 22:24 |