Случайная подборка модов
Lost World Condemned
3.5
Опасный Вирус
2.4
G.L.A.D.I.A.T.O.R. II Время Альянса
3.4
Путь Человека
4.0
ArmSTALKER: Warzone 2.0
3.9
SWTC
4.1
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
Архив - только для чтения
⚙ Модострой: Вопросница
Российская Федерация  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
Поиск: