Случайная подборка модов
Pain of The Past
2.8
Как вступить в "Долг"?
3.9
Nature Winter v2.3 Black Edition
3.9
Смерти Вопреки. В Паутине лжи
4.1
Хроники Кайдана
3.6
Lost World: Origin
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
Украина  _S_k_i_F_
Четверг, 29.09.2016, 19:19 | Сообщение # 4051
Золотой Обоз
Статус:
Опытный:
Сообщений: 1311
Награды: 9
Регистрация: 09.08.2015

PRO100_STALKER, да. Через экшн.
Код
<action>имя_скрипта.имя_функции</action>

Использовать можешь столько раз сколько хочешь. Хоть в каждую фразу пиши biggrin
  Злобная реклама
Четверг, 29.09.2016, 19:19
Статус:
Сообщений: 666
Регистрация: 09.08.2015
Российская Федерация  Mr_KpuBoPyK
Четверг, 29.09.2016, 19:23 | Сообщение # 4052
Статус:
Неопытный:
Сообщений: 544
Награды: 3
Регистрация: 24.03.2014

_S_k_i_F_, Suhar_, Спасибо. Вот поставил в экшн:
Код
Expression    : fatal error
Function      : CScriptEngine::lua_error
File          : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
Line          : 73
Description   : <no expression>
Arguments     : LUA error: ...hing\s.t.a.l.k.e.r\gamedata\scripts\new_money.script:2: attempt to call field 'relocate_money_to_actor' (a nil value)

  Злобная реклама
Четверг, 29.09.2016, 19:23
Статус:
Сообщений: 666
Регистрация: 24.03.2014
Российская Федерация  Suhar_
Четверг, 29.09.2016, 19:32 | Сообщение # 4053
Статус:
Новичок:
Сообщений: 283
Награды: 3
Регистрация: 11.03.2016

Невозможно вызвать relocate_money_to_actor. Перед тем как обратиться к функции, нужно указать название файла, в котором она лежит.
Вот так dialogs.relocate_money_to_actor( твои парамеры ). Этого можно не делать, если обращаешься к функции из этого же файла или из _g.script
  Злобная реклама
Четверг, 29.09.2016, 19:32
Статус:
Сообщений: 666
Регистрация: 11.03.2016
Российская Федерация  Mr_KpuBoPyK
Четверг, 29.09.2016, 19:38 | Сообщение # 4054
Статус:
Неопытный:
Сообщений: 544
Награды: 3
Регистрация: 24.03.2014

Suhar_,
Код
function money_gg(first_speaker, second_speaker)
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 1000)
end

Дак, вроде, функция то правильная...как ты и говоришь
Цитата Suhar_ ()
dialogs.relocate_money_to_actor( твои парамеры )

А вот насчет
Цитата Suhar_ ()
Этого можно не делать, если обращаешься к функции из этого же файла

У меня есть файл new_money.script в котором только одна функция(приведена в начале поста)
Эту функцию я хочу вызвать из диалога...Я так понял мне можно писать просто
Цитата Suhar_ ()
relocate_money_to_actor
?
  Злобная реклама
Четверг, 29.09.2016, 19:38
Статус:
Сообщений: 666
Регистрация: 24.03.2014
Российская Федерация  Suhar_
Четверг, 29.09.2016, 19:43 | Сообщение # 4055
Статус:
Новичок:
Сообщений: 283
Награды: 3
Регистрация: 11.03.2016

PRO100_STALKER,
<action>new_money.money_gg</action>
  Злобная реклама
Четверг, 29.09.2016, 19:43
Статус:
Сообщений: 666
Регистрация: 11.03.2016
Российская Федерация  Mr_KpuBoPyK
Четверг, 29.09.2016, 19:46 | Сообщение # 4056
Статус:
Неопытный:
Сообщений: 544
Награды: 3
Регистрация: 24.03.2014

Suhar_, Я так и вызываю.
  Злобная реклама
Четверг, 29.09.2016, 19:46
Статус:
Сообщений: 666
Регистрация: 24.03.2014
Российская Федерация  Suhar_
Четверг, 29.09.2016, 20:02 | Сообщение # 4057
Статус:
Новичок:
Сообщений: 283
Награды: 3
Регистрация: 11.03.2016

PRO100_STALKER, все равно не работает? Не должно быть такого. Проверь все ли функции на месте, соответствуют ли адреса.
  Злобная реклама
Четверг, 29.09.2016, 20:02
Статус:
Сообщений: 666
Регистрация: 11.03.2016
Российская Федерация  Mr_KpuBoPyK
Четверг, 29.09.2016, 21:28 | Сообщение # 4058
Статус:
Неопытный:
Сообщений: 544
Награды: 3
Регистрация: 24.03.2014

После долгих попыток, я пришел к такому коду
Код
function money_gg(first_speaker, actor)
dialogs.relocate_money(first_speaker, 1000, "in")
end
Код работает, деньги выдаются, но при выходе из игры вылет без лога. Все, что я добавлял, это только одна функция. С чем связан вылет и как это можно исправить?
  Злобная реклама
Четверг, 29.09.2016, 21:28
Статус:
Сообщений: 666
Регистрация: 24.03.2014
Российская Федерация  СЕРА
Четверг, 29.09.2016, 21:34 | Сообщение # 4059
Статус:
Новичок:
Сообщений: 284
Награды: 1
Регистрация: 17.04.2012

как убить нпс через скрипт?
  Злобная реклама
Четверг, 29.09.2016, 21:34
Статус:
Сообщений: 666
Регистрация: 17.04.2012
Российская Федерация  Mr_KpuBoPyK
Четверг, 29.09.2016, 22:08 | Сообщение # 4060
Статус:
Неопытный:
Сообщений: 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 | Сообщение # 4061
Статус:
Бывалый:
Сообщений: 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 | Сообщение # 4062
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 | Сообщение # 4063
Время Альянса
Статус:
Ветеран:
Сообщений: 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 | Сообщение # 4064
Золотой Обоз
Статус:
Опытный:
Сообщений: 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 | Сообщение # 4065
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
Поиск: