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

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

Внимательно стоит читать не только документацию по игре в случае её наличия, но и посты, на которые сам же ссылаешься, например, тут: https://www.amk-team.ru/forum/topic/6138-cs-kovyryaemsya-v-faylah/?do=findComment&comment=1443031
Всё в ЧН работает, проверено личным опытом модостроя, а Malandrinus в своём посте разжевал вопрос так, что дальше некуда.

Не нужно путать spawn_id, задаваемый отдельным параметром в секции объекта в all.spawn и тот виртуальный spawn_id, который является порядковым номером этой секции объекта и который при распаковке, например, средствами acdc (с SDK не работал, но, возможно, там тоже) можно увидеть в квадратных скобках в начале секции. Поскольку при перепаковке all.spawn этот номер может измениться, единственно правильным способом получить его при исполнении будет вызов метода alife():spawn_id(spawn_story_id), где spawn_story_id, в свою очередь, также прописан отдельным параметром в секции объекта в all.spawn. Никакие spawn_id, прописанные там же отдельным параметром, не должны использоваться в данном механизме ни в ТЧ, ни в ЧН, ни в ЗП, а story_id можно использовать только для поиска уже заспавненного объенкта перед его удалением, но не для повторного спавна.

Ссылка на комментарий
8 hours ago, Kirgudu said:

Не нужно путать spawn_id, задаваемый отдельным параметром в секции объекта в all.spawn и тот виртуальный spawn_id, который является порядковым номером этой секции объекта

Из чего следует, что я их путаю? Номер в квадратных скобках я даже не упоминал.

 

Насчет оригинального поста Malandrinus – действительно, не дочитал.

 

8 hours ago, Kirgudu said:

Никакие spawn_id, прописанные там же отдельным параметром, не должны использоваться

Тем не менее, такие записи зачем-то есть; можно было бы считать обозначения аргументов простой путаницей в названиях, если бы спавн через spawn_id не работал вообще, но он работает в ТЧ. Видимо, "неучтенка" из ранних билдов…

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

Ссылка на комментарий
On 11/14/2013 at 9:32 AM, Malandrinus said:

local spawn_id = alife():spawn_id(spawn_story_ids.some_level_changer)
alife():create(spawn_id)

Если метод spawn_id() принимает только аргумент spawn_story_id, то как работает следующий код из OGSR и почему такой код, в отличие от ТЧ/ЧН, не вешает скрипты?

Spoiler
[ogse_lc_mngr.script]
function lc_create(sid, spot, hint)
	local sim = alife()
	if not sim:story_object(sid) then				-- ссылка на story_id
		local spawn_id = sim:spawn_id(sid)			-- снова ссылка на story_id
		local lc       = sim:create  (spawn_id)
		if lc then
			
		end
	end
end

 

 

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

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

Ну, если уж ссылаться на OGSR, то там же можно, если не путаю, спаунить и по имени, без всяких story и spawn id.

А нет, я таки путаю. Не нахожу этого в OGSR. Это я только у себя добавлял получения spawn_id по имени:

https://github.com/dsh2dsh/OGSR-Engine/commit/be0d672ca18c80289cfa0c8bd7e6552b513f4587

Quote

Добавил alife():spawn_id( имя )

которая возвращает spawn_id из all.spawn по имени объекта.

 

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

@dsh было, было и в основной ветке, видимо, дополнение признали полезным и затянули. :)
https://github.com/OGSR/OGSR-Engine/commit/544daa9962efb142b6e2b058e045846f96dc5608
Легко найти по истории, уже второй коммит с конца:
https://github.com/OGSR/OGSR-Engine/commits/main/ogsr_engine/xrGame/alife_spawn_registry.cpp

 

Офф: я впервые в ваши правки движка заглянул так-то; даже при взгляде наискосок попадаются любопытные вещи. :)
Если б ещё было время заниматься модостроем, да по-прежнему сохранялся высокий интерес... но нет.

Хватит того, что периодически могу дать ответ по легаси скриптам.

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

Вот теперь картинка сложилась.

 

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

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

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

Мужики, спасайте :(

Имеем следующий набор работ:

Скрытый текст
		--4 работы доп охраны
		for i = 6, 9 do
            t = { section = "logic@fox_ohrana_" .. i, idle = 0, prior = 8, state = { 0 },
                in_rest = "", out_rest = "",
			}
            table.insert(sj, t)
		end

		--Кулинар идёт сюда
		t = { section = "logic@artem", idle = 0, prior = 11, state = { 0 },
            in_rest = "", out_rest = "",
            position_threshold = 5,
			predicate = function(obj_info)
                return obj_info.story_id == 9509
            end
        }
        table.insert(sj, t)

 

Проблема в том, что искомый нпс с СИДом 9509 занимает одну из работ сверху (с низшим приоритетом). Почему он отказвыается брать работу с высоким приоритетом? Она ведь точно свободная, ибо предикейт для него сделан с проверкой по СИДу?

 

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

[ЧН 1.5.10] При скриптовом вводе габаритов список CUIListWnd() создается только пустым, а при попытке наполнения не создается вовсе – не выводится даже его родительское окно. При XML-выводе список создается и наполняется успешно. В чем может быть причина?

Spoiler
	local x, y, w, h = 55, 50, 680, 420
	local eh = 70

-- так работает
	local xml = CScriptXmlInit()
	xml:ParseFile(…)
	local list = xml:InitList("list", bk)				-- ссылка на описание <list width=680 height=420 />
	list:SetWndPos( vector2():set(x, y) )

-- так нет
	-- local list = CUIListWnd()
		-- bk:AttachChild(list)
	-- list:SetWndRect( Frect():set(x, y, x+w, y+h) )


	list:SetItemHeight(eh)


	for i = 1, 8 do
		local e = CUIListItemEx()
		e:SetWndRect( Frect():set(0, 0, w, eh) )
		e:SetText("test_" .. i)
		list:AddItem(e)
	end

 

 

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

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

Всем привет!

Есть вроде бы простой вопрос: как снять биндер с объекта?

Чуть подробнее: сделал свой биндер для объекта, запускаю:

function init(obj)
	local new_binder = bolt_binder(obj)
    obj:bind_object(new_binder)
end

 

При нужных мне обстоятельствах я хочу "отменить" биндер для данного конкретного объекта, делаю это так:

function bolt_binder:net_spawn(data)
	
  	--тут разная обработка объекта
  
	self.object:bind_object(nil) --удаляем биндер
	--ВСЁ ЧТО ДАЛЕЕ, УЖЕ НЕ ИСПОЛНЯЕТСЯ ПО ПРИЧИНЕ АННИГИЛЯЦИИ :)
	
    if not object_binder.net_spawn(self, data) then
        return false
    end
  	return true	
end

 

Но есть основания полагать, что снимать биндер с объекта так: self.object:bind_object(nil) - это не корректно. Как же правильно?

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

Всем привет. Не получается спрятать и показать статику когда на ГГ определённая броня.

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

    local outfit = db.actor:item_in_slot(6)
    if outfit and get_string(outfit:section(), "backpack_avaliable") ~= false then
    local error = xml:InitStatic("slots_cover", self)
    error:Show(true)
    else
    error:Show(false)
 

 

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

Как минимум, переменная error локальна для первого блока и после else не существует

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

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

Присоединиться к обсуждению

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

Гость
К сожалению, ваш пост содержит слова, запрещенные в нашем сообществе. Пожалуйста, измените ваш текст так, чтобы в нем не оставалось слов, указанных ниже. Помните, что публикация вами даже видоизмененного запрещенного слова может нарушать законодательство РФ и Правила форума.
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

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

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

AMK-Team.ru

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