В этой теме рассматриваются вопросы о реализации тех или иных решений на примерах из модификации "Тайные Тропы 2". Формат, в котором следует задавать вопрос, такой (для примера): "В модификации ТТ2 есть собака-поводырь Болотного Доктора, которая бежит и показывает ГГ тайную тропу. Как была сделана такая собака?"
Общие вопросы по ковырянию можно посмотреть, почитав Шпаргалку
Рррребятааа,простите что лезу куда попало,но скиньте пожалуйста ссылю на патч,для широкоформатных мониторов на ТТ-2 Я просто когда захожу в игру,там внедиапазона 213.8\240 Hz Или перекиньте меня туда,где можна скачать это еще раз БИГ сорри Для ТТ2 нет адаптации худа и текстур прицельных сеток под широкоформат. В остальном вполне реально играть на широкоформатном мониторе. Для избавления от возможных глюков с анимациями актёра, рекомендуется выставить игровое разрешение в опциях игры приближенное к стандарту 4:3
Но как?? Я в игре даже ничего клацнуть не могу, как выставить? помоги пожалуйста
Мне уже какой человек говорит что ТТ лучший из всех модов на Сталкера, а я поиграть даже не могу
В главном меню игры есть кнопочка "Опции". Далее, в первой закладке "Видео" есть поле выбора разрешения монитора. Жмём справа поля птичку и в выпадающем меню ищем вариант из перемножающихся цифр. Вот здесь как раз надо взять и поделить первую цифру на вторую. Нужный вариант должен дать результат, близкий к отношению 4:3. То есть, если ипользовать калькулятор, то 4:3 равняется приблизительно 1,33333...
Заранее, не входя в игру, измени разрешение монитора на нужное. Надеюсь кнопками на монике ты умеешь пользоваться? И в дальнейшем задавай такие вопросы в теме прохождения игры!@_Val_
Сообщение отредактировал Cation - Пятница, 09.12.2011, 19:20
Frankenshtayn, для спавна есть отдельная команда, скрипты АМК не нужны. С аномалиями только чуть похуже дело обстоит. Д'Артанъян: - Жизнь пуста, если в ней нет подвигов и приключений! Атос: - Вы правы, мой друг. Но жизнь бессмысленна, даже если в ней есть приключения.
Мне очень понравились тайные тропы 2 Надеюсь новы проект будет таким же интересным! У меня есть пару вопросов почему вы не делаете мод на зп ? там же движок лучше и графика!? Будут ли "Ф.О.Т.О.Г.Р.А.Ф" новые аномалии как в народной солянке куст? Я рад что новый герой не стрелок а то он так задолбал))))) читали ли вы книгу S.T.A.L.K.E.R. В зоне тумана? если нет почитайте)) У вас очень хорошо прописан сюжет в тайных тропах! Желаю успехов в работе!
Добавлено (28.12.2011, 13:56) --------------------------------------------- вопрос; Если ты модами некогда не занимался, что нужно знать и с чего начать?
Эроз, я бы посоветовал тебе начать отсюда, например. Хорошие уроки по модостроению. Дальше, только поиск, много чтения, много анализа чужих кодов и конфигов, много экспериментов, много вылетов... Д'Артанъян: - Жизнь пуста, если в ней нет подвигов и приключений! Атос: - Вы правы, мой друг. Но жизнь бессмысленна, даже если в ней есть приключения.
Сообщение отредактировал Dracula - Среда, 28.12.2011, 15:01
Вопрос : А вы работаете с движком X-Ray SDK 0.7 ? или какой там!? Или только меняете скрипты файлов? И если работаете с движком, есть где нибудь статьи, где и как пользоваться движком?
Ну, раз администрация молчит и занята подготовкой к Новому Году, я ляпну. Эроз, на том же ресурсе, который я тебе указал выше, есть темы и по движку Сталкера. Ты, пожалуйста, сперва почитай про все хорошенько, вдумайся, пойми хоть примерно что и как работает, а потом перечитай свой вопрос. И ты сам поймешь, что ты спросил? Написание модов - задача не простецкая, особенно достойных модов.
Добавлено (30.12.2011, 11:34) --------------------------------------------- Но, как говорится, не Святые горшки лепят (обжигают). Дерзай, начни с простого, самого простого, пробуй и постепенно усложняй себе задачи. Практика тут играет огромную роль, все нужно испытать на себе, в уроках зачастую есть ошибочки и неточности. Д'Артанъян: - Жизнь пуста, если в ней нет подвигов и приключений! Атос: - Вы правы, мой друг. Но жизнь бессмысленна, даже если в ней есть приключения.
Здравствуйте. Сделал на основе ТТ2 (по примеру "бега по телепортам") квест на время с выводом таймера на худ. Вроде все работает, таймер включается, успевает ГГ - засчитывается, не успевает - провал квеста. Но... Возникла проблема. Если во время работы таймера сделать сохранение и его загрузить, то таймер "обнуляется"... Т.е. он просто не загружается и его как бы и не было. В общем, состояние таймера не сохраняется... Нельзя ли подробнее рассказать, как это осуществлено в ТТ2? СПС.
Frankenshtayn, естественно, если ты сам не сохраняешь и не загружаешь значение таймера, то за тебя этого никто делать не будет. Внимательно изучи скрипт time_back, особенно функции LoadBackTimer и SaveBackTimer. Найди, откуда и когда они запускаются и делай по аналогии. Удачи. Д'Артанъян: - Жизнь пуста, если в ней нет подвигов и приключений! Атос: - Вы правы, мой друг. Но жизнь бессмысленна, даже если в ней есть приключения.
особенно функции LoadBackTimer и SaveBackTimer. Найди, откуда и когда они запускаются и делай по аналогии
Эти функции я видел, вот на них и застопорился. Если я правильно понял. то они запускаются из скрипта totalizator запуск вроде связан с фонариком... Но все равно не разобрался... :(
Я, конечно, дико извиняюсь за настырность и непонятливость... Но если это является тайной, или просто неохота помочь начинающему мододелу, так и скажите.
Quote (Frankenshtayn)
Нельзя ли подробнее рассказать, как это осуществлено в ТТ2?
Сообщение отредактировал Frankenshtayn - Четверг, 29.03.2012, 22:55
Добрый день, подскажите, как Вы реализовали артефакт "Ликвидатор"? Заранее спасибо.
Создан новый объект, относящийся к классу артефактов, и имеющий свои характеристики: внешний вид, вес, свойства и прочее. Главная особенность - скриптовый метод деактивации аномалий, срабатывающий при выбросе Ликвидатора на землю. В общих чертах реализация такова..
Добавлено (20.04.2012, 21:42) --------------------------------------------- Спаибо за ответ,не точно сформулировал вопрос про "Ликвидатор"меня именно интересует скриптовый метод.Кроме anom_remover.script и bind_stalker.script ещё используются какие ни будь скрипты(функции)?
По всем остальным моментам - задавайте вопросы в теме "Вопросы-ответы" - ответим. И всё что знаем - разъясним обязательно и подробно.
Добрый день,чуть выше мой вопрос,если ответ на него в соответствии с цитатой,то я испанский лётчик.Присоединяюсь к госп."Если это является тайной" так и напишите.А игнорировать вообще это просто наплевательское отношение на людей.Поучитесь вежливости и отношению к людям на сайте SGM.
Приятного полёта, испанский лётчик! Пробелы после знаков препинания обязательны..
И Вам не скучать, по обращению ко мне я понял, что другого ответа не будет и даю бесплатный совет: лечите "звёздную болезнь" и купите себе учебник "Культура общения в обществе".
Сообщение отредактировал vaka2009 - Суббота, 28.04.2012, 13:13
Всем доброго дня! Подскажите пожалуйста , что у меня с игрой - пистолеты стреляют и дробовик , а автоматы не стреляют , хотя патроны есть. Пробовал ремонтировать , всё равно не стреляют. Спасибо.
Всё автоматическое оружие в данной версии мода стоит на предохранителе. Снимается клавишами 0 или 9. Этот вопрос рассмотрен в другой теме. Здесь задаются вопросы иного плана..
Сообщение отредактировал Cation - Суббота, 05.05.2012, 22:17
Дорогой antreg. Как Вы сделали выброс в финальном забеге по чаэс-2? Подскажите плизз, просто я хочу сделать такой же для своего мода. Это не полноценный выброс, это всего лишь обманка (эффект). Вызывается скриптовой функцией: function run_vibros() из файла: antreg.script или из логики рестриктора (%=start_small_reject% в файле: end_restr.ltx (\gamedata\config\scripts\new\restr))
Добавлено (23.06.2012, 21:47) --------------------------------------------- Люди, можно ли как-нить убрать выброс и таймер в финальном забеге на чаэс-2? Насчёт выброса уже выше сказал, что это не выброс, а просто эффект. Чтобы убрать этот эффект, нужно удалить из логики рестриктора строку: =start_small_reject Насчёт таймера: изучить нужно скриптовый файл: time_back.script
Сообщение отредактировал antreg - Понедельник, 25.06.2012, 14:42
Приветствую Вас. У меня такой вопрос: положил на болотах рюкзак-нычку, выложил туда вещи, потом пришел забирать - вещи смог забрать, а сам рюкзак нет. Как это можно исправить, нелогично ведь - вот он лежит же, а взять нельзя. Хотя в DMX-моде можно их забирать обратно.
Ну насчет нелогичности можно поспорить)))Допустим рюкзак пропитался радиоактивной жижей. Тебе такой нужен? Оружие то можно тампоном(не путать с прокладками) протереть. А кусок радиоактивного брезента? По поводу подбираемости рюкзаков в ДМХ. Есть мод Подбираемые рюкзаки(Ну или по другому называется - погугли, если хочешь). Хочешь - ставь его и адаптируй на свой страх и риск. Если разработчики ТТ2 решили, что рюкзаки должны быть неподбираемыми, то так тому и быть. Надеюсь - вопрос исчерпан?
Понятно, спасибо за ответ.
Сообщение отредактировал Rammka - Вторник, 31.07.2012, 22:05
function spawn_plan() local a = points[math.random(table.getn(points))] local obj = alife():create("new_plan", vector():set(a.position.x,a.position.y,a.position.z), a.lv, a.gv) end
*Семь мест рандомного спавна мешка. У каждого своё при прохождении.
Всем доброго времени суток, у меня вопрос как нормально сменить картинку главного меню? я сменил через фотошоп но там косяки, я не вижу надписи когда новожу курсор на "Новая игра". А так обьяснить трудно.
Даже действуя через фотошоп, сделать картинку для Сталкера не так просто, чтобы она правильно отображалась. Стоит поискать в интернете информацию по работе с текстурами для Сталкера.
Сообщение отредактировал Cation - Вторник, 21.08.2012, 18:58
Здравствуйте. Попробовал отспавнить аномалии по скрипту, согласно тутора: http://antreg.ucoz.ru/forum/5-10-775-16-1298701363 Прописал нетпакет в отдельный скриптовый файл, прописал там же координаты их спавна, прописал поршень на спавн, создал рестриктор на локации для попадания в него ГГ и появления аномалий. Появляются и "работают". Но, при переходе на другую локацию ловлю стабильный вылет:
FATAL ERROR
[error]Expression : no_assert [error]Function : CALifeStoryRegistry::add [error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\alife_story_registry.cpp [error]Line : 30 [error]Description : Specified story object is already in the Story registry!
IMAGINE, а ты на ТТ2 свои опыты ставишь или на чем-то другом? Ругань идет на повторный СИД, значит, он уже занят. Кем или чем неясно. Процедура спавна аномалий специфична, тонка и опасна. Уборка аномалии - вообще, колдунство. Однозначно ответить проблематично, нужна исчерпывающая информация об условиях и, собственно, сам код. Д'Артанъян: - Жизнь пуста, если в ней нет подвигов и приключений! Атос: - Вы правы, мой друг. Но жизнь бессмысленна, даже если в ней есть приключения.
Пробую на чистом ТЧ. Скрипт полностью взят из указанного мною выше поста. Добавлена лишь функция на спан аномалий
function get_story_id_not_replay() local ST ST = xr_logic.pstor_retrieve(db.actor, "ScriptAnomId", 0) if type(ST) ~= "number" or ST == nil then ST = 9000 xr_logic.pstor_store(db.actor, "ScriptAnomId", ST) end if type(ST) == "number" or ST ~= nil then ST = ST + 1 xr_logic.pstor_store(db.actor, "ScriptAnomId", ST) end return tonumber(ST) end
function create_anom(name_anom, posit_anom, lvid_anom, gvid_anom, radius_anom, power_anom) local obj = alife():create(name_anom, posit_anom, lvid_anom, gvid_anom)
-----------------------write---------------------- local packet = net_packet() obj:STATE_Write(packet)
-----------------------load----------------------- -- cse_alife_object local game_vertex_id = packet:r_u16() local distance = packet:r_float() local direct_control = packet:r_u32() local level_vertex_id = packet:r_u32() local object_flags = packet:r_u32() local custom_data = packet:r_stringZ() local story_id = packet:r_u32() local spawn_story_id = packet:r_u32()
-- cse_shape local shape_count = packet:r_u8() for i=1,shape_count do local shape_type = packet:r_u8() if shape_type == 0 then -- sphere local center = packet:r_vec3() local radius = packet:r_float() else -- box local box = packet:r_matrix() end end
-- cse_alife_space_restrictor local restrictor_type = packet:r_u8()
-- cse_alife_custom_zone local max_power = packet:r_float() local owner_id = packet:r_u32() local enabled_time = packet:r_u32() local disabled_time = packet:r_u32() local start_time_shift = packet:r_u32()
-- cse_alife_anomalous_zone local offline_interactive_radius = packet:r_float() local artefact_spawn_count = packet:r_u16() local artefact_position_offset = packet:r_u32()
-- se_zone_anom local last_spawn_time_present = packet:r_u8()
if (string.find (name_anom, 'zone_zharka_static') ~= nil or string.find (name_anom, 'zone_witches_galantine') ~= nil or string.find (name_anom, 'zone_mosquito_bald') ~= nil or string.find (name_anom, 'zone_mincer') ~= nil or string.find (name_anom, 'zone_gravi_zone') ~= nil or string.find (name_anom, 'zone_buzz') ~= nil ) and packet:r_elapsed() ~= 0 then abort("left=%d", left) end
-- cse_shape packet:w_u8(1) -- количество фигур packet:w_u8(0) -- тип фигуры: сфера packet:w_vec3(vector():set(0, 0, 0)) if radius_anom ~= nil then packet:w_float(radius_anom) else packet:w_float(1.0) end
-- cse_alife_custom_zone if power_anom ~= nil then packet:w_float(power_anom) else packet:w_float(max_power) end packet:w_u32(owner_id) packet:w_u32(enabled_time) packet:w_u32(disabled_time) packet:w_u32(start_time_shift)
Dracula, к сожалению и это не помогло - вылет тот-же. Уже просто тупо поставил целиком нет-пакет (с изменениями по двум строкам, Вами приведённые), прописал в поршни на спавн аномалий те же самые имена функций, что и в посте-примере, не менял координат и названий аномалий в функции, а вылет имеет по прежнему место быть.
В нет-пакете в секции save имеется дублирование строчки:
IMAGINE, удалять никакие строки нельзя однозначно! Нет-пакет это просто набор байтов размещенных в строго определенной последовательности. При чтении пакета они интерпретируются как переменные (смотри секцию load). local game_vertex_id = packet:r_u16() - означает, что первые два байта из пакета будут интерпретированы как целое без знака и в них содержится game_vertex_id. Следующие за ними 4 байта будут интерпретированы как число с плавающей запятой и присвоены переменной distance. И так далее, до конца пакета. Перед записью нет-пакет должен быть "собран" (заполнен) строго в той же последовательности, что и разбирался. Размерность значений должна быть соблюдена в точности (кроме строковых значений). При сдвижке данных в пакете, на приемной стороне процедура его "разбора" считает неверные данные, что может привести к непредсказуемым последствиям. Экспериментировать на чистой игре у меня нет ни времени ни желания, но в ТТ2 аномалии нормально создавались и создаются приведенным выше методом. А вот 'zone_mine_field' не пробовал за ненадобностью. Есть уверенность, что нет-пакет у него имеет такую же точно структуру, что и у "традиционных" аномалий? Более того, рекомендую обратить внимание на гравиган из ТТ2 (bind_ggun.script). C его помощью вполне корректно в большинстве случаев удавалось получать всевозможные аномалии. Он содержит собственную функцию чтения/записи нет-пакета (function an_spawn), которая расположена в конце файла. Сравни и проанализируй сходства/отличия, но состав пакета в них обеих должен быть идентичен. Д'Артанъян: - Жизнь пуста, если в ней нет подвигов и приключений! Атос: - Вы правы, мой друг. Но жизнь бессмысленна, даже если в ней есть приключения.
Сообщение отредактировал Dracula - Вторник, 09.10.2012, 17:06
function get_story_id_not_replay() local ST ST = xr_logic.pstor_retrieve(db.actor, "ScriptAnomId", 0) if type(ST) ~= "number" or ST == nil then ST = 9000 xr_logic.pstor_store(db.actor, "ScriptAnomId", ST) end if type(ST) == "number" or ST ~= nil then ST = ST + 1 xr_logic.pstor_store(db.actor, "ScriptAnomId", ST) end return tonumber(ST) end
function create_anom(name_anom, posit_anom, lvid_anom, gvid_anom, radius_anom, power_anom) local obj = alife():create(name_anom, posit_anom, lvid_anom, gvid_anom)
-----------------------write---------------------- local packet = net_packet() obj:STATE_Write(packet)
-----------------------load----------------------- -- cse_alife_object local game_vertex_id = packet:r_u16() local distance = packet:r_float() local direct_control = packet:r_u32() local level_vertex_id = packet:r_u32() local object_flags = packet:r_u32() local custom_data = packet:r_stringZ() local story_id = packet:r_u32() local spawn_story_id = packet:r_u32()
-- cse_shape local shape_count = packet:r_u8() for i=1,shape_count do local shape_type = packet:r_u8() if shape_type == 0 then -- sphere local center = packet:r_vec3() local radius = packet:r_float() else -- box local box = packet:r_matrix() end end
-- cse_alife_space_restrictor local restrictor_type = packet:r_u8()
-- cse_alife_custom_zone local max_power = packet:r_float() local owner_id = packet:r_u32() local enabled_time = packet:r_u32() local disabled_time = packet:r_u32() local start_time_shift = packet:r_u32()
-- cse_alife_anomalous_zone local offline_interactive_radius = packet:r_float() local artefact_spawn_count = packet:r_u16() local artefact_position_offset = packet:r_u32()
-- se_zone_anom local last_spawn_time_present = packet:r_u8()
if (string.find (name_anom, 'zone_zharka_static') ~= nil or string.find (name_anom, 'zone_witches_galantine') ~= nil or string.find (name_anom, 'zone_mosquito_bald') ~= nil or string.find (name_anom, 'zone_mincer') ~= nil or string.find (name_anom, 'zone_gravi_zone') ~= nil or string.find (name_anom, 'zone_buzz') ~= nil ) and packet:r_elapsed() ~= 0 then abort("left=%d", left) end
-- cse_shape packet:w_u8(1) -- количество фигур packet:w_u8(0) -- тип фигуры: сфера packet:w_vec3(vector():set(0, 0, 0)) if radius_anom ~= nil then packet:w_float(radius_anom) else packet:w_float(1.0) end
-- cse_alife_custom_zone if power_anom ~= nil then packet:w_float(power_anom) else packet:w_float(max_power) end packet:w_u32(owner_id) packet:w_u32(enabled_time) packet:w_u32(disabled_time) packet:w_u32(start_time_shift)
function spawn_anom_zarka() this.create_anom('zone_gravi_zone', db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(), 15, 2) -- (), радиус, сила) +zone_gravi_zone +zone_mincer news_manager.send_tip(db.actor, "%c[255,0,255,0]ЗДОРОВЬЕ\\n%c[default]ПАДАЕТ.", 0, "trader", 7000) end
Надеюсь помогло.
Добавлено (24.10.2012, 11:08) --------------------------------------------- Сори что не в тему. В шраме рюкзак хорош. Подскажите где это можно увидеть. П.С. Сори что не в тему.