Jump to content

Recommended Posts

AndreySol    148

@Norman Eisenherz

А к чему этот вопрос? Ты же код видишь, так вывод сам собой напрашивается.

Share this post


Link to post
Share on other sites
phalcor    19

Интересно, а существует ли простой метод определить, посещалась ли актором та или иная локация?

Например, что-то вроде:  yes = loc_is_passed("l01_escape" ) 

Share this post


Link to post
Share on other sites
mole venomous    105
11 минут назад, phalcor сказал:

ли простой метод определить

Вроде бы способ с инфопоршеном и так простой. Если был, то получил защитный инфо и больше не получишь))

  • Thanks 1

Share this post


Link to post
Share on other sites
_Sk8_AsTeR_    43

Прошу помощи :(

Ест скрипт, убивающий всех ворон (или только на текущей локации?)

Скрытый текст

function kill_crow()
	local lname = level.name()
--			amk.send_tip("прошло", "прошло", 1, 15, "common_channel")
	for id, sobj in alife():objects() do
		local crow = level.object_by_id(id)
		if crow and crow:section() == "m_crow"  then 
			local hit = hit()
				hit.direction = crow:direction()
				hit.impulse = 1000
				hit.draftsman = crow
				hit.power = 1000
				hit.type = hit.strike
			crow:hit(hit)
			local sobj = alife():object(id)
			
				alife():release(crow, true)
			
			ogse_st_mgr.start_gtimer(nil, math.random(150, 300), "ogse.release_crow", id)
		end
	end
end

 

Вопрос: А как мне убить всех ворон, но КРОМЕ текущей локации?

А то на голову сыпятся, а нужно от них избавиться

Share this post


Link to post
Share on other sites
mole venomous    105
Posted (edited)
53 минуты назад, _Sk8_AsTeR_ сказал:

а нужно от них избавиться

А просто удалить? Что б не сыпались.

Edited by mole venomous
  • Согласен 1

Share this post


Link to post
Share on other sites
Zander_driver    5,338
30.09.2020 в 21:04, HellRatz сказал:

Но все же советую делать такие вещи через СДК, подобные костыли — уровень 2007 года.

Хмм, а почему?

Какай в данном случае, применяется критерий для разделения "костыль / не костыль" - хотелось бы понять.


08.01.2012 в 03:30, xStream сказал:

Те, у кого свои руки есть, копипастить это не будут, проще свое написать, которое тоже велосипедное, но более понятное автору.

 

Share this post


Link to post
Share on other sites
 HellRatz    2,188
7 часов назад, Zander_driver сказал:

а почему?

Зачем плодить сущности? Создавать ненужные секции, прописывать все в скрипты, вызывать спавн, когда это делается в разы проще и удобнее в СДК? Как минимум подгонка по координатам чего стоит, любая настройка делается в пару кликов. А перекомпиляция спавна занимает от силы пол минуты. Конечно можно вспомнить и Историю Прибоя, где даже здания спавнили, можно и так делать. Но для чего, когда есть редактор карт? Со спавном — аналогично.
ЗЫ: конечно, местами скриптовый спавн удобнее. Но вряд ли, если речь идет про физ. объекты, для которых нужно еще координаты бегать снимать и получать баги с проваливанием под террейн и прочие "развлечения".

  • Thanks 1

Share this post


Link to post
Share on other sites
Zander_driver    5,338
Posted (edited)
Только что, HellRatz сказал:

Создавать ненужные секции

Вопрос был не об этом.

Только что, HellRatz сказал:

проще и удобнее в СДК?

Ну сделай рандомный спавн в СДК. Чтобы объект при каждом запуске игры спавнился в разных местах.

 

Только что, HellRatz сказал:

Но для чего, когда есть редактор карт?

Пардон, у меня на этом месте просто фейспалм :facepalm:

Для того чтобы местонахождение предмета, НЕ было прибито гвоздями на века, например.

Только что, HellRatz сказал:

нужно еще координаты бегать снимать и получать баги с проваливанием

Не нужно сочинять. Вопрос опять же был не об этом, в 2020 так никто не делает.

 

В общем я делаю занятные выводы... :rolleyes:

1) Что считать костылем, и что таковым НЕ считать, каждый мододел для себя определяет самостоятельно и субъективно. На основе собственных критериев, которые у разных людей могут быть разными, и даже противоположными и взаимоисключающими.

2) По всей видимости, распространенным мнением является, спавн всего и вся через СДК, как следствие - все прибито гвоздями к своим местам, Зона статична и неизменна. Никаких неожиданностей, никакого рандома во веки веков. Такой подход к моддингу полагается как "правильный". А все что делает спавн не-прибитым-гвоздями, несет в игру какие-то непредсказуемости, автоматом расценивается как костыль. Не зависимо от способа технической реализации.

Ну что ж, теперь я знаю, почему мой мод называют состоящим из костылей. Стало быть, из костылей он и будет, в такой трактовке. Теперь я несколько лучше понимаю, суть расхождения взглядов, моих/чужих. Спасибо за ответ.

Edited by Zander_driver
  • Согласен 3

08.01.2012 в 03:30, xStream сказал:

Те, у кого свои руки есть, копипастить это не будут, проще свое написать, которое тоже велосипедное, но более понятное автору.

 

Share this post


Link to post
Share on other sites
 HellRatz    2,188
51 минуту назад, Zander_driver сказал:

Для того чтобы местонахождение предмета, НЕ было прибито гвоздями на века, например.

Ну, если есть необходимость перемещать здания/деревья по карте — то да, конечно. Прочитай кусок про Прибой Стори еще раз.

51 минуту назад, Zander_driver сказал:

Ну сделай рандомный спавн в СДК.

При чем тут он? Человек вроде хотел ящик заспавнить скриптами, а не написать систему, как их раскидать рандомно по карте. Суть вопроса ни к чему переворачивать. Физ. объекты, заспавненные через тонны кода — ничто иное как костылище 13-летней давности, когда в народе СДК был непостижимым (а когда-то и недоступным) инструментом. Вот когда будет вопрос про рандомный спавн, тогда и стоит его упоминать. Это совсем другие задачи и методы решения.

  • Согласен 2
  • Полезно 1

Share this post


Link to post
Share on other sites
mdm64    56
Posted (edited)

@HellRatz, "Ну, если есть необходимость перемещать здания/деревья по карте — то да, конечно" - Отличная идея для части моего мода, я что-то протупил с этим моментом. Мне требуется сделать две локации по принципу "параллельных миров" - что на них находится "до и после" определённого события. Возиться со вторыми экземплярами локаций для этой цели не хотелось бы, а вот сказанное тобой как раз мне подойдёт. Благодарю!

Только один вопрос - спавнить статические объекты можно так же, как и динамику, или нужно иначе? Я просто ещё не пробовал такого делать и, соответственно, не интересовался.

Edited by mdm64

Share this post


Link to post
Share on other sites
UriZzz    821
1 час назад, Zander_driver сказал:

рандомный спавн

Ну, это не костыль, тут ясно что в СДК это не реализуешь. Тут как раз таки скриптовой метод. Вот если статично расположенный обжект, как тот же ящик, то тут я согласен - лучше СДК и не нагружать кэллбэки всякими глупостями.

2 часа назад, HellRatz сказал:

Конечно можно вспомнить и Историю Прибоя, где даже здания спавнили, можно и так делать

Серьезно!? Здание как дин.обжект!?:shok2:


Моя нычка. Периодически пополняю

Мы хорошие ребята, жаль патронов маловато:):ukostra:

UriZzz.gif

Share this post


Link to post
Share on other sites
 HellRatz    2,188
49 минут назад, mdm64 сказал:

спавнить статические объекты можно так же, как и динамику, или нужно иначе?

Берешь статику, загоняешь в 3д макс (любой другой удобный редактор), вешаешь кость, перегоняешь в СДК, настраиваешь, экспортируешь в *.ogf. В общем все, как с любым динамическим объектом. Хоть ЧАЭС на Кордоне ставь через спавн.

49 минут назад, mdm64 сказал:

Благодарю!

Не за что. Да только не советую — это будет выглядеть картонно. Про адекватное освещение, коллизию и материалы можно забыть, НПС/мутанты не видят динамику (или придется править АИ-сетку и ты все равно полезешь в СДК, уж лучше нормальную локацию тогда сделать), трава сквозь геометрию, постоянные баги с физикой и далее по списку. Мелкие объекты себя порой ведут неадекватно, представь, что будет с огромным зданием или деревом посреди локации. Можешь скачать тот же Прибой Стори, упомянутый выше, и посмотреть наглядно как это выглядит. В общем, рекомендую сделать эту задумку естественным путем.

19 минут назад, UriZzz сказал:

Серьезно!?

Да. Все новые объекты на уровнях поставлены через утилиту xrSpawner, еще до времен ACDC. О SDK тем более речи не шло. Помню весело было наблюдать, как плоти сносили столбы вдоль дороги (видимо за кости не закрепили, ибо не припомню такой возможности в xrSpaner). А НПС, упирающийся в дом, вызывал дикий расколбас объекта из-за застревания в террейне.

  • Thanks 1
  • Полезно 2

Share this post


Link to post
Share on other sites
AndreySol    148

@HellRatz

Насчет того, что мобы лезут в скриптово заспавненные объекты - можно, при очень серьезной необходимости, использовать ин\аут ресрикторы.

  • Согласен 1

Share this post


Link to post
Share on other sites
 HellRatz    2,188

