Перейти к контенту

Скриптование


Svoboда

Рекомендуемые сообщения

(изменено)

Насколько знаю, чтобы вернуть их, нужно производить правки в движке игры.:(

 

Изменено пользователем Jurok

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Доброго времени суток! Подскажите, как сделать проверку на то, что ГГ голоден? Заранее спасибо.

 

Изменено пользователем Jurok

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Доброго времени суток. Подскажите пожалуйста, как сделать поверку на то, что в Зоне начался выброс? Насколько помню, это должно выглядеть примерно таким образом:

 

if (surge_manager.get_surge_manager()=="started") then
 

Поправьте, если ошибаюсь.

 

Изменено пользователем Jurok

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

bogdan.dm, создай скрипт (например spawn_surge) и напиши в него свою функцию спавна "чего-либо" (пусть она будит называться spawn_mut). Далее открой файл в scripts/surge_manager. Найди это:

if(level.name()=="zaton") then

xr_sound.set_sound_play(db.actor:id(), "zat_a2_stalker_barmen_surge_phase_2")

elseif(level.name()=="jupiter") then

xr_sound.set_sound_play(db.actor:id(), "jup_a6_stalker_medik_phase_2")

elseif not has_alife_info("pri_b305_fifth_cam_end") then

xr_sound.set_sound_play(db.actor:id(), "pri_a17_kovalsky_surge_phase_2")

end

end

И поменаяй на это:

if(level.name()=="zaton") then

xr_sound.set_sound_play(db.actor:id(), "zat_a2_stalker_barmen_surge_phase_2")

spawn_surge.spawn_mut()

elseif(level.name()=="jupiter") then

xr_sound.set_sound_play(db.actor:id(), "jup_a6_stalker_medik_phase_2")

spawn_surge.spawn_mut()

elseif not has_alife_info("pri_b305_fifth_cam_end") then

xr_sound.set_sound_play(db.actor:id(), "pri_a17_kovalsky_surge_phase_2")

spawn_surge.spawn_mut()

end

end

 

 

P.S. Как-то так. ;)

Изменено пользователем Jurok

Поделиться этим сообщением


Ссылка на сообщение

Доброго времени суток! Решил сделать провеку на отсутствие инфопоршня и отсутствие брони, после чего ГГ должен по моей задумки погибнуть. Во время тестирования обнаружил баг, из-за которого ГГ умирал в любом случае, есть у него броня или нет. В чём я допустил ошибку?

 

function start_mod()
if not has_alife_info("maior_barsakov_info") and db.actor:object("specops_outfit") ~= nil then
db.actor:kill(db.actor) 
end
end

Поделиться этим сообщением


Ссылка на сообщение

В данном случае, мне все-равно, одет броник на ГГ или просто лежит у него в инвентаре. Главное - сделать правильно провеку на "отсутвствие" броника, что, собственно, у меня и не выходит сделать. :russian_ru:

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

100% вероятность, ибо мы получаем инфопоршен после проходение определённых квестов, а умираю я сразу же в начале игры (имея в инветаре броник), выходит, что вся проблема лежит в проверки на его отсутствие.

 

Куфзук, зачем через dont_has_info?

 

Изменено пользователем Jurok

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

 

Цитата
так у тебя же проверка стоит на его наличие!

А как сделать проверку на его отсутствие?

 

_Призрак_, сейчас попробую.

 

Изменено пользователем Jurok

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

_Призрак_, спасибо, твой вариант работает нормально. А я считал, что dont_has_info ипользуется только в скелете диалогов, а в скриптах not has_alife_info.

 

Изменено пользователем Jurok

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Создай скрипт (например test_proverka) и введи туда эту функцию:

function proverka_pda_tryp() 
if db.actor:object("pda_tryp") then 
test_spawn.spawn_zasada_merc() 
end 
end
 

Теперь создай новый скрипт (например test_spawn) и введи это:

function spawn_zasada_merc() 
alife():create("merc_zasada_01", vector():set(57.167991638184, 10.893405914307, 367.46084594727), 1059286, 137) 
alife():create("merc_zasada_02", vector():set(53.669364929199,12.433765411377,375.51013183594), 1053811, 137) 
alife():create("merc_zasada_03", vector():set(54.97501373291,11.896924972534,356.54852294922), 1056593, 138) 
end
 

 

