Случайная подборка модов
Old Episodes. Episode 2. War of Zone.
3.1
Золотой Обоз 2
3.0
The Second Sun
2.9
STALKER: [O.F.F.L.I.F.E.]
4.1
FeaR Zone: История Холода
2.6
Игра Душ: Новое Начало
4.3
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
Архив - только для чтения
⚙ Модострой: Вопросница
Российская Федерация  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
Российская Федерация  denis2000
Среда, 28.09.2016, 19:45 | Сообщение # 4066
Время Альянса
Статус:
Ветеран:
Сообщений: 4070
Награды: 16
Регистрация: 19.07.2013

_S_k_i_F_, Это потому что вы применяете серверный движковый метод character_name к клиентскому типу объекта.
  Злобная реклама
Среда, 28.09.2016, 19:45
Статус:
Сообщений: 666
Регистрация: 19.07.2013
Украина  _S_k_i_F_
Среда, 28.09.2016, 19:58 | Сообщение # 4067
Золотой Обоз
Статус:
Опытный:
Сообщений: 1311
Награды: 9
Регистрация: 09.08.2015

denis2000, а можно клиентский тип перевести в серверный?
  Злобная реклама
Среда, 28.09.2016, 19:58
Статус:
Сообщений: 666
Регистрация: 09.08.2015
Российская Федерация  denis2000
Четверг, 29.09.2016, 12:31 | Сообщение # 4068
Время Альянса
Статус:
Ветеран:
Сообщений: 4070
Награды: 16
Регистрация: 19.07.2013

_S_k_i_F_, Зная id можно получить серверный, а преобразовать один объект в другой - это не совсем идеология объектно-ориентированного программирования.
  Злобная реклама
Четверг, 29.09.2016, 12:31
Статус:
Сообщений: 666
Регистрация: 19.07.2013
Украина  _S_k_i_F_
Четверг, 29.09.2016, 12:48 | Сообщение # 4069
Золотой Обоз
Статус:
Опытный:
Сообщений: 1311
Награды: 9
Регистрация: 09.08.2015

denis2000, немного переформулирую вопрос: вот функция, как сделать так чтобы она работала и для онлайн, и для оффлайн объекта?
Код
function show_spot_on_quest_npc(actor, npc, p)
local text
local npc = p[1]
local spot = "npc"
local npc_name = get_story_object(npc)
if npc_name ~= nil then
text = npc_name:character_name()
else
text = "Квестовый НПС"
end
local npc_id = get_story_object_id(npc)
local npc_pos = alife() <img src="/.s/sm/23/surprised.gif" border="0" align="absmiddle" alt="surprised" /> bject(npc_id)
local text = npc_pos:character_name()
level.map_add_object_spot_ser(npc_pos.id, spot, text)
end
  Злобная реклама
Четверг, 29.09.2016, 12:48
Статус:
Сообщений: 666
Регистрация: 09.08.2015
Российская Федерация  makdm
Четверг, 29.09.2016, 13:26 | Сообщение # 4070
Время Альянса
Статус:
Опытный:
Сообщений: 1787
Награды: 19
Регистрация: 22.11.2012

Цитата _S_k_i_F_ ()
как сделать так чтобы она работала и для онлайн, и для оффлайн объекта?

Никак не сделать.
В секцию НПС введите дополнительный параметр, например

name = st_jup_a12_stalker_assaulter_name

Из секции прочитаете этот параметр и вставите в свой скрипт для вывода text.
  Злобная реклама
Четверг, 29.09.2016, 13:26
Статус:
Сообщений: 666
Регистрация: 22.11.2012
Российская Федерация  Mr_KpuBoPyK
Четверг, 29.09.2016, 19:10 | Сообщение # 4071
Статус:
Неопытный:
Сообщений: 544
Награды: 3
Регистрация: 24.03.2014

Здравствуйте. Взял я значит такую функцию:
Код
function money_gg(first_speaker, second_speaker)
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 1000)
end

И хочу поставить в диалог. Вот вопрос: Нужно использовать <action></action> ?? Или совсем другое?
P.S. Начал осваивать скрипты))
-------------------------------------------------------------------------
И могу ли я в одном диалоге или нескольких использовать одну и ту же функцию?
Сообщение отредактировал PRO100_STALKER - Четверг, 29.09.2016, 19:13
  Злобная реклама
Четверг, 29.09.2016, 19:10
Статус:
Сообщений: 666
Регистрация: 24.03.2014
Российская Федерация  Suhar_
Четверг, 29.09.2016, 19:16 | Сообщение # 4072
Статус:
Новичок:
Сообщений: 283
Награды: 3
Регистрация: 11.03.2016

Уважаемые скриптеры, вопрос такого характера.
Имеется довольно большая таблица строковых и числовых данных примерно следующего вида.
table = {}
table[npc_id] = {}
table[npc_id]["param_1"] = "lol"
table[npc_id]["param_2"] = 100500
Почти для кадого НПС в соответствии с айди задается ряд параметров, которые хранятся в этой таблице.
Таблица должна сохраняться на всем протяжении игры.
Собственно возник вопрос о сохранении этой таблицы.
Использовать для этих целей конструкцию db.storage[npc_id] невозможно, т.к. существует множество (как много - неизвестно) функций, которые постоянно обращаются к этой конструкции, и если конструкция ~= nil, то пытаются из нее получить какие-то свои значения, что естественно приводит к вылету.
Есть мысль насильно создать в db.storage ячейку [65537] и записать таблицу туда. Другой вариант - записывать все это безобразие в db.storage[db.actor:id()].pstor["table"]. Хотел бы узнать, не повлечет ли за собой негативных последствий запись таких больших таблиц в db.storage?
Или быть может есть какие-то другие нюансы, которые я не учел? Есть ли другие методы сохранения переменных?

Добавлено (29.09.2016, 19:16)
---------------------------------------------
PRO100_STALKER, в диалоге прописывается так: <action>script_name.function_name</action> script_name - имя файла, содержащего функцию
function_name - имя функции

  Злобная реклама
Четверг, 29.09.2016, 19:16
Статус:
Сообщений: 666
Регистрация: 11.03.2016
Украина  _S_k_i_F_
Четверг, 29.09.2016, 19:19 | Сообщение # 4073
Золотой Обоз
Статус:
Опытный:
Сообщений: 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 | Сообщение # 4074
Статус:
Неопытный:
Сообщений: 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 | Сообщение # 4075
Статус:
Новичок:
Сообщений: 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 | Сообщение # 4076
Статус:
Неопытный:
Сообщений: 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 | Сообщение # 4077
Статус:
Новичок:
Сообщений: 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 | Сообщение # 4078
Статус:
Неопытный:
Сообщений: 544
Награды: 3
Регистрация: 24.03.2014

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

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