Войти на сайт Регистрация Лента форума Пользователи Правила сайта Поиск по форуму
Модератор форума: denis2000, FantomICW  
Модостроение. Общие вопросы и ответы
denis2000Дата: Сб, 15.06.2013, 11:51 | Сообщение # 1
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Помощь тем кто хочет знать больше о игре и модах

Если у вас появились вопросы по модостроению в игре S.T.A.L.K.E.R. Задавайте их в этой теме - умные головы,
модосторители и просто разбирающиеся в программировании люди вам ответят.


Много интересного материала здесь (wiki), Lua_help.script, Help из SDK 0.7

Сборник модостроения ЗП v10.10.11 (автор: XOBAH): *.CHM, *.HTML
[cut noguest=Если у вас не открывается файл CHM]Если у вас не открывается файл:
1. Запустите [Пуск]=>[Выполнить] (либо хот-кей [WIN]+[R])
2. Введите команду (без кавычек) "regsvr32 %windir%\system32\hhctrl.ocx"
3. Если вылезло окно об успешном завершении вы все сделали правильно и можете перезагружать компьютер (а может и не надо)
Также: файлы МОГУТ не открываться если в пути к файлу есть: символы кириллицы, "_", "#"
Также: есть не стандартные программы-просмоторщики CHM файлов. Например: FBReader[/cut]
[cut=Где найти лог игры после вылета]Что такое LOG ошибки, и как мне его найти?
Это система отладки происходивших вылетов, которая подается игрой в форме текста, хотя не всегда.
Для того чтоб найти LOG необходимо зайти вот сюда:

В Win хр лог находится:

C:\Documents and Settings\All Users\Документы\S.T.A.L.K.E.R. - Зов Припяти\logs

Затем открываете первый файл в формате TXT, и в нем отбираете с низу 25 строчек. После кидаете эти 25 строчек в сообщение на форум.

В Win7 лог находится C:\Users\Public\Documents\S.T.A.L.K.E.R. - Зов Припяти\logs

Путь к папке с логом можно найти открыв файл fsgame.ltx который находится в корневой директории ЗП, за это отвечает строка:
...
$app_data_root$ = true | false| $fs_root$| users\
(тут мы указываем что папка пользователя, будет хранится рядом с Fsgame.ltx)
...
$logs$ = true| false| $app_data_root$| logs\
(а тут мы указываем что в папке пользователя, в подпапке Logs будут храниться наши логи)
...
[/cut][cut=Получение более подробной информации о вылете (ХОВАН)]
Открываем файл _g.script и ищем такую функцию: function abort(fmt, ...)
Там есть заккомментированная строчка "--error_log(reason)", ее и надо расскомментировать, должно получиться вот так:
Код
function abort(fmt, ...)
                     local reason = string.format(fmt, ...)
                     error_log(reason)
end

Вот для примера два одинаковых вылета, первый с функцией по умолчанию, второй - с поправленной функцией

Первый:
Код
Expression    : !m_error_code
Function      : raii_guard::~raii_guard
File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line          : 748
Description   : ....a.l.k.e.r. - Зов Припяти\gamedata\scripts\_g.script:478: bad argument #2 to 'format' (string expected, got nil)

Второй:
Код
Expression    : 0
Function      : ErrorLog
File          : D:\prog_repository\sources\trunk\xrServerEntities\script_engine_script.cpp
Line          : 49
Description   : 'Attempt to read a non-existant string field 'path_walk' in section 'walker@mechanic'

[/cut]


Перед тем, как задать вопрос в этой теме, прочтите все предыдущие страницы,
статьи в wiki по ссылке из шапки и соседнюю тему "Курс молодого бойца",
возможно Ваш вопрос уже рассматривался.


Если произошел вылет - выкладываем лог! Вопрос ставим четко, не забываем указывать версию игры, установленные моды их версии, установленные фиксы модов и подробно ваши правки.
Помните чем подробнее вопрос, тем точнее ответ.


Посты, для которых есть свои категории, из этой темы будут удаляться или перемещаться в соответсвующую тему. Персональных извещений в ЛС о переносе\удалении поста не будет, ищите сами. Учитывайте, что в системах Ucoz тема не обновляется в статистике при переносе поста.
Посты, написанные здесь-же после переноса, будут расцениваться как кросспостинг, со всеми вытекающими


[cut noguest=Первый юбилей нашей темы]

Здравствуйте господа модостроители, и все так или иначе причастные к этому.
Нашей теме исполнился 1 год.
От души поздравляю Всех Вас дорогие друзья, творческих успехов.
Хочу так же выразить отдельную благодарность denis2000 и ХОВАН.

tracker 23.06.11



[/cut]
 
asd123Дата: Чт, 25.12.2014, 23:13 | Сообщение # 901
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
Награды: 10
Репутация: [ 423 ]

Цитата denis2000 ()
Как же вы такого добились?

lol Сам не знаю. Все началось после того, как я научился распаковывать all.spawn laugh


У мутантов тоже есть группировки. © Движок X-Ray




Сообщение отредактировал asd123 - Чт, 25.12.2014, 23:14
 
suhar_Дата: Пт, 26.12.2014, 20:33 | Сообщение # 902
Бывалый
Пользователи
Сообщений: 106
Награды: 0
Репутация: [ 0 ]

Можно ли в условном операторе использовать конструкцию или (or)?
Вот [cut=кусок скрипта]if (item_name=="ammo_bag_01") or (item_name=="ammo_bag_02") or (item_name=="ammo_bag_03") or (item_name=="ammo_bag_04") then
param_m = math.random(1,16)
if (param_m == 1) or (param_m == 2) then
give_object_to_actor("ammo_5.45x39_fmj", 3)
give_object_to_actor("ammo_5.45x39_ap", 2)
give_object_to_actor("ammo_5.45x39_7h39", 2)
end
if (param_m == 3) or (param_m == 4) then
give_object_to_actor("ammo_5.56x45_ss190", 3)
give_object_to_actor("ammo_5.56x45_ap", 2)
give_object_to_actor("ammo_5.56x45_mk262", 2)
end
if param_m == 5 then
give_object_to_actor("ammo_9x39_pab9", 2)
give_object_to_actor("ammo_9x39_ap", 2)
give_object_to_actor("ammo_9x39_sp5", 2)
end
if param_m == 6 then
give_object_to_actor("ammo_9x39_ap", 3)
give_object_to_actor("ammo_9x39_sp5", 4)
end
if param_m == 7 then
give_object_to_actor("ammo_pkm_100", 2)
give_object_to_actor("ammo_7.62x54_ap", 5)
end
if param_m == 8 then
give_object_to_actor("ammo_7.62x54_7h1", 4)
give_object_to_actor("ammo_7.62x54_7h14", 3)
give_object_to_actor("ammo_7.62x54_ap", 3)
end
if (param_m == 9) or (param_m == 10) then
give_object_to_actor("ammo_12x70_buck", 4)
give_object_to_actor("ammo_12x76_zhekan", 4)
give_object_to_actor("ammo_12x76_dart", 3)
end
if param_m == 11
give_object_to_actor("ammo_11.43x23_fmj", 7)
give_object_to_actor("ammo_11.43x23_hydro", 6)
give_object_to_actor("ammo_5.7x28", 4)
end
if param_m == 12
give_object_to_actor("ammo_9x19_fmj", 7)
give_object_to_actor("ammo_9x19_pbp", 7)
give_object_to_actor("ammo_9x19_hp", 7)
end
if param_m == 13
give_object_to_actor("ammo_9x18_fmj", 9)
give_object_to_actor("ammo_9x18_pmm", 8)
give_object_to_actor("ammo_9x18_pbp", 8)
end
if param_m == 14
give_object_to_actor("ammo_vog-25", 20)
end
if param_m == 15
give_object_to_actor("ammo_m209", 20)
end
if param_m == 16
give_object_to_actor("grenade_f1", 5)
give_object_to_actor("grenade_rgd5", 5)
give_object_to_actor("grenade_gd-05", 3)
end
end[/cut]
При тесте вылет со ссылкой на файл, содержащий этот скрипт. Задумка такая. При использовании ящика (4 разных типа), в рюкзак спавнится рандомный набор боеприпасов. Чтобы отрегулировать вероятность появления тех или иных предметов ввожу дополнительный параметр or (param_m == 2), как например с припасами 5.45x39
[cut=Лог]Expression : !m_error_code
Function : raii_guard::~raii_guard
File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line : 748
Description : ...mes\stalker cop\gamedata\scripts\bind_stalker.script:187: attempt to index global 'lex_inventory' (a nil value)[/cut]
 
makdmДата: Пт, 26.12.2014, 20:55 | Сообщение # 903
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

suhar_, у вас куча ошибок в строках

Цитата suhar_ ()
if param_m == 11

Цитата suhar_ ()
f param_m == 12

Цитата suhar_ ()
if param_m == 13

Цитата suhar_ ()
if param_m == 14

Цитата suhar_ ()
f param_m == 15

Цитата suhar_ ()
if param_m == 16


А где THEN ?


Терпение......
И все получится!
 
sergej5500Дата: Пт, 26.12.2014, 22:11 | Сообщение # 904
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Добрый вечер. Столкнулся с таким вылетом.

[cut=Лог]FATAL ERROR

[error]Expression : !phrase_dialog->m_PhraseVector.empty()
[error]Function : CPhraseDialog::SayPhrase
[error]File : D:\prog_repository\sources\trunk\xrGame\PhraseDialog.cpp
[error]Line : 146
[error]Description : No available phrase to say, dialog[rasvet_addon_pursue_dialog]


stack trace:[/cut]

Вроде бы нет доступных строк в диалоге.

[cut=Диалог]<dialog id="rasvet_addon_pursue_dialog">
<dont_has_info>rasvet_add_pursue_final</dont_has_info>
<phrase_list>
<phrase id="25">
<text>rasvet_addon_pursue_dialog_25</text>
<next>26</next>
<next>27</next>
<next>28</next>
</phrase>
<phrase id="26">
<text>rasvet_addon_pursue_dialog_26</text>
<has_info>rasvet_add_pursue_story_1</has_info>
<next>29</next>
<next>30</next>
</phrase>
<phrase id="27">
<text>rasvet_addon_pursue_dialog_27</text>
<has_info>rasvet_add_pursue_story_2</has_info>
<next>29</next>
<next>30</next>
</phrase>
<phrase id="28">
<text>rasvet_addon_pursue_dialog_28</text>
<has_info>rasvet_add_pursue_story_3</has_info>
<next>29</next>
<next>30</next>
</phrase>
<phrase id="14">
<text>rasvet_addon_pursue_dialog_14</text>
<next>20</next>
<next>22</next>
</phrase>
<phrase id="29">
<text>rasvet_addon_pursue_dialog_29</text>
<give_info>rasvet_add_pursue_final_2</give_info>
<give_info>rasvet_add_pursue_final</give_info>
</phrase>
<phrase id="30">
<text>rasvet_addon_pursue_dialog_30</text>
<next>20</next>
<next>22</next>
</phrase>
<phrase id="1">
<text></text>
<next>2</next>
<next>24</next>
</phrase>
<phrase id="24">
<text>rasvet_addon_pursue_dialog_24</text>
<has_info>rasvet_add_pursue_logic_2</has_info>
<next>25</next>
</phrase>
<phrase id="2">
<text>rasvet_addon_pursue_dialog_2</text>
<has_info>rasvet_add_pursue_logic_1</has_info>
<next>4</next>
</phrase>
<phrase id="6">
<text>rasvet_addon_pursue_dialog_6</text>
<has_info>rasvet_add_pursue_story_2</has_info>
<next>8</next>
</phrase>
<phrase id="7">
<text>rasvet_addon_pursue_dialog_7</text>
<has_info>rasvet_add_pursue_story_3</has_info>
<next>8</next>
</phrase>
<phrase id="4">
<text>rasvet_addon_pursue_dialog_4</text>
<next>5</next>
<next>6</next>
<next>7</next>
</phrase>
<phrase id="5">
<text>rasvet_addon_pursue_dialog_5</text>
<has_info>rasvet_add_pursue_story_1</has_info>
<next>8</next>
</phrase>
<phrase id="8">
<text>rasvet_addon_pursue_dialog_8</text>
<next>9</next>
<next>10</next>
<next>11</next>
</phrase>
<phrase id="10">
<text>rasvet_addon_pursue_dialog_10</text>
<has_info>rasvet_add_pursue_money_2</has_info>
<next>12</next>
<next>13</next>
<next>14</next>
</phrase>
<phrase id="11">
<text>rasvet_addon_pursue_dialog_11</text>
<has_info>rasvet_add_pursue_money_3</has_info>
<next>12</next>
<next>13</next>
<next>14</next>
</phrase>
<phrase id="9">
<text>rasvet_addon_pursue_dialog_9</text>
<has_info>rasvet_add_pursue_money_1</has_info>
<next>12</next>
<next>13</next>
<next>14</next>
</phrase>
<phrase id="12">
<text>rasvet_addon_pursue_dialog_12</text>
<precondition>dialogs_rasvet_addon.rasvet_add_pursue_has_money</precondition>
<action>dialogs_rasvet_addon.rasvet_add_pursue_give_money</action>
<next>15</next>
</phrase>
<phrase id="15">
<text>rasvet_addon_pursue_dialog_15</text>
<action>dialogs_rasvet_addon.rasvet_add_pursue_reward</action>
<next>16</next>
</phrase>
<phrase id="16">
<text>rasvet_addon_pursue_dialog_16</text>
<give_info>rasvet_add_pursue_final_1</give_info>
<give_info>rasvet_add_pursue_final</give_info>
</phrase>
<phrase id="13">
<text>rasvet_addon_pursue_dialog_13</text>
<precondition>dialogs_rasvet_addon.rasvet_add_pursue_less_money</precondition>
<next>17</next>
</phrase>
<phrase id="17">
<text>rasvet_addon_pursue_dialog_17</text>
<next>18</next>
<next>19</next>
</phrase>
<phrase id="19">
<text>rasvet_addon_pursue_dialog_19</text>
<next>20</next>
<next>22</next>
</phrase>
<phrase id="22">
<text>rasvet_addon_pursue_dialog_22</text>
<has_info>rasvet_add_pursue_enemy_2</has_info>
<next>23</next>
<next>18</next>
</phrase>
<phrase id="18">
<text>rasvet_addon_pursue_dialog_18</text>
<action>dialogs_rasvet_addon.rasvet_add_pursue_grabesh</action>
<give_info>rasvet_add_pursue_final_1</give_info>
<give_info>rasvet_add_pursue_final</give_info>
</phrase>
<phrase id="23">
<text>rasvet_addon_pursue_dialog_23</text>
<give_info>rasvet_add_pursue_final</give_info>
<give_info>rasvet_add_pursue_enemy</give_info>
</phrase>
<phrase id="20">
<text>rasvet_addon_pursue_dialog_20</text>
<has_info>rasvet_add_pursue_enemy_1</has_info>
<next>21</next>
</phrase>
<phrase id="21">
<text>rasvet_addon_pursue_dialog_21</text>
<give_info>rasvet_add_pursue_final_1</give_info>
<give_info>rasvet_add_pursue_final</give_info>
</phrase>
<phrase id="0">
<text></text>
<next>1</next>
</phrase>
</phrase_list>
</dialog>[/cut]

[cut=Фразы диалога]<string id="rasvet_addon_pursue_dialog_10">
<text>20000.</text>
</string>
<string id="rasvet_addon_pursue_dialog_11">
<text>30000.</text>
</string>
<string id="rasvet_addon_pursue_dialog_12">
<text>Держи деньги.</text>
</string>
<string id="rasvet_addon_pursue_dialog_13">
<text>У меня столько нет.</text>
</string>
<string id="rasvet_addon_pursue_dialog_14">
<text>У меня своих дел полно. Разбирайтесь сами.</text>
</string>
<string id="rasvet_addon_pursue_dialog_15">
<text>Это тебе от нас в качестве благодарности.</text>
</string>
<string id="rasvet_addon_pursue_dialog_16">
<text>Благодарю.</text>
</string>
<string id="rasvet_addon_pursue_dialog_17">
<text>Тогда давай все, что есть.</text>
</string>
<string id="rasvet_addon_pursue_dialog_18">
<text>Хорошо, забирай.</text>
</string>
<string id="rasvet_addon_pursue_dialog_19">
<text>Идите, откуда пришли. Я милостыню не подаю.</text>
</string>
<string id="rasvet_addon_pursue_dialog_2">
<text>Привет, сталкер. Дело к тебе есть. Срочное.</text>
</string>
<string id="rasvet_addon_pursue_dialog_20">
<text>Не злись, приятель. Пойдем дальше.</text>
</string>
<string id="rasvet_addon_pursue_dialog_21">
<text>Бывай.</text>
</string>
<string id="rasvet_addon_pursue_dialog_22">
<text>Тогда мы обыщем твой труп. Или гони барахло.</text>
</string>
<string id="rasvet_addon_pursue_dialog_23">
<text>Ну попробуй.</text>
</string>
<string id="rasvet_addon_pursue_dialog_24">
<text>Привет, сталкер. Дело к тебе есть срочное.</text>
</string>
<string id="rasvet_addon_pursue_dialog_25">
<text>Что за дело?</text>
</string>
<string id="rasvet_addon_pursue_dialog_26">
<text>Мы идем поохотиться на мутантов. Пойдешь с нами?</text>
</string>
<string id="rasvet_addon_pursue_dialog_27">
<text>Мы идем собирать артефакты. Пойдешь с нами?</text>
</string>
<string id="rasvet_addon_pursue_dialog_28">
<text>Мы идем разбираться с нехорошими ребятами. Пойдешь с нами?</text>
</string>
<string id="rasvet_addon_pursue_dialog_29">
<text>Хорошо, пойдем.</text>
</string>
<string id="rasvet_addon_pursue_dialog_30">
<text>У меня своих дел полно.</text>
</string>
<string id="rasvet_addon_pursue_dialog_4">
<text>Что за дело.</text>
</string>
<string id="rasvet_addon_pursue_dialog_5">
<text>Наш друг пострадал в схватке с мутантами. Нужны деньги на лечение. Поможешь?</text>
</string>
<string id="rasvet_addon_pursue_dialog_6">
<text>Наш друг попал в аномалию. Серьёзно пострадал. Нужны деньги на лечение. Поможешь?</text>
</string>
<string id="rasvet_addon_pursue_dialog_7">
<text>Наш друг пострадал в перестрелке. Нужны деньги на лечение. Поможешь?</text>
</string>
<string id="rasvet_addon_pursue_dialog_8">
<text>Сколько нужно денег?</text>
</string>
<string id="rasvet_addon_pursue_dialog_9">
<text>10000.</text>
</string>[/cut]

В момент спавна сквада генерируется набор инфопорций для диалога.

[cut=Функция]function rasvet_add_pursue_global_sheme(actor,npc)
local rnd_pursue_logic=math.random(1,2)
local rnd_pursue_story=math.random(1,3)
local rnd_pursue_enemy=math.random(1,2)
local rnd_pursue_money=math.random(1,3)
if rnd_pursue_logic==1 then give_info("rasvet_add_pursue_logic_1") end
if rnd_pursue_logic==2 then give_info("rasvet_add_pursue_logic_2") end
if rnd_pursue_story==1 then give_info("rasvet_add_pursue_story_1") end
if rnd_pursue_story==2 then give_info("rasvet_add_pursue_story_2") end
if rnd_pursue_story==3 then give_info("rasvet_add_pursue_story_3") end
if rnd_pursue_enemy==1 then give_info("rasvet_add_pursue_enemy_1") end
if rnd_pursue_enemy==2 then give_info("rasvet_add_pursue_enemy_2") end
if rnd_pursue_money==1 then give_info("rasvet_add_pursue_money_1") end
if rnd_pursue_money==2 then give_info("rasvet_add_pursue_money_2") end
if rnd_pursue_money==3 then give_info("rasvet_add_pursue_money_3") end
end[/cut]

Непись подбегает к игроку и начинает диалог.

[cut=Фрагмент логики рестриктора][sr_idle@stalker_exist]
on_info = {!squad_exist(zat_stalker_pursue_squad)} sr_idle@global_timer %=rasvet_add_pursue_disable%
on_info2 = {=distance_to_obj_ge(zat_stalker_pursue_squad:225)} sr_idle@global_timer %=rasvet_add_pursue_disable =remove_squad(zat_stalker_pursue_squad)%
on_info3 = {+rasvet_add_pursue_final_1} sr_idle@postprocess_stalker %=stop_weapon_and_guidebook +rasvet_add_pursue_end%
on_info4 = {+rasvet_add_pursue_final_2} sr_idle@postprocess_stalker_teleport %=stop_weapon_and_guidebook +rasvet_add_pursue_end%
on_info5 = {!is_squad_enemy_to_actor(zat_stalker_pursue_squad) +rasvet_add_pursue_enemy} %=set_squad_goodwill(zat_stalker_pursue_squad:enemy)%

[sr_idle@postprocess_stalker]
on_game_timer = 10 | sr_idle@disable_ui_stalker %=run_postprocess(black:500021:true)%

[sr_idle@disable_ui_stalker]
on_game_timer = 10 | sr_idle@forward_game_time_stalker %=disable_ui%

[sr_idle@forward_game_time_stalker]
on_game_timer = 10 | sr_idle@enable_ui_stalker %=forward_game_time(0:30) =remove_squad(zat_stalker_pursue_squad) =rasvet_add_pursue_disable%

[sr_idle@enable_ui_stalker]
on_game_timer = 10 | sr_idle@stop_postprocess_stalker %=enable_ui%

[sr_idle@stop_postprocess_stalker]
on_game_timer = 10 | sr_idle@global_timer %=stop_postprocess(500021)%[/cut]

[cut=Логика непися][companion@companion]
gather_items_enabled = false
help_wounded_enabled = false
corpse_detection_enabled = false
sprint = true
meet = meet

[meet]
abuse = true
use = {=dist_to_actor_le(6) !actor_enemy -rasvet_add_pursue_final} self,false
allow_break = false
meet_on_talking = true
trade_enable = false

[hit]
on_info = {=hit_by_actor -rasvet_add_pursue_enemy} %+rasvet_add_pursue_enemy%

[death]
on_info = {=killed_by_actor -rasvet_add_pursue_enemy} %+rasvet_add_pursue_enemy%

;

[companion@1]:companion@companion
combat_ignore_cond = {=fighting_dist_ge(30)} true
on_info = {=dist_to_actor_le(30)} companion@2

[companion@2]:companion@companion
combat_ignore_cond = {=fighting_dist_ge(50)} true
on_info = {=dist_to_actor_ge(50)} companion@1

;

[remark@zat_add_pursue]
gather_items_enabled = false
help_wounded_enabled = false
corpse_detection_enabled = false
meet = no_meet

;

[logic@zat_add_pursue_1]
active = remark@zat_add_pursue_1
suitable = {=target_squad_name(zat_stalker_pursue_squad)} true, {=target_squad_name(zat_bandit_pursue_squad)} true
prior = 300
post_combat_time = 0,0
on_hit = hit
on_death = death

[remark@zat_add_pursue_1]:remark@zat_add_pursue
on_info = companion@1[/cut]

Диалог нормально запускается. После выдачи инфопорции rasvet_add_pursue_final_1 разговор обрывается.. Экран гаснет. Интерфейс отключается. После чего игра вылетает. Я бы понял, если бы вылет был при начале разговора. Но разговор кончается. Неписю выдается запрет говорить дальше. Он и не говорит.

В чем может быть причина?

Добавлено (26.12.2014, 22:11)
---------------------------------------------
Дополнение к предыдущему посту. С вылетом вроде разобрался.

Сразу после отключения интерфейса следует удаление сквада и сброс инфопорций диалога. После отмены сброса инфопорций вылет прекратился.

Возник новый вопрос. Сколько секунд диалог сохраняется в памяти игры?

 
makdmДата: Пт, 26.12.2014, 23:29 | Сообщение # 905
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

sergej5500, вместо

Цитата sergej5500 ()


[sr_idle@forward_game_time_stalker]
on_game_timer = 10 | sr_idle@enable_ui_stalker %=forward_game_time(0:30) =remove_squad(zat_stalker_pursue_squad) =rasvet_add_pursue_disable%

[sr_idle@enable_ui_stalker]


Попробуй так

[sr_idle@forward_game_time_stalker]
on_game_timer = 10 | sr_idle@wait_remove %=forward_game_time(0:30) =remove_squad(zat_stalker_pursue_squad)%

[sr_idle@wait_remove]
on_info = {!squad_exist(zat_stalker_pursue_squad)} sr_idle@enable_ui_stalker %=rasvet_add_pursue_disable%

[sr_idle@enable_ui_stalker]


Терпение......
И все получится!
 
asd123Дата: Сб, 27.12.2014, 06:00 | Сообщение # 906
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
Награды: 10
Репутация: [ 423 ]

О чем гласит вот такой лог? Случается частенько на Агропроме.
Код

[error]Expression    : !m_error_code
[error]Function      : raii_guard::~raii_guard
[error]File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
[error]Line          : 748
[error]Description   : ....e.r. - Зов Припяти\gamedata\scripts\xr_logic.script:610: bad argument #1 to 'pairs' (table expected, got nil)


У мутантов тоже есть группировки. © Движок X-Ray


 
makdmДата: Сб, 27.12.2014, 07:13 | Сообщение # 907
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

Цитата asd123 ()
О чем гласит вот такой лог?

О том, что у какого-то объекта была попытка переключится на несуществующую секцию логики.


Терпение......
И все получится!
 
asd123Дата: Сб, 27.12.2014, 15:02 | Сообщение # 908
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
Награды: 10
Репутация: [ 423 ]

Сделал Смарткавер на Кордоне
[cut=Тык]
[2228828282]

; cse_abstract properties
section_name = smart_cover
name = esc_test
position = -143.12516784668,-30.122798919678,-401.3186340332
direction = -4.99999987368938e-006, -0.413201004266739, 4.99999987368938e-006
version = 128
script_version = 12

; cse_alife_object properties
game_vertex_id = 1936
distance = 36.3999977111816
level_vertex_id = 109901
object_flags = 0xffffffbf

; cse_shape properties
shapes = shape0
shape0:type = sphere
shape0:offset = 0,0,0
shape0:radius = 2

; cse_smart_cover properties
description = combat_front
hold_position_time = 0
enter_min_enemy_distance = 15
exit_min_enemy_distance = 10
is_combat_cover = 1
MP_respawn = 1

; se_smart_cover properties
last_description = combat_front
loopholes = stand_front_left, 0, crouch_front_left, 0, crouch_front_right, 1, crouch_front, 1, stand_front_right, 0
[/cut]
хотелось бы узнать - для чего нужно 3 direction`a? То есть, 3 координата
И, в строке loopholes: 0 и 1 - в чем различия?

И, как добавить созданному смарт каверу возможность принимать на себя НПС во время боя?

Добавлено (27.12.2014, 15:02)
---------------------------------------------
Блин, а еще персонаж в смарт кавере не хочет в меня стрелять, хотя я сделал ему use_in_combat = true в логике

Вояка смарт каверщик

Как настроить, чтобы стрелял?


У мутантов тоже есть группировки. © Движок X-Ray




Сообщение отредактировал asd123 - Сб, 27.12.2014, 15:04
 
denis2000Дата: Сб, 27.12.2014, 15:44 | Сообщение # 909
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата asd123 ()
для чего нужно 3 direction`a? То есть, 3 координата

Углы вращения по трем осям.

Цитата asd123 ()
И, в строке loopholes: 0 и 1 - в чем различия?

Имя анимационного состояния и за ним флаг использовать его или нет.

Цитата asd123 ()
И, как добавить созданному смарт каверу возможность принимать на себя НПС во время боя?

is_combat_cover = 1 - это и есть использовать во время боя.

Цитата asd123 ()
Как настроить, чтобы стрелял?

Не использовать боевой смарт-ковер в логике НПС.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
asd123Дата: Сб, 27.12.2014, 16:08 | Сообщение # 910
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
Награды: 10
Репутация: [ 423 ]

А за что это отвечает тогда?

enter_min_enemy_distance = 15
exit_min_enemy_distance = 10


У мутантов тоже есть группировки. © Движок X-Ray




Сообщение отредактировал asd123 - Сб, 27.12.2014, 16:21
 
Kapitan_komandorДата: Сб, 27.12.2014, 16:49 | Сообщение # 911
Диггер Вольных
Вольные сталкеры
Сообщений: 12056
Награды: 15
Репутация: [ 1122 ]

Парни - а вы тут только и бываете,а как насчет команды"ИНКРУСТАТОРОВ" готовых модов,но на новых идеях.
Есть желания попробывать?

С конкретными предложениями в Конкретную тему. denis2000



Жизнь это миг.за него и держись.
 
denis2000Дата: Сб, 27.12.2014, 17:41 | Сообщение # 912
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

asd123,
enter_min_enemy_distance - минимальная дистанция до противника для входа в укрытие
exit_min_enemy_distance - минимальная дистанция до противника для выхода их укрытия


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
Danny_CrossДата: Вс, 28.12.2014, 13:38 | Сообщение # 913
Гражданский
Пользователи
Сообщений: 2
Награды: 0
Репутация: [ 0 ]

Люди, а если установлю новый ствол в в игру, мне надо начинать игру заново?

 
denis2000Дата: Вс, 28.12.2014, 14:15 | Сообщение # 914
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Danny_Cross, Если не требуется выдать ствол другим НПС или выдать в торговлю, то не понадобиться.

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
ProphetДата: Вс, 28.12.2014, 14:16 | Сообщение # 915
Сталкер
Пользователи
Сообщений: 195
Награды: 2
Репутация: [ 25 ]

Цитата Danny_Cross ()
надо начинать игру заново

Желательно.


Я - Пророк! Запомни меня!...

Сообщение отредактировал Prophet - Вс, 28.12.2014, 14:17
 
Поиск: