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

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


Svoboда

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

В диалоге пишешь <action>my_sound_play.play</action>, затем создаёшь скрипт

snd_obj = {}

snd_obj = xr_sound.get_safe_sound_object([[soundtrack\escape_theme]])

 

function s_stop()

if snd_obj:playing()==true then snd_obj:stop() end

end

 

function s_play(path)

s_stop()

snd_obj = xr_sound.get_safe_sound_object(path)

snd_obj:play_at_pos(db.actor, vector ():set (0, 0, 0), 0, sound_object.s2d)

end

 

-- device\pda\pda_tip - это путь до файла без расширения .ogg

local sound_types = {"[[device\pda\pda_objective]]"}

 

function play()

s_play(sound_types)

end

содержания и всё, когда клацнешь на реплику диалога заиграет нужный тебе звук.

 

Добавлено через 1 мин.:

Функцию любезно предостаил DEXXX.

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


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

Вроде бы нет, напиши путь до амбиента затона (sounds/music/ambients/zaton_amb пишу с телефона поэтому может путь или название файла неправельные, сами найдете думаю ;-) )

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

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


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

Пропиши ему вот эту логику:

[logic]

active = remark1

danger = danger_ignore

 

[danger_ignore]

ignore_distance = 5

 

[remark1]

invulnerable = true

anim = sit_ass

no_move = true

meet = meet_guide

 

[meet_guide]

abuse = false

use = true

allow_break = false

meet_on_talking = false

Так же он будет бессмертен.

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


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

Верно.

 

Добавлено через 1 мин.:

Тобишь в файле где прописаны спавн секции НПС (не характер деск, и не нпс_профиль а в спаун сектионс.лтх).

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


Ссылка на сообщение
function vvod_antirada()

if db.actor.radiation >= 0.1 and db.actor:object"medkit" then

local news_text = "%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n%c[default]Выполняю:%c[255,230,0,0]Ввожу в организм противорадиационные препараты%c[default]"

db.actor:give_game_news(news_text, "ui\\ui_iconsTotal",Frect():set(0,188,83,47), 0, 3000)

db.actor:eat(db.actor:object("medkit"))

end

 

end

На досуге попробывал эту функцию. В ЗП ничего не работает. Я вешал апдейт на дельту.

 

function actor_binder:update(delta)
...
if lck3_auto then     chimera_mod.vvod_antirada() end

Что подскажите?

Изменено пользователем кровоSTALKER

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


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

Expression : !m_error_code

Function : raii_guard::~raii_guard

File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp

Line : 748

Description : .... - Зов Припяти\gamedata\scripts\bind_stalker.script:402: attempt to index global 'chimera_mod' (a nil value)

 

Вылет.

 

Может нужно поставить if?

function actor_binder:update(delta)
...
if chimera_mod.vvod_antirada() end

 

Добавлено через 5 мин.:

Тоже вылет:

 

Expression : !m_error_code

Function : raii_guard::~raii_guard

File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp

Line : 748

Description : ....e.r. - Зов Припяти\gamedata\scripts\xr_logic.script:1272: attempt to index local 'obj' (a nil value)

 

Хм... Как же её на апдейт повесить?

 

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


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

function vvod_antirada()

if db.actor.radiation >= 0.1 and db.actor:object"medkit" then

local news_text = "%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n%c[default]Выполняю:%c[255,230,0,0]Ввожу в организм противорадиационные препараты%c[default]"

db.actor:give_game_news(news_text, "ui\\ui_iconsTotal",Frect():set(0,188,83,47), 0, 3000)

db.actor:eat(db.actor:object("medkit"))

end

 

В этой функции не хватает скобок, там где "medkit". Maks_K, да, в ЗП это есть. Попробывать можно так:

 

function vvod_antirada()

if db.actor.radiation >= 0.1 and db.actor:object("medkit") then