@AndreySol, согласен, это возможный вариант. Только с помещениями не поможет, да и расставлять в два раза больше (объект + рестриктор), лишний мусор в спавне и апдейте (они ведь постоянно висят на апдейте, проверяя нахождение объекта, верно? Могу ошибаться). Тут уже такие трудозатраты получаются, что проще компилятором собрать за несколько часов. И красивее будет.

  • Согласен 2

Share this post


Link to post
Share on other sites
AndreySol    148
19 минут назад, HellRatz сказал:

проще компилятором собрать за несколько часов.

Эээ, все от игровой ситуевины зависит - нужен одноразовый объект, котрый свое отработал и в release. Зачем он в алл.спавне нужен?

  • Согласен 1

Share this post


Link to post
Share on other sites
 HellRatz    2,188

@AndreySol, тут да. Но речь шла изначально про создание чуть ли не целого уровня на спавн-объектах. Так, конечно — все от задачи зависит.

  • Согласен 1

Share this post


Link to post
Share on other sites
AndrewMor    450
Posted (edited)
12 часов назад, AndreySol сказал:

Эээ, все от игровой ситуевины зависит - нужен одноразовый объект, котрый свое отработал и в release. Зачем он в алл.спавне нужен?

А не проще этот одноразовый объект просто скриптом удалить по его id, когда станет не нужен? А спавнить именно через all.spawn удобнее и быстрее.

Edited by AndrewMor

Сталкер - наше всё!

Share this post


Link to post
Share on other sites
Libery    0
Posted (edited)

Подскажите пж в чем проблема. Написал функцию на ОДЕТОЙ брони и СНЯТОЙ НО в результате когда заходишь в игру анимация проигрывается сразу это при том что у гг брони нету, ПОЧЕМУ?


 

Скрытый текст

 

--// ОДЕВАЕМ КОСТЮМ
function has_outfit()
    if (db.actor:active_slot() == 6) then return end
    db.actor:item_in_slot(6)
    outfit_general_pp()
    level.add_cam_effector("camera_effects\\item_use.anm",8010,false,"")
    level.add_pp_effector("surge_fade.ppe", 10, false)
    local snd = xr_sound.get_safe_sound_object([[interface\inv_outfit]])
    snd:play(db.actor, 0, sound_object.s2d)
    db.actor:disable_info_portion("no_outfit")
    db.actor:give_info_portion("outfit_actor")
end
--// СНИМАЕМ КОСТЮМ
function no_outfit()
    if (db.actor:active_slot() == 6) then return end
    db.actor:item_in_slot(6)
    outfit_general_pp()
    level.add_cam_effector("camera_effects\\item_use.anm",8020,false,"")
    level.add_pp_effector("surge_fade.ppe", 10, false)
    local snd = xr_sound.get_safe_sound_object([[interface\inv_outfit]])
    snd:play(db.actor, 0, sound_object.s2d)
    db.actor:give_info_portion("no_outfit")
    db.actor:disable_info_portion("outfit_actor")
end

 

--// тут вызываем

function actor_update_anim()
    if db.actor:item_in_slot(6) and not db.actor:has_info("outfit_actor") then
    has_outfit()
end
    if not db.actor:item_in_slot(6) and not db.actor:has_info("no_outfit") then
    no_outfit()
end
end

 

 

Edited by Опричник
спойлер
Добавлено  Опричник,

Длинные тексты пожалуйста под спойлер. Выделить текст и нажать на панели инструментов кнопку с глазом.

Share this post


Link to post
Share on other sites
ted.80    148
1 час назад, Libery сказал:

Подскажите пж в чем проблема.

Имхо перестарался ты с проверками - попробуй вот так

Скрытый текст

--// ОДЕВАЕМ КОСТЮМ
function has_outfit()
	outfit_general_pp()
	level.add_cam_effector("camera_effects\\item_use.anm",8010,false,"")
	level.add_pp_effector("surge_fade.ppe", 10, false)
	local snd = xr_sound.get_safe_sound_object([[interface\inv_outfit]])
	snd:play(db.actor, 0, sound_object.s2d)
	db.actor:disable_info_portion("no_outfit")
	db.actor:give_info_portion("outfit_actor")
end
--// СНИМАЕМ КОСТЮМ
function no_outfit()
	outfit_general_pp()
	level.add_cam_effector("camera_effects\\item_use.anm",8020,false,"")
	level.add_pp_effector("surge_fade.ppe", 10, false)
	local snd = xr_sound.get_safe_sound_object([[interface\inv_outfit]])
	snd:play(db.actor, 0, sound_object.s2d)
	db.actor:disable_info_portion("outfit_actor")
	db.actor:give_info_portion("no_outfit")
end

--// тут вызываем
function actor_update_anim()
	if db.actor:item_in_slot(6) ~= nil
		if not db.actor:has_info("outfit_actor") then
			has_outfit()
		end
	else 
		if not db.actor:has_info("no_outfit") then
			no_outfit()
		end
	end
end

 

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

AMK-Team.ru

×
×
  • Create New...