Случайная подборка модов
Погоня за Праздником
3.8
SZM CoP 0.2
3.9
Время Перемен 2.5
4.0
MDRK mod 1.0
4.0
OGSE 0.6.9.2
4.1
R.M.A. Atmospheric Addon 3.0
4.0
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
Архив - только для чтения
⚙ Модострой: Вопросница
Российская Федерация  Wolfstalker
Среда, 24.02.2016, 00:25 | Сообщение # 1
Статус:
Легенда:
Сообщений: 2258
Награды: 15
Регистрация: 05.04.2010

В данной теме вы можете задавать любые вопросы касательно S.T.A.L.K.E.R. моддинга


• Не флудить
• Предварительно просматривайте раздел, ведь ответ на ваш вопрос может быть там
• В своем вопросе указывайте платформу моддинга — Тень Чернобыля, Чистое небо или Зов Припяти




F.A.Q

  Злобная реклама
Среда, 24.02.2016, 00:25
Статус:
Сообщений: 666
Регистрация: 05.04.2010
Российская Федерация  СЕРА
Четверг, 29.09.2016, 21:34 | Сообщение # 4081
Статус:
Новичок:
Сообщений: 284
Награды: 1
Регистрация: 17.04.2012

как убить нпс через скрипт?
  Злобная реклама
Четверг, 29.09.2016, 21:34
Статус:
Сообщений: 666
Регистрация: 17.04.2012
Российская Федерация  Mr_KpuBoPyK
Четверг, 29.09.2016, 22:08 | Сообщение # 4082
Статус:
Неопытный:
Сообщений: 544
Награды: 3
Регистрация: 24.03.2014

СЕРА,



Если не ошибаюсь, то так
Сообщение отредактировал PRO100_STALKER - Четверг, 29.09.2016, 22:09
  Злобная реклама
Четверг, 29.09.2016, 22:08
Статус:
Сообщений: 666
Регистрация: 24.03.2014
Российская Федерация  Overfirst
Четверг, 29.09.2016, 22:11 | Сообщение # 4083
Статус:
Бывалый:
Сообщений: 1081
Награды: 19
Регистрация: 11.06.2015

Код
function kill_npc(actor, npc, p)
    if p and p[1] then
  npc = get_story_object(p[1])
    end
    if npc ~= nil and npc:alive() then
  npc:kill(npc)
    end
end
  Злобная реклама
Четверг, 29.09.2016, 22:11
Статус:
Сообщений: 666
Регистрация: 11.06.2015
Российская Федерация  ins33
Пятница, 30.09.2016, 05:38 | Сообщение # 4084
Dream Reader Mod
Статус:
Опытный:
Сообщений: 2269
Награды: 1
Регистрация: 17.01.2012

При декомпиляции уровня
-level predbannik -out predbannik -mode le
ловлю вылет:
Код
log started (console and converter.log)
level name: predbannik
loading level.ltx
loading level.geom
loading level
...visuals
...shaders/textures
...sectors
...portals
...lights
...glows
loading level.cform
loading level.hom
loading level.details
...texture
loading level.ai
loading level.game
loading level.spawn
[bug] assertion failed at ..\xr_entity.cxx:1457
Подскажите, как его распаковать.
  Злобная реклама
Пятница, 30.09.2016, 05:38
Статус:
Сообщений: 666
Регистрация: 17.01.2012
Российская Федерация  denis2000
Пятница, 30.09.2016, 08:40 | Сообщение # 4085
Время Альянса
Статус:
Ветеран:
Сообщений: 4070
Награды: 16
Регистрация: 19.07.2013

Suhar_, Пишите свои таблицы в нетпакеты объектов (НПС) в методах motivator_binder:save(packet) и восстанавливайте в motivator_binder:load(reader).


PRO100_STALKER,
Функция: dialogs.relocate_money_to_actor(first_speaker, second_speaker, 1000)
Код
function relocate_money_to_actor(first_speaker, second_speaker, num)
    db.actor:give_money(num)
    game_stats.money_quest_update (num)
    news_manager.relocate_money(db.actor, "in", num)
end

- увеличить счетчик денег у ГГ на сумму в третьем параметре. Плюс изменения в статистику и сообщение на экран.
Функция: dialogs.relocate_money(first_speaker, 1000, "in")
Код
function relocate_money(victim, num, type)
    if db.actor then
  if type == "in" then
   db.actor:give_money(num)
   game_stats.money_quest_update (num)

  elseif type == "out" then
   if victim == nil then
    abort("Couldn't relocate money to NULL")
   end
   db.actor:transfer_money(num, victim)
   game_stats.money_quest_update(-num)
  end
  news_manager.relocate_money(db.actor, type, num)
    end
end

Увеличить счетчик денег ГГ в случае in или перенести деньги от ГГ объекту victim в случае out. Плюс изменения в статистику.
Первую функцию для передечи денег можно вызвать даже так:
dialogs.relocate_money_to_actor(nil, nil, 1000)
Вторую так:
dialogs.relocate_money(nil, 1000, "in").
Обе функции рабочие, причина вылета без лога неизвестна!


Цитата ins33 ()
Подскажите, как его распаковать.

Пробуйте без спавно-элементов декомпилировать (переименуйте level.spawn).
Сообщение отредактировал denis2000 - Пятница, 30.09.2016, 09:40
  Злобная реклама
Пятница, 30.09.2016, 08:40
Статус:
Сообщений: 666
Регистрация: 19.07.2013
Украина  _S_k_i_F_
Пятница, 30.09.2016, 15:02 | Сообщение # 4086
Золотой Обоз
Статус:
Опытный:
Сообщений: 1311
Награды: 9
Регистрация: 09.08.2015

Опять проблема с НПС в оффлайне - вот функция, читает текст метки из секции НПС, для непися в онлайне работает, но с неписем оффлайн вылетает attempt to index local 'npc_n'
Код
function show_spot_on_quest_npc(actor, npc, p)
local npc = p[1]
local spot = "npc"
local npc_id = get_story_object_id(npc)
local npc_n = get_story_object(npc)
local text = (system_ini():r_string(npc_n:section(), "spot_name"))
local npc_pos = alife() <img src="/.s/sm/23/surprised.gif" border="0" align="absmiddle" alt="surprised" /> bject(npc_id)
level.map_add_object_spot_ser(npc_pos.id, spot, text)
end

Почему так? Или get_story_object можно получить только у онлайн-объекта? Зараннее спасибо!

Добавлено (30.09.2016, 15:02)
---------------------------------------------
Вот такой вариант и для онлайн и для оффлайн работает.

Код
function show_spot_on_quest_npc(actor, npc, p)
local npc = p[1]
local text
local spot = "npc"
local npc_id = get_story_object_id(npc)
local npc_n = get_story_object(npc)
if npc_n ~= nil then
text = (system_ini():r_string(npc_n:section(), "spot_name"))
else
text = "Квестовый НПС"
end
local npc_pos = alife() <img src="/.s/sm/23/surprised.gif" border="0" align="absmiddle" alt="surprised" /> bject(npc_id)
level.map_add_object_spot_ser(npc_pos.id, spot, text)
end

Но все же хотелось бы получать имя непися, заданное в секции.
  Злобная реклама
Пятница, 30.09.2016, 15:02
Статус:
Сообщений: 666
Регистрация: 09.08.2015
Российская Федерация  ins33
Пятница, 30.09.2016, 15:04 | Сообщение # 4087
Dream Reader Mod
Статус:
Опытный:
Сообщений: 2269
Награды: 1
Регистрация: 17.01.2012

denis2000, В том то и дело, что они нужны. Эта лока собиралась с помощью xr spawner, при этом часть мобов и нпс были удаленны забавным способом,
Код
position = -999.669616699219, -999.174438476563, -999.593017578125
upd;position = -999.669616699219, -999.174438476563, -999.593017578125
Да и бог его знает, что там было ещё изменено. Потом и я приложил туда свои изменения, на первых шагах изучения модинга, что по сути не исключает возможности появления косяка.
Вот меня и интересует, что именно может приводить к такому вылету.

