Случайная подборка модов
Волей Случая
3.5
S.T.A.L.K.E.R. F.M.
4.4
Another Zone Mod. Пролог
4.2
Эпизоды жизни Мерка
3.0
Камень Преткновения. Пролог
4.1
Начало. Пролог Проекта Отступник
3.2
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
Архив - только для чтения
⚙ Модострой: Вопросница
Российская Федерация  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
Поиск: