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

Объявление

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


Все писатели могут выложить свой рассказ в этой теме: Проза Хорошее чувство юмора? Прошу, докажите это: Юмор FM

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

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


Вы здесь » 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

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

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

-- Тут мы проверяем, получали ли мы раньше инфопоршень info_new_level
-- И если мы его не получали, то нам отмечается переход, и выдается этот инфопоршень
-- Нужно это для того, чтобы мы получали Отметку только один раз

function level_changer()
   if not has_alife_info("info_new_level") then
      otmetit_perehod()
      db.actor:give_info_portion("info_new_level")
   end
end

function otmetit_perehod()
for i=1,65534 do
   local obj = alife():object(i)
   if obj then
       if obj:name() == "Название 1-го левел чэнджера" then
           level.map_add_object_spot_ser(obj.id,"level_changer_up","Подпись 1")
       elseif obj:name() == "Название 2-го левел чэнджера" then
           level.map_add_object_spot_ser(obj.id,"level_changer_up","Подпись 2")
      --elseif .....
       end
   end
end

Название берётся из поля name level_changer'а в all.spawn;
Подпись - например, "На Кордон".
Далее, в bind_stalker.script после function actor_binder:update(delta) надо написать new_script.level_changer()
и в файле info_portions.xml зарегистрировать наш инфопоршень, добавив строку

<info_portion id="info_new_level"></info_portion>

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