local news_text = "%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n%c[default]Выполняю:%c[255,230,0,0]Ввожу в организм противорадиационные препараты%c[default]"

db.actor:give_game_news(news_text, "ui\\ui_iconsTotal",Frect():set(0,188,83,47), 0, 3000)

db.actor:eat(db.actor:object("medkit"))

end

 

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


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

Подскажите пожалуйста функцию проверки, целится ли гг и из какого оружия, и с каким состоянием ствол. Второй день мучаюсь...

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


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

function wpn_class()

local active_item=db.actor:active_item()

if active_item ~= nil then

active_item:section() == "wpn_vintorez" or

active_item:section() == "wpn_svu" or

active_item:section() == "wpn_svd" and

if math.ceil(db.actor:accuracy()*1000) == 1 then

get_hud():AddCustomStatic("din_pric", true)

end

end

end

end

он верный? И ещё, в какой апдейтер его присоединить? Пробывал в дельту - вылет без лога.

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


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

Влад, заюзал, вылет такой:

Expression : !m_error_code

Function : raii_guard::~raii_guard

File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp

Line : 748

Description : .... - Çîâ Ïðèïÿòè\gamedata\scripts\bind_stalker.script:322: attempt to index global 'chimera_mod' (a nil value)

 

 

В bind_stalker апдейтер был таков:

chimera_mod.din_scope()

 

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


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

Обижаешь. Поправил ошибку синтаксиса, получил вылет:

Expression : !m_error_code

Function : raii_guard::~raii_guard

File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp

Line : 748

Description : .... - Çîâ Ïðèïÿòè\gamedata\scripts\bind_stalker.script:322: attempt to call field 'din_scope' (a nil value)

 

 

Кастом статик тоже сделал.

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


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

Содержание chimera_mod:

snd_obj = {} --это нужно для воспроизведеня звука, должен быть в каждом скрипте где будет использоватся команда "s_play"

snd_obj = xr_sound.get_safe_sound_object([[$no_sound]])

 

function s_stop()

if snd_obj:playing()==true then snd_obj:stop() end

end

 

function s_play(path) --сюда передается путь файла, и он ево играет

s_stop()

snd_obj = xr_sound.get_safe_sound_object(path)

snd_obj:play_at_pos(db.actor, vector ():set (0, 0, 0), 0, sound_object.s2d)

end

 

------Copyright DEXXX-------

 

-- device\pda\pda_tip --это путь до файла без расширения .ogg

local sound_types = {"([[device\pda\pda_tip]])", "([[device\pda\pda_tip]])", "[device\pda\pda_news]", "[[device\pda\pda_objective]]"} --со скобками нада поэксперементировать,

 

function name_script() --твой скрипт

s_play(sound_types[math.random(4)]) --четыре это максимальное значение, от 1 до 4. скока файлов стока и максимальное значение

end

 

function add_new_lc(levch,levchn,levchm,info) --спауним левел ченджер

local objt = alife():story_object(levch)

if not objt then

alife():create(levchn)

end

local obj = alife():story_object(levch)

if obj then

level.map_add_object_spot(obj.id, "level_changer",levchm)

db.actor:give_info_portion(info)

info_received()

end

end

 

-- Апдейтер динамических прицелов

function din_scope()

local hud = get_hud()

local custom_static = hud:GetCustomStatic("din_pric")

local active_item=db.actor:active_item()

if active_item then

if (active_item:section() == "wpn_vintorez" or active_item:section() == "wpn_svu" or active_item:section() == "wpn_svd") and math.ceil(db.actor:accuracy()*1000) == 1 then

if custom_static == nil then

hud:AddCustomStatic("din_pric", true)

end

end

end

end

 

Строка апдейтера в bind_stalker:

function actor_binder:update(delta)

object_binder.update(self, delta)

if string.find(command_line(), "-designer") then

return

end

if self.already_jumped==false and jump_level.need_jump==true and (device().frame > self.spawn_frame+2000) then

-- jump_level.try_to_jump()

self.already_jumped = true

return

end

-- Вызов апдейта переноса игрока проводником

if travel_func ~= nil then

travel_func()

end

-- DEBUG slowdown

local time = time_global()

game_stats.update (delta, self.object)

-- апдейт погоды

self.weather_manager:update()

--' Апдейт саундменеджера

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

-- Обновление отключения ввода с клавиатуры.

if self.st.disable_input_time ~= nil and game.get_game_time():diffSec(self.st.disable_input_time) >= self.st.disable_input_idle then

level.enable_input()

self.st.disable_input_time = nil

end

-- Апдейт прятание оружия игрока во время диалога

if self.object:is_talking() then

if self.weapon_hide_in_dialog == false then

self.object:hide_weapon()

printf("hiding weapon!!!")

self.weapon_hide_in_dialog = true

end

else

if self.weapon_hide_in_dialog == true then

printf("restoring weapon!!!")

self.object:restore_weapon()

self.weapon_hide_in_dialog = false

end

end

-- Апдейт прятание оружия игрока в зоне sr_no_weapon

if check_for_weapon_hide_by_zones()==true then

if self.weapon_hide == false then

printf("hiding weapon!!!")

self.object:hide_weapon()

self.weapon_hide = true

end

else

if self.weapon_hide == true then

printf("restoring weapon!!!")

self.object:restore_weapon()

self.weapon_hide = false

end

end

-- обновление пси-антенны

if sr_psy_antenna.psy_antenna then

sr_psy_antenna.psy_antenna:update(delta)

end

if self.bCheckStart then

printf("SET DEFAULT INFOS")

if not has_alife_info("global_dialogs") then

self.object:give_info_portion("global_dialogs")

end

if not has_alife_info("level_changer_icons") then

self.object:give_info_portion("level_changer_icons")

end

self.bCheckStart = false

end

if not self.loaded_slot_applied then

self.object:activate_slot(self.loaded_active_slot)

self.loaded_slot_applied = true

end

xr_s.on_actor_update(delta)

 

-- ARS MOD --------------------------

ars.on_actor_update(self)

-- обработчик всяческих менеджеров четыре раза в секунду.

if TimeTrigger1<time then

TimeTrigger1=time+250

self:check_detective_achievement()

self:check_mutant_hunter_achievement()

if(level_anomaly)then

self.anomaly_manager:update()

end

end

-- ARS MOD --------------------------

-- Chimera addon. Dinamic scopes update

chimera_mod.din_scope()

 

if(self.surge_manager) then

if(self.f_surge_manager_loaded ~= true) then

self.surge_manager:initialize()

self.f_surge_manager_loaded = true

end

if(self.surge_manager.levels_respawn[level.name()]) then

self.surge_manager:respawn_artefacts_and_replace_anomaly_zone()

end

self.surge_manager:update()

end

-- Апдейт доступности для симуляции.

simulation_objects.get_sim_obj_registry():update_avaliability(alife():actor())

if not self.loaded then

get_console():execute("dump_infos")

self.loaded = true

end

treasure_manager.get_treasure_manager():update()

if not(primary_objects_filled) then

pda.fill_primary_objects()

primary_objects_filled = true

end

pda.fill_sleep_zones()

end

 

Содержание ui_custom_msgs:

<!--Chimera addon to ARS CoP-->

<din_pric x="640" y="512" stretch="1">

<texture>chimera\anim_cube</texture>

</din_pric>

anim_cube тестовая, файл .seq.

Изменено пользователем кровоSTALKER

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


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

Влад, тоже

Expression : !m_error_code

Function : raii_guard::~raii_guard

File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp

Line : 748

Description : .... - Çîâ Ïðèïÿòè\gamedata\scripts\bind_stalker.script:322: attempt to call field 'din_scope' (a nil value)

 

 

 

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


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

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