И подскажите, ессть ли возможность, распаковать all.spawn на level.spawn, что бы не терялись имена графпоинтов.
Код
[L01_Escape]
                    = predbannik    ; -125.65  -26.29 -468.12
l01_escape_graph_point_67       = marsh, marsh_graph_point_3581    ; -242.49   -4.19    6.19

Опа, а тут вопрос в догонку, наличие нескольких безымянных граф поинтов может приводить к этому вылету?
  Злобная реклама
Пятница, 30.09.2016, 15:04
Статус:
Сообщений: 666
Регистрация: 17.01.2012
Российская Федерация  makdm
Пятница, 30.09.2016, 15:32 | Сообщение # 4088
Время Альянса
Статус:
Опытный:
Сообщений: 1787
Награды: 19
Регистрация: 22.11.2012

Цитата _S_k_i_F_ ()
Но все же хотелось бы получать имя непися, заданное в секции.

_S_k_i_F_, проявляем смекалку в программировании.
1. Пишем в секции НПС стори айди:

story_id = lim_a4_lider_monolit

2. Теперь в профиле НПС пишем его имя

<specific_character id="lim_a4_lider_monolit" team_default="1">
<name>lim_a4_lider_monolit</name>

3. В любом файле в папке TEXT пишем

<string id="lim_a4_lider_monolit">
<text>Лидер Монолита</text>
</string>

Теперь пишем функцию, которая проставляет метку на НПС:

Код
function show_spot_on_quest_npc(actor, npc, p)
level.map_add_object_spot_ser(get_story_object_id(p[1]), "npc", game.translate_string(p[1]))
end


И нам вообще фиолетово в онлайн НПС или в оффлайн.
Сообщение отредактировал makdm - Пятница, 30.09.2016, 15:36
  Злобная реклама
Пятница, 30.09.2016, 15:32
Статус:
Сообщений: 666
Регистрация: 22.11.2012
Украина  _S_k_i_F_
Пятница, 30.09.2016, 15:40 | Сообщение # 4089
Золотой Обоз
Статус:
Опытный:
Сообщений: 1311
Награды: 9
Регистрация: 09.08.2015

makdm, а я мудрил biggrin Спасибо еще раз огромное!

Еще такой вопрос: вот скрипт
Код
local nvis_active = false

function start_or_stop_nvis()
local nvis = db.actor:item_in_slot(13)
if nvis ~= nil then
  local nvis_type = (system_ini():r_string(nvis:section(), "nvis_sect"))
  local nvis_t = tostring(nvis_type)
  if nvis_active == false then
   level.add_complex_effector(nvis_t, 123232, true)
   nvis_active = true
  elseif nvis_active == true then
   level.remove_complex_effector(123232)
   nvis_active = false
  end
end
end


Вызывается при нажати кнопки в игре (keylogger подключен, тестово проверял - работает). Но этот скрипт не работает, по нажатию кнопки ничего не происходит, хотя должен включиться ПНВ. Слот 13 существует. В чем ошибка? Зараннее спасибо!
  Злобная реклама
Пятница, 30.09.2016, 15:40
Статус:
Сообщений: 666
Регистрация: 09.08.2015
Российская Федерация  Mr_KpuBoPyK
Пятница, 30.09.2016, 16:59 | Сообщение # 4090
Статус:
Неопытный:
Сообщений: 544
Награды: 3
Регистрация: 24.03.2014

Цитата denis2000 ()
function relocate_money(victim, num, type)
if db.actor then
if type == "in" then
db.actor:give_money(num)
game_stats.money_quest_update (num)

elseif type == "out" then
if victim == nil then
abort("Couldn't relocate money to NULL")
end
db.actor:transfer_money(num, victim)
game_stats.money_quest_update(-num)
end
news_manager.relocate_money(db.actor, type, num)
end
end


Я вот например поставил функцию
Код
function money_gg(first_speaker, actor)
dialogs.relocate_money(first_speaker, 1000, "in")
end

И все работает...только вылет при выходе из игры. Тогда зачем же нужны все остальные строчки?
  Злобная реклама
Пятница, 30.09.2016, 16:59
Статус:
Сообщений: 666
Регистрация: 24.03.2014
Российская Федерация  Overfirst
Пятница, 30.09.2016, 17:16 | Сообщение # 4091
Статус:
Бывалый:
Сообщений: 1081
Награды: 19
Регистрация: 11.06.2015

Цитата PRO100_STALKER ()
все работает...только вылет при выходе из игры.

Эмм... Лог покажи хоть.
Цитата PRO100_STALKER ()
Тогда зачем же нужны все остальные строчки?

Это, собственно, и есть функция, в которую передаются аргументы из твоей: victim, num, type. Ее в свой скрипт писать не надо, если ты об этом. Она вызывается из dialogs.script.
  Злобная реклама
Пятница, 30.09.2016, 17:16
Статус:
Сообщений: 666
Регистрация: 11.06.2015
Российская Федерация  СЕРА
Пятница, 30.09.2016, 18:59 | Сообщение # 4092
Статус:
Новичок:
Сообщений: 284
Награды: 1
Регистрация: 17.04.2012

Проблема с логикой нпс. Когда он подходит к заданной точке в схеме walker неотигрывается указанная анимация. Что может быть не так?
  Злобная реклама
Пятница, 30.09.2016, 18:59
Статус:
Сообщений: 666
Регистрация: 17.04.2012
Российская Федерация  makdm
Пятница, 30.09.2016, 19:50 | Сообщение # 4093
Время Альянса
Статус:
Опытный:
Сообщений: 1787
Награды: 19
Регистрация: 22.11.2012

Цитата _S_k_i_F_ ()
Но этот скрипт не работает, по нажатию кнопки ничего не происходит, хотя должен включиться ПНВ.

_S_k_i_F_, проверяйте конфиги.
Что это за параметр такой nvis_sect ? Его значение?
Сообщение отредактировал makdm - Пятница, 30.09.2016, 19:51
  Злобная реклама
Пятница, 30.09.2016, 19:50
Статус:
Сообщений: 666
Регистрация: 22.11.2012
Российская Федерация  denis2000
Пятница, 30.09.2016, 20:18 | Сообщение # 4094
Время Альянса
Статус:
Ветеран:
Сообщений: 4070
Награды: 16
Регистрация: 19.07.2013

Цитата ins33 ()
что именно может приводить к такому вылету.

Вы хотите точно знать? Тогда берете исходники конвертора на Перле смотрите файл xr_entity.cxx строку1457.
Цитата ins33 ()
И подскажите, ессть ли возможность, распаковать all.spawn на level.spawn, что бы не терялись имена графпоинтов.

По проводу переноса данных из all.spawn в SDK читайте здесь.
Цитата ins33 ()
наличие нескольких безымянных граф поинтов может приводить к этому вылету?

Откуда данные, что там есть безымянные графпоинты?


СЕРА, Какая анимация должна отыгрываться?
Сообщение отредактировал denis2000 - Пятница, 30.09.2016, 20:18
  Злобная реклама
Пятница, 30.09.2016, 20:18
Статус:
Сообщений: 666
Регистрация: 19.07.2013
Российская Федерация  СЕРА
Пятница, 30.09.2016, 20:32 | Сообщение # 4095
Статус:
Новичок:
Сообщений: 284
Награды: 1
Регистрация: 17.04.2012

denis2000, проблема в том что вообще никакая не отыгрывается в первой схеме

Добавлено (30.09.2016, 20:27)
---------------------------------------------
denis2000, это как то может быть связано с багами аи на самой локации?

Добавлено (30.09.2016, 20:32)
---------------------------------------------
denis2000, менял схему валкер на ремарк эффекта не было анимка не хотела проигрыватся

  Злобная реклама
Пятница, 30.09.2016, 20:32
Статус:
Сообщений: 666
Регистрация: 17.04.2012
Поиск: