15:30, 09.05.2024
Новые сообщения · Участники · Правила форума · Поиск · RSS
  • Страница 1 из 1
  • 1
Форум » Модостроение » Модостроение COP » Скрипты
Скрипты
adminДата: Среда, 18.04.2012, 21:26 | Сообщение # 1
Пользователи
Сообщений: 407
Награды: 5
Репутация: 102
Статус:
Частота выбросов
открываем файл: scripts\surge_manager.ltx
и меням параметры:
local START_MIN_SURGE_TIME -------- минимальное время до первого выброса
local START_MAX_SURGE_TIME ------ максимальное время до первого выброса
local MIN_SURGE_TIME -------------------- минимальное время между выбросами
local MAX_SURGE_TIME ------------------ максимальное время между выбросами
Формат: ЧЧ*ММ*СС игрового времени


 
adminДата: Среда, 18.04.2012, 21:26 | Сообщение # 2
Пользователи
Сообщений: 407
Награды: 5
Репутация: 102
Статус:
Выводим координаты на худ
В файл: \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
Координаты будут выводиться в новости. Писк только напрягает - так выключи звук, поди модишь чего, та звук и не нужен.


 
adminДата: Среда, 18.04.2012, 21:26 | Сообщение # 3
Пользователи
Сообщений: 407
Награды: 5
Репутация: 102
Статус:
Скриптеры никогда не делайте так!
Хочу поделиться советом, как избежать ошибки, приводящей к вылету (на которую сам часто напарывался).
Надо проверить наличие предмета, и что-то сделать.
Допустим, надо выяснить какой броник надет на ГГ и изменить какие-то параметры.
честно пишем:
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


 
adminДата: Среда, 18.04.2012, 21:27 | Сообщение # 4
Пользователи
Сообщений: 407
Награды: 5
Репутация: 102
Статус:
Где настроить уборку трупов?
В файле: scripts\release_body_manager.script
Строки:
IDLE_AFTER_DEATH = 40000 --через 40 секунд после смерти, труп помечается на удаление
body_max_count = 15 --максимальное количество трупов


 
adminДата: Среда, 18.04.2012, 21:27 | Сообщение # 5
Пользователи
Сообщений: 407
Награды: 5
Репутация: 102
Статус:
Проверяем кол-во денег у ГГ
Функция проверки денег ГГ:
Добавляем в скрипт такую функцию, либо создаем новый скрипт в папке 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>


 
adminДата: Среда, 18.04.2012, 21:28 | Сообщение # 6
Пользователи
Сообщений: 407
Награды: 5
Репутация: 102
Статус:
Какая функция отвечает за цены проводников по локации?
файл: scripts\travel_manager.script
Функция:
function get_price_by_distance(distance)
return math.ceil(distance/50)*50
end
distance - расстояние
50 - коэфициент


 
adminДата: Среда, 18.04.2012, 21:28 | Сообщение # 7
Пользователи
Сообщений: 407
Награды: 5
Репутация: 102
Статус:
Добавляем отметку перехода между локациями
Создаем скрипт, например 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>


 
adminДата: Среда, 18.04.2012, 21:28 | Сообщение # 8
Пользователи
Сообщений: 407
Награды: 5
Репутация: 102
Статус:
Убираем персонажа
Способ №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


 
adminДата: Среда, 18.04.2012, 21:28 | Сообщение # 9
Пользователи
Сообщений: 407
Награды: 5
Репутация: 102
Статус:
Как сделать чтобы бандиты водили тебя по локации?
В файле 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


 
adminДата: Среда, 18.04.2012, 21:29 | Сообщение # 10
Пользователи
Сообщений: 407
Награды: 5
Репутация: 102
Статус:
Какой файл отвечает за статистику?
scripts\xr_statistic.script


 
kpsamararuДата: Воскресенье, 09.02.2014, 06:07 | Сообщение # 11
Гости





Новости Самары каждый день, читать бесплатно свежий выпуск,
http://kpsamara.ru/category/smbc/ - самара районы города
Узнай первым о первых событиях в мире и городе <a href="http://kpsamara.ru">школы города самара</a>. Только свежие Новости Самары, авто Новости
http://kpsamara.ru - погода в самаре сегодня купить продать, подробнее http://kpsamara.ru/category/smbc/
 
Форум » Модостроение » Модостроение COP » Скрипты
  • Страница 1 из 1
  • 1
Поиск: