Перейти к контенту

Рекомендуемые сообщения

speczadanie

Хочется тупо удалять - что мешает?

Только зачем в топик об этом писать(?) иль еще не ведаешь о методе удаления объекта (release)?

Ну а если 'тупо' не выходит - то не обходить 'грязь' в кодах следует, а не допускать ее и/или вычищать.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Вот я и не знаю - куда этот код можно вставить...

 

Сообщение от модератора ColR_iT
Во-первых: ты предлагаешь Нам всем искать иголку в стоге сена, причем само сено ты где-то "прячешь".

Во-вторых: какой код? Поставь правильно вопрос и получишь конкретную задачу, а вот такое "гадание на кофейной гуще" лучше предоставить экстрасенсам, а их здесь нет... или есть? :huh:

 

Добавлено через 45 мин.:

Вобщем, уточню вопрос.

Как поставить свой скрипт на обработку инвентаря обыскиваемого трупа?

Изменено пользователем ColR_iT
Ссылка на комментарий

speczadanie

Ты лучше расскажи, что ты сделал такого, отчего у тебя стал спавнится болт. А колбек на юзанье персонажа в игре есть, в xr_motivator.script, это

function motivator_binder:use_callback(obj, who)

Как раз там можешь вставить удаление болтов из трупа в момент юзанья трупа игроком, также можно ещё через death_manager.script это сделать, но это лишь в случаи что болт спавнится ещё когда НПС жив а не в момент его смерти.

 

А вообще такие "затычки" не хорошо делать, может оказаться, что потом из за этого пойдут различные непонятные глюки и уж тут тебе никакие затычки не помогут, поэтому важно знать что и где ты менял. Может быть болт у тебя спавнится из за какой то скриптовой схемы, в которой нужно чтобы сталкер обладал болтом. Тогда в принципе удаление болта после смерти не кретично, но если у тебя болт спавнится из за какого то глюка, то проблем потом не оберёшься.

Изменено пользователем *Shoker*

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

Ссылка на комментарий

Всем привет. У меня небольшой вопрос по функции - keep_item(death_manager). Она у меня не срабатывает в игре... Такое чувство,что менеджер её вообще в упор не видит.... Подскажите в чём может быть проблема.?

Ссылка на комментарий

Вот как раз такое бывает, когда в игре что то ломается, подозреваю что биндер но точно говорить не буду. У меня например было после перепаковки нет пакетов но бывают различные ситуации.

 

Функция могла не сработать по двум причинам:

1) Ты сам её отключил каким то образом.

2) И что более вероятно - у тебя в каком то из скриптов происходит ошибка, из за которой игра не вылетает но "ломается", может перестать идти апдейт, или выборочно что то перестанет работать. Это плохой глюк, т.к причину придётся искать в своих последних действиях, после которого случился этот глюк.

Из подсказки могу сказать что обычно такой глюк происходит при неправильной работе с функциями движка. Вылета нету но и игра не работает нормально.

В дальнейшем велика вероятность порчи сохранений и прочего.

Изменено пользователем *Shoker*

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

Ссылка на комментарий

Что то все больше вопросов от тех, кто и сам не задумывается над тем 'что и как' делает и как же работает то, что изменяет, а от других ждут ответа - и что ж такого они накосячили и как это исправить ... :angry:

Пора топик по обращениям к 'аля кашпировский' открывать.

 

Читаем шапку:

8. И помните: «Правильно заданный вопрос – половина ответа».

Это как минимум означает, что необходимо к вопросу приложить достаточную информацию о том, что/как/где сделано, дабы можно дать ответ/совет, а не флудить на тему погаданий на кофейной гуще.

 

Добавлено через 10 мин.:

Zona, чтобы перестала работать функция 'keep_item' - нужно "очень постараться", либо саму функцию превратить в пустышку, либо для ВСЕХ сталкеров отключить и из апдейта и из коллбэка смерти, либо покурочить класс 'drop_manager'.

Верни свои правки взад - она и заработает.

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Уважаемы скриптовики, вопрос можно ли в игре ТЧ 1006 прописать логику: чтобы НПС сидел на месте по указанным координатам и стрелял во врагов которых видит и не бегал по карте во время боя? если можно напишите пожалуйста пример: уже везде смотрел, но не понял ничего -((. Спасибо.

 

Ссылка на комментарий

дядяСаша

Прописать указанную тобою логику нельзя, т.к. ее (такой) просто нет в исходной игре.

Если же заморочиться кому-то хочется с подобным, то некое подобие можно сообразить из различных кусков и пр., но зачем? Чтобы сидел и, не отрывая задницы, постреливал? Может это и 'прикольно', но ... пусть приколисты и занимаются подобным.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Всем доброго времени суток. Столкнулся с непоняткой.

Имеем функцию: (вызывается в диалоге)

function info_endtrade()
    local tsection = item_memory.section
    local tcount = item_memory.count
    local asection = af_memory.section
    local acount = af_memory.count
    local icon_tip = "ui_iconsTotal_esc_blockpost_case_to_trader"
    local task_texture, task_rect = get_texture_info(icon_tip)    
    local ltx = system_ini()
    local tname = ltx:r_string(tsection, "inv_name")
    local tdesc = ltx:r_string(tsection, "description")
    local mainlabel = "Покупаешь: "..game.translate_string(tname)
    if tcount > 1 then mainlabel = mainlabel.." x "..tostring(tcount) end
        db.actor:give_talk_message(mainlabel, task_texture, task_rect,"iconed_trade_info")
        db.actor:give_talk_message(game.translate_string(tdesc), task_texture, task_rect,"simple_answer_item")
    
    if string.find(tsection, "wpn_", 1) then --- is weapon
    local rpm = ui_wpn_params.GetRPM(tsection)
    local damage = ui_wpn_params.GetDamage(tsection)
    local handling = ui_wpn_params.GetHandling(tsection)
    local accuracy = ui_wpn_params.GetAccuracy(tsection)
    if db.actor:is_talking() then
            db.actor:give_talk_message("Скорострельность: "..tostring(round(rpm * 10) / 10), task_texture, task_rect,"simple_answer_item")
            db.actor:give_talk_message("Повреждение: "..tostring(round(damage * 10) / 10), task_texture, task_rect,"simple_answer_item")
            db.actor:give_talk_message("Надежность: "..tostring(round(handling * 10) / 10), task_texture, task_rect,"simple_answer_item")
            db.actor:give_talk_message("Точность: "..tostring(round(accuracy * 10) / 10), task_texture, task_rect,"simple_answer_item")
    end
    elseif string.find(tsection, "outfit", 1) then --- is outfit
    local radiation = ltx:r_float(tsection, "radiation_protection")
    local chemical = ltx:r_float(tsection, "chemical_burn_protection")
    local wound = ltx:r_float(tsection, "wound_protection")
    local fire_wound = ltx:r_float(tsection, "fire_wound_protection")
            db.actor:give_talk_message("Защита от радиации: "..tostring(round(radiation * 100)), task_texture, task_rect,"simple_answer_item")
            db.actor:give_talk_message("Защита от хим. ожогов: "..tostring(round(chemical * 100)), task_texture, task_rect,"simple_answer_item")
            db.actor:give_talk_message("Защита от порезов: "..tostring(round(wound * 100)), task_texture, task_rect,"simple_answer_item")
            db.actor:give_talk_message("Защита от пуль: "..tostring(round(fire_wound * 100)), task_texture, task_rect,"simple_answer_item")    
    end
    local aname = ltx:r_string(asection, "inv_name")
    local main2label = "Продаешь: "..game.translate_string(aname).." x "..tostring(acount)
    db.actor:give_talk_message(main2label, task_texture, task_rect,"iconed_trade_info")
end

И вот парочка скринов - результат ее работы:

http://i006.radikal.ru/1110/f9/83724f14e831.jpg

http://i073.radikal.ru/1110/37/e57c417d18d8.jpg

 

Проблема собственно вот в чем. Вызовы глобальной функции round были поставлены для того чтоб числа точности/скорострельности и прочего привести из неудобоваримых дробей к благопристойному виду. Вот, как видите, они почему-то не всегда работают, и сбоят в разных местах каждый раз.

Почему так и как бы это округление правильно сделать.

Изменено пользователем Zander_driver

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

Чтобы один знак после запятой оставался. Мне казалось так проще будет.

Да, я не знаю всех существующих в луа функций преобразования типов. Затем и пишу :)

 

Edit: Ну да, когда сделал просто

tostring(round(rpm))

То сразу во всех строках числа целые стали. Но почему начинается такая чепуха когда я всего лишь разделяю результат на 10...

Изменено пользователем Zander_driver

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

Zander_driver, а мне кажется что твоя проблема как раз тут) Тебе проще использовать просто формат строки

 

Но почему начинается такая чепуха когда я всего лишь разделяю результат на 10

потому что так всегда с числами с плавающей запятой... Как говорил, юзай string.format и не мучайся

Изменено пользователем RvP

Vita sine libertate, nihil

Vita sine litteris - mors est

Ссылка на комментарий

Zander_driver,

Вызовы глобальной функции round были поставлены для того чтоб числа точности/скорострельности и прочего привести из неудобоваримых дробей к благопристойному виду.

Принципиально неверный подход. Ты смешиваешь понятия "представление" и "конверсия/преобразование". Преобразовывать надо значения тогда и только тогда, когда надо чтобы значение изменилось, как бы тривиально это ни звучало. Задача представить значение в каком-то виде: сколько-то знаков после запятой или в некой системе счисления, - это совсем другое. Значение при этом не меняется, только создаётся некая временная строка для показа её хуману. Так вот, round и иже с ними - это конверсия, format - это создание представления.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

Во время переноса локаций из ЧН в ЗП, при адаптации спауна заметил вот такие строчки в секции:

upd:cse_alife_object_physic__unk1 = 46152112,0,7
upd:cse_alife_object_physic__unk2 = 0,46152496,0
upd:cse_alife_object_physic__unk3 = 0,7,0,46153392

 

[3120]
; cse_abstract properties
section_name = physic_object
name = esc_priemnik_gorizont
position = 113.04955291748,-1.93428897857666,1.29626798629761
direction = 0,-1.20000004768372,-0

; cse_alife_object properties
game_vertex_id = 1574
distance = 0
level_vertex_id = 25
object_flags = 0xffffff3a

; cse_visual properties
visual_name = dynamics\el_tehnika\priemnik_gorizont

; cse_ph_skeleton properties

; cse_alife_object_physic properties
physic_type = 0x3
mass = 10

upd:num_items = 0xc7

upd:position = 0,7,0
upd:cse_alife_object_physic__unk1 = 46152112,0,7
upd:cse_alife_object_physic__unk2 = 0,46152496,0
upd:cse_alife_object_physic__unk3 = 0,7,0,46153392

 

 

Компилятор такое собирать напрочь отказывается. На что это нужно заменить, чтобы и работало, и компилировало? Для чего это вообще?

Ссылка на комментарий

Disord

Удали эти строки (после 'mass = 10') и компилируй.

У тебя вероятно секция приемника была распакована старенькой версией ACDC, которая не совместима с используемой ACDC для ЗП.

Для ЗП эти строки могли бы выглядеть так:

upd:num_items = 0x3f
upd:ph_force = 0,0,0  ;--/ cse_alife_object_physic__unk1
upd:ph_torque = 0,0,0  ;--/ cse_alife_object_physic__unk2
upd:ph_position = 0,0,0  ;--/ cse_alife_object_physic__unk3
upd:ph_rotation = 0,0,0,0
upd:ph_angular_velosity = 0,0,0
upd:ph_linear_velosity = 0,0,0
upd:enabled = 1

- но, учитывая, что твой приемник недвижИм, необязательно их и указывать, движек сам возмет при спавне объекта дефолтные значения.

Совет:Использовать версии ACDC посвежее и при переносе секций из одной версии игры в другую адаптировать наименование и состав параметров переносимых объектов. В твоем случае с приемником - в ЗП имеются аналоги и не сложно посмотреть что и как нужно подправить.

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Кто знает с чем может быть связанна вот такая вещь

6cc9aed5a46ft.jpg

 

 

у меня не запаковывается ал спавн из за нее

Лёха_тц.gif
Ссылка на комментарий

Лёха_тц, на скрине ничего не разобрать. Что там у тебя на той строчке в ini_file? Хотя, это, скорее всего, в методе new, а значит, ты наделал синтаксических ошибок в файлах. Скажешь, что на той строчке - смогу сказать, в чем именно напортачил.

Disord, при адаптации стирай все ненулевые upd:num_items, которые найдешь. Проблема в них.

Ссылка на комментарий

народ, такой вопрос:

В этой статье ( http://stalkerin.gameru.net/wiki/index.php/SoC._Respawn ) читал насчёт респавна монстров. впринципе понятно всё, но там написано что респавн будет если на локе есть хотябы 1 гулаг. у меня только гулаг для новичков в лагере на кордоне и он весь заполнен. Вопрос: будет ли происходить респавн монстра в этом случае. И вообще если можно, напишите кто-то поподробнее о том, как вообще респвн происходит. Заранее спасибо)

P.S. вопрос по ТЧ.

 

Во первых: свободный гулаг нужен для монстров, а не для НПС;

Во вторых: на той же wiki есть статьи и о гулагах и о респавнах (о Логике и о гулагах в часности: >>Click Me<<);

В третьих: если бы ты не поленился и пролистал назад буквально две страницы данной темы, то ты бы понял, что такое респавн и с чем его едят.

ColR_iT

Изменено пользователем ColR_iT

FLUDMAN.gif

Ссылка на комментарий

Кто может подсказать где можно взять готовый алгоритм, определяющий выстрел из оружия? Ведь наверняка такой имеется.

Суть в том, что надо определить, что из оружия сделали выстрел. В частности нужно отследить каждый выстрел из автомата.

 

У меня сейчас идея - отслеживать кол-во патронов в магазине, но тут остаётся проблема с тем, что надо отследить момент ручной разрядки оружия. Когда патронов много, это можно сделать, сравнивая сколько было патронов в предидущем выстреле и сколько в этом, тоесть допустим если в выстреле 1 было 27 патронов, а в "выстреле" 2 их уже 0, значит сделали разрядку оружия. Но тут возникает затык, когда патрон остаётся всего 1 и игрок делает разрядку, т.к отследить, вручную ли был разряжен магазин или игрок сделал выстрел я пока не представляю как, кроме как одновременно следить ещё за кол-ом патронов в рюкзаке.

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

Ссылка на комментарий
*Shoker*, гравипушка? или клик левой кнопкой мыши Изменено пользователем RvP

Vita sine libertate, nihil

Vita sine litteris - mors est

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    Ни один зарегистрированный пользователь не просматривает эту страницу.

AMK-Team.ru

×
×
  • Создать...