![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#3261
|
|
Level 18 ![]() Класс: Страж Тьмы Характер: True Neutral Раса: Человек МАСТЕР D&D ![]() |
Для колизея можно добавить и
ANIMATION_LOOPING_MEDITATE ANIMATION_LOOPING_TALK_FORCEFUL с заданием времени float fDurationSeconds = 0.5f |
![]()
Сообщение
#3262
|
|
Level 4 ![]() ![]() Класс: Клерик Характер: Lawful Good Раса: Человек ![]() |
Только AssignCommand(OBJECT_SELF, - делать не нужно, можно сразу .... и заводить переменную для свича не обязательно, достаточно switch d6() Вот это не знал, спасибо. Кстати, так подумал, десяток ниписей в таком колизее мгновенно загадит весь чат. Стоит сделать проверку Neverwinter Script if (d6()>5) ActionSpeakString(sVoice, TALKVOLUME_SHOUT); Можно спикстринг заменить на Neverwinter Script PlayVoiceChat(VOICE_CHAT_BATTLECRY1); или что-то другое из группы VOICE_CHAT_* У меня есть вопрос: Сейчас пишу пресловутый распорядок дня для неписей. Имею два пути решения. 1) на onhb у каждого npc стоит проверка времени(day/night) и если никого нет в локации, а ему пора спать, он тихо - мирно прыгает домой.(все равно у npc что-то исполняется на onhb, почему бы не добавить туда еще...) 2) на onhb у плейсибла стоит проверка времени и таблица npc, которым нужно приказать спать. Если проверка успешна, плейсибл обзванивает всех ниписей и расставляет их по домам. Так, как это дело пишется для шарда, то самое важное тут - быстродействие. Так вот, что будет работать быстрее? Сообщение отредактировал Batkom - May 24 2010, 16:40 |
![]()
Сообщение
#3263
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Быстрее в хб непися, на плейсе или локе лишние ресурсы хавает обход неписей.
Для какого шарда, если не секрет? Сообщение отредактировал Ilerien - May 24 2010, 18:12 |
![]()
Сообщение
#3264
|
|
Level 4 ![]() ![]() Класс: Клерик Характер: Lawful Good Раса: Человек ![]() |
В том то и вся соль, обход неписей по идее должен совершаться два раза в сутки.
[измините за оффтоп, лирика] Собственный модуль, не привязанный к забытым королевствам. Когда-то держал в локальной сети скромненький шардик, менее, чем на сто локаций с несбалансированным рулесетом. Было весело, но года через три шард загнулся. Сейчас вот довожу до ума правила, выкидываю чужие хаки, (из гемовского хака я правда оставил чудную башню и холмики, надеюсь, никто обижаться не будет) рисую локации, балансирую спавны. Акцент собираюсь делать на динамических головоломках в данжах и активном участии ДМ в игре. Как доваяю до той кондиции, чтобы не стыдно было сервер запускать, выпущу в большой мир. [/измините за оффтоп, лирика] |
![]()
Сообщение
#3265
|
|
Отверженный ![]() ![]() ![]() ![]() Класс: Теневой Танцор Характер: Neutral Good Раса: Баатезу ![]() |
[измините за оффтоп, лирика] Собственный модуль, не привязанный к забытым королевствам. Когда-то держал в локальной сети скромненький шардик, менее, чем на сто локаций с несбалансированным рулесетом. Было весело, но года через три шард загнулся. Сейчас вот довожу до ума правила, выкидываю чужие хаки, (из гемовского хака я правда оставил чудную башню и холмики, надеюсь, никто обижаться не будет) рисую локации, балансирую спавны. Акцент собираюсь делать на динамических головоломках в данжах и активном участии ДМ в игре. Как доваяю до той кондиции, чтобы не стыдно было сервер запускать, выпущу в большой мир. [/измините за оффтоп, лирика] Желаю удачи. (IMG:style_emoticons/kolobok_light/good.gif) Сообщение отредактировал virus_found - May 24 2010, 22:05 |
![]()
Сообщение
#3266
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата В том то и вся соль, обход неписей по идее должен совершаться два раза в сутки. Хм, туплю. В таком случае лучший выход - это псевдохертбит на модуле или локе (ну или на плейсе, но лока лучше) с задержкой, равной половине суток.Мне это видится так - на загрузке модуля запускается таймер (псевдохербит на малый отрезок времени - раунд или секунду, как удобнее). Когда таймер видит, что время суток сменилось (достигается это с помощью локалки), выкидывается модульный эвент, в обработчике которого перебираются все локи, и для каждой локи происходят соответствующие действия с помеченными неписями. Я бы оформил это как отдельный скрипт, запускаемый из модульного эвента на локе. Цитата (из гемовского хака я правда оставил чудную башню и холмики, надеюсь, никто обижаться не будет) Velmar's Tower 2х2 из Rural+City? (IMG:style_emoticons/kolobok_light/smile.gif)
Сообщение отредактировал Ilerien - May 25 2010, 01:30 |
![]()
Сообщение
#3267
|
|
Level 4 ![]() ![]() Класс: Клерик Характер: Lawful Good Раса: Человек ![]() |
|
![]()
Сообщение
#3268
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
Не знаю как для шарда, а для сингла я писал и на ХБ НПС и на ХБ плейсов. Но прыжки тупили, лучше использовать copy, но и тут есть свои нюансы... Хотя, функция получилась нормальная, можно весь мод впихнуть на один ХБ плейса. Если интересно могу выложить.
|
![]()
Сообщение
#3269
|
|
Level 2 ![]() Класс: Рейнджер Характер: Neutral Evil Раса: Эльф ![]() |
Люди, пожалуйста, помогите: как организовать провал заклинания на всю локацию? Что нужно прописать? Чтобы даже мельчайшие магические атрибуты исчезали.
|
![]()
Сообщение
#3270
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата Люди, пожалуйста, помогите: как организовать провал заклинания на всю локацию? Что нужно прописать? Повесить на локу переменную и проверять её в спеллхуке.Цитата Чтобы даже мельчайшие магические атрибуты исчезали. Вот этого не понял. Стандартные средства позволяют сделать провал заклинаний и только заклинаний.
|
![]()
Сообщение
#3271
|
|
Level 2 ![]() Класс: Рейнджер Характер: Neutral Evil Раса: Эльф ![]() |
О, уи. Я просто имел в виду подобие Пещеры Бехолдеров из Hotu- там, помнится, Лук "Вечность" и Энсеррик лишились своих чудотворных свойств.
О, уи. Я просто имел в виду подобие Пещеры Бехолдеров из Hotu- там, помнится, Лук "Вечность" и Энсеррик лишились своих чудотворных свойств. А за совет спасибо. |
![]()
Сообщение
#3272
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата О, уи. Я просто имел в виду подобие Пещеры Бехолдеров из Hotu- там, помнится, Лук "Вечность" и Энсеррик лишились своих чудотворных свойств. Способ для сингла есть - собственно, стащить скрипты из кампании. Не смотрел, как это реализовано, но, полагаю, проходом по инвентарю и удалением большинства свойств со всех предметов.
|
![]()
Сообщение
#3273
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
если именно в локе - проще сделать 100% шанс провала закла в параметрах данной локации. Оно там же, где имя локи, тэг и тд.
|
![]()
Сообщение
#3274
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата если именно в локе - проще сделать 100% шанс провала закла в параметрах данной локации. Оно там же, где имя локи, тэг и тд. Я что-то в этой жизни пропустил? (IMG:style_emoticons/kolobok_light/shok.gif) Нет такого в параметрах локи, хоть убей.
|
![]()
Сообщение
#3275
|
|
Level 5 ![]() ![]() Класс: Пьяный Мастер Характер: Chaotic Good Раса: Человек ![]() |
может быть, имеется ввиду % помех в свойствах локации?
но там эти помехи вроде бы для навыков вида выслушивать/прятаться Сообщение отредактировал Laajin - May 26 2010, 13:23 |
![]()
Сообщение
#3276
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
там есть и для навыков и для заклинаний, вроде бы. А если меня глючит и такой вещи нет, то на вход вешать эффект с увеличением шанса провала. Всяко проще, чем спелхук.
|
![]()
Сообщение
#3277
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата А если меня глючит и такой вещи нет, то на вход вешать эффект с увеличением шанса провала. Всяко проще, чем спелхук. Тебя глючит. Спеллхук чуть сложнее, зато на порядок более надёжен.
|
![]()
Сообщение
#3278
|
|
Level 4 ![]() ![]() Класс: Клерик Характер: Lawful Good Раса: Человек ![]() |
Огромное спасибо. Давно хотел сделать такую штуку, но было лень.
Поковырял компанию, немного переработал оригинальные скрипты. В дальнейшем собираюсь переделать работу с предметами и сам скрипт под мультиплеер с записью свойств в MySQL Смысл таков: На локацию вешается локалинт ITEM_KEY = 0 как счетчик. В недоступном месте стоит вейпоинт backup_waypoint. При заходе в локацию, на игрока вешается эффект провала заклинания и прочищаются все эффекты кроме естественных. С предметами сделано довольно странно, но для сингла сойдет: 1) Предметы копируются к вейпоинту с новыми тегами 2) На оригинальных предметах прочищаются все свойства и устанавливается локалстринг с тегом копии При выходе из локации с игрока снимаются эффект спеллфейла и полиморфа(иначе нельзя будет восстановить свойства на заполиморфимшеся друле), а потом с предметами происходит следующее: 1) Изымается локалстринг с тегом буферного предмета 2) Копируются все свойства с буферного на оригинальный предмет 3) Буферный предмет уничтожается Раскомментировал, как мог. На onEnter локации: Neverwinter Script #include "x2_inc_itemprop" int GetIsAlcohol(object oItem) { itemproperty ip; ip = GetFirstItemProperty(oItem); if(GetIsItemPropertyValid(GetNextItemProperty(oItem) )) return FALSE; if(GetItemPropertyType(ip) == ITEM_PROPERTY_CAST_SPELL) { if(GetItemPropertySubType(ip) == IP_CONST_CASTSPELL_SPECIAL_ALCOHOL_BEER || GetItemPropertySubType(ip) == IP_CONST_CASTSPELL_SPECIAL_ALCOHOL_SPIRITS || GetItemPropertySubType(ip) == IP_CONST_CASTSPELL_SPECIAL_ALCOHOL_WINE) return TRUE; } return FALSE; } int GetIsPoisonAmmo(object oItem) { itemproperty ip; ip = GetFirstItemProperty(oItem); if(GetIsItemPropertyValid(GetNextItemProperty(oItem) )) return FALSE; if(IPGetItemHasItemOnHitPropertySubType(oItem, IP_CONST_ONHIT_ITEMPOISON)) return TRUE; return FALSE; } int GetIsDyeKit(object oItem) { if(GetBaseItemType(oItem) == BASE_ITEM_MISCSMALL) { itemproperty ip = GetFirstItemProperty(oItem); if(GetItemPropertyType(ip) == ITEM_PROPERTY_CAST_SPELL) { int nSubType = GetItemPropertySubType(ip); return (nSubType >= 490 && nSubType <= 497); } return FALSE; } return FALSE; } //Копирует предмет void RemoveAllProperties(object oItem, object oPC, int nSlot = -1) { if(oPC != OBJECT_INVALID) { if(oItem == OBJECT_INVALID)//Если не передается предмет, но передается слот, то работать с предетом на слоте { oItem = GetItemInSlot(nSlot, oPC); if(oItem == OBJECT_INVALID) return; } else { int nType = GetBaseItemType(oItem); if(nType == BASE_ITEM_TORCH || nType == BASE_ITEM_TRAPKIT || nType == BASE_ITEM_HEALERSKIT || nType == BASE_ITEM_GRENADE || nType == BASE_ITEM_THIEVESTOOLS || nType == 109 || // crafting stuff nType == 110 || nType == 112) return; } } if(GetIsAlcohol(oItem) || GetIsPoisonAmmo(oItem) || GetIsDyeKit(oItem)) return; if(oItem == OBJECT_INVALID) return; // вейпоинт, куда складываются копии предметов //Должен быть недоступен игроку object oWP = GetWaypointByTag("backup_waypoint"); //счетчик предметов, должен быть установлен для объекта выполнения заранее и не должен сбрасываться int nKey = GetLocalInt(OBJECT_SELF, "ITEM_KEY"); nKey++; SetLocalInt(OBJECT_SELF, "ITEM_KEY", nKey); string sKey = IntToString(nKey); object oCopy = CopyObject(oItem, GetLocation(oWP), OBJECT_INVALID, "back_item" + sKey); //После копирования на предмет записывается его ключ SetLocalString(oItem, "ITEM_KEY", sKey); itemproperty ip = GetFirstItemProperty(oItem); while(GetIsItemPropertyValid(ip)) { RemoveItemProperty(oItem, ip); ip = GetNextItemProperty(oItem); } } //Убирает эффекты с существа, оставляя естественные эффекты, например EFFECT_TYPE_POISON void RemoveEffects(object oObject) { effect eEff = GetFirstEffect(oObject); while(GetIsEffectValid(eEff)) { int nType = GetEffectType(eEff); if(GetEffectSubType(eEff) != SUBTYPE_EXTRAORDINARY && (nType == EFFECT_TYPE_ABILITY_INCREASE || nType == EFFECT_TYPE_AC_INCREASE || nType == EFFECT_TYPE_ATTACK_INCREASE || nType == EFFECT_TYPE_BLINDNESS || nType == EFFECT_TYPE_CHARMED || nType == EFFECT_TYPE_CONCEALMENT || nType == EFFECT_TYPE_CONFUSED || nType == EFFECT_TYPE_CURSE || nType == EFFECT_TYPE_DAMAGE_IMMUNITY_INCREASE || nType == EFFECT_TYPE_DAMAGE_INCREASE || nType == EFFECT_TYPE_DAMAGE_REDUCTION || nType == EFFECT_TYPE_DAMAGE_RESISTANCE || nType == EFFECT_TYPE_DAZED || nType == EFFECT_TYPE_DEAF || nType == EFFECT_TYPE_DOMINATED || nType == EFFECT_TYPE_ELEMENTALSHIELD || nType == EFFECT_TYPE_ETHEREAL || nType == EFFECT_TYPE_FRIGHTENED || nType == EFFECT_TYPE_HASTE || nType == EFFECT_TYPE_IMMUNITY || nType == EFFECT_TYPE_IMPROVEDINVISIBILITY || nType == EFFECT_TYPE_INVISIBILITY || nType == EFFECT_TYPE_INVULNERABLE || nType == EFFECT_TYPE_ABILITY_INCREASE || nType == EFFECT_TYPE_NEGATIVELEVEL || nType == EFFECT_TYPE_PARALYZE || nType == EFFECT_TYPE_POLYMORPH || nType == EFFECT_TYPE_REGENERATE || nType == EFFECT_TYPE_SANCTUARY || nType == EFFECT_TYPE_SAVING_THROW_INCREASE || nType == EFFECT_TYPE_SEEINVISIBLE || nType == EFFECT_TYPE_SILENCE || nType == EFFECT_TYPE_SKILL_INCREASE || nType == EFFECT_TYPE_SLOW || nType == EFFECT_TYPE_SPELL_IMMUNITY || nType == EFFECT_TYPE_SPELL_RESISTANCE_INCREASE || nType == EFFECT_TYPE_SPELLLEVELABSORPTION || nType == EFFECT_TYPE_TEMPORARY_HITPOINTS || nType == EFFECT_TYPE_TRUESEEING || nType == EFFECT_TYPE_ULTRAVISION || nType == EFFECT_TYPE_INVULNERABLE)) RemoveEffect(oObject, eEff); eEff = GetNextEffect(oObject); } } void main() { object oEnter = GetEnteringObject(); //Если игрок сохранился, вышел из игры и загрузился потом, ничего с ним не делать //INSIDE - Локальная переменная для избежания глюков с save\load int nInside = GetLocalInt(oEnter, "INSIDE"); if(nInside == 1) return; SetLocalInt(oEnter, "INSIDE", 1); RemoveEffects(oEnter); effect eSpellFailure = EffectSpellFailure(100, SPELL_SCHOOL_GENERAL); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eSpellFailure, oEnter); object oItem = GetFirstItemInInventory(oEnter); while(oItem != OBJECT_INVALID) { RemoveAllProperties(oItem, oEnter, -1); oItem = GetNextItemInInventory(oEnter); } //Убираем свойства с предметов в слотах экиперовки //Если лексикон не врет, то искомые слоты с 0(INVENTORY_SLOT_HEAD) по 13(INVENTORY_SLOT_BOLTS) int iSlot = 0; while(iSlot<14) { RemoveAllProperties(OBJECT_INVALID, oEnter, iSlot); iSlot++; } } На onExit: Neverwinter Script #include "x2_inc_itemprop"
// Восстанавливаем свойства предметов void RestoreAllProperties(object oItem, object oPC, int nSlot = -1) { if(oPC != OBJECT_INVALID) { if(oItem == OBJECT_INVALID)//Если не передается предмет, но передается слот, то работать с предетом на слоте oItem = GetItemInSlot(nSlot, oPC); if(oItem == OBJECT_INVALID) return; } string sKey = GetLocalString(oItem, "ITEM_KEY"); object oOriginalItem = GetObjectByTag("back_item" + sKey); if(oOriginalItem != OBJECT_INVALID) { //Копировать все свойства предмета на новый IPCopyItemProperties(oOriginalItem, oItem); DestroyObject(oOriginalItem); DeleteLocalString(oItem, "ITEM_KEY"); } } //Убирает свойства с создания void RemoveEffects(object oObject) { effect eEff = GetFirstEffect(oObject); while(GetIsEffectValid(eEff)) { if(GetEffectType(eEff) == EFFECT_TYPE_SPELL_FAILURE || GetEffectType(eEff) == EFFECT_TYPE_POLYMORPH) RemoveEffect(oObject, eEff); eEff = GetNextEffect(oObject); } } void main() { object oExit = GetExitingObject(); SetLocalInt(oExit, "INSIDE", 0); // Локальная переменная для избежания глюков с save\load if(GetObjectType(oExit) == OBJECT_TYPE_CREATURE) { RemoveEffects(oExit); object oItem = GetFirstItemInInventory(oExit); float fDelay = 4.0; //Задержка для избежания глюков с прогрузкой, можно увеличить while(oItem != OBJECT_INVALID) { DelayCommand(fDelay, RestoreAllProperties(oItem, oExit, -1)); oItem = GetNextItemInInventory(oExit); } //Убираем свойства с предметов в слотах экиперовки //Если лексикон не врет, то искомые слоты с 0(INVENTORY_SLOT_HEAD) по 13(INVENTORY_SLOT_BOLTS) int iSlot = 0; while(iSlot<14) { DelayCommand(fDelay, RestoreAllProperties(OBJECT_INVALID, oExit, iSlot)); iSlot++; } } } } Сообщение отредактировал Batkom - May 27 2010, 00:59 |
![]() ![]()
Сообщение
#3279
|
|
Level 1 Класс: Обыватель Характер: Lawful Neutral Раса: Человек ![]() |
приветик)
делаю свой первый в жизни мод)) до этого модостроем не занималась вообще. по началу всё достаточно просто получалось, сделала участки, разместила монстров, неписей, прописала диалоги, переходы между локациями... но вот дело дошло до скриптов, и тут совсем ничего не понятно (IMG:style_emoticons/kolobok_light/sad.gif) попробовала добавить опыт, как написано здесь Цитата //-------------------- Уровень игрока для игры в модуле ------------------------ // К примеру нам нужен игрок 5 уровня. Смотрим таблицу уровней и видим, // что Level 5 = 10000 xp. { SetXP(oPC, 10000); } ничего не получается, никакого опыта (IMG:style_emoticons/kolobok_light/sad.gif) также пробовала деньги добавлять, снова не работает (( мой мод не очень большой, и много там не нужно, но помогите хотя бы с простыми задачами, пожалуйста (IMG:style_emoticons/kolobok_light/unsure.gif) 1. как все таки мне сделать, чтобы при старте модуля игрокам назначался 5-ый уровень? 2. как сделать, чтобы в диалоге с НПЦ появлялась строчка, что его можно присоединить в отряд? ( в безвыходной ситуации взяла Боддинока Глинка, поменяла ему все диалоги под свой сюжет, но тем не менее остается всегда строчка, что я работаю на Арибет - я не знаю как и где это убрать ... ). 3. ну и наконец, как сделать хотя бы простенький квест? Например непись дает задание, принести ему такой то предмет, и чтобы при подношении ему этого предмета он выдавал бы N-ное количество опыта и золота. |
![]()
Сообщение
#3280
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
ничего не получается, никакого опыта sad.gif как именно написала скрипт и куда его поставила? Процитированный тобой кусок - не является законченным скриптом, это лишь функция. отвечая на твой первый вопрос, должно быть так: Neverwinter Script void main() { object oPC = GetFirstPC(); SetXP(oPC , 10000); } Этот скрипт нужно поставить в слот модуля, на onEnterPlayer (или как-то так он называется). по поводу всего остального, прочитай для начала: http://www.city-of-masters.ru/forums/index...?showtopic=1612 |
![]()
Сообщение
#3281
|
|
Level 1 Класс: Обыватель Характер: Lawful Neutral Раса: Человек ![]() |
спасибо. с опытом и деньгами разобралась.
со спутником тоже, но не совсем. вот это я ему прописала: Цитата if(GetLocalInt(OBJECT_SELF, "HENCHED") != TRUE) // Проверка, что присоединяется один раз { SetLocalInt(OBJECT_SELF, "HENCHED", TRUE); // Вот и установка AddHenchman(GetPCSpeaker(), OBJECT_SELF); // Добавляем хенча тому игроку, с кем говорит теперь по завершении диалоги НПЦ входит в отряд. Но, если его на время отлучить из отряда, то второй раз он уже почему то не нанимается, хотя строчка, по которой он должен входить - есть. что я делаю не так? (IMG:style_emoticons/kolobok_light/unsure.gif) спасибо. с опытом и деньгами разобралась. со спутником тоже, но не совсем. вот это я ему прописала: теперь по завершении диалоге НПЦ входит в отряд. Но, если его на время отлучить из отряда, то второй раз он уже почему то не нанимается, хотя строчка, по которой он должен входить - есть. что я делаю не так? (IMG:style_emoticons/kolobok_light/unsure.gif) |
![]()
Сообщение
#3282
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
теперь по завершении диалоги НПЦ входит в отряд. Но, если его на время отлучить из отряда, то второй раз он уже почему то не нанимается, хотя строчка, по которой он должен входить - есть. что я делаю не так? unsure.gif не снимаешь переменную HENCHED. Она в твоей ситуации вообще не нужна, имхо. |
![]()
Сообщение
#3283
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата 1. как все таки мне сделать, чтобы при старте модуля игрокам назначался 5-ый уровень? Если планируется, что играть будет несколько человек одновременно, то про GetFirstPC() во всех скриптах нужно забыть. Например, в скрипте на заходNeverwinter Script object oPC = GetEnteringObject(); На мой взгляд, пихать во все скрипты, где нужно получить игрока, GetFirstPC() - крайне вредная привычка даже для сингла.
Сообщение отредактировал Ilerien - May 27 2010, 12:31 |
![]()
Сообщение
#3284
|
|
Level 4 ![]() ![]() Класс: Клерик Характер: Lawful Good Раса: Человек ![]() |
Ага.
Еще вариант: добавить в onhb хенча Neverwinter Script if (GetIsPC(GetFactionLeader(OBJECT_SELF))) SetLocalInt(OBJECT_SELF, "HENCHED", FALSE); Считаю, что проверку HENCHED нужно делать при отображении в диалоге строки "Пойдем со мной" Сообщение отредактировал Batkom - May 27 2010, 12:41 |
![]()
Сообщение
#3285
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Считаю, что проверку HENCHED нужно делать при отображении в диалоге строки "Пойдем со мной" там проще проверить, в патии хенч или нет. те переменная тут явно дублирующая. GetFirstPC() - крайне вредная привычка даже для сингла. для сингла не вредная (IMG:style_emoticons/kolobok_light/smile.gif) И я не обратил внимание что там про "игроков". тогда да, от GetFirstPC надо отказываться. |
![]() ![]() |
Текстовая версия | Сейчас: 2nd May 2025 - 14:16 |