![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#271
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Shad щас, гляну :yes:
Ой блин! :oh: У меня ж нету Тулсета... :swoon: Но солью все равно :D |
![]()
Сообщение
#272
|
|||
Level 3 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Напиши, как оно. Интересно... :rolleyes: |
||
![]()
Сообщение
#273
|
|
Level 3 ![]() Класс: Теневой Танцор Характер: Lawful Evil Раса: Человек NWN: Маппинг Сиала ![]() |
Мир вам!
Не получается отследить нанесение чаром или мобом "критического удара" для последующего запуска собственной процедуры. Вообще это реализуемо? Если да, то как? Спасибо. |
![]()
Сообщение
#274
|
|||
Level 7 ![]() ![]() Класс: Бард Характер: Lawful Good Раса: Фея ![]() |
Ай нид хелп.. Вот скрипт и тут есть фича с регистрацией аккаунта на шарде..так вот как ее отсечь без вреда скрипту?(ка я понял там еще есть некоторые действия)
|
||
![]()
Сообщение
#275
|
|||
4-х Кубовый ![]() Класс: Некромант Характер: Lawful Evil Раса: Человек NWN: Скриптинг [Sn] Проклятие Левора ![]() |
Черный Ярл
Мне кажется, что это нельзя отследить... Хотя... есть идейка хитренькая... У моба надо скрипт на OnDamage вешать. При каждом полученном неписем повреждении скрипт на нем анализирует максимальный "некритический" удар damager'а. Сравнивает с полученным повреждением и если оно больше, чем максимальный "некритический" удар, значит это КРИТ. Запускаем кастом функцию. :drag: |
||
![]()
Сообщение
#276
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Shad я посмотрел твой модуль. МОЛОДЕЦ! :good:
Признаюсь честно, в ХоТУ я не гамал, эпик спеллы не знаю :crazy: Но то что видел у тебя мне понравилось! |
![]()
Сообщение
#277
|
|||
Level 3 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Спасибо, Aiwan. :yes: Значит я не зря старался. :D Осталость применение найти. П.С. Можно удалять посты о модуле, дабы тему не зафлуживать. |
||
![]()
Сообщение
#278
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Все нормально. Если уж наши слова спам, то я Испанский Летчик :pilot:
Может ты бы оформил свой модуль как ссылку и в тему полезных ссылок поставил? |
![]()
Сообщение
#279
|
|
Level 7 ![]() ![]() Класс: Бард Характер: Lawful Good Раса: Фея ![]() |
Вопросик..
В каком модульном свойстве стоит система лута? :unsure: |
![]()
Сообщение
#280
|
|
4-х Кубовый ![]() Класс: Некромант Характер: Lawful Evil Раса: Человек NWN: Скриптинг [Sn] Проклятие Левора ![]() |
Лут не в модульных свойствах. Он в OnDeath крича.
|
![]()
Сообщение
#281
|
|||
Level 7 ![]() ![]() Класс: Бард Характер: Lawful Good Раса: Фея ![]() |
Ясно..Спасибо :yahoo: |
||
![]()
Сообщение
#282
|
|
Level 2 ![]() Класс: Монах Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] ![]() |
Не подскажут ли мастера тулсета: Как сделать цикл перебора всех карт в модуле? Что-то я рылся в функция, рылся - ничего не нашел. Вся беда в том, что невозможно присваивать свою величину перепенной типа object :(
|
![]()
Сообщение
#283
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
А нельзя циклом прогнать объекты, и определить их тип как area?
|
![]()
Сообщение
#284
|
|
Level 3 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Тобур Если можно достучатся до файлов на диске, ResRef-ы карт в файле module.ifo хранятся подряд, возможно это можно использовать.
Можно использовать объекты со специфическим тегом ("sequence_xx") и пробегать по ним. |
![]()
Сообщение
#285
|
|||||||
4-х Кубовый ![]() Класс: Некромант Характер: Lawful Evil Раса: Человек NWN: Скриптинг [Sn] Проклятие Левора ![]() |
Shad До ерф-файлов и module.ifo из игры не достучаться.
??? Это что значит нельзя?! Кто сказал такую чушь? SetLocalObject(...) нельзя делать??? Или я не понял?.. :this: :unsure:
Это будет слишком долго (если модуль довольно объемный)... Вообще имхо ЛУЧШИЙ вариант - поставить в КАЖДОЙ локе вейп с одинаковым тэгом, допустим "WP_ID_AREA". Потом просто циклом перебираем:
|
||||||
![]()
Сообщение
#286
|
|||
Level 2 ![]() Класс: Монах Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] ![]() |
Эхх , если бы все было так просто :( скриптик object oMod = GetModule(); int i = 1; SetLocalObject(oMod,"CurMap",i); компилируется с ошибкой ERROR: DECLARATION DOES NOT MATCH PARAMETERS, хотя в Лексиконе ясно сказано "object - An integer that represents a particular object in the world (essentially a pointer to a real object)". Я не могу никаким образом получить какую-то идентификацию карты иначе, чем через объект, который на этой карте находится. Ясно, что тип object это ссылка, но как перебрать все-таки карты в модуле? В принципе , я уже нашел способ, но этот способ больно извращенный. Неужели в тулсете не предусмотрена все-таки более простая возможность? Через ресрефы тоже плохо - они все разные, через расставленные вэйпоинты - тоже: их надо расставлять. Объясню для чего мне нужен цикл по картам: дело в том, что на Сиале при сохранении положения персонажа, запоминается тэг локации. Если тэг одинаковый у двух карт, то с восстановлением положения могут быть проблемы. Так как карт у нас около 470, просматривать в тулсете тэг очень долго и муторно. Поэтому я хотел вывести тэги всех карт в текстовый файл или файл БД и потом каким - нибудь стандартным средством определить задвоение. |
||
![]()
Сообщение
#287
|
|||
4-х Кубовый ![]() Класс: Некромант Характер: Lawful Evil Раса: Человек NWN: Скриптинг [Sn] Проклятие Левора ![]() |
Хех, так в чем проблема запоминать НЕ ТЭГ ЛОКИ, а ЕЕ ОБЪЕКТ?! Уникально. Независимо от тэга?.. Возвращение перса опять-таки делать не по тэгу локи, а по ее объекту... Добавлено в [mergetime]1098772792[/mergetime] К тому же, обрати внимание на функцию ObjectToString(object oObj); ;) :yes: |
||
![]()
Сообщение
#288
|
|||
Вечно исчезающий ![]() Класс: Маг Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] Проклятие Левора ![]() |
Это мне вобще непонятно %) Как это объекту можно присвоить числовое значение? :swoon: |
||
![]()
Сообщение
#289
|
|||||
Level 2 ![]() Класс: Монах Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] ![]() |
Потому что при добавлении новой карты все индексы перестраиваются и со сменой версии модуля игрок может оказаться или не там, где выходил или вообще в стартовой локации. ObjectToString ничего мне не дает - вот если бы была функция StringToObject - это бы все меняло :). Главный мой вопрос - как присвоить переменной типа Object какое то значение, не не пользуясь ссылкой.
Я же специально привел ссылку из лексикона - object содержит в себе натуральное число (иначе говоря просто номер объекта). Весь вопрос в том и состоит - как переменной типа object присвоить этот самый номер. Еще раз повторю - нету в НВН ни функции типа GetNextObjectInArea (только InModule), ни константы OBJECT_TYPE_ для ареи, чтобы выделить из массы объектов именно карту. Короче, я понял, что тут никто толкового сказать не может :( |
||||
![]()
Сообщение
#290
|
|||||||||
4-х Кубовый ![]() Класс: Некромант Характер: Lawful Evil Раса: Человек NWN: Скриптинг [Sn] Проклятие Левора ![]() |
Спасибо за твою благодарность в сторону наших попыток помочь. Либо ты слишком умный, либо слишком много у нас времени и главное ДАННЫХ, которые ты представил в своей задаче... :xz: :this: Но так, как ты говоришь и высказываешь мнение о пытающихся помочь - не делается. Здесь, на форуме ВРГ, никто никому ничего не должен, а потерпеть и выудить решение все равно можно. Увы, твое терпение коротко...
Мне не нравится немного, что ты "еще раз повторяешь: НЕТУ РЕШЕНИЯ! ЧТО ВЫ МУЧАЕТЕСЬ?". Как будто, задавая вопрос и отвечая сам же на него потом нам, ты говоришь: НУ ВЫ И... КАК ВЫ МОГЛИ ПОДУМАТЬ ТОЛЬКО, ЧТО Я ТАКОГО НЕ ПРОБОВАЛ ДЕЛАТЬ?..
Вообще-то индексы не перестраиваются. Они дописываются к последнему элементу.
Ты бы лучше ПОДРОБНО объяснил задачу, а не задавал вопрос, ОТРИЦАТЕЛЬНЫЙ ответ на который, ты сам заранее уже знаешь и ждешь чтобы тебе его просто подтвердили. Не спеши с выводами, а потерпи и решение придет. ;) Я понял, тебе надо будет пробегать таким циклом по поиску лок лишь ОДИН раз, на старте модуля? Или я опять не догнал? |
||||||||
![]()
Сообщение
#291
|
|||
Level 3 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Можно сохранять ResRef для подтверждения правильности локации. Но если пройти по модулю нужно один раз за версию - вопрос перешел в разряд теретических. Ведь какой-никакой метод, ты говришь, уже нашел. |
||
![]()
Сообщение
#292
|
|||||
4-х Кубовый ![]() Класс: Некромант Характер: Lawful Evil Раса: Человек NWN: Скриптинг [Sn] Проклятие Левора ![]() |
Шо цэ есть, ЗАДВОЕНИЕ? :unsure: Добавлено в [mergetime]1098827906[/mergetime]
Вот-вот. Отлично Shad! :yes: :good: |
||||
![]()
Сообщение
#293
|
|
Level 2 ![]() Класс: Монах Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] ![]() |
Я извиняюсь за резкость. Я не правильно выразился и благодарен тем, кто откликнулся. Уважаю ваш сайт и форум за нейтральность по отношению к шардам и их разборкам и открытость по отношению к игрокам. Ваш форум - это своеобразная "нейтральная территория", накоторой могут общаться все коммьюнити НВН.
Решение я нашел такое: Я сохраняю в БД какую-то локацию, потом каким-то внешним редактором (в моем случае FoxPro) правлю DBF файл и соэдаю в нем 64000 записи с последовательно увеличивающимся индексом и названием переменной (В моем случае MAP1 , 2 и т.д.), в которой присутствует индекс. Затем в скрипте загрузки модуля вставляю следующий текст: void CheckAreaTag() { object oMod = GetModule(); int iCur = GetLocalInt(oMod,"CurCount"); if (iCur < 64000) { WriteTimestampedLogEntry(" ~ Continue ~ "+IntToString(iCur)); int iBegin = iCur; iCur = iCur +2000; SetLocalInt(oMod,"CurCount",iCur); object oArea; object oTemp; location lLoc; string sVarName; int i; for (i = iBegin; i < iCur; i++) { sVarName = "MAP"+IntToString(i); lLoc = GetCampaignLocation("TEST",sVarName); oArea = GetAreaFromLocation(lLoc); if (GetIsAreaNatural(oArea)!=AREA_INVALID) WriteTimestampedLogEntry(sVarName + " id "+IntToString(i)+" ; "+"object "+ObjectToString(oArea)+" ; "+GetTag(oArea)+" ; "+GetName(oArea)+" ; "+GetResRef(oArea)); } DelayCommand(2.0f, CheckAreaTag()); } else WriteTimestampedLogEntry(" ~ End ~ "+ IntToString(iCur)); } void main() { WriteTimestampedLogEntry(" ~ Begin check area tag ~ "); CheckAreaTag(); } Получившийся текстовый лог-файл открываю в Exсel-e и сохраняю как таблицу (поля я специально разделяю знаком ; , так как Exсel понимает этот знак как разделитель. Дальше уже в Exсel-e можно сортировать , фильтровать и анализировать записи. Таким же образом можно получить сводную информацию обо всех объектах, находящихся на картах в модуле (не в палитре), например о НПС и плэйсэйблах |
![]()
Сообщение
#294
|
|||
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Тобур даже я вчера до двух ночи голову ломал. ;) Зря ты так :drag:
Все ок! ;) ТО что ты сейчас сказал настолько важно, к примеру для меня :crazy: Ты даже не представляешь :yes: Заходи к нам почаще! :drag: Все плохое забыли :good: И молодец, что победил проблему. Кинь ее в базу скриптов, очень людям поможешь. |
||
![]()
Сообщение
#295
|
|
4-х Кубовый ![]() Класс: Некромант Характер: Lawful Evil Раса: Человек NWN: Скриптинг [Sn] Проклятие Левора ![]() |
Тобур
Все ок ;). Ты - взрослый человек. :good: По делу... А дальше что? Ну есть у тебя экселевский файл. И что с ним делать дальше? Я думал тебе данные нужны для обратного использования потом в скрипте... :unsure: |
![]() ![]() |
Текстовая версия | Сейчас: 7th July 2025 - 20:06 |