Скрипты
|
|
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/
|
|
| |