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

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

37 минут назад, Serge_888 сказал:

db.actor:active_item:play_hud_animation(system_ini():"wpn_rg6m_hud","anm_hide",true) -- ^-- почему не работает ???

Потому что должно быть

db.actor:active_item:play_hud_animation( system_ini():r_string( "wpn_rg6m_hud", "anm_hide" ), true)

40 минут назад, Serge_888 сказал:

sm_act_item:unload_magazine() -- <- не работает :-( почему? db.actor:item_in_slot(n_act_slot):set_ammo_elapsed(7) -- <- тоже не работает.

Потму что это следует делать через level.client_spawn_manager, заспавненного ствола же ещё нет в онлайне. И получается, что всё это применяется к старому, который удаляем.

  • Спасибо 1

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

naxac.gif

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

это следует делать через level.client_spawn_manager

по этому поводу, гугель выдал пример:

level.client_spawn_manager():add(obj.id, 0, spawn_callback, "доп_аргумент")

аргументы метода:
obj.id -- это айди объекта на который ставим каллбек
0 -- это айди эктора - нафиг не нужно, но нужно 
spawn_callback -- имя функции которая вызовется при переходе объекта в онлайн
"доп_аргумент" -- дополнительный аргумент для функции spawn_callback, 
	- что хотим то и передаем, если оно конечно надо, 
	либо вообще ничего не пишем.

-- сюда ставим вызов нужного нам действия при переходе объекта в онлайн
Код:
function spawn_callback(arg, iId, gObj)
news_manager.send_tip(db.actor, "Каллбек на переход в онлайн вызван", 0, "trader", 10000)
-- снимаем каллбек, чтобы он не вызывался каждый раз когда объект снова окажется в онлайне
level.client_spawn_manager():remove(iId, 0)  
end

принимаемые параметры:
arg - тот самый дополнительный аргумент
iId - айди объекта на который поставлен каллбек
gObj -- клиентская юзердата объекта на который поставлен каллбек

если у меня будет:

level.client_spawn_manager():add(obj.id, 0, set_ammo_elapsed, cur_ammo_mag)

мне надо будет "снимать каллбек"? И что писать вместо iId ?

P.S. спасибо за быстрый ответ.

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

В XRay гранатомёты реализованы оооочень по быдлокодерски, там много ошибок, например запуск ракет должен быть из метода FireTrace, лишь так можно пофиксить, например, произошла осечка, а ракета полетела, или оружие заблокировано, а ракета всё равно полетела. Так же при перезарядке ракеты не респаунется, т.е. старые удаляются, новые спаунятся. В общем, надо править движок, у меня в принципе есть эти правки, которые исправляют часть ошибок. И ещё, в XRayExtensions для ЗП я исправил некоторые ошибки, доработал класс РПГ-7 с возможностью многозарядного гранатомёта.

  • Полезно 1

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

Ссылка на комментарий
22 часа назад, Serge_888 сказал:

Делал для ЗП магазинный гранатомёт с отъёмным магазином

Эта штука называется XM29 OICW. Через сквозной оптический прицел будет весело пулять гранатами. Например, как здесь: https://yadi.sk/i/sGH6mXoELpbt3Q

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

Отношения между людьми- главная ценность в человеческом обществе.
Любая полученная информация- это только повод для размышлений, а не побуждение к действию.
Это должен знать каждый: уроки боевой подготовки Дяди Саши https://yadi.sk/d/60Ec2B06goLAE
Накопано и накнопано:https://yadi.sk/d/mzVY5jQEspwpt

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

Эта штука называется XM29 OICW.

Чегой-то это какой-то неправильный OICW. Сколько не смотрю, вылитый fn2000 :)  И гранатомёт однозарядный. И судя по всему, он вообще для ТЧ. Совсем не подходит. К тому-же сделать в движке сталкера магазинный автомат + магазинный гранатомёт (два в одном оружии)  будет малореально. Или движек править, или скриптами обвесить, что-бы каждый чих перехватывали и обрабатывали. Ну для чистого ЗП может и получится, а что-бы потом засунуть это в какой-нибудь понравившийся мод, работы будет почти столько-же.

 

@НаноБот, у меня не РПГ-7. У меня несуществующий магазинный гранатомёт на ВОГ-25. Сначала, думал быстренько сделать прикольную стрелялду, а то со временем, много гранат накапливается. А когда полезли ограничения движка, стало как-то жалко бросать.

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

Здрасьте.

 

Исходная конструкция – список для сверки в самой функции:

if not string.find("a, b, c, d", "a") then …

 

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

local array = {"a, b, c, d"}

if not string.find(array, "a") then …

 

Какой должен быть синтаксис для поиска строки в массиве и подходит ли для этого функция string.find?

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

Шпаргалка

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

@Norman Eisenherz, Можно полагаю, но немного не ясно, для чего такое выражение (какова вообще его цель)?

Мне видится что-то подобное для рандома:

local array = {"a", "b", "c", "d"}
if string.find(array[math.random(table.getn(array))], "a") then
    printf("target: YES")
else
    printf("target: NO")
    return
end

 

Тут имхо конечно.:)

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

@Norman Eisenherz, вот ещё один стандартный вариант:

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

local array = {
	["a"] = true,
	["b"] = true,
	["c"] = true,
	["d"] = true}

if array["a"] then
    -- строка в массиве есть
else
    -- строки в массиве нет
end

 

 

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

S.T.A.L.K.E.R. CoP Objects (upd 15.11.24)

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

Мне нужно проверить, что броня в слоте совпадает со списком выбранного мастера.

https://c2.staticflickr.com/2/1935/45635885061_f2af981eb0_o.png

 

Пока что код вот такой, и с ним скриптовое сообщение вообще не выводится (однако, и вылета нет):

function armor_check()

local slot = db.actor:item_in_slot(6)
local sect = slot:section()
local name = ""
local options = ""
local task_texture, task_rect = get_texture_info("ui_iconsTotal_lost_money")

local armor_kuz = {
["outfit_soldier_m1"] = true,
["specops_outfit"] = true,
["military_outfit"] = true,
["militaryspec_outfit"] = true,
["specnaz_outfit_m1"] = true
}

-- проверка 1: брони нет/есть
	if slot == nil then
	name = "Боец, на тебе нет брони. С чем работать будем?"
	else
	name = "У тебя %c[list_armor]" .. game.translate_string(amk.get_inv_name(sect))

-- проверка 2: тип брони для другого/этого мастера
		if not armor_kuz[sect]
		options = ". Я с такой броней не работаю -- иди к (имя)."
		else
		options = ". Могу установить ПНВ или укрепить броню."
		end


	end

	local reply = name .. "%c[ui_clr_2]" .. options
	db.actor:give_talk_message(reply, task_texture, task_rect, "iconed_trade_info")

end

 

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

Шпаргалка

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

1. Моя любимая проблема: правильная теория и невнимательность на практике.

2. Теперь ловлю вылет при отсутствии брони, хотя проверка в этом случае не должна выполняться дальше первого "else", и текст "options" должен остаться пустым. Что я упускаю?

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

Шпаргалка

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

Вооот… Я попытался сократить запись "slot:section()", но не учел того, что ее надо ставить после первой проверки. Всем спасибо, двигаюсь дальше.

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

Шпаргалка

Ссылка на комментарий
6 часов назад, Norman Eisenherz сказал:

Что я упускаю?

local slot = db.actor:item_in_slot(6)
local sect = slot:section()

Если броника в слоте нет - в переменной "slot" будет nil. А затем ты пытаешься для nil вызвать :section(). Переделай как то так:

local slot = db.actor:item_in_slot(6)

if slot then

          local sect = slot:section()

          --- тут все, если есть броник

else

         --- тут если броника нет

end

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

Продолжаю мучить гранатомёт.  Почти всё заработало кроме анимации.

db.actor:item_in_slot(n_act_slot):play_hud_animation("lancew_rg6m_holster", true)

даёт ошибку

Expression    : !m_error_code
Function      : raii_guard::~raii_guard
File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line          : 748
Description   : d:\stalker3\gamedata\scripts\multitool.script:24: attempt to call method 'play_hud_animation' (a nil value)

подскажите как исправить?

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

Ф-ции play_hud_animation не существует

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

А есть что-нибудь работающее для проигрывания анимаций для худа в ЧН/ЗП ?

 

Ссылка на комментарий
3 часа назад, Змея сказал:

как заспавнить НПС скриптом  с одновременным присваиванием СИДа?

Через нет-пакет. Например, с использованием модуля m_netpk от Артоса:

local obj = alife():create(section, pos, lvid, gvid)
if obj then
	local pk = get_netpk(obj, 1)
	if pk:isOk() then
		local data = pk:get()
		data.story_id = p.sid
		pk:set(data)
	end
end

 

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

@Kirgudu, спасибо конечно...Только я вот видела тут одного глобального модератора, который очень красноречиво описал бы ситуацию безысходности, возникающую у неподготовленных заранее людей при просмотре этого кода.

Что вот с этим делать то? Как функцию спавна писать в скрипте?

Блин...Я еще и логику хотела бы указать...

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

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

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

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

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

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

Войти

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

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

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