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

Уроки по модостроению


Zeka1996Korneev

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

Некролог (оповещение о смерти сталкера)
Сложность: легко
Автор скрипта: 
Weanchester, взято из stalkerin.gameru
Доработал: Hind

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

Создаём скрипт в папке gamedata/scripts и называем его как хотим (в данном случае dmb.script)
Туда пишем:

local level_name = {
	["l01_escape"] = "Кордон",
	["l02_garbage"] = "Свалка",
	["l03_agroprom"] = "НИИ Агропром",
	["l03u_agr_underground"] = "Подземелье НИИ Агропром",
	["l04_darkvalley"] = "Тёмная долина",
	["l04u_labx18"] = "Лаборатория X-18",
	["l05_bar"] = "Бар",
	["l06_rostok"] = "Дикая территория",
	["l07_military"] = "Арм.склады",
	["l08_yantar"] = "Янтарь",
	["l08u_brainlab"] = "Лаборатория X-16",
	["l10u_bunker"] = "Лаборатория X-10",
	["l10_radar"] = "Радар",
	["l11_pripyat"] = "Припять",
	["l12_stancia"] = "ЧАЭС",
	["l12_stancia_2"] = "ЧАЭС",
	["l12u_sarcofag"] = "Саркофаг",
	["l12u_control_monolith"] = "Управление Монолитом"
			}

local community = {
	["stalker"] = "Одиночка",
	["monolith"] = "Монолит",
	["military"] = "Военные",
	["bandit"] = "Бандит",
	["killer"] = "Наемник",
	["ecolog"] = "Эколог",
	["dolg"] = "Долг",
	["freedom"] = "Свобода",
	["zombied"] = "Зомбированный",
	["trader"] = "Торговец"
		}
 
function kill_npc(victim, who)
	if victim and IsStalker(victim) then
		local t = time_global()
		local dead_news = "%c[0,255,0,0]ПОГИБ СТАЛКЕР \\n%c[255,160,160,160]Группировка: %c[default]"..community[victim:character_community()].."\\n%c[255,160,160,160]Кличка: %c[default]"..victim:character_name().."\\n%c[255,160,160,160]Локация: %c[default]"..level_name[level.name()]..""
		db.actor:give_game_news(dead_news, "ui\\ui_icons_npc", Frect():set(2,130,124,124), 3000, 4000)
	elseif t > time_global() + 3000 then
		dmb2.news_sound()
	end
end

 


Вот и всё! Теперь после смерти сталкеров, спустя 3 секунды у нас будет оповещение о смерти со звуком!
З.Ы. Статья создана новичком, поэтому и оформлена по васяновски. Прошу меня простить если не понятно :)


Рабочая гитара
Сложность: средне
Автор скрипта: Hind
*некоторые функции брал из открытых источников. к сожалению авторов не помню
Лежала как то без дела гитара, поделюсь с народом.:drinks:

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

В этом уроке рассмотрим создание рабочей гитары, которая будет играть ту музыку, которую мы захотим. Нам надо всего 3 файла: bind_stalker.script, ваш_скрипт1.script, ваш_скрипт2.script (в моём случае это dmb и dmb2 соответственно)

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

Итак, в bind_stalker.script пишем:
В function actor_binder:net_destroy() пишем:

self.object:set_callback(callback.use_object, nil)


В function actor_binder:reinit() пишем:

self.object:set_callback(callback.use_object, self.use_object, self)


И где хотим добавляем следующую функцию:

function actor_binder:use_object(obj)
	dmb.use_item(obj)
	dmb.use_snd(obj)
end

 


Далее идём в наш созданный скрипт (в данном случае у меня это dmb.script), и там пишем следующее:

Скрытый текст
local tSound ={
gitara = "interface\\inv_gitara", -- путь до нашего звука при юзании предмета. Вместо него ставим какой хотим, разумеется
}

function use_item(obj)
	local obj = obj:section()
	if obj then
		if obj == "gitara" then -- наш предмет (в данном случае я уже создал юзабельный предмет, и подогнал его как Гитару)
			dmb2.start_timer() -- включаем таймер
		end
	end
end

function use_snd(obj)
	if obj and tSound[obj:section()] then
	local snd = xr_sound.get_safe_sound_object(tSound[obj:section()])
		if snd then
			snd:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 2.0)
		end
	end
end

 


и идём во второй наш скрипт, где пишем:

Скрытый текст
function action_timer()
    alife():create("gitara", db.actor:position(), 1, db.actor:game_vertex_id(), db.actor:id())
end
 
function start_timer() -- функция на которую мы ссылались при юзании в первом скрипте
    local iTimer = time_global() + 17000 -- наше время песни, т.е. 17 секунд. Спустя 17 секунд, гитара нам вернется в инвентарь.
    local function check_timer()
        return time_global() > iTimer
    end
    level.add_call(check_timer, action_timer)
end

 


Ну, и вроде всё! Не забудьте проверить правильность копирования, убрать стрелочки, с помощью которых я указывал на что-либо, и вуаля.


Если где-то ошибся, или не работает, маякните :biggrin:

  • Полезно 2

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


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

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

AMK-Team.ru

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