![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#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: |
![]()
Сообщение
#296
|
|
Level 2 ![]() Класс: Монах Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] ![]() |
Изначально моя цель была найти карты, у которых совпадают тэги. Для этого мне надо было получить список тэгов всех карт в модуле - я его получил, хоть и извращенным способом. После этого достаточно отсортировать в экселе таблицу по полю тэга и пробежаться взглядом по ней, чтобы найти задвоенность (дубляж) тэга. Я нашел в 470 картах 4 дубляжа - это тот результат, который я и хотел получить :)
|
![]()
Сообщение
#297
|
|
Level 4 ![]() ![]() Класс: Оборотень Характер: Chaotic Neutral Раса: Орк NWN: Скриптинг [PW] ![]() |
Менее извратный способ - создать 2дашку и забивать в нее таги(или ресрефы) локаций. Всего то делов остается - пробежать все строчки одного столбца( с тагами карт ) :crazy:
|
![]()
Сообщение
#298
|
|
Level 3 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Вот, кстати, ещё одно решение. Придумал днём, пока в инет доступа небыло: Можно взять теги прямо из файлов *.are модуля, так сказать напрямую. Я просмотрел несколько (5) файлов карт, из кампаний и новосозданого модуля. Во всех теги хранились после последовательности Tile_AnimLoop3 ровно через 6 байт.
|
![]()
Сообщение
#299
|
|||
4-х Кубовый ![]() Класс: Некромант Характер: Lawful Evil Раса: Человек NWN: Скриптинг [Sn] Проклятие Левора ![]() |
А следуя из этого, программульку-анализатор на Сях или Дельфях написать - как 2 пальца... ;) |
||
![]()
Сообщение
#300
|
|
Level 2 ![]() Класс: Обыватель Характер: True Neutral Раса: Рептилия ![]() |
Вопрос. Как убрать ВСЕ из инвентаря (нет ли функции соответствующей, аль чето такого)? :umnik:
|
![]() ![]() |
Текстовая версия | Сейчас: 28th April 2025 - 01:07 |