Осталось самое главное - открой bind_stalker.script, найди строчку:

xr_sound.update(self.object:id())
 

И добавь после неё это:

test_proverka.proverka_pda_tryp()
 
Изменено пользователем Jurok

Поделиться этим сообщением


Ссылка на сообщение

Garry_Galler, можно сделать так:

function proverka_pda_tryp() 
if not has_alife_info("твой_инфопоршень") and db.actor:object("pda_tryp") then 
test_spawn.spawn_zasada_merc() 
db.actor:give_info_portion("твой_инфопоршень")
end 
end

И никакой "армии клонов" не будет. ;)

Поделиться этим сообщением


Ссылка на сообщение

ZeeK, если для ЗП, попробуй так:

[logic]
active = remark

[remark]
combat_ignore_cond =  {=is_enemy_actor -info} true
combat_ignore_keep_when_attacked = false

[combat_ignore]

on_hit = hit

[hit]
on_info = {=hit_npc_from_actor } %+info%

Поделиться этим сообщением


Ссылка на сообщение

В ЗП это делается следующим образом.

Открываем логику предположительного врага, находим нужную секцию и пишим:

 

combat_ignore_cond = {=check_enemy_name(actor) +инфопоршень_для_активации} true, {+инфопоршень_для_отключения} false

Поделиться этим сообщением


Ссылка на сообщение

Доброго времени суток, подскажите пожалуйста, как вычислить расстояние от ГГ, до определённого смарта? Заранее спасибо.

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Доброго времени суток. Подскажите, возможно ли через скрипт заблокировать дверь кабинета Шульги? Если да, подскажите, пожалуйста, каким образом. Заранее спасибо.

 

Изменено пользователем Jurok

Поделиться этим сообщением


Ссылка на сообщение
...какую ему логику писать?

Если делаешь на ЗП, то попробуй воспользоваться моим методом:

 

[logic] 
active = remark

[remark] 
wounded = wounded
combat_ignore_cond = true
combat_ignore_keep_when_attacked = true
gather_items_enabled = false
help_wounded_enabled = false
corpse_detection_enabled = false
meet = no_meet

[wounded]
hp_state = 101|wounded_heavy@nil
hp_state_see = 101|wounded_heavy@nil
hp_victim = 101|actor
hp_cover = 101|false
hp_fight = 101|false
autoheal = false
not_for_help = false

P.S. Вот, самое основное. Дальше сам допиливай...

Поделиться этим сообщением


Ссылка на сообщение

Я не шибко ковырял ТЧ, но... вот небольшой пример:

 

[remark]
wounded = wounded

[wounded]
hp_state = 35|wounded_heavy@help_heavy
hp_state_see = 35|wounded_heavy@esc_tolik_help
hp_victim = 35|nil
hp_cover = 35|false
hp_fight = 35|false
help_dialog = tutorial_wounded_give_medkit

P.S. Если не понятно, попробуй изучить логику Толика.

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Доброго времени суток.

Подскажите, что нужно сделать, чтобы при приближении мутантом (или иного врага) к неписю, диалог между ним и ГГ автоматически прерывался?

 

Подойдёт ли такой способ?

[meet]
close_anim = nil
close_snd_hello = nil
close_snd_bye = nil
trade_enable = false
snd_on_use = nil
use = [b]{=check_enemy_name(sim_default) =fighting_dist_ge(20)} false[/b]

 

Задавая вопрос - уточняйте версию игры, если имеются различия для ТЧ/ЧН/ЗП!

 

Прерывание схемы 'meet' происходит автоматически при срабатывании 'combat_ignore' (если не отключено), где и можно задавать дистанции.

 

Условие же для 'use' и не закроет окно диалога, а не даст его открыть.

И необходимо прописывать так, чтобы в любом случае он возвращало 'true' или 'false', т.е. типа:

use = {=check_enemy_name(sim_default) =fighting_dist_ge(20)} false, true

--/ Artos

Изменено пользователем ColR_iT

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Подскажите, как можно удалить через скрипт всех имеющихся фантомов на локации?

 

Пример функции:

if (phantom_manager:phantom_count()>1) then 
--Удаление фантомов :-)
end
end

 

P.S. Для ЗП.

Изменено пользователем Jurok

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    Ни один зарегистрированный пользователь не просматривает эту страницу.

AMK-Team.ru

×
×
  • Создать...