![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#1726
|
|
Level 5 ![]() ![]() Класс: Друид Характер: Lawful Neutral Раса: Человек ![]() |
Огромное спасибо! (IMG:style_emoticons/kolobok_light/thank_you.gif)
|
![]()
Сообщение
#1727
|
|
Level 5 ![]() ![]() Класс: Убийца Характер: Chaotic Neutral Раса: Полуэльф ![]() |
Привет!У меня вопрос,что нового в версии 1.66 чем она лучше предыдущих?Кто знает напишите.
|
![]()
Сообщение
#1728
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
QUOTE(Noah @ Aug 9 2006, 12:17) [snapback]89299[/snapback] Привет!У меня вопрос,что нового в версии 1.66 чем она лучше предыдущих?Кто знает напишите. Кстати, последний патч - 1.67. |
![]()
Сообщение
#1729
|
|
Mystery ![]() Класс: Маг Характер: Lawful Evil Раса: Тварь NWN: Контент Амен ![]() |
QUOTE(virusman @ Aug 9 2006, 12:20) [snapback]89300[/snapback] Кстати, последний патч - 1.67. Скоро уже 1.68 будет |
![]()
Сообщение
#1730
|
|
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
Неужели мы наконец-то увидим в игре официальных лошадок? (IMG:style_emoticons/kolobok_light/smile.gif) Именно в этом патче обещали их, да и многие другие вкусности. Странно, когда известили, что поддерживать НВН больше не будут, и мы не увидим патча 1.68, пропала всякая надежда на дальнейшие косметические улучшения игры.
|
![]()
Сообщение
#1731
|
|
Level 5 ![]() ![]() Класс: Друид Характер: Lawful Neutral Раса: Человек ![]() |
При помощи како функции можно определить тег только что купленного предмета?
Сообщение отредактировал Milfes - Aug 9 2006, 16:40 |
![]()
Сообщение
#1732
|
|
Level 4 ![]() ![]() Класс: Некромант Характер: Chaotic Evil Раса: Нежить ![]() |
В смысле только что купленного ????
NSS string GetTag(object oObject); QUOTE Description: Returns the tag of oObject. Returns an empty string if oObject is not a valid object. PC's do return a valid value - an empty string! This is because they have no string defined as thier tag (Even GetObjectByTag("") may return a PC object). |
![]()
Сообщение
#1733
|
|
Level 5 ![]() ![]() Класс: Друид Характер: Lawful Neutral Раса: Человек ![]() |
QUOTE В смысле только что купленного ???? Последний купленый в магазине обьект. Я правда не уверен, что это возможно. |
![]()
Сообщение
#1734
|
|
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
Milfes, не совсем тебя понятно, если честно. Тэги у вещей такие, какие ты назначил вещам в палитре, когда их делал. Узнать же тэг можно с помощью вышеописанной функции. Тебе надо сделать какую-нибудь вещь с возможностью использования уникальной силы на любой объект, и после использования этой вещи, запускать скрипт, с помощью которого узнавать тэг объекта, на который был наведен предмет.
|
![]()
Сообщение
#1735
|
|
![]() Класс: Пьяный Мастер Характер: Lawful Good Раса: Тварь MySQL, PHP, JavaScript Порядок Времени ![]() |
QUOTE(Milfes @ Aug 9 2006, 18:33) [snapback]89313[/snapback] Последний купленый в магазине обьект. Я правда не уверен, что это возможно. Почему же (IMG:style_emoticons/kolobok_light/wink3.gif) возможно. Правда вариант нетривиален (IMG:style_emoticons/kolobok_light/spiteful.gif) Объект торговца, скрипт onOpenStore ставим флаг, указывающий на то, что идет торговля скрипт onStoreClose снимаем этот флаг модуль onAcquireItem - проверяем флаг торговли, если true определяем тег предмета (функция указана выше (IMG:style_emoticons/kolobok_light/wink3.gif) ) и запоминаем в локалку, на тот же модуль к примеру. имхо. ну или это, onOpenStore - запоминаем весь инвентарь, onStoreClose - сравниваем текущий с запомненным (IMG:style_emoticons/kolobok_light/rofl.gif) |
![]()
Сообщение
#1736
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
QUOTE(NeoJSmith @ Aug 9 2006, 19:22) [snapback]89317[/snapback] Почему же (IMG:style_emoticons/kolobok_light/wink3.gif) возможно. Правда вариант нетривиален (IMG:style_emoticons/kolobok_light/spiteful.gif) Объект торговца, скрипт onOpenStore ставим флаг, указывающий на то, что идет торговля скрипт onStoreClose снимаем этот флаг модуль onAcquireItem - проверяем флаг торговли, если true определяем тег предмета (функция указана выше (IMG:style_emoticons/kolobok_light/wink3.gif) ) и запоминаем в локалку, на тот же модудб к примеру. имхо. |
![]()
Сообщение
#1737
|
|
Level 5 ![]() ![]() Класс: Друид Характер: Lawful Neutral Раса: Человек ![]() |
Всем спасибо разобрался.
|
![]()
Сообщение
#1738
|
|
Level 3 ![]() Класс: Некромант Характер: Chaotic Neutral Раса: Человек ![]() |
Здравствуйте.
Как можно запретить персонажу брать второй\третий класс(если можно)? |
![]()
Сообщение
#1739
|
|
Level 8 ![]() ![]() ![]() Класс: Теневой Танцор Характер: True Neutral Раса: Эльф ![]() |
Здравия желаю! Давно меня здесь не было...
Итак вот пара вопросов, которые помогли бы разнообразить модуль: 1) Можно ли сделать, чтобы описание персонажа менялось после разговора с ним? То есть. Первоначальное описание формирует лишь внешнее представление, а после оно обновляется... 2) Хочется сделать, чтобы пометок на карте не было совсем. Но чтобы они появлялись после того, как персонаж зайдет в оные места. Думаю это можно сделать скриптами, я прав? 3) Нужно, чтобы люди из опред. локации время от времени исчезали из оной( случайно - не в опред. время) где-то на полдня-день, но не слишком часто. Как бы это сделать??? 4) Есть ли мысли как более удобно сделать систему отношений. То есть одни персонажи в зависимости от твоего поведения тебя любить не будут, а другие будут? Благодарю) (IMG:style_emoticons/kolobok_light/thank_you.gif) |
![]()
Сообщение
#1740
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
1. вроде SetDescription нету пока. Обещали в НВН2 и мб в 1.68
2. прав. я делал. Вначале метки ставь не активными, потом активируй. Можно сделать это одним скриптом, но тады надо продумывать систему тэгов меток и связи тэгов с тэгами локаций\локальными переменными на локациях. 3. писать управляющий скрипт. тут в 2х словах не скажешь. Я такое делал (днем ходят по городу, ночью к дверям идут и исчезают)0 4. На локалках. Тут много копий сломано, как лучше. Надо продумать баланс между работой над этим и конечным эффектом. |
![]()
Сообщение
#1741
|
|
Level 4 ![]() ![]() Класс: Некромант Характер: Chaotic Evil Раса: Нежить ![]() |
2.
NSS SetMapPinEnabled(object oMapPin, int nEnabled) 3. В Левор гамал ? Там неписи ночью уходят по домам, вот и погляди как там ето реализованно. (См. скрипты локи - эвенты oXB, oUserDef...) 4. На локалках, тут в принципе все просто тока нужно в них не запутатся. |
![]()
Сообщение
#1742
|
|
Level 8 ![]() ![]() ![]() Класс: Теневой Танцор Характер: True Neutral Раса: Эльф ![]() |
А вот про систему локалок можно поподробнее? Много проверок на intы? Это не так уж и просто...
|
![]()
Сообщение
#1743
|
|
Level 13 ![]() ![]() ![]() ![]() Класс: Ниндзя Характер: Chaotic Evil Раса: Танар'ри ![]() |
смотря что надо в твоем модуле. Простейший вариант - на персонажа вешается сокалка и в зависимости от твоих дейсвий ее значение меняется (на+1 или -1 за одно действие). Если тебе нужно, так сказать, общественное мнение, то можно разбить "общество" на группы, по какому-либо признаку(можно по алайментам например) и у каждой будет одна такая переменная.
У меня такой ворос возник: можноли сделать фит-состояние, вроде пауэр атак или экспертизы? и если можно, то как? и еще возник вопрос относительно parts_bicep.2da и parts_forearm.2da за что отвечает строчка ACBONUS? (не ужели за броню? 0.02 брони - это круто) и вот например pmh0forer041.mdl относится к 4 или 41 строчке parts_forearm.2da? (просто в одном хаке копаюсь, пытаюсь понять, почему в тулсете не отображаются все модели рук, которые есть в хаке) Сообщение отредактировал Вишес - Aug 31 2006, 16:07 |
![]()
Сообщение
#1744
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
QUOTE(Nuprahtor @ Aug 24 2006, 16:57) [snapback]90426[/snapback] Здравствуйте. Как можно запретить персонажу брать второй\третий класс(если можно)? на onPlayerLevelUp (есть такой слот в свойствах модуля) написать скрипт-проверку. Если классов 2/3 (те первый и второй/третий валидны), то отбираем опыт и на левелап заново. Сам напишешь скрипт? Вишес, а хз. Это точно не АС. Я по аналогии с другими (стандартными) строками делал и не парил себе моск. |
![]()
Сообщение
#1745
|
|
Level 2 ![]() Класс: Тайный Лучник Характер: True Neutral Раса: Эльф ![]() |
Доброго времени суток. Вот тут у меня пара вопросов:
1 Как сделать чтобы метка на карте появлялась после разговора с персонажем ( персонаж указывает в разговоре на это место)? 2 Я создал предмет, но он должен быть невидимым и при определенном значении навыка обнаружения должен появляться. Так вот, как сделать невидимым предмет и проводить проверку? |
![]()
Сообщение
#1746
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
1:
Размести в модуле вайпоинт с уже подготовленной пометкой. (Только не забуть убрать галочку на св-ве: Map Note Enabled) Далее, простой скрип на ActionTakes: NSS void main() { object oWP = GetWaypointByTag(""); // Здесь укажи Таг вайпоинта SetMapPinEnabled(oWP, TRUE); } 2: В официальных модулях, это уже было реализовано. Посмотри там. (IMG:style_emoticons/kolobok_light/wink3.gif) Сообщение отредактировал Dik Morris - Sep 5 2006, 12:57 |
![]()
Сообщение
#1747
|
|
Level 2 ![]() Класс: Тайный Лучник Характер: True Neutral Раса: Эльф ![]() |
По поводу второго ответа - можно поподробней.
|
![]()
Сообщение
#1748
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
QUOTE(Misty Archer @ Sep 5 2006, 20:11) [snapback]91104[/snapback] По поводу второго ответа - можно поподробней Не думаю что поймешь.. но все же. NSS //::////////////////////////////////////////////// //:: OnEnter am_ten_skl_searh //:: Copyright © 2005 WRG! //::////////////////////////////////////////////// /* ПРИ УСПЕШНОЙ ПРОВЕРКЕ СКИЛА ПОИСК, СОЗДАЕМ Item. ResRef создаваемого объекта равен локальному стрингу на триггере, для всех классов CLASS_TYPE_ALL, для всех остальных классов персонально для каждого: CLASS_TYPE_BARBARIAN, CLASS_TYPE_FIGHTER и т.д. Поле триггера KeyTag - сложность проверки скилла: DC_EASY = 0; DC_MEDIUM = 1; DC_HARD = 2; Флоат "DISTANCE" расстояние на котором создается объект вокруг РС. Локалка "ACTION_MODE_DETECT" устанавливает свойство триггера, он сработает только когда РС в режиме обнаружения. int CLASS_TYPE_BARBARIAN = 0; int CLASS_TYPE_CLERIC = 2; int CLASS_TYPE_DRUID = 3; int CLASS_TYPE_FIGHTER = 4; int CLASS_TYPE_PALADIN = 6; int CLASS_TYPE_RANGER = 7; int CLASS_TYPE_INVALID = 255; nwscript */ //::////////////////////////////////////////////// //:: Created By: Aiwan //:: Created On: 31.12.2005 23:24 С новым Годом! //::///////////////////////////////////////////// #include "nw_i0_tool" #include "am_inc_common" void main() { object oPC = GetEnteringObject(); //object oHench = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC); object oSelf = OBJECT_SELF; string sMessage = GetName(oSelf); // Сообщение при обнаружении предмета PC string sHench1 = GetLocalString(oSelf, "HENCHMAN_string_1"); string sHench2 = GetLocalString(oSelf, "HENCHMAN_string_2"); string sHench3 = GetLocalString(oSelf, "HENCHMAN_string_3"); string sHench4 = GetLocalString(oSelf, "HENCHMAN_string_4"); string sHench5 = GetLocalString(oSelf, "HENCHMAN_string_5"); float f = GetLocalFloat(oSelf, "DISTANCE"); // Расстояние от РС для находки if(f==0.0) f = 2.0; // Если нет, то по умолчанию 2 метра радиус location lLoc = CreateRandomLocation(oPC, f); int iDC = StringToInt(GetLockKeyTag(oSelf)); // Сложность проверки скилла if(!GetIsPC(oPC)||GetIsInCombat(oPC)||GetLocalInt(oSelf, "DEACTIVATED")) return; //----------------------------------- // Ищем в списке помощников Алишан //----------------------------------- object oHench = GetObjectByTag("AM_HEN_ALISHAN"); if(!GetIsAssociate(oPC, oHench)) { oHench = OBJECT_INVALID; } //----------------------------------- if(!GetActionMode(oPC, ACTION_MODE_DETECT) && GetLocalInt(oSelf, "ACTION_MODE_DETECT")) { if (GetIsObjectValid(oHench)) // Хеньчман нас предупреждает, что тут что-то есть { if(!GetLocalInt(oSelf, "HENCHMAN_SPEAK")) { SetLocalInt(oSelf, "HENCHMAN_SPEAK", TRUE); DelayCommand(0.2, AssignCommand(oHench, PlayVoiceChat(VOICE_CHAT_SEARCH))); DelayCommand(0.21, AssignCommand(oHench, SpeakString(sHench1))); } } if(GetGameDifficulty() == GAME_DIFFICULTY_EASY || !GetLocalInt(GetModule(), "DEBAG_PC")) SendMessageToPC(oPC, "<cу >ВКЛЮЧИТЕ РЕЖИМ ОБНАРУЖЕНИЯ.</c>"); return; } SetLocalInt(oSelf, "DEACTIVATED", TRUE); string sResRef = GetLocalString(oSelf, "CLASS_TYPE_ALL"); // Предмет для всех string sB = GetLocalString(oSelf, "CLASS_TYPE_BARBARIAN"); // Каждому персонально string sC = GetLocalString(oSelf, "CLASS_TYPE_CLERIC"); string sF = GetLocalString(oSelf, "CLASS_TYPE_FIGHTER"); string sP = GetLocalString(oSelf, "CLASS_TYPE_PALADIN"); string sR = GetLocalString(oSelf, "CLASS_TYPE_RANGER"); string sD = GetLocalString(oSelf, "CLASS_TYPE_DRUID"); int iBestClass = GetCreatureBestClass(oPC); // Ищем лучший класс мультиклассов // Дебаг класса string sClass; if(iBestClass==0) sClass="BARBARIAN"; if(iBestClass==2) sClass="CLERIC"; if(iBestClass==3) sClass="DRUID"; if(iBestClass==4) sClass="FIGHTER"; if(iBestClass==6) sClass="PALADIN"; if(iBestClass==7) sClass="RANGER"; Debug("Лучший класс игрока - "+sClass); if(sResRef=="") // Если создаем предметы для классов { // Приравняем ResRef-ы к единому значению взяв от каждого класса if(iBestClass==0) sResRef=sB; if(iBestClass==6) sResRef=sP; if(iBestClass==2) sResRef=sC; if(iBestClass==7) sResRef=sR; if(iBestClass==4) sResRef=sF; if(iBestClass==3) sResRef=sD; } if(AutoDC(iDC, SKILL_SEARCH, oPC)) { if(sResRef != "") { object oItem = CreateObject(OBJECT_TYPE_ITEM, sResRef, lLoc); AssignCommand(oPC, PlayVoiceChat(VOICE_CHAT_LOOKHERE)); string sRunScript = GetLocalString(oSelf, "RUN_SCRIPT"); if(sRunScript!="") DelayCommand(2.0, ExecuteScript(sRunScript, oItem)); if(sMessage == "Предмет + [Текст над РС]" || sMessage =="Item + [Текст над РС]") sMessage = ""; AssignCommand(oPC, SpeakString(sMessage)); SendMessageToPC(oPC, "<c у >Вы обнаружили предмет.</c>"); AssignCommand(oPC, ClearAllActions()); AssignCommand(oPC, ActionDoCommand(SetFacingPoint(GetPositionFromLocation(lLoc)))); DelayCommand(0.3, SetCommandable(FALSE, oPC)); DelayCommand(2.0, SetCommandable(TRUE, oPC)); if (GetIsObjectValid(oHench)) { AssignCommand(oHench, ClearAllActions()); AssignCommand(oHench, SetFacingPoint(GetPositionFromLocation(lLoc))); if(GetLocalInt(oSelf, "HENCHMAN_SPEAK")) { DelayCommand(3.2, AssignCommand(oHench, PlayVoiceChat(VOICE_CHAT_YES))); DelayCommand(3.21, AssignCommand(oHench, SpeakString(sHench2))); } else { DelayCommand(3.2, AssignCommand(oHench, PlayVoiceChat(VOICE_CHAT_GOODIDEA))); DelayCommand(3.21, AssignCommand(oHench, SpeakString(sHench3))); } } } else { // Если мы забыли написать ResRef предметов, то ошибка Debug("<cу >ОШИБКА!</c> Не могу создать объект. Нет ResRef-а для класса - "+sClass); } } else { if(GetLocalInt(oSelf, "HENCHMAN_SPEAK")) { AssignCommand(oPC, PlayVoiceChat(VOICE_CHAT_CANTDO)); AssignCommand(oPC, SpeakString("Я ничего не вижу.")); DelayCommand(3.2, AssignCommand(oHench, PlayVoiceChat(VOICE_CHAT_NO))); DelayCommand(3.21, AssignCommand(oHench, SpeakString(sHench4))); DelayCommand(6.2, AssignCommand(oHench, PlayVoiceChat(VOICE_CHAT_MOVEOVER))); DelayCommand(6.21, AssignCommand(oHench, SpeakString(sHench5))); } } } Рандомную локацию глянь код в теме базы скриптов. Вешается на он ентр триггера. NSS location CreateRandomLocation(object oTarget, float fRadius, int bOnLine = TRUE)
{ if(!bOnLine) fRadius=IntToFloat(Random(FloatToInt(fRadius))); float iXO=VectorMagnitude(GetPosition(oTarget))*cos(VectorToAngle(GetPosition(oTarget))); float iYO=VectorMagnitude(GetPosition(oTarget))*sin(VectorToAngle(GetPosition(oTarget))); float fRndomAngle=IntToFloat(Random(360)); location lNEW=Location(GetArea(oTarget),Vector(iXO+fRadius*cos(fRndomAngle),iYO+fRadius*sin(fRndomAngle)),360.0); return lNEW; } int GetCreatureBestClass(object oCr) { int class1 = GetClassByPosition(1, oCr); int class2 = GetClassByPosition(2, oCr); int class3 = GetClassByPosition(3, oCr); int classlev1, classlev2, classlev3; classlev1 = GetLevelByClass(class1, oCr); if (class2 != CLASS_TYPE_INVALID) classlev2 = GetLevelByClass(class2, oCr); if (class3 != CLASS_TYPE_INVALID) classlev3 = GetLevelByClass(class3, oCr); int BestClass = class1; if (classlev1 < classlev2) BestClass = class2; if (classlev2 < classlev3) BestClass = class3; return BestClass; } |
![]()
Сообщение
#1749
|
|
Level 2 ![]() Класс: Тайный Лучник Характер: True Neutral Раса: Эльф ![]() |
Спасиб, будем разбираться (IMG:style_emoticons/kolobok_light/biggrin.gif) .
Опять новый вопрос: 1 хочу вставить в книгу рисунок карты, возможно ли это? 2 можно ли сделать что-то типа проверки на ловкость при вскрытии замков ( так же хочу сделать в модуле отмычки которые будут влиять на результат этой проверки если их держать в руках, как это зделать) |
![]()
Сообщение
#1750
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
1. Нет.
2. Слот OnUnlocked. Проверка идет и так. Отмычки делай как в палитре + к скилу открыть замок. Вот тебе скрипт на экспу. Мож поправить чо надо. NSS //:://////////////////////////////////////////////
//:: OnUnlocked am_dul_unlocked //:: Copyright © 2004 WRG! //::////////////////////////////////////////////// /* УНИВЕРСАЛЬНЫЙ СКРИПТ РАЗДЕЛЕНИЕ ХР ЗА ОТКРЫТИЕ-ОБЕЗВРЕЖИВАНИЕ */ //::////////////////////////////////////////////// //:: Created By: Aiwan //:: Created On: 09.05.2004 //::////////////////////////////////////////////// #include "nw_i0_tool" void main() { int iL = GetLockUnlockDC(OBJECT_SELF); int iT = GetTrapDisarmDC(OBJECT_SELF); object oDisarmed = GetLastDisarmed(); object oUnlocked = GetLastUnlocked(); //================ ОТКРЫВАЕМ ЗАМОК ================ if ((!GetLocalInt(OBJECT_SELF, "UNLOCKED"))&&(GetIsObjectValid(oUnlocked))) { SetLocalInt(OBJECT_SELF, "UNLOCKED", TRUE); if (HasItem(oUnlocked,GetLockKeyTag(OBJECT_SELF))) return; if (GetIsPC(oUnlocked)) // Если замок вскрыл РС { GiveXPToCreature(oUnlocked, (iL * GetHitDice(oUnlocked)/3)); // XP = DC двери умноженное на 1/3 уровень РС return; } else // Если замок вскрыл Henchman RewardPartyXP((iL*2), GetMaster(oUnlocked)); // XP = DC двери умноженное на 2 return; } //=============== ОБЕЗВРЕЖИВАЕМ ЛОВУШКУ ============ if ((!GetLocalInt(OBJECT_SELF, "DISARMED"))&&(GetIsObjectValid(oDisarmed))) { SetLocalInt(OBJECT_SELF, "DISARMED", TRUE); if (HasItem(oDisarmed,GetTrapKeyTag(OBJECT_SELF))) return; if (GetIsPC(oDisarmed)) // Если ловушку обезвредил РС { GiveXPToCreature(oDisarmed, (iT * GetHitDice(oDisarmed)/3)); // XP = DC ловушки умноженное на 1/3 уровень РС return; } else // Если ловушку обезвредил Henchman RewardPartyXP((iT*2), GetMaster(oDisarmed)); // XP = DC ловушки умноженное на 2 } } |
![]() ![]() |
Текстовая версия | Сейчас: 9th May 2025 - 15:36 |