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

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

9 часов назад, _Sk8_AsTeR_ сказал(а):

Они ведь не обрабатываются скриптами вообще?

Можно добавить им в конфиг скриптовую обвязку вида: script_binding = bind_crow.init. Я так делал для выдачи инфопоршня при убийстве вороны.

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

@Капрал Хикс , емнип, за добавление/удаление в этот список неписей отвечают две строчки в se_stalker.script:

actor_stats.add_to_ranking(self.id)

и

actor_stats.remove_from_ranking(self.id)

  • Полезно 1

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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

Господа, а каким образом можно вызвать свою функцию при условии, что ГГ только что пришлёпнул непися? Через каллбеки? Если да, то через какие? Чет я туплю...

Ссылка на комментарий
1 час назад, _Sk8_AsTeR_ сказал(а):

каким образом можно вызвать свою функцию при условии, что ГГ только что пришлёпнул непися?

В файле xr_motivator.script ищи function motivator_binder:death_callback(victim, who)

там есть проверка:

	if who:id() == db.actor:id() then
		xr_statistic.addKillCount(self.object)
		-- Отсюда вызывай
	end

 

  • Спасибо 1
  • Согласен 2
Ссылка на комментарий

@ted.80 нашёл абсолютно идентичные строки в бинд_сталкер, только там похоже этот  каллбек не работает судя по всему, ибо я там ковырял эти строки. Тогда ясно в чем моя ошибка :) 

Ссылка на комментарий
Только что, _Sk8_AsTeR_ сказал(а):

в бинд_сталкер, только там похоже этот  каллбек не работает

Работает. Но относится к ГГ, а не НПС. Когда ГГ кто-нибудь убьет, там можно проверять, кто...

  • Спасибо 1
  • Согласен 2

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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

Доброго времени суток. Возник вопрос к опытным скриптерам. В ТЧ есть функция выдачи тайника:

    treasure_manager.get_treasure_manager():give_treasure("esc_secret_truck_goods")

Как переделать так, чтобы выдавало рандомный тайник из заданного списка? Буду очень благодарен за помощь.

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

@hArdplAyer22_22 Вот прям со всеми потрохами:

Скрытый текст

esc_tbl = {
        "esc_secret_bridge_vagon",
        "esc_secret_anomaly_dead",
        "esc_secret_bandit_cross",
        "esc_secret_bandit_supply",
        "esc_secret_under_cross",
        "esc_secret_refuge",
        "esc_secret_safe_farm",
        "esc_secret_vagon_container",
        "esc_secret_stalker_things",
        "esc_secret_box_bridge",
        "esc_secret_village_rucksack",
        "esc_secret_village_roof",
        "esc_secret_nice_place",
        "esc_secret_vorpal",
        "esc_secret_commander_goods",
        "esc_secret_road",
        "esc_secret_thief",
        "esc_secret_gas_pipe",
        "esc_secret_truck_goods",
        "esc_secret_kpp_tower",
    }

function give_treasure_esc_random()
    treasure_manager.get_treasure_manager():give_treasure(esc_tbl[math.random(#(esc_tbl))])
end

 

  • Спасибо 1
  • Нравится 1

Здесь могла быть ваша реклама.

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

Здраствуйте, нужна помощь. Сталкер ТЧ с модом ОГСМ на движке ОГСР. При получении игроком любого тайника, все содержимое тайника автоматически перемещается ГГ в инвентарь. Может кто сталкивался?

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

function workshop_ui:Init_Controls()
    self:Init(0,0,1024,768)
    local xml
    self.xml = CScriptXmlInit()
    xml = self.xml
    xml:ParseFile("ui_workshop.xml")

    self.dialog = xml:InitStatic("workshop:workshop_window",self)

    self.button_repair_tab = self.xml:Init3tButton("workshop:btn_repair_workshop", self.dialog)
    self:Register(self.button_repair_tab, "btn_repair_workshop")

    self.button_sewing_tab = self.xml:Init3tButton("workshop:btn_disassembly_workshop", self.dialog)
    self:Register(self.button_sewing_tab, "btn_disassembly_workshop")

    self.dlg_repair            = workshop_repair(xml, self, 0, 0)
    self.dlg_repair:Show        (false)
    self.dialog:AttachChild        (self.dlg_repair)
    xml:InitWindow            ("tab_size", 0, self.dlg_repair)

    self.dlg_sewing            = workshop_disassembly(xml, self, 0, 0)
    self.dlg_sewing:Show        (false)
    self.dialog:AttachChild        (self.dlg_sewing)
    xml:InitWindow            ("tab_size", 0, self.dlg_sewing)
end
--// ------------------------------------------------------------------------------
function workshop_ui:InitCallBacks()
    self:AddCallback("btn_quit_workshop", ui_events.BUTTON_CLICKED, self.on_quit, self)
    self:AddCallback("btn_repair_workshop", ui_events.BUTTON_CLICKED, self.on_repair, self)
    self:AddCallback("btn_disassembly_workshop", ui_events.BUTTON_CLICKED, self.on_disassembly, self)
end
--// ------------------------------------------------------------------------------
function workshop_ui:on_quit()
    self:GetHolder():start_stop_menu(self, true)
end

function workshop_ui:on_repair()
    self.dlg_sewing:Show(false)
    self.dlg_repair:Show(true)
end

function workshop_ui:on_disassembly()
    self.dlg_repair:Show(false)
    self.dlg_sewing:Show(true)
end

Может кто подсказать что я пишу не так! Хочу сделать переключение между окнами в GUI. Когда открываю одну вкладку то вторая кнопка даже не горит при наведении на неё!

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

@Colder тебе табы что-ли нужны? Существует готовый класс для этого, костыли не нужны. Пример

<window>
  <main_dialog x="80" y="5" width="860" height="680">
    <tab x="14" y="40" width="202" height="28">
      <button x="0" y="0" width="100" height="28" stretch="1" accel="k1">
        <texture_offset x="0" y="0"/>
        <texture>ui_cop_button_left</texture>
        <text font="graffiti22" align="c">Рюкзак</text>
        <text_color>
            <e r="0" g="0" b="0"/>
			<t r="240" g="217" b="182"/>
			<d r="135" g="123" b="116"/>
			<h r="0" g="0" b="0"/>
        </text_color>
      </button>
      <button x="101" y="0" width="100" height="28" stretch="1" accel="k2">
        <texture_offset x="0" y="0"/>
        <texture>ui_cop_button_right</texture>
        <text font="graffiti22" align="c">Инвентарь</text>
        <text_color>
            <e r="0" g="0" b="0"/>
			<t r="240" g="217" b="182"/>
			<d r="135" g="123" b="116"/>
			<h r="0" g="0" b="0"/>
        </text_color>
      </button>
    </tab>

и инициализация

  self.tab = xml:InitTab( "main_dialog:tab", self.dialog )
  self:Register( self.tab, "tab" )
...
  self:dshAddCallback( "tab", ui_events.TAB_CHANGED, self.OnTabChange, self )

Это все не для копипасты, а для размышлений.

 

  • Нравится 2
Ссылка на комментарий
Только что, ARTLantist сказал(а):

в ЗП

А разве там нет колбеков on_item_to_slot, on_item_to_ruck?

Если нету там, то можно в OGSR подсмотреть, как их сделать.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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

Возник такой вопрос. Можно ли сделать использование предмета с условием если зажата какая либо клавиша? Если да то где можно подсмотреть?

Платформа: ТЧ

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

@Colder [ui_main_menu.script], по аналогии с блоком if dik == DIK_keys.DIK_Q. Обязательно добавить проверку if level.present() – игра должна быть загружена в момент расходования предмета.

Сделать применение предметов через быстрые слоты, как в ЗП, без расширенного движка невозможно – разве что добавить условие вида "если потрачен бинт, то съесть еще колбасу".

  • Спасибо 1
  • Сомнительно 2

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

Шпаргалка

Ссылка на комментарий
4 часа назад, Colder сказал(а):

Можно ли сделать использование предмета с условием если зажата какая либо клавиша?

 

1 час назад, Norman Eisenherz сказал(а):

Сделать применение предметов через быстрые слоты, как в ЗП, без расширенного движка невозможно

Ваши сведенья устарели - причем давно - скриптовый кейлоггер СУЩЕСТВУЕТ - Ура товарищи!!!

 

 

Скрытый текст

local eatimer1 = 0
local con = nil
local con_command = "mm_net_player_name"
local def_value = "_"

function update()
	if not con then
		con = get_console()
		con:execute( con_command .." ".. def_value )
		for k,v in pairs(_G[script_name()]) do
			if type(v)=='function' and DIK_keys[string.upper(k)] then
				local key = "k"..string.gsub(k,"dik_","")
				con:execute("bind_console "..con_command.." "..k.." "..key)
			end
		end
	else
		local str = con:get_string(con_command)
		if str~=def_value and this[str] then
			this[str]()
			con:execute(con_command.." "..def_value)
		end
	end
end

function dik_f1()
	local it = db.actor:object("medkit") or db.actor:object("medkit_army") or db.actor:object("medkit_scientic")
	actor_eat_it(it)
end

function dik_f2()
	local it = db.actor:object("bandage") 
	actor_eat_it(it)
end

function dik_f3()
	local it = db.actor:object("vodka") or db.actor:object("antirad")
	actor_eat_it(it)
end

function dik_f4()
	local it = db.actor:object("bread") or db.actor:object("kolbasa") or db.actor:object("conserva")
	actor_eat_it(it)
 end

function dik_f5()
	local it = db.actor:object("energy_drink")
	actor_eat_it(it)
 end

function actor_eat_it(it)
local eatimer2 = time_global()
	if it and isGameOn() and eatimer1 < eatimer2 then
	eatimer1 = eatimer2 + 3000
		local it_name =  "Использовано: "..game.translate_string(system_ini():r_string(it:section(), "inv_name"))
		db.actor:give_game_news(it_name, "ui\\ui_iconsTotal", Frect():set(166,846,83,47), 1000, 5000)
		db.actor:eat(it)
	end
end

function isGameOn()
	if level.present() and db.actor ~= nil and db.actor:alive() then
		return true
	end
	return false
end

 

 

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

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

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

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

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

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

Войти

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

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

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