qwertyuiop 16 Опубликовано 27 Января 2010 Есть человеческие описания ВСЕХ эскспортов из lua_help.script? Значение переменных,результата,эффект,как в *.h МSVC. Прошел Солянку, иду в NLC Поделиться этим сообщением Ссылка на сообщение
qwertyuiop 16 Опубликовано 27 Января 2010 (изменено) А нету там комментированного файла,все делается кусками в форуме. Добавлено через 16 мин.: Помогите сделать фикс,лень все учить.Чтобы было легче забразывать артефакты в аномалии, хочу чтобы предмет бросался прямо на расстояние 1 метр вперед, сейчас вот так,используется дифолт игры. function drop_item(npc,item) if item~=nil then -- npc:mark_item_dropped(item) npc:drop_item(item) end end меняем на npc:drop_item_and_teleport(item,point) //бросить предмет point = npc:position() //это координаты НПС? vid = npc:direction() //это направление от НПС вперед? point:x = point:x + vid::x; point:y = point:x + vid::y; как продвинуть point на 1 метр по направлению vid и проверить ,что точка не внитри стенки? Изменено 28 Января 2010 пользователем qwertyuiop Прошел Солянку, иду в NLC Поделиться этим сообщением Ссылка на сообщение
qwertyuiop 16 Опубликовано 28 Января 2010 (изменено) Я удивлаяюсь,как это АПИ не документирован.Я начал,бросил клич добровольцам. >лучше после выкидывания объекта давай ему пинок - так будет проще Спасибо,попробую! Значит любой предмет из инвентаря можно метать? Может быть проблема,у артов АФАИК нет 3-Д модели,посмотрю как он летит. Еще проблема,что после drop_item() он будет справа от неписи на земле,что нам совсем не нужно.Можно присвоить после drop_item() ему координаты неписи и толкнуть в направлении ее тела. Вообще-то надо убрать его из инвентаря,создать внутри неписи и толкнуть.npc_mark_item_dropped() что делает?Он в коде везде закомментирован и заменен удалением объекта. Изменено 28 Января 2010 пользователем qwertyuiop Прошел Солянку, иду в NLC Поделиться этим сообщением Ссылка на сообщение
qwertyuiop 16 Опубликовано 28 Января 2010 Передираю комменты из ветки в lua_help.script. Своих знаний у меня нет.Пока мало,выложу завтра. Прошел Солянку, иду в NLC Поделиться этим сообщением Ссылка на сообщение
qwertyuiop 16 Опубликовано 28 Января 2010 Помогите с модом швыряния предметами.Идем в bind_stalker.script function actor_binder:on_item_drop (obj) добавляем снизу thrower.throw_object(self.object,obj). Пишем функцию: function throw_object(npc,obj) printf("thrower 0") if npc == nil then npc = db.actor end if obj == nil then return end local dir = npc:direction() local pos = obj:position() dir:mul(1300) pos:add(dir) printf("thrower 1 %s %s vector %d %d %d",npc:section(),obj:section(),dir.x,dir.y,dir.z) до сих пор все ОК: есть объект, есть вектор в направлении от неписи.Теперь,как его бросать? local shell = obj:get_physics_shell() получаем nil obj.mass - тоже 0, из предмета не получается физической модели. Пробую просто переместить его: npc:mark_item_dropped(obj) obj:set_desired_position(pos) Все равно не выходит. Прошел Солянку, иду в NLC Поделиться этим сообщением Ссылка на сообщение
qwertyuiop 16 Опубликовано 25 Февраля 2010 Сейчас счетчик инициализируется на 30 минут, когда ГГ заходит на ЧАЭС, прерывается если он уходит с нее , в том числе в реактор, или спит, и возобновляется при повторном посещении с того же момента.Если ГГ уходит после начала выброса в Припять,то там никакого выброса нет. Хочу пофиксить его,чтобы счетчик тикал все время и выброс был глобальный. Нужна помощь.Имеется распакованные файлы и редактор all.spawn. Найдено: config\scripts\aes\aes_space_timer.ltx - файл счетчика. [logic] active = sr_idle [sr_idle] --инициализируется когда ГГ получает инфо aes_actor_road on_info = {+aes_actor_road} sr_timer1 --отменяется,когда strelok_pda_have (что это за переменная?) on_info2 = {+strelok_pda_have} nil [sr_timer1] type = dec --начальное значение 30 минут start_value = 1800000 argb = 255,255,255,255 -- когда достигает 0 или описанного ниже , то что будет? on_value = 0 | %+aes_activate_zone% | 180000 | %+aes_timer_180000% | 120000 | %+aes_timer_120000% | 60000 | %aes_timer_60000% | 20000 | %+aes_timer_20000 +aes_activate_zone% | 5000 | %+aes_timer_5000% --где это искать? string = st_time_till_surge scripts\sak.script function switch_timer_stancia() - работает с вышеописанным,больше ссылок на нее нет. --я не нашел данного объекта в all.spawn if (obj and obj.name and obj:name() == "aes_space_restrictor_timer") then --активировать скрипт таймера выше params.custom="[logic]\ncfg = scripts\\aes\\aes_space_timer.ltx" Прошел Солянку, иду в NLC Поделиться этим сообщением Ссылка на сообщение
qwertyuiop 16 Опубликовано 25 Февраля 2010 Помогите найти распаковщик all.spawn для Солянки.acdc.pl пишет "unknown zone_ameba", xr делает ГПФ или плохо распаковывает. Сообщение от модератора n6260 Спроси у Архары - тяжело додуматься? Прошел Солянку, иду в NLC Поделиться этим сообщением Ссылка на сообщение
qwertyuiop 16 Опубликовано 26 Февраля 2010 (изменено) Объясните,как работает таймер выброса на ЧАЭС.all.spawn я распаковал,но из Оригинала. alife_l12_stancia.ltx ,есть секция: [7256] ; cse_abstract properties section_name = space_restrictor name = aes_space_restrictor_timer position = 1010.24639892578,-0.097564697265625,-201.021408081055 direction = 0,0,0 ; cse_alife_object properties game_vertex_id = 2273 distance = 0 level_vertex_id = 405033 object_flags = 0xffffff3e custom_data = <<END [logic] active = sr_idle [sr_idle] on_info = {+aes_actor_road} sr_timer1 [sr_timer1] type = dec start_value = 360000 argb = 255,255,255,255 on_value = 0 | %+aes_activate_zone% | 180000 | %+aes_timer_180000% | 120000 | %+aes_timer_120000% | 60000 | %aes_timer_60000% | 20000 | %+aes_timer_20000 +aes_activate_zone% | 5000 | %+aes_timer_5000% string = st_time_till_surge END В Солянке добавлено ,судя по всему, добавлено on_info2 = {+strelok_pda_have} nil, то есть отключение секции ,когда приходит сообщение strelok_pda_have. Вопрос,что есть aes_activate_zone, и откуда видно,что секция - это таймер. Далее, в sr_timer.script (в распакованной gamedata),есть class "action_timer".Как он связан с данной секцией? Изменено 26 Февраля 2010 пользователем qwertyuiop Прошел Солянку, иду в NLC Поделиться этим сообщением Ссылка на сообщение
qwertyuiop 16 Опубликовано 4 Марта 2010 Таймер выброса на ЧАЭС и выжигания мозгов в Х-18 section_name = space_restrictor type = dec Что есть type space_restrictora? Я смотрел на другие, они все ссылки на секцию смарт террейна.Где находится определение dec - не нашел. Прошел Солянку, иду в NLC Поделиться этим сообщением Ссылка на сообщение
qwertyuiop 16 Опубликовано 4 Марта 2010 (изменено) Что там ключевые слова, а что-имена переменных? [sr_timer1] - ключевое слово, которое говорит ,что это таймер (всё,что начинается на sr_timer ?), или type = dec говорит ,что это таймер? Я хочу понять всю логику.Оно создает объект action_timer из sr_timer.script.Откуда оно знает и каким образом секция привязывается к скрипту ? Кто вызывает action_timer:update и почему он тикает только внутри рестриктора? Там time_global() - db.storage[self.object:id()].activation_time , то есть время глобальное,пока я не внутри,он по идее тоже должен идти. Протрассировал, activation_time меняется при повторном входе в рестриктор.Где? Где вообще определены поля class action_timer : start_value, activation_time type...? Вроде понял,позже объясню. xr_logic.script activation_time инициализируется time_global(), а при записи save_logic() и загрузке пишется разница с текущим временем, то есть оно замораживается при выходе из любой логики, когда она становится неактивной.Эта переменная и используется таймером в том числе. Чтобы таймер показывал время до настоящего выброса, надо патчить sr_timer.script: value_time = (timer_next_blow - game_minutes()) * 60000 timer_next_blow определяется с помощью кода, скопированного из news_main.script: local timer_next_blow = 0 function get_next_blowout_time() if (timer_next_blow == 0) then local name, delay for a=1,100,1 do local tmp = amk.load_variable("gt"..a,nil) if tmp ~= nil then name = amk.load_variable("gt"..a, nil) delay = amk.load_variable("gd"..a, nil) if (name and delay and name == "blow_shift") then timer_next_blow = delay end end end end end только на ЧАЭС и в Припяти это не работает и выдает все время 0.наверное в этих местах выбросы не происходят по обычному расписанию.Непорядок, опять надо пофиксить. Изменено 5 Марта 2010 пользователем qwertyuiop Прошел Солянку, иду в NLC Поделиться этим сообщением Ссылка на сообщение
qwertyuiop 16 Опубликовано 9 Марта 2010 (изменено) 1.Дайте acdc или что еще, который способен распаковать all.spawn Солянки. 2.Кто понимает в blow_shift? Такой переменной нет в Припяти и ЧАЭС, соответственно выбросы не происходят по расписанию.Кто ее удаляет??? Другие игровые таймеры gt..a есть : таймеры сна и новостей. Если это в all.spawn, который у меня распакован только от оригинала, вопрос отпадает, если дадите п.1. У меня глюки!!! Прошел по 2-му разу, подхожу в Припяти к точке "найти дорогу на ЧАЭС" с южной стороны стадиона "Авангард".Оно показывает ролик с монолитовцем и монстрами на Авангарде и перебрасывает меня прямо на ЧАЭС, а не на стадион.Таймер выброса включается,когда ГГ бежит параллельно АЭС, но blow_shift присутствует.То есть есть 2 выброса - нормальный по расписанию и дефективный через 30 минут.Как должно быть? Если это состояние - нормальное, то надо просто убрать таймер выброса, добавить индикацию времени выброса в ПДА (с погрешностью) и пофиксить разговор с Доктором, чтобы он говорил правду,когда будет выброс. Изменено 10 Марта 2010 пользователем qwertyuiop Прошел Солянку, иду в NLC Поделиться этим сообщением Ссылка на сообщение
qwertyuiop 16 Опубликовано 10 Мая 2010 Помогите, со мной Голограмма на хочет говорить, сидит играет на гитаре.Это точно баг , он пофиксен, но я не могу накладывать патчи из-за того,что перестанут работать сейвы.Нужна правка руками.Где это прописано, говорит ли перс с ГГ? Прошел Солянку, иду в NLC Поделиться этим сообщением Ссылка на сообщение