Artos 99 Опубликовано 8 Октября 2011 Поделиться Опубликовано 8 Октября 2011 speczadanie Хочется тупо удалять - что мешает? Только зачем в топик об этом писать(?) иль еще не ведаешь о методе удаления объекта (release)? Ну а если 'тупо' не выходит - то не обходить 'грязь' в кодах следует, а не допускать ее и/или вычищать. "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
speczadanie 0 Опубликовано 8 Октября 2011 Поделиться Опубликовано 8 Октября 2011 (изменено) Вот я и не знаю - куда этот код можно вставить... Сообщение от модератора ColR_iT Во-первых: ты предлагаешь Нам всем искать иголку в стоге сена, причем само сено ты где-то "прячешь". Во-вторых: какой код? Поставь правильно вопрос и получишь конкретную задачу, а вот такое "гадание на кофейной гуще" лучше предоставить экстрасенсам, а их здесь нет... или есть? Добавлено через 45 мин.: Вобщем, уточню вопрос. Как поставить свой скрипт на обработку инвентаря обыскиваемого трупа? Изменено 8 Октября 2011 пользователем ColR_iT Ссылка на комментарий
*Shoker* 322 Опубликовано 8 Октября 2011 Поделиться Опубликовано 8 Октября 2011 (изменено) speczadanie Ты лучше расскажи, что ты сделал такого, отчего у тебя стал спавнится болт. А колбек на юзанье персонажа в игре есть, в xr_motivator.script, это function motivator_binder:use_callback(obj, who) Как раз там можешь вставить удаление болтов из трупа в момент юзанья трупа игроком, также можно ещё через death_manager.script это сделать, но это лишь в случаи что болт спавнится ещё когда НПС жив а не в момент его смерти. А вообще такие "затычки" не хорошо делать, может оказаться, что потом из за этого пойдут различные непонятные глюки и уж тут тебе никакие затычки не помогут, поэтому важно знать что и где ты менял. Может быть болт у тебя спавнится из за какой то скриптовой схемы, в которой нужно чтобы сталкер обладал болтом. Тогда в принципе удаление болта после смерти не кретично, но если у тебя болт спавнится из за какого то глюка, то проблем потом не оберёшься. Изменено 8 Октября 2011 пользователем *Shoker* Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
Zona 0 Опубликовано 8 Октября 2011 Поделиться Опубликовано 8 Октября 2011 Всем привет. У меня небольшой вопрос по функции - keep_item(death_manager). Она у меня не срабатывает в игре... Такое чувство,что менеджер её вообще в упор не видит.... Подскажите в чём может быть проблема.? Ссылка на комментарий
*Shoker* 322 Опубликовано 8 Октября 2011 Поделиться Опубликовано 8 Октября 2011 (изменено) Вот как раз такое бывает, когда в игре что то ломается, подозреваю что биндер но точно говорить не буду. У меня например было после перепаковки нет пакетов но бывают различные ситуации. Функция могла не сработать по двум причинам: 1) Ты сам её отключил каким то образом. 2) И что более вероятно - у тебя в каком то из скриптов происходит ошибка, из за которой игра не вылетает но "ломается", может перестать идти апдейт, или выборочно что то перестанет работать. Это плохой глюк, т.к причину придётся искать в своих последних действиях, после которого случился этот глюк. Из подсказки могу сказать что обычно такой глюк происходит при неправильной работе с функциями движка. Вылета нету но и игра не работает нормально. В дальнейшем велика вероятность порчи сохранений и прочего. Изменено 8 Октября 2011 пользователем *Shoker* Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
Artos 99 Опубликовано 8 Октября 2011 Поделиться Опубликовано 8 Октября 2011 (изменено) Что то все больше вопросов от тех, кто и сам не задумывается над тем 'что и как' делает и как же работает то, что изменяет, а от других ждут ответа - и что ж такого они накосячили и как это исправить ... Пора топик по обращениям к 'аля кашпировский' открывать. Читаем шапку: 8. И помните: «Правильно заданный вопрос – половина ответа». Это как минимум означает, что необходимо к вопросу приложить достаточную информацию о том, что/как/где сделано, дабы можно дать ответ/совет, а не флудить на тему погаданий на кофейной гуще. Добавлено через 10 мин.: Zona, чтобы перестала работать функция 'keep_item' - нужно "очень постараться", либо саму функцию превратить в пустышку, либо для ВСЕХ сталкеров отключить и из апдейта и из коллбэка смерти, либо покурочить класс 'drop_manager'. Верни свои правки взад - она и заработает. Изменено 8 Октября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
дядяСаша 0 Опубликовано 8 Октября 2011 Поделиться Опубликовано 8 Октября 2011 Уважаемы скриптовики, вопрос можно ли в игре ТЧ 1006 прописать логику: чтобы НПС сидел на месте по указанным координатам и стрелял во врагов которых видит и не бегал по карте во время боя? если можно напишите пожалуйста пример: уже везде смотрел, но не понял ничего -((. Спасибо. Ссылка на комментарий
Artos 99 Опубликовано 8 Октября 2011 Поделиться Опубликовано 8 Октября 2011 дядяСаша Прописать указанную тобою логику нельзя, т.к. ее (такой) просто нет в исходной игре. Если же заморочиться кому-то хочется с подобным, то некое подобие можно сообразить из различных кусков и пр., но зачем? Чтобы сидел и, не отрывая задницы, постреливал? Может это и 'прикольно', но ... пусть приколисты и занимаются подобным. "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Zander_driver 10 334 Опубликовано 8 Октября 2011 Поделиться Опубликовано 8 Октября 2011 (изменено) Всем доброго времени суток. Столкнулся с непоняткой. Имеем функцию: (вызывается в диалоге) 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 были поставлены для того чтоб числа точности/скорострельности и прочего привести из неудобоваримых дробей к благопристойному виду. Вот, как видите, они почему-то не всегда работают, и сбоят в разных местах каждый раз. Почему так и как бы это округление правильно сделать. Изменено 8 Октября 2011 пользователем Zander_driver Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
RvP 1 Опубликовано 8 Октября 2011 Поделиться Опубликовано 8 Октября 2011 Zander_driver, tostring(round(accuracy * 10) / 10) а зачем множить и сразу делить? Vita sine libertate, nihil Vita sine litteris - mors est Ссылка на комментарий
Zander_driver 10 334 Опубликовано 8 Октября 2011 Поделиться Опубликовано 8 Октября 2011 (изменено) Чтобы один знак после запятой оставался. Мне казалось так проще будет. Да, я не знаю всех существующих в луа функций преобразования типов. Затем и пишу Edit: Ну да, когда сделал просто tostring(round(rpm)) То сразу во всех строках числа целые стали. Но почему начинается такая чепуха когда я всего лишь разделяю результат на 10... Изменено 8 Октября 2011 пользователем Zander_driver Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
RvP 1 Опубликовано 8 Октября 2011 Поделиться Опубликовано 8 Октября 2011 (изменено) Zander_driver, а мне кажется что твоя проблема как раз тут) Тебе проще использовать просто формат строки Но почему начинается такая чепуха когда я всего лишь разделяю результат на 10 потому что так всегда с числами с плавающей запятой... Как говорил, юзай string.format и не мучайся Изменено 8 Октября 2011 пользователем RvP Vita sine libertate, nihil Vita sine litteris - mors est Ссылка на комментарий
Malandrinus 615 Опубликовано 8 Октября 2011 Поделиться Опубликовано 8 Октября 2011 Zander_driver, Вызовы глобальной функции round были поставлены для того чтоб числа точности/скорострельности и прочего привести из неудобоваримых дробей к благопристойному виду. Принципиально неверный подход. Ты смешиваешь понятия "представление" и "конверсия/преобразование". Преобразовывать надо значения тогда и только тогда, когда надо чтобы значение изменилось, как бы тривиально это ни звучало. Задача представить значение в каком-то виде: сколько-то знаков после запятой или в некой системе счисления, - это совсем другое. Значение при этом не меняется, только создаётся некая временная строка для показа её хуману. Так вот, round и иже с ними - это конверсия, format - это создание представления. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Disord 1 Опубликовано 10 Октября 2011 Поделиться Опубликовано 10 Октября 2011 Во время переноса локаций из ЧН в ЗП, при адаптации спауна заметил вот такие строчки в секции: 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 Компилятор такое собирать напрочь отказывается. На что это нужно заменить, чтобы и работало, и компилировало? Для чего это вообще? Ссылка на комментарий
Artos 99 Опубликовано 10 Октября 2011 Поделиться Опубликовано 10 Октября 2011 (изменено) 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 посвежее и при переносе секций из одной версии игры в другую адаптировать наименование и состав параметров переносимых объектов. В твоем случае с приемником - в ЗП имеются аналоги и не сложно посмотреть что и как нужно подправить. Изменено 10 Октября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Лёха_тц 3 Опубликовано 10 Октября 2011 Поделиться Опубликовано 10 Октября 2011 Кто знает с чем может быть связанна вот такая вещь у меня не запаковывается ал спавн из за нее Ссылка на комментарий
KD87 718 Опубликовано 10 Октября 2011 Поделиться Опубликовано 10 Октября 2011 Лёха_тц, на скрине ничего не разобрать. Что там у тебя на той строчке в ini_file? Хотя, это, скорее всего, в методе new, а значит, ты наделал синтаксических ошибок в файлах. Скажешь, что на той строчке - смогу сказать, в чем именно напортачил. Disord, при адаптации стирай все ненулевые upd:num_items, которые найдешь. Проблема в них. Ссылка на комментарий
FLUDMAN 7 Опубликовано 10 Октября 2011 Поделиться Опубликовано 10 Октября 2011 (изменено) народ, такой вопрос: В этой статье ( http://stalkerin.gameru.net/wiki/index.php/SoC._Respawn ) читал насчёт респавна монстров. впринципе понятно всё, но там написано что респавн будет если на локе есть хотябы 1 гулаг. у меня только гулаг для новичков в лагере на кордоне и он весь заполнен. Вопрос: будет ли происходить респавн монстра в этом случае. И вообще если можно, напишите кто-то поподробнее о том, как вообще респвн происходит. Заранее спасибо) P.S. вопрос по ТЧ. Во первых: свободный гулаг нужен для монстров, а не для НПС; Во вторых: на той же wiki есть статьи и о гулагах и о респавнах (о Логике и о гулагах в часности: >>Click Me<<); В третьих: если бы ты не поленился и пролистал назад буквально две страницы данной темы, то ты бы понял, что такое респавн и с чем его едят. ColR_iT Изменено 10 Октября 2011 пользователем ColR_iT Ссылка на комментарий
*Shoker* 322 Опубликовано 10 Октября 2011 Поделиться Опубликовано 10 Октября 2011 Кто может подсказать где можно взять готовый алгоритм, определяющий выстрел из оружия? Ведь наверняка такой имеется. Суть в том, что надо определить, что из оружия сделали выстрел. В частности нужно отследить каждый выстрел из автомата. У меня сейчас идея - отслеживать кол-во патронов в магазине, но тут остаётся проблема с тем, что надо отследить момент ручной разрядки оружия. Когда патронов много, это можно сделать, сравнивая сколько было патронов в предидущем выстреле и сколько в этом, тоесть допустим если в выстреле 1 было 27 патронов, а в "выстреле" 2 их уже 0, значит сделали разрядку оружия. Но тут возникает затык, когда патрон остаётся всего 1 и игрок делает разрядку, т.к отследить, вручную ли был разряжен магазин или игрок сделал выстрел я пока не представляю как, кроме как одновременно следить ещё за кол-ом патронов в рюкзаке. Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
RvP 1 Опубликовано 10 Октября 2011 Поделиться Опубликовано 10 Октября 2011 (изменено) *Shoker*, гравипушка? или клик левой кнопкой мыши Изменено 10 Октября 2011 пользователем RvP Vita sine libertate, nihil Vita sine litteris - mors est Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти