Главная Мой профиль Регистрация Выход Вход
Приветствую Вас Гость | RSS ВходРегистрацияГлавная
Меню сайта
Категории раздела
Моддинг [2]
Статьи о моддинге, от сайта stalker-modding.at.ua
Поиск
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Главная » Статьи » Моддинг

Сборник готовых скриптов

Большая часть представленных здесь скриптов была собрана на просторах иинтернета. Большое спасибо их авторам!

Внимание: Не все скрипты были проверенны на работоспособность и поэтому в случае выявления нерабочих функций напишите администратору.

А также: если вы не знаете как в диалог прописать функции, пользоваться проверками, а также инфопоршнями, поищите здесь!

Если у вас нет скриптов АМК и вы не знаете где их взять вам дорога сюда!

Если Вы не знаете как узнать координаты, эта статья Вам поможет!

И напоследок. Если вы новичёк, настоятельно рекомендуется ознакомиться с основами скриптования в сталкере!

Функции для вызова через диалоги

Передача предмета от ГГ к собеседнику

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
Категория: Моддинг | Добавил: Главный_администратор (07.06.2015)
Просмотров: 10015 | Комментарии: 2 | Рейтинг: 5.9/8
Всего комментариев: 2
avatar
1 newsexever • 15:40, 17.01.2022
помогите написать скрипт для ОП 2.2 Суть: если одели броню военных - автоматом сменили группировку на военных, и так для бандитов и других фракций. Понятное дело, чтобы они светились зелененькими, пока мы в их форме
avatar
2 кот • 19:56, 29.01.2022
помогите написать скрипт чтоб торговец забирал у меня предмет и например 500 рублей и отдавал другой? сталкер аномали
avatar
Вход на сайт
Реклама
WMmail.ru - сервис почтовых рассылок
Наш опрос
А чего Вы достигли в моддинге игры S.T.A.L.K.E.R.?
Всего ответов: 36

Copyright stalker-modding.at.ua © 2024
Хостинг от uCoz