Случайная подборка модов
Lost World 3.0
3.9
Оставшийся умирать
4.3
Nature Winter v2.3 Black Edition
3.9
Игра Душ: Новое Начало
4.3
Конец Света 2: Последний Восход
3.2
Aliens Time: Глава 1
3.7
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
Архив - только для чтения
⚙ Модострой: Вопросница
Российская Федерация  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
Российская Федерация  alanbrose
Пятница, 15.12.2017, 20:14 | Сообщение # 9451
Статус:
Отмычка:
Сообщений: 113
Награды: 4
Регистрация: 28.08.2015

BoBaH_671, огромное спасибо. Второй метод не сработал (возможно из-за моей криворукости). Сделал пронумерованные поршни с первым методом - диалог исчез. Я аж удивился, что получилось. smile
  Злобная реклама
Пятница, 15.12.2017, 20:14
Статус:
Сообщений: 666
Регистрация: 28.08.2015
Российская Федерация  YTroll
Пятница, 15.12.2017, 20:31 | Сообщение # 9452
Статус:
Бывалый:
Сообщений: 824
Награды: 13
Регистрация: 09.11.2012

Jargon , благодарю, но через логику для меня сложновато,

Цитата makdm ()
Функция удаления объектов через скрипт - одна для всех объектов

alife():release( server_object, true )

Вопрос лишь в том: "Каким способом получить server_object ( серверный класс объекта )"
Тут способов несколько. Можно по метке story_id, можно по имени объекта, можно по классу или по секции с некоторыми ограничениями.
Выбирайте, что вам доступно.

метки story_id, у вертолетов на ЧАЭС1 нет, что странно у БТР и солдат - есть, а у вертолетов нет,
а приведите пример удаления по имени объекта, вот имя одного вертолета в секциях спавна - aes_helicopter_0000
  Злобная реклама
Пятница, 15.12.2017, 20:31
Статус:
Сообщений: 666
Регистрация: 09.11.2012
Российская Федерация  makdm
Пятница, 15.12.2017, 20:51 | Сообщение # 9453
Время Альянса
Статус:
Опытный:
Сообщений: 1787
Награды: 19
Регистрация: 22.11.2012

Цитата YTroll ()
а приведите пример удаления по имени объекта,

Вызов функции;

remove_heli_by_name( "aes_helicopter_0000" )

Сама функция:

Код
function remove_heli_by_name( name )
    for k,v in pairs( db.heli ) do
        if string.find( v:name(), name ) ~= nil then
            alife():release(alife():object( k ), true)
           break
        end
    end
end    
Сообщение отредактировал makdm - Пятница, 15.12.2017, 20:55
  Злобная реклама
Пятница, 15.12.2017, 20:51
Статус:
Сообщений: 666
Регистрация: 22.11.2012
Российская Федерация  YTroll
Пятница, 15.12.2017, 21:08 | Сообщение # 9454
Статус:
Бывалый:
Сообщений: 824
Награды: 13
Регистрация: 09.11.2012

makdm , а во множественном числе т.е. удаление разом нескольких вертолетов, это будет выглядеть вот так?
Вызов функции;

remove_heli_by_name( "aes_helicopter_0000" )
remove_heli_by_name( "aes_helicopter_0001" )
remove_heli_by_name( "aes_helicopter_0002" )
remove_heli_by_name( "aes_helicopter_0003" )
remove_heli_by_name( "aes_helicopter_0004" )
remove_heli_by_name( "aes_helicopter_0007" )
remove_heli_by_name( "aes_helicopter_0008" )
remove_heli_by_name( "aes_helicopter_0009" )
remove_heli_by_name( "aes_helicopter_0010" )

Сама функция:

function remove_heli_by_name( name )
for k,v in pairs( db.heli ) do
if string.find( v:name(), name ) ~= nil then
alife():release(alife():object( k ), true)
break
end
end
end

или как-то можно оптимизировать вызов функции?
Сообщение отредактировал YTroll - Пятница, 15.12.2017, 21:14
  Злобная реклама
Пятница, 15.12.2017, 21:08
Статус:
Сообщений: 666
Регистрация: 09.11.2012
Российская Федерация  Overfirst
Пятница, 15.12.2017, 21:12 | Сообщение # 9455
Статус:
Бывалый:
Сообщений: 1081
Награды: 19
Регистрация: 11.06.2015

Цитата YTroll ()
а во множественном числе, это будет выглядеть вот так?

Код
for i = 0, 9 do
     remove_heli_by_name("aes_helicopter_000" .. i)
end
     remove_heli_by_name("aes_helicopter_0010")
  Злобная реклама
Пятница, 15.12.2017, 21:12
Статус:
Сообщений: 666
Регистрация: 11.06.2015
Российская Федерация  yobakun
Пятница, 15.12.2017, 21:22 | Сообщение # 9456
Статус:
Новичок:
Сообщений: 270
Награды: 5
Регистрация: 30.07.2016

makdm, не пойму как пользоваться, можно пример?

if one_obj_in_zone(actor, zone, p) then

actor - зачем?
zone - в моем случае "yan_smart_terrain_6_4_att"
p - объект?

Или так:
Код
if one_obj_in_zone(actor, "yan_smart_terrain_6_4_att", {obj = true}) then

?
Сообщение отредактировал yobakun - Пятница, 15.12.2017, 21:25
  Злобная реклама
Пятница, 15.12.2017, 21:22
Статус:
Сообщений: 666
Регистрация: 30.07.2016
Российская Федерация  YTroll
Пятница, 15.12.2017, 21:22 | Сообщение # 9457
Статус:
Бывалый:
Сообщений: 824
Награды: 13
Регистрация: 09.11.2012

Цитата BoBaH_671 ()
for i = 0, 9 do
     remove_heli_by_name("aes_helicopter_000" .. i)
end
     remove_heli_by_name("aes_helicopter_0010")


т.е. это добавить в вызов самой функции,
получается применительно к фриплею OGSM 2.3.1 - вызов функции будет выглядеть вот так?

-- Засчитываем квестовые задания, удаляем квестовые предметы
-- Completing storyline tasks.
function set_complete_tasks()
if has_alife_info("aes2_monolit_teleport_ready_final") and not has_alife_info("freeplay") and (level.name()=="l12_stancia" or level.name()=="l12_stancia_2") then
db.actor:iterate_inventory(del_q_items,db.actor)
db.actor:give_info_portion("cit_fail_first_task")
db.actor:give_info_portion("freeplay")
db.actor:disable_info_portion("game_end")
db.gameover_credits_started = false
amk.start_timer("fpl", 1)
for i = 0, 9 do
remove_heli_by_name("aes_helicopter_000" .. i)
end
remove_heli_by_name("aes_helicopter_0010")
end
end
  Злобная реклама
Пятница, 15.12.2017, 21:22
Статус:
Сообщений: 666
Регистрация: 09.11.2012
Украина  BozKurt
Пятница, 15.12.2017, 22:13 | Сообщение # 9458
Статус:
Опытный:
Сообщений: 1753
Награды: 3
Регистрация: 25.05.2012

Цитата BoBaH_671 ()
Код
for i = 0, 9 do
     remove_heli_by_name("aes_helicopter_000" .. i)
end
     remove_heli_by_name("aes_helicopter_0010")

Можно так:
Код
for i = 0, 10 do
     remove_heli_by_name("aes_helicopter_00" .. string.format("%02d", i));
end
Сообщение отредактировал BozKurt - Пятница, 15.12.2017, 22:15
  Злобная реклама
Пятница, 15.12.2017, 22:13
Статус:
Сообщений: 666
Регистрация: 25.05.2012
Российская Федерация  makdm
Пятница, 15.12.2017, 22:14 | Сообщение # 9459
Время Альянса
Статус:
Опытный:
Сообщений: 1787
Награды: 19
Регистрация: 22.11.2012

Цитата yobakun ()
не пойму как пользоваться, можно пример?

Всё зависит от того из логики какого объекта вы делаете проверку.
Вариантов два:
1. Из логики самого рестриктора.
2. Из логики НПС.

Я так понял, что вам нужна проверка из логики рестриктора. Тогда используйте функцию story_obj_in_zone_by_name, где параметр Р[1] - это story_id проверяемого объекта, а параметр p[2] - это имя вашего рестриктора.
  Злобная реклама
Пятница, 15.12.2017, 22:14
Статус:
Сообщений: 666
Регистрация: 22.11.2012
Российская Федерация  svo6o9a
Пятница, 15.12.2017, 22:29 | Сообщение # 9460
Статус:
Новичок:
Сообщений: 236
Награды: 2
Регистрация: 19.11.2017

Вылетает после того как сделал Смарт тереин
Expression : !m_error_code
Function : raii_guard::~raii_guard
File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line : 748
Description : ...l.k.e.r. - Çîâ Ïðèïÿòè\gamedata\scripts\utils.script:469: bad argument #1 to 'gsub' (string expected, got nil)
Сообщение отредактировал svo6o9a - Пятница, 15.12.2017, 22:30
  Злобная реклама
Пятница, 15.12.2017, 22:29
Статус:
Сообщений: 666
Регистрация: 19.11.2017
Коста Рика  Jargon
Пятница, 15.12.2017, 22:32 | Сообщение # 9461
X-Ray Multiplayer Extension
Статус:
Бывалый:
Сообщений: 1078
Награды: 3
Регистрация: 24.06.2012

Цитата svo6o9a ()
Вылетает после того как сделал Смарт тереин
Expression : !m_error_code
Function : raii_guard::~raii_guard
File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line : 748
Description : ...l.k.e.r. - Çîâ Ïðèïÿòè\gamedata\scripts\utils.script:469: bad argument #1 to 'gsub' (string expected, got nil)

Его не просто нужно "Сделать", а еще и зарегистрировать, а если он еще и симуляционный то и локацию соответственно.
  Злобная реклама
Пятница, 15.12.2017, 22:32
Статус:
Сообщений: 666
Регистрация: 24.06.2012
Российская Федерация  svo6o9a
Пятница, 15.12.2017, 22:35 | Сообщение # 9462
Статус:
Новичок:
Сообщений: 236
Награды: 2
Регистрация: 19.11.2017

Цитата Jargon ()
Его не просто нужно "Сделать", а еще и зарегистрировать, а если он еще и симуляционный то и локацию соответственно.

Зарегистрировал. Я НПС делаю. И для них сделал смарт терейн. Движок-Зов Припяти, Локация-Припять
  Злобная реклама
Пятница, 15.12.2017, 22:35
Статус:
Сообщений: 666
Регистрация: 19.11.2017
Коста Рика  Jargon
Пятница, 15.12.2017, 22:43 | Сообщение # 9463
X-Ray Multiplayer Extension
Статус:
Бывалый:
Сообщений: 1078
Награды: 3
Регистрация: 24.06.2012

Цитата svo6o9a ()
Зарегистрировал. Я НПС делаю. И для них сделал смарт терейн. Движок-Зов Припяти, Локация-Припять

Раскладывай по полочкам что делал...
  Злобная реклама
Пятница, 15.12.2017, 22:43
Статус:
Сообщений: 666
Регистрация: 24.06.2012
Российская Федерация  makdm
Пятница, 15.12.2017, 22:44 | Сообщение # 9464
Время Альянса
Статус:
Опытный:
Сообщений: 1787
Награды: 19
Регистрация: 22.11.2012

Цитата svo6o9a ()
Вылетает после того как сделал Смарт тереин

Ошибка в логике смарт-террейна.
  Злобная реклама
Пятница, 15.12.2017, 22:44
Статус:
Сообщений: 666
Регистрация: 22.11.2012
Российская Федерация  yobakun
Пятница, 15.12.2017, 23:05 | Сообщение # 9465
Статус:
Новичок:
Сообщений: 270
Награды: 5
Регистрация: 30.07.2016

makdm, мне нужно удалить все аномалии из заданного рестриктора, но ведь у аномалий нет story_id. Как тогда быть?
  Злобная реклама
Пятница, 15.12.2017, 23:05
Статус:
Сообщений: 666
Регистрация: 30.07.2016
Поиск: