Случайная подборка модов
Оставшийся умирать
4.3
Dollchan 7: Inception
2.9
Под прикрытием смерти. Клондайк 2.0
4.0
Shoker Weapon Mod 2.1
4.1
Call of Misery
4.1
Road To The North
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
Поиск: