Большая часть представленных здесь скриптов была собрана на просторах иинтернета. Большое спасибо их авторам!
Внимание: Не все скрипты были проверенны на работоспособность и поэтому в случае выявления нерабочих функций напишите администратору.
А также:если вы не знаете как в диалог прописать функции, пользоваться проверками, а также инфопоршнями, поищите здесь!
Если у вас нет скриптов АМК и вы не знаете где их взять вам дорога сюда!
Если Вы не знаете как узнать координаты, эта статья Вам поможет!
И напоследок. Если вы новичёк, настоятельно рекомендуется ознакомиться с основами скриптования в сталкере!
Функции для вызова через диалоги
Передача предмета от ГГ к собеседнику
function название_функции (trader, actor)
dialogs.relocate_item_section(trader, "секция_шмотки", "out")
end
Передача предмета от собеседника к ГГ
function название_функции (trader, actor)
dialogs.relocate_item_section(trader, "секция_шмотки", "in")
end
Передача денег от ГГ к собеседнику
function название_функции (first_speaker, second_speaker)
dialogs.relocate_money(second_speaker, "кол-во денег, например 1000 (без кавычек)", "out")
end
Передача денег от собеседника к ГГ
function название_функции (first_speaker, second_speaker)
dialogs.relocate_money(second_speaker, "кол-во денег, например 1000 (без кавычек)", "in")
end
Убить НПС
function название_функции(actor, npc)
npc:kill(npc)
end
Сделать НПС врагом ГГ
function название_функции(actor, npc)
npc:set_relation (game_object.enemy, db.actor)
end
Изменить отношение ГГ к НПС
function название_функции(actor, npc)
actor:force_set_goodwill( -1000, npc) -- "-1000" - значение на сколько.
end
Изменить отношение НПС к ГГ
function название_функции(actor, npc)
npc:force_set_goodwill( -1000, actor) -- "-1000" - значение на сколько.
end
Меняем группировку
function название_функции(actor, npc)
npc:set_character_community("название_группировки", 0, 0)
end
Функции, использующие скрипты от АМК
Спавн НПС с записью его ID
function название_функции()
local obj = alife():create("профиль_НПС",vector():set(x,y,z),level_vertex,game_vertex) --вписываем координаты
local tbl = amk.read_stalker_params(obj)
tbl.sid = 97120 -- ID - любое число, но оно не должно повторятся с уже существующими (см. файл: game_story_ids в конфигах)
amk.write_stalker_params(tbl, obj)
end
Спавн раненого НПС
function название_функции
local obj = alife():create("секция_НПС",vector():set(коорд. x,коорд. y,коорд. z),значение level_vertex,значение game_vertex_id)
local tbl = amk.read_stalker_params(obj)
tbl.health = 0.1 --параметр здоровья НПС
tbl.updhealth = 0.05 --параметр здоровья НПС
amk.write_stalker_params(tbl, obj)
end
Функции для вызова любым способом
Воспроизвести звуковой сигнал в голове ГГ
function название_функции()
local snd = sound_object(задаём путь к *.ogg файлу в папке sounds Например(писать без кавычек):"[[characters_voice\human_03\stalker\talk\leaves\leaves_42]]")
snd:play_no_feedback(db.actor,sound_object.s2d, 0, vector():set(0, 0, 0), 2.0)
end
Красивый вариант
function Название_функции()
local x= коорд. x
local y= коорд. y
local z= коорд. z
local level_vertex= значение level_vertex
local game_vertex_id= значение game_vertex_id
alife():create("секция_предмета_или_НПС",vector():set(x,y,z),level_vertex,game_vertex_id)
end
Некрасивый вариант, но легче для ЦП
function Название_функции()
alife():create("секция_предмета_или_НПС",vector():set(коорд. x,коорд. y,коорд. z),значение level_vertex,значение game_vertex_id)
end
Телепортация ГГ
function название_функции()
local a = vector()
a.x = координата_x
a.y = координата_y
a.z = координата_z
db.actor:set_actor_position(a)
end
Отослать сообщение ГГ на ПДА
function название_функции()
local snd = sound_object([[device\pda\pda_tip]]) --путь к звуковому файлу в папке sounds
local sactor = alife():actor()
local cactor = level.object_by_id(sactor.id)
snd:play_no_feedback(db.actor,sound_object.s2d, 5, vector():set(0, 0, 0), 0.7)
cactor:give_game_news("Источник сообщения:\\n%c[255,200,200,200]Текст СМС.", "название_текстуры (прописать в подходящий файл из папки config/ui)", Frect():set(0,0,84,48), math.random(2000, 5001), 8000) --math.random(2000, 5001) случайно выбирает число от 2000 до 5001 мс и показывает СМС по истечению этого время после вызова функции
end
Удаляем предмет 1
function название_функции()
local oItem = db.actor:object("секция_предмета") --/ определяем предмет у ГГ
if oItem then --/если у ГГ есть предмет
db.actor:drop_item(oItem) --/ выбрасываем предмет (опционально)
alife():release(alife():object(oItem:id()), true) --/ удаляем из игры
end
end
Удаляем предмет 2
function название_функции()
for a = 1,65534 do
local se_obj = alife():object(a)
if se_obj and se_obj:section_name() == "СЕКЦИЯ_ПРЕДМЕТА" then
alife():release(se_obj, true)
end
end
end
Удаляем несколько одинаковых предметов
function название_функции()
local cnt = db.actor:object_count()
local ch=0
for i=0, cnt-1 do
local item = db.actor:object(i)
if item:section() == "секция_предмета" then
local sobj = alife():object(item:id())
if sobj then
alife():release(sobj,true)
ch = ch+1
if ch == число_удаляемых_шмоток then -- введите сколько штук удалить
break end
end
end
end
end
Рандомное удаление предметов из инвентаря ГГ
function название_функции(num)
local actor = db.actor
local cnt = actor:object_count()
if cnt for i=1,num do
local item = actor:object(math.random(0, cnt-1))
local sobj = alife():object(item:id())
if sobj then alife():release(sobj,true)
cnt = actor:object_count()
end
end
end
Удаляем абсолютно всё (в т. ч. болт, нож, пда...)
function название_функции()
local cnt = db.actor:object_count()
for i=0, cnt-1 do
local item = db.actor:object(i)
local sobj = alife():object(item:id())
if sobj then
alife():release(sobj,true)
end
end
end
Спавн НПС с записью его ID
function название_функции()
local idMyNPC = nil
local soObj = alife():create("профиль_НПС",vector():set(x,y,z),level_vertex,game_vertex) --вводим координаты
if soObj then
idMyNPC = soObj.id --/ запоминаем
end
end
Вызов .PPE эффекта (эфекта камеры)
function название_функции()
level.add_cam_effector("camera_effects\fusker.anm", 999, false, "") --"camera_effects\fusker.anm" путь к анимке. fusker - удар по харе
end
Увеличивает
function название_функции()
db.actor:change_character_reputation(db.actor:character_reputation() + 10) -- "10" - это на сколько репутация изменится
end
Уменьшает
function название_функции()
db.actor:change_character_reputation(db.actor:character_reputation() - 10) -- "10" - это на сколько репутация изменится
end
Увеличивает
function название_функции()
db.actor.health = +0.3 --0.3 - это 30% хп (ставьте сколько хотите)
end
Уменьшает
function название_функции()
db.actor.health = -0.3 --0.3 - это 30% хп (ставьте сколько хотите)
end
Меняем группировку ГГ
function название_функции()
db.actor:set_character_community("название_группировки", 0, 0)
end
Меняем группировку НПС
function название_функции()
local npc = level_object_by_sid(006) --"006" - ID непися. Конкретно 006 это Волк
npc:set_character_community("название_группировки", 0, 0)
end
Спавним труп
function название_функции()
local obj= alife():create("секция_НПС",vector():set(x,y,z),level_vertex,game_vertex)--задаём координаты!
obj:on_death()
end
Спавним и вешаем метку в ПДА
function название_функции()
local ObjId=0
local obj= alife():create("секция_НПС",vector():set(x,y,z),level_vertex,game_vertex)--задаём координаты!
local text = "Текст метки"
level.map_add_object_spot_ser(obj.id, "blue_location", text) --/blue_location - тип метки
ObjId=obj.id
end
Удаляем метку
function название_функции()
for a=1,65534 do --Перебор айди
local obj = alife():object(a)
if obj and obj:section_name() == "секция_профиля_НПС_на_котором_метка" then
level.map_remove_object_spot(obj.id,"blue_location") --/blue_location - тип повешенной метки
break
end
end
end
Выдаём инфу
function название_функции()
db.actor:give_info_portion("ПОРШЕНЬ")
end
Удаляем инфу
function название_функции()
db.actor:disable_info_portion("ПОРШЕНЬ")
end
Удаляем НПС/прадмет
function название_функции()
local se_obj = alife():object("секция_предмета/НПС")
if se_obj then
alife():release(se_obj, true)
end
end
Используем предмет
function название_функции()
local item = db.actor:object("секция_предмета")
db.actor:eat(item)
end
Различные проверки
Проверка на наличие одного предмета
function название_функции()
return first_speaker:object("секция_предмета") ~= nil
end
Проверка на наличие нескольких и/или разных предметов
function название_функции()
return название_файла_со_скриптом_"имя_скрипта".("bread",2,"kolbasa",2,"conserva") -- в скобках прописаны секции предметов, после идёт нужное кол.-во каждого предмета
end
function имя_скрипта(section,number) --меняя имя ф-ции. меняйте его также в строчке выше: "return..." ()
local actor = db.actor
if actor then
local cnt = 0
actor:iterate_inventory(
function (dummy, item)
if item:section() == section then cnt = cnt + 1 end
end
,nil)
return cnt >= number
end
return false
end
Надет ли костюм
function название_функции()
local outfit = db.actor:item_in_slot(6)
if outfit:section() == "exo_outfit" then --/Если в 6 слоте присутствует "exo_outfit" тогда
return true --/"exo_outfit" одет
else
return false --/"exo_outfit" не одет
end
end
Не надет ли костюм
function название_функции()
local outfit = db.actor:item_in_slot(6)
if outfit:section() == "exo_outfit" then --/Если в 6 слоте присутствует "exo_outfit" тогда
return false --/"exo_outfit" одет
else
return true --/"exo_outfit" не одет
end
end
Находится ли ГГ на определённой локации
function название_функции()
if level_name == "название_локации" then
return true
else
return false
end
end
Есть ли у ГГ определённая сумма денег
function название_функции()
if actor:money() >= 500 then --"500" - это сумма денег
return true
else
return false
end
end
Нет ли у ГГ определённой суммы денег
function название_функции()
if actor:money() <= 500 then --"500" - это сумма денег
return true
else
return false
end
end
Жив ли ГГ
function название_функции()
if db.actor:alive() then
return true
end
end
Мёртв ли ГГ
function название_функции()
if not db.actor:alive() then
return true
end
end
помогите написать скрипт для ОП 2.2 Суть: если одели броню военных - автоматом сменили группировку на военных, и так для бандитов и других фракций. Понятное дело, чтобы они светились зелененькими, пока мы в их форме