Случайная подборка модов
Prosectors Project
4.0
Lost Alpha DC
3.9
Новый Арсенал 4.5
3.7
Call of Pripyat Complete
3.7
The Second Sun
2.9
Возвращение Шрама
3.9
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
Архив - только для чтения
⚙ Модострой: Вопросница
Российская Федерация  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
Поиск: