Случайная подборка модов
Золотой обоз. Часть первая
3.5
Зона обр.2010г.
3.1
Reach mod + Slenderman
3.5
Old Good Stalker Mod v2.4 Gold
4.2
Секрет Дианы
2.2
Новый Арсенал 5.0
3.6
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
Архив - только для чтения
⚙ Модострой: Вопросница
Российская Федерация  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
Российская Федерация  FonSwong
Понедельник, 17.10.2016, 19:20 | Сообщение # 4261
Статус:
Опытный:
Сообщений: 1593
Награды: 1
Регистрация: 21.12.2014

Цитата makdm ()
Аномалии вообще к нодам ( к АИ-сетке ) не привязаны никак.

Ну я хотел их использовать как источник координат
Цитата makdm ()
1,5 года назад сделали спавн аномалий по рандомным координатам локации и ни к каким нодам не привязывались

Вот на этом месте поподробнее
Сообщение отредактировал FonSwong - Понедельник, 17.10.2016, 19:21
  Злобная реклама
Понедельник, 17.10.2016, 19:20
Статус:
Сообщений: 666
Регистрация: 21.12.2014
Российская Федерация  makdm
Понедельник, 17.10.2016, 19:25 | Сообщение # 4262
Время Альянса
Статус:
Опытный:
Сообщений: 1787
Награды: 19
Регистрация: 22.11.2012

Цитата FonSwong ()
Вот на этом месте поподробнее

Подробнее, чем написаны скрипты в ПТО всё равно не получится. Открываете папку скриптс, смотрите как это сделано, переносите к себе. Если что-то нужно, то дополняете или улучшаете.
Сообщение отредактировал makdm - Понедельник, 17.10.2016, 19:26
  Злобная реклама
Понедельник, 17.10.2016, 19:25
Статус:
Сообщений: 666
Регистрация: 22.11.2012
Украина  _S_k_i_F_
Понедельник, 17.10.2016, 19:26 | Сообщение # 4263
Золотой Обоз
Статус:
Опытный:
Сообщений: 1311
Награды: 9
Регистрация: 09.08.2015

Такой вопрос: использую в Гуи листбокс. В коллбеке на клик по элементу листбокса проверяю
Код
local ind = self.inflist:GetSelectedIndex()
if ind == 0 then

Но вылетает с логом attenp to call method 'GetSelectedIndex'
Как правильно проверить индекс элемента листбокса? Зараннее спасибо!
  Злобная реклама
Понедельник, 17.10.2016, 19:26
Статус:
Сообщений: 666
Регистрация: 09.08.2015
Российская Федерация  denis2000
Понедельник, 17.10.2016, 20:14 | Сообщение # 4264
Время Альянса
Статус:
Ветеран:
Сообщений: 4070
Награды: 16
Регистрация: 19.07.2013

_S_k_i_F_, Как определен и инициализирован self.inflist?
  Злобная реклама
Понедельник, 17.10.2016, 20:14
Статус:
Сообщений: 666
Регистрация: 19.07.2013
Российская Федерация  castle
Понедельник, 17.10.2016, 21:06 | Сообщение # 4265
Статус:
Новичок:
Сообщений: 262
Награды: 2
Регистрация: 11.01.2014

Платформа ЗП.
Эх давненько я сталкером не занимался, накопились вопросы...

1. Где activate_scheme у схемы companion? Сюдя по этому куску в xr_logic


она должна ведь быть.

Косяк разрабов?

2. Как я понял, у объекта cCar нет метода relation, как мне узнать что объект враг в усл схемы

3.Какой функцией можно получить всех и даже на других локациях макс\мин level и game vertex на старте игры.

Заранее спасибо!
Сообщение отредактировал castle - Понедельник, 17.10.2016, 21:08
  Злобная реклама
Понедельник, 17.10.2016, 21:06
Статус:
Сообщений: 666
Регистрация: 11.01.2014
Российская Федерация  makdm
Понедельник, 17.10.2016, 21:34 | Сообщение # 4266
Время Альянса
Статус:
Опытный:
Сообщений: 1787
Награды: 19
Регистрация: 22.11.2012

Цитата castle ()
Где activate_scheme у схемы companion?

Эти методы вызываются для установки начальных параметров первыми до вызова метода UPDATE при переключении на схему.
В схеме companion параметры вынесены из класса в локальные переменные:

поэтому вызов метода activate_scheme становится не нужным.

Цитата castle ()
Как я понял, у объекта cCar нет метода relation, как мне узнать что объект враг в усл схемы

Бронетранспортёры, стационарные пулемёты, вертолёты в Сталкере живут своей жизнью и ни к одной из группировок не относятся.
Кого назначите врагом, того и будут "молотить".
Скриптом можно отнести их к определённой группировке и дописАть это в логику, тогда при работе логики будет идти проверка на relation и принятие решения об атаке НПС.
Всё это делать ручками.

Цитата castle ()
Какой функцией можно получить всех и даже на других локациях макс\мин level и game vertex на старте игры.


Код
local level = level.name()
local gv_id = 0
    local lv_id = 0
    while game_graph():valid_vertex_id( gv_id ) do
  local level = alife():level_name( game_graph():vertex( gv_id ):level_id() )
  if level == level_name then
   lv_id = game_graph():vertex( gv_id ):level_vertex_id()
   break
  end
    gv_id = gv_id + 1
    end
  Злобная реклама
Понедельник, 17.10.2016, 21:34
Статус:
Сообщений: 666
Регистрация: 22.11.2012
Украина  _S_k_i_F_
Понедельник, 17.10.2016, 22:42 | Сообщение # 4267
Золотой Обоз
Статус:
Опытный:
Сообщений: 1311
Награды: 9
Регистрация: 09.08.2015

denis2000,
Код
self.inflist    = xml:InitListBox("actor_info:list_info", self.actor_info)
self:Register(self.inflist, "listbox")

self:AddCallback("listbox", ui_events.LIST_ITEM_CLICKED, self.Element_clicked, self)

Добавлено (17.10.2016, 22:42)
---------------------------------------------
Вот если что весь скрипт и xml

Код
class "ui_actor_info" (CUIScriptWnd)

function ui_actor_info:__init() super()
    self:InitControls()
    self:InitCallBacks()
    self:Update()
end

function ui_actor_info:__finalize()
end

function ui_actor_info:InitControls()
local xml = CScriptXmlInit()
self:SetWndRect(Frect():set(0,0,1024,768))
xml:ParseFile("ui_actor_info.xml")
self.actor_info = xml:InitStatic("actor_info",self)
self.button_close = xml:Init3tButton ("actor_info:btn_close",self.actor_info)
self:Register (self.button_close, "button_close")
self.inflist    = xml:InitListBox("actor_info:list_info", self.actor_info)
self:Register(self.inflist, "list_info")
self.infopole    = xml:InitEditBox("actor_info:infopole", self.actor_info)
end

function ui_actor_info:InitCallBacks()
self:AddCallback("list_info", ui_events.LIST_ITEM_CLICKED, self.Element_clicked, self)
self:AddCallback("button_close", ui_events.BUTTON_CLICKED, self.on_button_close_clicked, self)
end

function ui_actor_info:Update()
    if not has_alife_info("actor_info_thoughts_title_0") then
  self.inflist:AddTextItem(game.translate_string("actor_info_thoughts_title_0"))
  give_info("actor_info_thoughts_title_0")
    end
    if has_alife_info("tp_south_blokpost_napadenie_dragyn_2_dialog") and not has_alife_info("actor_info_thoughts_title_1") then
  self.inflist:AddTextItem(game.translate_string("actor_info_thoughts_title_1"))
  give_info("actor_info_thoughts_title_1")
    end
end

function ui_actor_info:Element_clicked()
    if self.inflist:GetSize()==0 then return end
    self.item = self.inflist:GetSelectedItem()
    self.inflist = self.item:GetTextItem()
    
    local ind = self.inflist:GetSelectedIndex()
  if ind == 0 then
   self.infopole:SetText(game.translate_string("actor_info_thoughts_descr_0"))
   elseif ind == 1 then
   self.infopole:SetText(game.translate_string("actor_info_thoughts_descr_1"))
  end
end

function ui_actor_info <img src="/.s/sm/23/surprised.gif" border="0" align="absmiddle" alt="surprised" /> n_button_close_clicked()
self:HideDialog()
    for i=0,1 do
  disable_info("actor_info_thoughts_title_"..i)
    end
end

function run_ui_actor_info(folder)
    folder:ShowDialog(true)    
end


Код
<?xml version="1.0" encoding="windows-1251"?>
<gui>
<actor_info x="242" y="192" width="547" height="464" stretch="1">
<texture x="0" y="0" width="547" height="464">ui\ui_actor_info</texture>   
  <btn_close x="300" y="377" width="125" height="20">
      <texture_e>ui_mod_button3_e</texture_e>
      <texture_t>ui_mod_button3_t</texture_t>
      <texture_h>ui_mod_button3_h</texture_h>
  <text font="letterica16">tresure_ruck_close</text>
     </btn_close>
  <infopole x="205" y="65" width="303" height="294">
           <text font="letterica18" r="210" g="210" b="210" align="l"/>        
        </infopole>
        <list_info x="18" y="88" width="176" height="306" always_show_scroll="1" can_select="1" right_ident="0" left_ident="0" top_indent="0" bottom_indent="0" vert_interval="0"/>  
</actor_info>
</gui>
  Злобная реклама
Понедельник, 17.10.2016, 22:42
Статус:
Сообщений: 666
Регистрация: 09.08.2015
Российская Федерация  denis2000
Вторник, 18.10.2016, 09:44 | Сообщение # 4268
Время Альянса
Статус:
Ветеран:
Сообщений: 4070
Награды: 16
Регистрация: 19.07.2013

_S_k_i_F_, Все вроде логично и верно, кроме этого: вы переопределяете self.inflist?
Код
self.inflist = self.item:GetTextItem()

Хотя инициализировали верно:
Код
self.inflist    = xml:InitListBox("actor_info:list_info", self.actor_info)
  Злобная реклама
Вторник, 18.10.2016, 09:44
Статус:
Сообщений: 666
Регистрация: 19.07.2013
Украина  _S_k_i_F_
Вторник, 18.10.2016, 09:51 | Сообщение # 4269
Золотой Обоз
Статус:
Опытный:
Сообщений: 1311
Награды: 9
Регистрация: 09.08.2015

denis2000, то есть должно быть
Код
self.inflist = self.list_info:GetTextItem()

?
  Злобная реклама
Вторник, 18.10.2016, 09:51
Статус:
Сообщений: 666
Регистрация: 09.08.2015
Российская Федерация  denis2000
Вторник, 18.10.2016, 09:57 | Сообщение # 4270
Время Альянса
Статус:
Ветеран:
Сообщений: 4070
Награды: 16
Регистрация: 19.07.2013

_S_k_i_F_, Нет переопределения листбокса в другой элемент вообще не должно быть!
  Злобная реклама
Вторник, 18.10.2016, 09:57
Статус:
Сообщений: 666
Регистрация: 19.07.2013
Украина  _S_k_i_F_
Вторник, 18.10.2016, 10:09 | Сообщение # 4271
Золотой Обоз
Статус:
Опытный:
Сообщений: 1311
Награды: 9
Регистрация: 09.08.2015

denis2000, теперь все листбокс работает
Код
class "ui_actor_info" (CUIScriptWnd)

function ui_actor_info:__init() super()
    self:InitControls()
    self:InitCallBacks()
    self:Update()
end

function ui_actor_info:__finalize()
end

function ui_actor_info:InitControls()
local xml = CScriptXmlInit()
self:SetWndRect(Frect():set(0,0,1024,768))
xml:ParseFile("ui_actor_info.xml")
self.actor_info = xml:InitStatic("actor_info",self)
self.button_close = xml:Init3tButton ("actor_info:btn_close",self.actor_info)
self:Register (self.button_close, "button_close")
self.inflist    = xml:InitListBox("actor_info:listbox", self.actor_info)
self:Register(self.inflist, "listbox")
self.infopole    = xml:InitEditBox("actor_info:infopole", self.actor_info)
end

function ui_actor_info:InitCallBacks()
self:AddCallback("listbox", ui_events.LIST_ITEM_CLICKED, self.Element_clicked, self)
self:AddCallback("button_close", ui_events.BUTTON_CLICKED, self.on_button_close_clicked, self)
end

function ui_actor_info:Update()
    if not has_alife_info("actor_info_thoughts_title_0") then
  self.inflist:AddTextItem(game.translate_string("actor_info_thoughts_title_0"))
  give_info("actor_info_thoughts_title_0")
    end
    if has_alife_info("tp_south_blokpost_napadenie_dragyn_2_dialog") and not has_alife_info("actor_info_thoughts_title_1") then
  self.inflist:AddTextItem(game.translate_string("actor_info_thoughts_title_1"))
  give_info("actor_info_thoughts_title_1")
    end
end

function ui_actor_info:Element_clicked()
    if self.inflist:GetSize()==0 then return end
    self.item = self.inflist:GetSelectedItem()
    self.inflist_text = self.item:GetTextItem()
    
    local ind = self.inflist:GetSelectedIndex()
  if ind == 0 then
   self.infopole:SetText(game.translate_string("actor_info_thoughts_descr_0"))
   elseif ind == 1 then
   self.infopole:SetText(game.translate_string("actor_info_thoughts_descr_1"))
  end
end

function ui_actor_info <img src="/.s/sm/23/surprised.gif" border="0" align="absmiddle" alt="surprised" /> n_button_close_clicked()
self:HideDialog()
    for i=0,1 do
  disable_info("actor_info_thoughts_title_"..i)
    end
end

function run_ui_actor_info(folder)
    folder:ShowDialog(true)    
end

Но появились еще две проблемы - почему-то не работает кнопка - уже вроде проверял все. И можно как-то текст размещать в текстбоксе равномерно, то есть чтоб не посреди бокса был кусок текста, а чтоб он от начала текстбокса и с переходом на новую строку. Такое возможно?
  Злобная реклама
Вторник, 18.10.2016, 10:09
Статус:
Сообщений: 666
Регистрация: 09.08.2015
Российская Федерация  xr_Sanya
Вторник, 18.10.2016, 11:07 | Сообщение # 4272
Статус:
Бывалый:
Сообщений: 876
Награды: 4
Регистрация: 19.08.2015

Всем привет , подскажите в чем может быть проблема?
Получаю вылет спустя ~ 5 мин игры.
Почемуто переполняется стэк, но как узнать в чем причина?
Логи чистые
Код
! [LUA] SCRIPT RUNTIME ERROR
! [LUA] stack overflow
! [SCRIPT ERROR]: stack overflow

FATAL ERROR

[error]Expression : <no expression>
[error]Function : CScriptEngine::lua_error
[error]File : ..\xrServerEntities\script_engine.cpp
[error]Line : 193
[error]Description : fatal error
[error]Arguments : LUA error: stack overflow

stack trace:

0023:00B771FC xrCore.dll, xrDebug::fatal()
0023:0A509BBC xrGame.dll, CDialogHolder::IgnorePause()
0023:00436DCF xrEngine.exe, CRenderDevice::SecondaryThreadProc()
0023:00B7C60C xrCore.dll, thread_spawn()
0023:0FBEC934 MSVCR120.dll, beginthread()
0023:0FBEC9FD MSVCR120.dll, endthread()
0023:757538F4 KERNEL32.DLL, BaseThreadInitThunk()
0023:778E5DE3 ntdll.dll, RtlUnicodeStringToInteger()
0023:778E5DAE ntdll.dll, RtlUnicodeStringToInteger()
Сообщение отредактировал xr_Sanya - Вторник, 18.10.2016, 11:14
  Злобная реклама
Вторник, 18.10.2016, 11:07
Статус:
Сообщений: 666
Регистрация: 19.08.2015
Российская Федерация  Neptun
Вторник, 18.10.2016, 11:55 | Сообщение # 4273
Связной
Статус:
Бывалый:
Сообщений: 672
Награды: 9
Регистрация: 25.03.2012

Цитата _S_k_i_F_ ()
Но появились еще две проблемы - почему-то не работает кнопка - уже вроде проверял все.

У тебя написано в коде:
Код
self:AddCallback("button_close", ui_events.BUTTON_CLICKED, self.on_button_close_clicked, self)

Но далее ты не создал эту секцию "on_button_close_clicked".
Цитата _S_k_i_F_ ()
а чтоб он от начала текстбокса и с переходом на новую строку. Такое возможно?

Хм, то есть выравнивание текста по ширине? Не видел такого, но ведь текст в принципе переносится? Если нет, то в "infopole" (если это она, конечно, вызывает на экран текст) добавь эту переменную:
Код
complex_mode="1"
Сообщение отредактировал mmihaill - Вторник, 18.10.2016, 12:00
  Злобная реклама
Вторник, 18.10.2016, 11:55
Статус:
Сообщений: 666
Регистрация: 25.03.2012
Российская Федерация  denis2000
Вторник, 18.10.2016, 14:00 | Сообщение # 4274
Время Альянса
Статус:
Ветеран:
Сообщений: 4070
Награды: 16
Регистрация: 19.07.2013

Цитата mmihaill ()
Но далее ты не создал эту секцию "on_button_close_clicked".

Не секцию, а метод и он присутствует в коде (если отбросить автозамену смайлов). Почему не работает непонятно: колбек зарегистрирован метод присутствует.
_S_k_i_F_, Для выравнивания текста требуется создать внутри тега листбокса тег текста и вписать в него желаемые параметры в частности перенос по словам включается параметром complex_mode="1" (спс. mmihaill)


Цитата xr_Sanya ()
Почемуто переполняется стэк, но как узнать в чем причина?

Переполняется из-за кривого скрипта, логики и тд. и тп. Как узнать - выворачивать все наизнанку в поисках проблемного кода.
Сообщение отредактировал denis2000 - Вторник, 18.10.2016, 14:01
  Злобная реклама
Вторник, 18.10.2016, 14:00
Статус:
Сообщений: 666
Регистрация: 19.07.2013
Российская Федерация  xr_Sanya
Вторник, 18.10.2016, 14:06 | Сообщение # 4275
Статус:
Бывалый:
Сообщений: 876
Награды: 4
Регистрация: 19.08.2015

Цитата denis2000 ()
выворачивать все наизнанку в поисках проблемного кода.

biggrin Печаль у меня только кода на 1мб
  Злобная реклама
Вторник, 18.10.2016, 14:06
Статус:
Сообщений: 666
Регистрация: 19.08.2015
Поиск: