Войти на сайт Регистрация Лента форума Пользователи Правила сайта Поиск по форуму
Модератор форума: 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]
 
denis2000Дата: Пн, 28.11.2016, 10:02 | Сообщение # 2191
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Shyr, all.spawn выложите.

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
ShyrДата: Пн, 28.11.2016, 19:57 | Сообщение # 2192
Отмычка
Пользователи
Сообщений: 38
Награды: 4
Репутация: [ 20 ]

denis2000, ссылка на all.spawn


denis2000, простите, что я вам не сказал сразу, но это all.spawn не от чистого SGM 2.2, а от модификации S.t.a.l.k.e.r. S.n.i.p.e.r. . Возможно это внесет ясность в суть дела....


Сообщение отредактировал Shyr - Пн, 28.11.2016, 21:40
 
tan4ik75Дата: Вт, 29.11.2016, 11:47 | Сообщение # 2193
Гражданский
Пользователи
Сообщений: 8
Награды: 0
Репутация: [ 2 ]

Цитата denis2000 ()
denis2000

Здарова твой скрипт на использование предметов от зп в чн закатит
[cut noguest=Скрипт]--[[ ---------------------------------------------
File : mod_use_callback.script
Description: Колбеки на использование предметов
Author : denis2000#sigerous.ru
-------------------------------------------------]]

local active_slot = nil
local active_item_name = nil
local binoc_in_slot = nil
local name_binoc = nil
---------------------------------------------------------------------------
--Вызов колбеков использования предметов инвентаря
---------------------------------------------------------------------------
function use_inventory_item(section,self)
local item_name=section:section()
active_slot=db.actor:active_slot()
binoc_in_slot=db.actor:item_in_slot(5)
if binoc_in_slot ~= nil then
name_binoc = binoc_in_slot:section()
end

--Использован предмет Хлеб, в данный момент не используется другой анимационный предмет
if item_name=="bread" and db.actor:has_info("actor_use_anm_item") == false then
--Удалить бинокль у ГГ
if name_binoc == "wpn_binoc" then
alife():release(alife() surprised bject(db.actor surprised bject("wpn_binoc"):id()))
end
--Дать анимационный объект Хлеб
alife():create("anm_bread",db.actor tongue osition(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())
--Проверка, что ГГ назодиться в зоне без оружия
if self.weapon_hide == true then
--Позволить достать оружие
self.object:restore_weapon()
-- и выставить флаг, что по оканчании анимации оружие спрятать
db.actor:give_info_portion("use_item_need_hide_weapon")
end
--Сделать слот с Хлебом активным
db.actor:activate_slot(5)
--Проиграть звук использования Хлеба с задержкой.
snd = sound_object([[interface\inv_food]])
snd tongue lay_at_pos(db.actor, vector():set(0,0,0), 2, sound_object.s2d) --Третий параметр время задержки воспроизведения в сек
--Задать интервал времени и установить флаги используем Хлеб и используем анимационный предмет
db.actor:give_info_portion("actor_use_anm_bread")
db.actor:give_info_portion("actor_use_anm_item")
--Установить засечку начала анимации предмета
start_time_use_item = game.get_game_time()
end
--Использован предмет Аптечка, в данный момент не используется другой анимационный предмет
if string.find(item_name,"medkit") and db.actor:has_info("actor_use_anm_item") == false then
if name_binoc == "wpn_binoc" then
alife():release(alife() surprised bject(db.actor surprised bject("wpn_binoc"):id()))
end
--Проверка типа аптечки
if item_name=="medkit" then
alife():create("anm_medkit",db.actor tongue osition(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())
elseif item_name=="medkit_army" then
alife():create("anm_medkit_army",db.actor tongue osition(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())
elseif item_name=="medkit_scientic" then
alife():create("anm_medkit_scientic",db.actor tongue osition(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())
end
if self.weapon_hide == true then
self.object:restore_weapon()
db.actor:give_info_portion("use_item_need_hide_weapon")
end
db.actor:activate_slot(5)
snd = sound_object([[interface\inv_medkit]])
snd tongue lay_at_pos(db.actor, vector():set(0,0,0), 2, sound_object.s2d) --Третий параметр время задержки воспроизведения в сек
db.actor:give_info_portion("actor_use_anm_medkit")
db.actor:give_info_portion("actor_use_anm_item")
start_time_use_item = game.get_game_time()
end
--Использован предмет Колбаса, в данный момент не используется другой анимационный предмет
if item_name=="kolbasa" and db.actor:has_info("actor_use_anm_item") == false then
if name_binoc == "wpn_binoc" then
alife():release(alife() surprised bject(db.actor surprised bject("wpn_binoc"):id()))
end
alife():create("anm_kolbasa",db.actor tongue osition(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())
if self.weapon_hide == true then
self.object:restore_weapon()
db.actor:give_info_portion("use_item_need_hide_weapon")
end
db.actor:activate_slot(5)
snd = sound_object([[interface\inv_food]])
snd tongue lay_at_pos(db.actor, vector():set(0,0,0), 2, sound_object.s2d) --Третий параметр время задержки воспроизведения в сек
db.actor:give_info_portion("actor_use_anm_kolbasa")
db.actor:give_info_portion("actor_use_anm_item")
start_time_use_item = game.get_game_time()
end
--Использован предмет Энергетик, в данный момент не используется другой анимационный предмет
if item_name=="energy_drink" and db.actor:has_info("actor_use_anm_item") == false then
if name_binoc == "wpn_binoc" then
alife():release(alife() surprised bject(db.actor surprised bject("wpn_binoc"):id()))
end
alife():create("anm_energy_drink",db.actor tongue osition(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())
if self.weapon_hide == true then
self.object:restore_weapon()
db.actor:give_info_portion("use_item_need_hide_weapon")
end
db.actor:activate_slot(5)
snd = sound_object([[interface\inv_softdrink]])
snd tongue lay_at_pos(db.actor, vector():set(0,0,0), 2, sound_object.s2d) --Третий параметр время задержки воспроизведения в сек
db.actor:give_info_portion("actor_use_anm_energy_drink")
db.actor:give_info_portion("actor_use_anm_item")
start_time_use_item = game.get_game_time()
end
--Использован предмет Тушенка, в данный момент не используется другой анимационный предмет
if item_name=="conserva" and db.actor:has_info("actor_use_anm_item") == false then
if name_binoc == "wpn_binoc" then
alife():release(alife() surprised bject(db.actor surprised bject("wpn_binoc"):id()))
end
alife():create("anm_conserva",db.actor tongue osition(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())
if self.weapon_hide == true then
self.object:restore_weapon()
db.actor:give_info_portion("use_item_need_hide_weapon")
end
db.actor:activate_slot(5)
snd = sound_object([[interface\inv_food]])
snd tongue lay_at_pos(db.actor, vector():set(0,0,0), 2, sound_object.s2d) --Третий параметр время задержки воспроизведения в сек
db.actor:give_info_portion("actor_use_anm_conserva")
db.actor:give_info_portion("actor_use_anm_item")
start_time_use_item = game.get_game_time()
end
--Использован предмет Вакцина, в данный момент не используется другой анимационный предмет
if item_name=="antirad" and db.actor:has_info("actor_use_anm_item") == false then
if name_binoc == "wpn_binoc" then
alife():release(alife() surprised bject(db.actor surprised bject("wpn_binoc"):id()))
end
alife():create("anm_antirad",db.actor tongue osition(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())
if self.weapon_hide == true then
self.object:restore_weapon()
db.actor:give_info_portion("use_item_need_hide_weapon")
end
db.actor:activate_slot(5)
snd = sound_object([[interface\inv_pills]])
snd tongue lay_at_pos(db.actor, vector():set(0,0,0), 2, sound_object.s2d) --Третий параметр время задержки воспроизведения в сек
db.actor:give_info_portion("actor_use_anm_antirad")
db.actor:give_info_portion("actor_use_anm_item")
start_time_use_item = game.get_game_time()
end
--Использован предмет Водка, в данный момент не используется другой анимационный предмет
if item_name=="vodka" and db.actor:has_info("actor_use_anm_item") == false then
if name_binoc == "wpn_binoc" then
alife():release(alife() surprised bject(db.actor surprised bject("wpn_binoc"):id()))
end
alife():create("anm_vodka",db.actor tongue osition(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())
if self.weapon_hide == true then
self.object:restore_weapon()
db.actor:give_info_portion("use_item_need_hide_weapon")
end
db.actor:activate_slot(5)
snd = sound_object([[interface\inv_vodka]])
snd tongue lay_at_pos(db.actor, vector():set(0,0,0), 2, sound_object.s2d) --Третий параметр время задержки воспроизведения в сек
db.actor:give_info_portion("actor_use_anm_vodka")
db.actor:give_info_portion("actor_use_anm_item")
start_time_use_item = game.get_game_time()
end
--Использован предмет Вода, в данный момент не используется другой анимационный предмет
if item_name=="voda" and db.actor:has_info("actor_use_anm_item") == false then
if name_binoc == "wpn_binoc" then
alife():release(alife() surprised bject(db.actor surprised bject("wpn_binoc"):id()))
end
alife():create("anm_voda",db.actor tongue osition(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())
if self.weapon_hide == true then
self.object:restore_weapon()
db.actor:give_info_portion("use_item_need_hide_weapon")
end
db.actor:activate_slot(5)
snd = sound_object([[interface\inv_vodka]])
snd tongue lay_at_pos(db.actor, vector():set(0,0,0), 2, sound_object.s2d) --Третий параметр время задержки воспроизведения в сек
db.actor:give_info_portion("actor_use_anm_voda")
db.actor:give_info_portion("actor_use_anm_item")
start_time_use_item = game.get_game_time()
end

end

---------------------------------------------------------------------------
--Отработка таймеров использования предметов
---------------------------------------------------------------------------
function timer_use_item(self)
local time_to_use_bread = 23 --Игровые секунды, время использования предмета Хлеб
local time_to_use_medkit = 23 --Игровые секунды, время использования предмета Аптечка
local time_to_use_kolbasa = 30 --Игровые секунды, время использования предмета Колбаса
local time_to_use_energy_drink = 25 --Игровые секунды, время использования предмета Энергетик
local time_to_use_conserva = 35 --Игровые секунды, время использования предмета Тушенка
local time_to_use_antirad = 30 --Игровые секунды, время использования предмета Антирад
local time_to_use_vodka = 30 --Игровые секунды, время использования предмета Водка
local time_to_use_voda = 30 --Игровые секунды, время использования предмета Вода
local time_to_relax = 10 --Игровые секунды, время переключения после использования предмета
local release_item = nil
--Отработка таймеров использования предметов
if db.actor:has_info("actor_use_anm_item") then
--Отработка таймера для Хлеба
if db.actor:has_info("actor_use_anm_bread") and (start_time_use_item == nil or game.get_game_time():diffSec(start_time_use_item) >= time_to_use_bread) then
--Переключиться на старый слот
db.actor:activate_slot(active_slot)
--Установить флаг таймаута после использования предмета
db.actor:give_info_portion("use_item_relax")
--Снять флаг используем Хлеб
db.actor:disable_info_portion("actor_use_anm_bread")
--Если нужно снова прятать оружие
if db.actor:has_info("use_item_need_hide_weapon") and self.weapon_hide == true then
--Прячем его с установкой переменных
self.object:hide_weapon()
self.weapon_hide = true
end
--Cбросо флага "по оканчании анимации оружие спрятать"
db.actor:disable_info_portion("use_item_need_hide_weapon")
--Установить засечку начала таймаута после использования предмета
start_time_relax = game.get_game_time()
end
--Отработка таймера для Аптечки
if db.actor:has_info("actor_use_anm_medkit") and (start_time_use_item == nil or game.get_game_time():diffSec(start_time_use_item) >= time_to_use_medkit) then
db.actor:activate_slot(active_slot)
db.actor:give_info_portion("use_item_relax")
db.actor:disable_info_portion("actor_use_anm_medkit")
if db.actor:has_info("use_item_need_hide_weapon") and self.weapon_hide == true then
self.object:hide_weapon()
self.weapon_hide = true
end
db.actor:disable_info_portion("use_item_need_hide_weapon")
start_time_relax = game.get_game_time()
end
--Отработка таймера для Колбаса
if db.actor:has_info("actor_use_anm_kolbasa") and (start_time_use_item == nil or game.get_game_time():diffSec(start_time_use_item) >= time_to_use_kolbasa) then
db.actor:activate_slot(active_slot)
db.actor:give_info_portion("use_item_relax")
db.actor:disable_info_portion("actor_use_anm_kolbasa")
if db.actor:has_info("use_item_need_hide_weapon") and self.weapon_hide == true then
self.object:hide_weapon()
self.weapon_hide = true
end
db.actor:disable_info_portion("use_item_need_hide_weapon")
start_time_relax = game.get_game_time()
end
--Отработка таймера для Энергетик
if db.actor:has_info("actor_use_anm_energy_drink") and (start_time_use_item == nil or game.get_game_time():diffSec(start_time_use_item) >= time_to_use_energy_drink) then
db.actor:activate_slot(active_slot)
db.actor:give_info_portion("use_item_relax")
db.actor:disable_info_portion("actor_use_anm_energy_drink")
if db.actor:has_info("use_item_need_hide_weapon") and self.weapon_hide == true then
self.object:hide_weapon()
self.weapon_hide = true
end
db.actor:disable_info_portion("use_item_need_hide_weapon")
start_time_relax = game.get_game_time()
end
--Отработка таймера для Тушенка
if db.actor:has_info("actor_use_anm_conserva") and (start_time_use_item == nil or game.get_game_time():diffSec(start_time_use_item) >= time_to_use_conserva) then
db.actor:activate_slot(active_slot)
db.actor:give_info_portion("use_item_relax")
db.actor:disable_info_portion("actor_use_anm_conserva")
if db.actor:has_info("use_item_need_hide_weapon") and self.weapon_hide == true then
self.object:hide_weapon()
self.weapon_hide = true
end
db.actor:disable_info_portion("use_item_need_hide_weapon")
start_time_relax = game.get_game_time()
end
--Отработка таймера для Антирад
if db.actor:has_info("actor_use_anm_antirad") and (start_time_use_item == nil or game.get_game_time():diffSec(start_time_use_item) >= time_to_use_antirad) then
db.actor:activate_slot(active_slot)
db.actor:give_info_portion("use_item_relax")
db.actor:disable_info_portion("actor_use_anm_antirad")
if db.actor:has_info("use_item_need_hide_weapon") and self.weapon_hide == true then
self.object:hide_weapon()
self.weapon_hide = true
end
db.actor:disable_info_portion("use_item_need_hide_weapon")
start_time_relax = game.get_game_time()
end
--Отработка таймера для Водка
if db.actor:has_info("actor_use_anm_vodka") and (start_time_use_item == nil or game.get_game_time():diffSec(start_time_use_item) >= time_to_use_vodka) then
db.actor:activate_slot(active_slot)
db.actor:give_info_portion("use_item_relax")
db.actor:disable_info_portion("actor_use_anm_vodka")
if db.actor:has_info("use_item_need_hide_weapon") and self.weapon_hide == true then
self.object:hide_weapon()
self.weapon_hide = true
end
db.actor:disable_info_portion("use_item_need_hide_weapon")
start_time_relax = game.get_game_time()
end
--Отработка таймера для Вода
if db.actor:has_info("actor_use_anm_voda") and (start_time_use_item == nil or game.get_game_time():diffSec(start_time_use_item) >= time_to_use_voda) then
db.actor:activate_slot(active_slot)
db.actor:give_info_portion("use_item_relax")
db.actor:disable_info_portion("actor_use_anm_voda")
if db.actor:has_info("use_item_need_hide_weapon") and self.weapon_hide == true then
self.object:hide_weapon()
self.weapon_hide = true
end
db.actor:disable_info_portion("use_item_need_hide_weapon")
start_time_relax = game.get_game_time()
end
--Отработка таймеров таймаута после использования предметов
if db.actor:has_info("use_item_relax") and (start_time_relax == nil or game.get_game_time():diffSec(start_time_relax) >= time_to_relax) then
--Убрать из инвентаря анимационный предмет, каким бы он ни был
db.actor:iterate_inventory(function (dummy, item) if string.find(item:section(), "anm_") then release_item = item:section() end end, nil)
alife():release(alife() surprised bject(db.actor surprised bject(release_item):id()))
--Вернуть бинокль в инвентарь
--[[if binoc_in_slot ~= nil and name_binoc ~= nil then
if db.actor surprised bject(name_binoc) == nil then
alife():create(name_binoc,db.actor tongue osition(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())
end
end]]
if db.actor surprised bject("wpn_binoc") == nil then
alife():create("wpn_binoc",db.actor tongue osition(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())
end
--Сбросить флаги использования предметов и таймаута после использования предмета
db.actor:disable_info_portion("use_item_relax")
db.actor:disable_info_portion("actor_use_anm_item")
end
end
--Обработка взрывчатки
local time_to_use_explosive_charge = 10 --Игровые секунды, время использования предмета взрывчатка
local time_to_use_explosive_control = 20 --Игровые секунды, время использования предмета ДУ
local actor_pos=db.actor tongue osition()
--Устанавливаем одину и только одну взрывчатку
if db.actor:has_info("actor_set_remote_explosive_charge")
and db.actor:has_info("actor_set_one_remote_explosive_charge") == false then
if (start_time_explosive_charge == nil
or game.get_game_time():diffSec(start_time_explosive_charge) >= time_to_use_explosive_charge) then
--Установить взывающийся объект
mod_functions.create_explosive_on_level("remote_charge",actor_pos.x,actor_pos.y,actor_pos.z+0.01,db.actor:level_vertex_id(),db.actor:game_vertex_id())
--Удалить заряд из инвентаря
alife():release(alife() surprised bject(db.actor surprised bject("anm_remote_explosive_charge"):id()))
--Выдать инфопорцию о том что один заряд заложен
db.actor:give_info_portion("actor_set_one_remote_explosive_charge")
end
end
--Взорвать установленную взрывчатку
if db.actor:has_info("actor_activate_remote_explosive_control") then
if (start_time_explosive_control == nil
or game.get_game_time():diffSec(start_time_explosive_control) >= time_to_use_explosive_control) then
--Взорвать взывающийся объект
mod_functions.detonate_explosive(mod_functions.read_variable("remote_charge_id"))
mod_functions.write_variable("remote_charge_id",0)
--Удалить ДУ-актив из инвентаря
alife():release(alife() surprised bject(db.actor surprised bject("anm_remote_explosive_control"):id()))
--Забрать инфопорцию о включении ДУ
db.actor:disable_info_portion("actor_activate_remote_explosive_control")
--Забрать инфопорцию о установке заряда взрывчатки
db.actor:disable_info_portion("actor_set_remote_explosive_charge")
--Забрать инфопорцию о том что один заряд заложен
db.actor:disable_info_portion("actor_set_one_remote_explosive_charge")
end
end
end

---------------------------------------------------------------------------------------------------------------------------------
--Вызов колбеков на отсутствие патронов интерактивные предметы
---------------------------------------------------------------------------------------------------------------------------------
function weapon_no_ammo()
active_slot = db.actor:active_slot()
active_item_name = db.actor:item_in_slot(active_slot):section()
--news_manager.send_tip(db.actor, "Активный слот "..tostring(active_slot).." Активный предмет "..tostring(active_item_name), nil, nil, nil, nil)
--Нажата кнопка при использовании заряда взрывчатки
if active_item_name == "anm_remote_explosive_charge" then
--Если у ГГ есть ДУ-неакт или нет уже установленной взрывчатки или ДУ уже включено
if db.actor surprised bject("ammo_remote_explosive_charge") ~= nil
and db.actor:has_info("actor_set_remote_explosive_charge") == false
and db.actor:has_info("actor_activate_remote_explosive_control") == false
and db.actor:has_info("actor_set_one_remote_explosive_charge") == false then
--Удалить ДУ-Неактивированный
alife():release(alife() surprised bject(db.actor surprised bject("ammo_remote_explosive_charge"):id()))
--Дать анимационный объект ДУ-активированный
alife():create("anm_remote_explosive_control",db.actor tongue osition(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())
--Выдать инфопорцию о установке заряда взрывчатки
db.actor:give_info_portion("actor_set_remote_explosive_charge")
--Установить засечку начала анимации установки взрывчатки
start_time_explosive_charge = game.get_game_time()
else
get_hud():HideActorMenu()
get_hud():HidePdaMenu()
game.start_tutorial("about_actor_no_explosive_charge")
--Установить активный слот 5
db.actor:activate_slot(5)
end
end
if active_item_name == "anm_remote_explosive_control" then
--Если у ГГ есть батарея для ДУ или ДУ уже включено
if db.actor surprised bject("ammo_remote_explosive_control") ~= nil and db.actor:has_info("actor_activate_remote_explosive_control") == false then
--Удалить Батарею для ДУ
alife():release(alife() surprised bject(db.actor surprised bject("ammo_remote_explosive_control"):id()))
--Выдать инфопорцию о включении ДУ
db.actor:give_info_portion("actor_activate_remote_explosive_control")
--Установить засечку начала анимации включения ДУ
start_time_explosive_control = game.get_game_time()
else
get_hud():HideActorMenu()
get_hud():HidePdaMenu()
game.start_tutorial("about_actor_no_explosive_control")
--Установить активный слот 5
db.actor:activate_slot(5)
end
end
end[/cut]

Цитата Shyr ()
Shyr

Скинь конфиг мода


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

Shyr, Ну не знаю у меня комплектным ACDC из SGM2.2 все прекрасно декомпилировалось. Только подправить распределение графов по локациям (в Снайпере их на три больше) и все нормально.


Цитата tan4ik75 ()
Здарова твой скрипт на использование предметов от зп в чн закатит

Да должен работать, даже в ТЧ заработает при корректировке номеров слотов.


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

Цитата denis2000 ()
denis2000

Как не печально, но не пашет я вроде правильно регал функции.
[cut noguest=Скрины]
[/cut]

[cut noguest=Видос][/cut]


tan4ik75

Сообщение отредактировал tan4ik75 - Вт, 29.11.2016, 16:25
 
ShyrДата: Вт, 29.11.2016, 17:29 | Сообщение # 2196
Отмычка
Пользователи
Сообщений: 38
Награды: 4
Репутация: [ 20 ]

tan4ik75, простите, я немного чайник: что имеется в виду под "конфиг", папку configs?

Добавлено (29.11.2016, 17:29)
---------------------------------------------
denis2000, а можно пару нескромных вопросов? Не могли-бы вы мне сказать, какая версия ActivePerl у вас стоит и какая у вас операционка?


Сообщение отредактировал Shyr - Вт, 29.11.2016, 17:34
 
tan4ik75Дата: Вт, 29.11.2016, 17:45 | Сообщение # 2197
Гражданский
Пользователи
Сообщений: 8
Награды: 0
Репутация: [ 2 ]

Цитата Shyr ()
Shyr

да


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

tan4ik75, Два замечания:
1. В ЧН зачехление оружия на базах может работать чуть по другому нежели в ЗП, поэтому для начала проверяйте работу вне базы.
2. Слоты в ЧН таки отличаются (точнее нумерация), поэтому в скрипте mod_use_callback.script вместо 5-го слота поставьте 4, везде где это требуется.


Shyr, ActivePerl 5.16.1 Build 1601 (64-bit) Windows 7 64-bit.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
GlomarДата: Ср, 30.11.2016, 01:30 | Сообщение # 2199
Хозяин Зоны
Пользователи
Сообщений: 23464
Награды: 62
Репутация: [ 4001 ]

Всем привет!
Решил пройти СВ2.
Как восстановить окно торговли ЗП в моде(чтобы была возможность видеть в торговца иконки предметов, а не только их описание)?


 
tan4ik75Дата: Чт, 01.12.2016, 21:46 | Сообщение # 2200
Гражданский
Пользователи
Сообщений: 8
Награды: 0
Репутация: [ 2 ]

Цитата denis2000 ()
denis2000

Привет выручай
какую логику нужно прописать что бы они остались в этом положение что на скрине.

[cut noguest=Скрин][/cut]


tan4ik75
 
denis2000Дата: Пт, 02.12.2016, 09:47 | Сообщение # 2201
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

tan4ik75, Логика animpoint, в точке создается smart_cover с анимацией animpoint_stay_table

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

Цитата denis2000 ()
denis2000

Прикол в том что в чн его нету animpoint_stay_table) я от и спрашую как зафиксировать, я спавнил чисто нпс, а включал анимку в настройках нпс, а в игре тупо стоят.
[cut noguest=Настройка][/cut]


tan4ik75

Сообщение отредактировал tan4ik75 - Пт, 02.12.2016, 11:49
 
denis2000Дата: Пт, 02.12.2016, 18:13 | Сообщение # 2203
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата tan4ik75 ()
рикол в том что в чн его нету animpoint_stay_table

Значит есть что-то аналогичное.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
Voland-777Дата: Сб, 10.12.2016, 17:58 | Сообщение # 2204
Эмиссар
Пользователи
Сообщений: 1702
Награды: 9
Репутация: [ 474 ]

Доброго времени суток! Я решил снова поковыряться в играх, и на этот раз решил вскрыть all.spawn сборки Lost Soul. Вместо распаковки получил два вылета.
[cut noguest=Лог 1]E:\S.T.A.L.K.E.R. Call of Pripyat888 - копия\gamedata\spawns>perl universal_acdc
.pl -d all.spawn -out la -scan configs/ -sort complex
log inited: console
Universal ACDC v.1.38
checking version of all.spawn...
This is a spawn of S.T.A.L.K.E.R. Call Of Pripyat (any patch)
scanning configs...
problems occured while scanning configs. Try again...
done!
opening all.spawn...
reading header...
reading alife objects...

FATAL ERROR!
Function: stkutils::scan::get_class
Line: 1919
Description: cannot find clsid for class sgm_gravitational_field_average[/cut]

[cut noguest=Лог 2]E:\S.T.A.L.K.E.R. Call of Pripyat888 - копия\gamedata\spawns>perl universal_acdc
.pl -d all.spawn -out la -scan configs/ -sort complex
log inited: console
Universal ACDC v.1.38
checking version of all.spawn...
This is a spawn of S.T.A.L.K.E.R. Call Of Pripyat (any patch)
scanning configs...
problems occured while scanning configs. Try again...
done!
opening all.spawn...
reading header...
reading alife objects...

E:\S.T.A.L.K.E.R. Call of Pripyat888 - копия\gamedata\spawns>perl universal_acdc
.pl -d all.spawn -out la -scan configs/ -sort complex
log inited: console
Universal ACDC v.1.38
checking version of all.spawn...
This is a spawn of S.T.A.L.K.E.R. Call Of Pripyat (any patch)
scanning configs...
problems occured while scanning configs. Try again...
done!
opening all.spawn...
reading header...
reading alife objects...

FATAL ERROR!
Function: main
Line: 1448
Description: cannot open config\[/cut]
В чем причина, не понимаю. Возможно, первый вылет - ругань на секции мода? И это при том, что папку с конфигами я взял. Второй - неясно.


Сообщение отредактировал Voland-777 - Сб, 10.12.2016, 18:00
 
denis2000Дата: Сб, 10.12.2016, 22:43 | Сообщение # 2205
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

ЦитатаVoland-777 ()
cannot find clsid for class sgm_gravitational_field_average

Неизвестный ид-класса объектов sgm_gravitational_field_average, нужно добавить его в файл (читайте инструкцию к программе).
ЦитатаVoland-777 ()
cannot open config\

Программа не может обратиться к файлам из папки config (по вопросам правильного применения ключа -scan читайте инструкцию к используемой программе).


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
Поиск: