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

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

[ТЧ 1.0006]

 

В обработчике логики [xr_remark.script] для выдачи сообщений сделано что-то странное:
- после проверки "в конфиге логики есть параметр tips" запускается проверка наличия звука, сопоставленного с таким текстом в [news_manager.script];
- если получена ссылка на сопоставленный звук, этот звук проигрывается в дополнение к звуку, указанному в логике через параметр "snd" (при разнице в задержке вывода или ссылках будет каша);
- "настоящий" звук запускается отдельным обработчиком xr_sound.set_sound_play вне проверки tips;
- в проверку наличия звука передаются аргументы "объект ГГ, tips_id, tips_sender", хотя принимаются аргументы "объект ГГ, tips_id, задержка вывода, tips_sender", из которых проверяется только tips_id;
- задержка вывода при обработке указана заново, причем глобальной переменной и применяется только для вывода обычного звука КПК;
- отправка сообщения не выполняется ни в каком виде.

 

Я упускаю какой-то хитрый замысел, или этот огород не делает ничего полезного?

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

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

Можно ли отключить голод у актора скриптом? 

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

Осенний каламбур. Сентябрь - лето.

img.php?nick=Balavnik&sert=2&text=t6

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

Почему у некоторых объектов вызов метода :id() вызывает ошибку:  attempt to call method 'id' (a number value)?

 

При этом метод :name() работает, и выводит всё как надо.

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

Осенний каламбур. Сентябрь - лето.

img.php?nick=Balavnik&sert=2&text=t6

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

@Balavnik , с каким типом объекта пытаемся при этом работать?

Для клиентского объекта ID это функция, для серверного - параметр (константа, идентификатор). Соответственно:

obj.id -- для серверного объекта
obj:id() -- для клиентского объекта

Также у некоторых игровых объектов (болт, например) может отсутствовать серверная сущность. Т.е. клиентский класс объекта присутствует, а серверного не существует.

 

p.s.: вообще, краткость далеко не всегда сестра таланта, доложу я вам, господа самоделкины.

  • Нравится 1
  • Согласен 1
Ссылка на комментарий

@Купер Но почему для этого же объекта метод :name() корректно возвращает имя, а для него же при вызове метода :id() вылетает ошибка?

 

P.s. Приложу код и лог. OGSR, если что.

  Код (Показать)
  Лог (Показать)

 

Изменено пользователем Balavnik
  • Смешно 1

Осенний каламбур. Сентябрь - лето.

img.php?nick=Balavnik&sert=2&text=t6

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

Есть еще один специфический вариант: при разбивании ящика объект-убийца передается в обработчик callback.death как движковый (C++), а не как игровой (Lua), из-за чего случается вылет при проверке who:id().

  • Нравится 2

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

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

Здравствуйте, есть вот такой скрипт(зп)

  тык (Показать)

находится он у меня в xr_effects, использую в логике рестриктора %=delete_af_mahovik_1%. Сильно за скрипты не шарю. Поэтому и такой вопрос: Как переделать этот скрипт что бы в логике писать нужный мне id по типу %=delete_af(af_mahovik_1)%. Заранее спасибо.

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

По образу и подобию других функций в том же скрипте: сделать обработку стандартных для логики аргументов actor, npc, p (названия любые, типы "объект, объект, список") и читать свои значения, переданные из логики, по ссылкам p[1], p[2], …

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

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

@Norman Eisenherz так я и делал только у меня ничего не получается, то вылетает то вообще не работает 

Я перепробовал разные варианты, но так так синтаксис луан мне не знаком, у меня ничего не выходит

 

 

function delete_af_mahovik_1(actor, object,  p)

local lc = alife():story_object(story_ids.p[1])

    alife():release(lc, true)

end

 

Вот так вот пробовал не работает

Я пробовал переделать функции remove_npc и destroy_object под свои задачи не получилось.

Пытался с умным лицом читать статьи про Lua, но из этого ничего не вышло. Помогите написать этот скрипт пожалуйста 

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

Как на оригинальном движке создать циклическую проверку time_global вне загруженной игры, то есть без апдейта ГГ или другого объекта? Хочу сделать перемотку списка сейвов удерживанием клавиш.

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

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

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

  sa_hud_animations_mgr.script (Показать)

Подозреваю, вот сюда:

function CHudAnimationsMgr:get_type_animation(state)

Нужно как-то вклинить кусок кода с проверкой на то, что в руках артефакт.

Но у меня if self.item:is_artefact() и if get_clsid(self.item) == clsid.artefact_s варианты не проконали. Просто анимка не работает.

Ну а дальше проще...

    if state == "idle" then
        return "anim_idle"
    elseif state == "moving" then
        return "anim_idle"
    elseif state == "sprint" then
        return "anim_idle_sprint"...

Но у меня лыжи не едут.

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

@Капрал Хикс там просто выбор анимки в зависимости от условия, типа с надетым подстволом одно, у двустволки другое и т.д.

-- В той же ветке, после
elseif get_clsid(self.item) == clsid.wpn_bm16_s then
...
-- впилить
elseif self.item:is_artefact() then
...
end

Кстати, в актуальной версии скрипт посвежее :happy:

 

  09.12.2024 в 10:32, Norman Eisenherz сказал:

Как на оригинальном движке создать циклическую проверку time_global вне загруженной игры, то есть без апдейта ГГ или другого объекта? Хочу сделать перемотку списка сейвов удерживанием клавиш.

В меню можно же подвязаться на апдейт UI-системы:

function Менюшка:Update()
	CUIScriptWnd.Update(self)
    ...
end

 

Изменено пользователем RayTwitty
  • Полезно 1
Ссылка на комментарий

В Shadows Addon наверно расширения движка. Попытался прикрутить анимации. Ловлю вылеты.

function get_hud_data(obj, param)
	if obj and param then
		if param == "hud_section" then
			set_int_arg0(24)
			return obj:get_hud_shared_str()
		end
	end
end

Что это за set_int_arg0(24) и такого метода не существует obj:get_hud_shared_str()

ОГСР движок

 

PS. Короче да куча методов своих не совместимо с ОГСР

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

@RayTwitty Добавил в [ui_load_dialog.script] код, показанный ниже: один раз сработало, дальше молчит.

  Показать

 

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

Ссылка на комментарий
  10.12.2024 в 13:10, Norman Eisenherz сказал:

один раз сработало, дальше молчит.

Нужно выводить в лог значение time_global за пределами условия и смотреть, что не так. Там же игра на паузе стоит, я не помню меняется ли time_global в этом случае. Первый раз гарантировано сработает потому что сравнение с нулем.

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

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

db.actor:iterate_belt(
			function(dummy, obj)
				if obj:section() == "af_medusa" then
					af_add = ini:r_float(obj:section(), "additional_inventory_weight")
					log1(af_add)
				else
				    af_add = 0	
					log1(af_add)
				end   
			end
		)

 

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

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

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

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

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

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

Войти

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

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

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