S.T.A.L.K.E.R|Модостроение

Объявление

В общем, какие-то проблемы с загрузкой сайта.
Добавь в закладки
Будем постепенно решать...
БАННЕР САЙТА
Новички и бывалые найдут здесь себе пристанище


тестинг тестинг

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » S.T.A.L.K.E.R|Модостроение » Уроки по модостроению [ЗП] » По мелочам [Скрипты [Scripts]]


По мелочам [Скрипты [Scripts]]

Сообщений 1 страница 10 из 57

1

Частота выбросов

открываем файл: scripts\surge_manager.ltx
и меням параметры:

local START_MIN_SURGE_TIME -------- минимальное время до первого выброса
local START_MAX_SURGE_TIME ------ максимальное время до первого выброса
local MIN_SURGE_TIME -------------------- минимальное время между выбросами
local MAX_SURGE_TIME ------------------ максимальное время между выбросами

Формат: ЧЧ*ММ*СС игрового времени

0

2

Выводим координаты на худ

В файл: \scripts\bind_stalker.script
После:

function actor_binder:update(delta)
object_binder.update(self, delta)

Добавить вот эту строчку:

if db.actor then news_manager.send_tip(db.actor,db.actor:game_vertex_id().." "..db.actor:position().x.." "..db.actor:position().y.." "..db.actor:position().z,0,mutant_hunter,10000,nil,"Gvertex X Y Z") end

Координаты будут выводиться в новости. Писк только напрягает - так выключи звук, поди модишь чего, та звук и не нужен.

0

3

Скриптеры никогда не делайте так!

Хочу поделиться советом, как избежать ошибки, приводящей к вылету (на которую сам часто напарывался).
Надо проверить наличие предмета, и что-то сделать.
Допустим, надо выяснить какой броник надет на ГГ и изменить какие-то параметры.
честно пишем:

local outfit_in_slot=db.actor:item_in_slot(7)
if outfit_in_slot~=nil and outfit_in_slot:section_name()=="чегототам" then

полагая, что LUA проверит первое условие, и , если ГГ голый не будет проверять второе. Однако LUA честно проверит оба условия, а потом сделает вывод true или false. Вот, а теперь представим, что ГГ голый.

Первое условие nil

Второе условие можно интерпретировать так nil:section() -т.е попытку применить функцию объекта к пустоте. Краш!!! Попытка смешать французское с нижегородским в данном случае приводит к печальным результатам! А как?

local outfit_in_slot=db.actor:item_in_slot(7)
if outfit_in_slot~=nil then --если голый валим отсюда, а не узнаём покрой пиджака
if outfit_in_slot:section_name()=="чегототам" then
....................
end
end

0

4

Где настроить уборку трупов?

В файле: scripts\release_body_manager.script
Строки:
IDLE_AFTER_DEATH = 40000 --через 40 секунд после смерти, труп помечается на удаление
body_max_count = 15 --максимальное количество трупов

0

5

Проверяем кол-во денег у ГГ

Функция проверки денег ГГ:
Добавляем в скрипт такую функцию, либо создаем новый скрипт в папке gamedata\scripts\
В скобках после math.floor указываем нужное кол-во денег
Также операторы для предпоследней строки:
==
равно
>=
больше или равно
<=
меньше или равно
~=
Не равно
<
Меньше
>
больше

function Имя_Функции()
local money = math.floor(Кол-во денег)
return db.actor:money()ОПЕРАТОРmoney
end

Использование прекондишна:

<dialog id="Dialog_1"> - id диалога
   <precondition>ИМЯ_Скрипта.ИМЯ_Функции</precondition> - проверка денег
       <phrase_list> - ветки диалога
           <phrase id="1">
                       ...
           </phrase>
       </phrase_list>
   </dialog>

0

6

Какая функция отвечает за цены проводников по локации?

файл: scripts\travel_manager.script

Функция:
function get_price_by_distance(distance)
return math.ceil(distance/50)*50
end

distance - расстояние
50 - коэфициент

0

7

Добавляем отметку перехода между локациями

Создаем скрипт в папке gamedata\scripts, например: map_targets.script
В него вставляем следующие функции:

function map_level_changer_spot()

local zaton_spot = get_story_object_id("уникальный_ид_перехода")

if (not has_alife_info("give_info_level_changer_spot")) then
level.map_add_object_spot_ser(zaton_spot, "имя_секции_иконки", "Путь к заводу Юпитер")
db.actor:give_info_portion("give_info_level_changer_spot")
end

end

А в gamedata\scripts\bind_stalker.script в функцию actor_binder:update(delta) добавляем:

map_targets.map_level_changer_spot()

Теперь, что касается регистрации иконки. Топаем сюда: gamedata\configs\ui
И работаем с двумя файлами: map_spots.xml и map_spots_16.xml
Либо оттуда берём зарегистрированную иконку, либо создаём по аналогии (в двух файлах секции будут идентичны: для обычного монитора и широкоформатного).

0

8

Убираем персонажа

Способ №1

function del_nik()
local id, obj, kto
for id=0, 65535 do
obj = alife():object(id)--вот здесь
if obj then
if IsStalker(obj) then
kto = obj:section_name()
if (kto == "nikitka") then
alife():release(alife():object(id), true)
end
end
end
end
news_manager.send_tip(db.actor,"Персонаж удален",0,mutant_hunter,10000,nil,"Тест инфо")
end

Способ №2

local npc_id = get_story_object_id("nikitka")
if npc_id ~= nil then
alife():release(alife():object(npc_id), true)
end

0

9

Как сделать чтобы бандиты водили тебя по локации?

В файле scripts\travel_manager.script
Ищем:

function uni_traveler_precond(actor, npc)
local squad = get_object_squad(npc)
if squad ~= nil and squad:commander_id() ~= npc:id() then
return false
end
if npc:character_community() == "bandit" then
return false
end
if level.name() == "jupiter_underground" then
return false
end

Закомментируем проверку, что бандиты не могут водить, вот так:

function uni_traveler_precond(actor, npc)
local squad = get_object_squad(npc)
if squad ~= nil and squad:commander_id() ~= npc:id() then
return false
end

--теперь бандиты тоже водят по маршруту

--if npc:character_community() == "bandit" then
--return false
--end
if level.name() == "jupiter_underground" then
return false
end

0

10

Какой файл отвечает за статистику?

scripts\xr_statistic.script

0


Вы здесь » S.T.A.L.K.E.R|Модостроение » Уроки по модостроению [ЗП] » По мелочам [Скрипты [Scripts]]


Создать форум © iboard.ws Видеочат kdovolalmi.cz