![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#3611
|
|
Level 4 ![]() ![]() Класс: Друид Характер: True Neutral Раса: Человек ![]() |
Люди, я конечно извеняюсь за ОЧЕНЬ глупый вопрос, но я в английском не секу, и в установке хаков тоже, поэтому прошу мне дословно по пунктикам обьяснить как он ставится, потому что я решил взятся за невер по серьезному, а единственно что я умею в нем делать пока-это играть)))
(не удаляйте плз этут пост, если подобные уже были, так как я их не могу найти) |
![]()
Сообщение
#3612
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
1. поместить *.hak файл в папку haks.
2. в модуле открыть свойства модуля - там выбрать закладку Пользовательский Контент (Custom Content). В имеющемся там выпадающем списке выбрать нужный хак и нажать кнопку добавить. 3. сохранить модуль. |
![]()
Сообщение
#3613
|
|
Level 9 ![]() Класс: Вор Характер: Chaotic Good Раса: Эльф МАСТЕР Переводов ![]() |
Возник неожиданный косяк с левелапом хенчмена. Вот библа, которая, по идее, за это ответственна.
Neverwinter Script #include "nw_i0_henchman" // Determines how many levels behind the PC the henchman lays //Minimum of 0 int HENCH_LAG = 1; // Defines the lowest level the henchman can be // Minimum of 1, Maximum of 20 int HENCH_MIN = 14; // Defines the highest level the henchman can be // Minimum of HENCH_MIN, Maximum of 20 int HENCH_MAX = 17; // This function figures out what level the henchman // "should" be, based on the min, max & lag // numbers above, as well as the PC's level int GetTargetLevel (object oHench = OBJECT_SELF) { // Find the PC's level int nMasterLevel = GetHitDice(GetMaster(oHench)); // Apply the lag int nTargetLevel = nMasterLevel-HENCH_LAG; // if that is less than the minimum level, the henchman // should be that minimum level. if (nTargetLevel < HENCH_MIN) nTargetLevel = HENCH_MIN; // If the level is over the max, cap // the level to that max. if (nTargetLevel > HENCH_MAX) nTargetLevel = HENCH_MAX; return nTargetLevel; } //This function checks to see if the henchman // is ready to level up. int GetReadyToLevel(object oHench = OBJECT_SELF) { //Find both the current henchman level, and // what level the henchman should be. int nTargetLevel = GetTargetLevel(oHench); int nCurrentLevel = GetHitDice(oHench); //If the current level is too low, it is ready // to level up if (nCurrentLevel < nTargetLevel) return TRUE; else return FALSE; } // This is the biggie. This is the function to // actually level up the henchman. void LevelHench(object oHench = OBJECT_SELF) { // Find the desired level. int nTargetLevel = GetTargetLevel(oHench); //Whee! Fun with string manipulation! // All this is working tp find the appropriate blueprint ResRef // to create the "new and improved" henchman. string sNewBlueprint = GetTag(oHench); sNewBlueprint = GetStringLowerCase(sNewBlueprint); if (nTargetLevel <= 14) sNewBlueprint = sNewBlueprint + "0"; sNewBlueprint = sNewBlueprint + IntToString(nTargetLevel); // Create the new henchman. // There will be a "fade in" of the new one and "fade out" // of the old. object oNewHench = CreateObject(OBJECT_TYPE_CREATURE, sNewBlueprint,GetLocation(oHench)); // Get rid of the old henchman. You're fired! object oMaster = (GetMaster(oHench)); RemoveHenchman(oMaster,oHench); // Copy our desired behaviour patterns to the new henchman. CopyLocals(oHench,oNewHench); AssignCommand(oNewHench,SetAssociateListenPatterns ()); // Add in our new henchman AddHenchman(oMaster,oNewHench); // Take out the trash DestroyObject(oHench); } Запускается она скриптом, который ставится в диалоге на Text Appears When Neverwinter Script // Starting Conditional script: sc_level_hench #include "th_henchlib" int StartingConditional() { int nResult; object oHench = GetHenchman(GetPCSpeaker()); nResult = GetReadyToLevel(oHench) == TRUE; return nResult; } Все работает, хенч левелапится прекрасно. Но старый хенч никуда не исчезает. Он остается стоять рядышком и попрежнему готов присоединиться к партии. Никак не пойму, отчего это происходит. |
![]()
Сообщение
#3614
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Надо копаться, пробовать разные варианты (IMG:style_emoticons/kolobok_light/smile.gif)
1. Убрать скриптово плот и иммортал флаги. 2. Перекинуть дестрой на модуль: assigncommand(getmodule(), destroy...). 3. Попробовать отложенное удаление через пару секунд. 4. Кардинально - не удалять, а именно апать и переодевать. P.S. Вот тут: Neverwinter Script if (nTargetLevel <= 14) по идее должно быть <= 9. Но это к делу не относится.
sNewBlueprint = sNewBlueprint + "0"; |
![]()
Сообщение
#3615
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
Шад, а собственно вопрос… Зачем тебе эти базовые скрипты поднятия уровня? Верней даже не поднятия, а замены хенчей. Эти скрипты были написаны для 1 Невера, хенчами и так забита базовая палитра NPC => Другое, аж по 11 на каждого… Это было сделано для смены оружия и брони, т.к. тогда у хенчей не был доступен инвентарь, да и уровней было всего 20. Там стоят похожие скрипты nw_ch_check_38 на начало диалога, и nw_ch_action_17 на поднятие, попробуй еще эти…
А вообще-то функция LevelUpHenchman поднимает уровень хенча, по определённому классу, до нужной величины… Правда, только у классов поддерживаемых героем. (IMG:style_emoticons/kolobok_light/smile.gif) |
![]()
Сообщение
#3616
|
|
Level 9 ![]() Класс: Вор Характер: Chaotic Good Раса: Эльф МАСТЕР Переводов ![]() |
Ген, так я и делаю под НВН1. За скрипты спасибо, обязательно гляну. У меня вообще в моде слетела половина скриптов и диалогов почему-то. Я не обращалась к нему месяца 4. Пошла тестить, а там такое! (IMG:style_emoticons/kolobok_light/sad.gif)
Родные скрипты ковырять я боюсь, тем более, что почти ничего в них не понимаю. Поэтому делаю другие. И мне сложно. например, сравнить два скрипта на левелап и понять, почему в одном случае старый хенч исчезает, а в другом нет. (IMG:style_emoticons/kolobok_light/smile.gif) Сообщение отредактировал shadowdweller - Jun 8 2008, 12:27 |
![]()
Сообщение
#3617
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
shadowdweller, я имел ввиду самую первую игру, а не 2 Невер. В СОУ и ХОТУ уже был инвентарь хенчей, и кажется там стоят другие скрипты. Мы ж тоже на первом пишем, да еще на версии 1.32, но и там уже есть функция поднятия уровня. Вспомни Левор...
Я помнится написал все о хенчах в статейке: http://remmgen.narod.ru/tmonster.html Там вроде есть все, что нужно и присоединение и удаление и повышение уровня, ну и все имена базовых скриптов хенчей... А вот если ты используешь классы, допустим животное, то нужно вызывать раннее созданного хенча их палитры, и удалять старого. Почему у тебя не удаляется? Кто ж его знает! Вроде в скрипте стоит дестрой, и настройки хенча не должны влиять... Значит что-то другое в скрипте глючит... Сообщение отредактировал gennady - Sep 4 2010, 16:43 |
![]()
Сообщение
#3618
|
|
Level 9 ![]() Класс: Вор Характер: Chaotic Good Раса: Эльф МАСТЕР Переводов ![]() |
Gennady, спасибо. Придется смотреть SoU и HoTU и ковыряться дальше.
|
![]()
Сообщение
#3619
|
|
Level 3 ![]() Класс: Клерик Характер: Chaotic Good Раса: Эльф ![]() |
Люди, у мну проблема - никак не получается портреты запихнуть в хак! Вроде уже все сделал - и 5 штук разного размера, и в хак-эдиторе их загнал в хак, и в 2da файле про портреты их приписал, и тот файл тож в хак запихнул - а не работает. (естесно, к модулю я этот хак присобачил). Где же я ошибся?<@_@>
|
![]()
Сообщение
#3620
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Кинь модуль и хак на мыло, разберёмся (IMG:style_emoticons/kolobok_light/smile.gif)
|
![]()
Сообщение
#3621
|
|
Level 3 ![]() Класс: Клерик Характер: Chaotic Good Раса: Эльф ![]() |
Угу, в ближайшее время кину. Попутно возник следующий вопрос - как сделать скрипт проверки на наличие в инвентаре одного из нескольких предметов? (а то у меня получается что проверяет, чтоб все сразу были)
|
![]()
Сообщение
#3622
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Neverwinter Script //::////////////////////////////////////////////// //:: Проверяем наличие двух предметов //:: Copyright © 2006 WRG! Team //::////////////////////////////////////////////// /* */ //::////////////////////////////////////////////// //:: Created By: Aiwan //:: Created On: 03.03.2006 //::////////////////////////////////////////////// #include "nw_i0_tool" int StartingConditional() { object oPC = GetPCSpeaker(); if(HasItem(oPC, "TAG_ITM_01") && HasItem(oPC, "TAG_ITM_02")) return TRUE; return FALSE; } Если && заменить на || то будет или. |
![]()
Сообщение
#3623
|
|
Level 3 ![]() Класс: Клерик Характер: Chaotic Good Раса: Эльф ![]() |
Спасиб! Работает! (я до этого где-то не там это || писал=(((
А вот проблема № следующая - пытаюсь сделать, чтобы можно было брать больше 1 спутника, приписал скрипт SetMaxHench(2) на onLoadModule - а они все равно отцепляются!=/ |
![]()
Сообщение
#3624
|
|
Level 3 ![]() Класс: Обыватель Характер: Neutral Good Раса: Человек ![]() |
Люди, у мну проблема - никак не получается портреты запихнуть в хак! Вроде уже все сделал - и 5 штук разного размера, и в хак-эдиторе их загнал в хак, и в 2da файле про портреты их приписал, и тот файл тож в хак запихнул - а не работает. (естесно, к модулю я этот хак присобачил). Где же я ошибся?<@_@> Ой! а плейсеблы тоже надо в 5 экземплярах, да? А то мы хотим вставить туда картинку (чтоб она была портретом для картины, висящей на стене), а вот чего писать в колонках в 2da файле? (тех где плейсебловые характеристики) Спасиб! Работает! (я до этого где-то не там это || писал=((( А вот проблема № следующая - пытаюсь сделать, чтобы можно было брать больше 1 спутника, приписал скрипт SetMaxHench(2) на onLoadModule - а они все равно отцепляются!=/ Мы решили проблему таким образом: Цитата // * Joins, takes away other people's personal items, give player his personal item #include "nw_i0_henchman" void main() {//DestroyAllPersonalItems(GetPCSpeaker()); DONE IN THE GIVBE ITEM FUNCTION // * remove previous henchman //SpeakString("test"); if (GetIsObjectValid(GetHenchman(GetPCSpeaker())) == TRUE) { SetFormerMaster(GetPCSpeaker(), GetHenchman(GetPCSpeaker())); object oHench = GetHenchman(GetPCSpeaker()); RemoveHenchman(GetPCSpeaker(), GetHenchman(GetPCSpeaker())); AssignCommand(oHench, ClearAllActions()); } SetWorkingForPlayer(GetPCSpeaker()); SetBeenHired(); ExecuteScript("NW_CH_JOIN", OBJECT_SELF); // GivePersonalItem(GetPCSpeaker()); } Жирное убрать вообще. Это у хенча в скрипте присоединения (tm_ch_action_13). После этого у нас стали двое цепляться=) |
![]()
Сообщение
#3625
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Лучше
Neverwinter Script object oPC = GetPCSpeaker(); if(GetIsObjectValid(GetHenchman(oPC, GetMaxHenchmen()))) // если есть "последний дозволенный" хенч (IMG:style_emoticons/kolobok_light/smile.gif) RemoveHenchman(oPC, GetHenchman(oPC)); // убираем первого Я бы свой диалог присоединения сделал (IMG:style_emoticons/kolobok_light/smile.gif) А то там слишком много ненужной фигни. Для плейсеблов вроде 3 портрета нужны, без _h и _l. Не знаю, зачем нужны столбцы InanimateType и LowGore. Это уже в Custom Content. Lirulin, модуль и хак выслал. У тебя там в 2да базовый реф был неверно прописан ("_" лишнее), и хак не был к модулю подключён. Сообщение отредактировал Ilerien - Jun 11 2008, 18:54 |
![]()
Сообщение
#3626
|
|
Level 3 ![]() Класс: Обыватель Характер: Neutral Good Раса: Человек ![]() |
Лучше Neverwinter Script object oPC = GetPCSpeaker(); if(GetIsObjectValid(GetHenchman(oPC, GetMaxHenchmen()))) // если есть "последний дозволенный" хенч (IMG:style_emoticons/kolobok_light/smile.gif) RemoveHenchman(oPC, GetHenchman(oPC)); // убираем первого Я бы свой диалог присоединения сделал (IMG:style_emoticons/kolobok_light/smile.gif) А то там слишком много ненужной фигни. Спасибо (IMG:style_emoticons/kolobok_light/thank_you.gif) , а этот скрипт отдельно идет, или его надо вставить в тот, tm_ch_action_13? В принципе, мы бы и рады написать свое, но увы - пока не очень умеем. Пока меняем готовые скрипты, все норм, а как только свое делаем - все! У компайлера насчет наших скриптов 2 любимых выражения : PARCING VARIABLE LIST и UNKNOWN STATE IN COMPILER=((( И еще вопрос - как правильно соединять скрипты? Ну например, сделали триггер, в котором хенчмен должен что-то вякнуть, а игрок - ответить (скрипт вроде тут нашли). Все бы хорошо, но игрок свою реплику выдавал вовсе без хенча с его вопросом. Приляпали условие, что триггер срабатывае олько когда хенч есть (точнее у героя есть данный хенчем предмет). Мало того, что оно не компилировалось, пока условие было не в начало поставлено, так теперь вовсе не срабатывает, ни с хенчем, ни без! (IMG:style_emoticons/kolobok_light/scratch_one-s_head.gif) Для плейсеблов вроде 3 портрета нужны, без _h и _l. Не знаю, зачем нужны столбцы InanimateType и LowGore. Это уже в Custom Content. А, ну да, если _h и _l нужны для выбора портрета перса, то плейсеблу они ни к чему (не захочется же кому-нить в буквальном смысле "рожу кирпичом"!=)))))) (IMG:style_emoticons/kolobok_light/biggrin.gif) |
![]()
Сообщение
#3627
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Те 3 строчки вместо
Neverwinter Script RemoveHenchman(GetPCSpeaker(), GetHenchman(GetPCSpeaker())); Скрипт для триггера: Neverwinter Script void main()
{ object oPC = GetEnteringObject(); object oHench = GetHenchman(oPC); if(GetIsObjectValid(oHench) && GetIsPC(oPC)) { AssignCommand(oHench, SpeakString("<слова хенча>")); DelayCommand(0.5f, AssignCommand(oPC, SpeakString("<слова игрока>"))); } } Сообщение отредактировал Ilerien - Jun 12 2008, 14:36 |
![]()
Сообщение
#3628
|
|
Level 3 ![]() Класс: Обыватель Характер: Neutral Good Раса: Человек ![]() |
Мерси, мерси, мерси! Эх, освоить бы побыстрее эту сложную науку писания скриптов (IMG:style_emoticons/kolobok_light/sad.gif) Не вечно же дергать тех, кто умеет делать это быстро и правильно!
|
![]()
Сообщение
#3629
|
|
Level 3 ![]() Класс: Клерик Характер: Chaotic Good Раса: Эльф ![]() |
Lirulin, модуль и хак выслал. У тебя там в 2да базовый реф был неверно прописан ("_" лишнее), и хак не был к модулю подключён. Ясно. Не, ну если я в этот раз забыл его присобачить, то это потому, что уже раз 100 присобачивал - и без результата! Значит, из-за одной " _ " лишней... мда, симптоматично. (куда только подевалась моя мудрость, а также интеллект? (IMG:style_emoticons/kolobok_light/unsure.gif) ведь прокачивал же(IMG:style_emoticons/kolobok_light/wink3.gif) ) |
![]()
Сообщение
#3630
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата Эх, освоить бы побыстрее эту сложную науку писания скриптов Не вечно же дергать тех, кто умеет делать это быстро и правильно! Мануалы, задачи соответствующей сложности и образцы скриптов в руки (IMG:style_emoticons/kolobok_light/smile.gif) Цитата уда только подевалась моя мудрость, а также интеллект? ведь прокачивал же) Видать, 1ка...*offtop mode off* (IMG:style_emoticons/kolobok_light/smile.gif) |
![]()
Сообщение
#3631
|
|
Level 3 ![]() Класс: Обыватель Характер: Neutral Good Раса: Человек ![]() |
Мануалы, задачи соответствующей сложности и образцы скриптов в руки (IMG:style_emoticons/kolobok_light/smile.gif) Не присоветуете, где можно их найти? (кроме NWNLexicon'а, он у нас есть, но не всегда понятно, как ту теорию применять на практике) |
![]()
Сообщение
#3632
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Задачи обычно возникают по мере разработки (сам так учился, первый скрипт был вроде в онспавн мобу кастомная аура с дамагом). Лексикон - штука хорошая, но мне в своё время хватало того, что есть в хелпе. Образцы есть на ГМ (тут т. е.) и в стандартном паке скриптов.
|
![]()
Сообщение
#3633
|
|
Level 3 ![]() Класс: Клерик Характер: Chaotic Good Раса: Эльф ![]() |
Лексикон - штука хорошая, но мне в своё время хватало того, что есть в хелпе. Образцы есть на ГМ (тут т. е.) и в стандартном паке скриптов. Слуш, а если там в образце идет например object oMoveTo - вместо него надо тэг объекта, до, после или как? (IMG:style_emoticons/kolobok_light/unsure.gif) |
![]()
Сообщение
#3634
|
|
Level 12 ![]() Класс: Оборотень Характер: Chaotic Neutral Раса: Нежить NWN: Скриптинг [Sn] ![]() |
Neverwinter Script в образце идет например object oMoveTo - вместо него надо тэг объекта c чего это вдруг? Тэг - это строка, а нужен "object oMoveTo" - объект написано. Чтобы из тэга получить объект надо сделать Neverwinter Script // Get the nNth object with the specified tag.
// - sTag // - nNth: the nth object with this tag may be requested // * Returns OBJECT_INVALID if the object cannot be found. // Note: The module cannot be retrieved by GetObjectByTag(), use GetModule() instead. object GetObjectByTag(string sTag, int nNth=0) |
![]()
Сообщение
#3635
|
|
Level 3 ![]() Класс: Клерик Характер: Chaotic Good Раса: Эльф ![]() |
Так вот в этом-то и проблема - как связать object oMoveTo и GetObjectByTag? "=" между ними поставить? (сколько ни смотрю на образцы скрипов, что-то не то выходит)
|
![]() ![]() |
Текстовая версия | Сейчас: 2nd August 2025 - 13:14 |