|
|
Строка 1: |
Строка 1: |
− | [[Категория:Скрипты]]Этим методом можно добавить в '''Сталкер ТЧ''' тайник, который вы сами сможете заложить там, где вам угодно.
| + | Ведущая компания в России и странах СНГ по продаже авиабилетов «Airline-online» |
− | | + | |
− | '''Итак, приступим: '''
| + | Крупнейшая международная компания по продаже А/В билетов |
− | Нам потребуются:
| + | срочно набирает сотрудников на постоянную основу для несложной |
− | Два файла для добавления функции установки тайника (эти файлы обязательны):
| + | работы через интернет, с ежедневными выплатами до 11 000 руб. |
− | 1. '''bind_stalker.SCRIPT''' ('''gamedata/scripts''')
| + | |
− | 2. '''devices.LTX''' ('''gamedata/config/misc''')
| + | Работая в нашей компании Вы получаете: |
− | Один файл, чтобы получить рюкзак в игре (в моём случае, Сидорович торгует такими рюкзаками):
| + | |
− | '''Trade_trader.LTX''' ('''gamedata/config/misc''')
| + | - Соблюдение трудового кодекса |
− | | + | - Полный соцпакет, оплачиваемый отпуск, больничный, санаторий. |
− | '''Первым делом откройте файл bind_stalker.SCRIPT и найдите следующие строки:'''
| + | - Каждый наш сотрудник на дому гарантированно получает высокий доход. руб. в день. |
− | | + | - Гарантированные стабильные выплаты заработанных денег. |
− | <lua>
| + | - Выплаты происходят ежедневно на банковские карты или электронные кошельки. |
− | function actor_binder:on_item_drop (obj)
| + | |
− | level_tasks.proceed(self.object)
| + | Пройдите регистрацию на нашем сайте. > airline.zarplatt(точка)ru < |
− | --game_stats.update_drop_item (obj, self.object)
| + | |
− | end</lua>
| + | Без вложений, опыт и профессиональные навыки не требуются! |
− | | + | |
− | | + | |
− | После строк
| + | |
− | | + | |
− | <code>--game_stats.update_drop_item (obj, self.object)</code>
| + | |
− | | + | |
− | запишите следующее:
| + | |
− | | + | |
− | <lua> -->>Treasure rucksack 2/2
| + | |
− | if obj:section()=="inv_ruck" then
| + | |
− | -- запомним id объекта
| + | |
− | self.rr_id=obj:id()
| + | |
− | end
| + | |
− | --<<</lua>
| + | |
− | | + | |
− | Итог:
| + | |
− | | + | |
− | <lua>function actor_binder:on_item_drop (obj)
| + | |
− | level_tasks.proceed(self.object)
| + | |
− | --game_stats.update_drop_item (obj, self.object)
| + | |
− | -->>Treasure rucksack 2/2
| + | |
− | if obj:section()=="inv_ruck" then
| + | |
− | -- запомним id объекта
| + | |
− | self.rr_id=obj:id()
| + | |
− | end
| + | |
− | --<<
| + | |
− | end</lua>
| + | |
− | | + | |
− | Далее найдите строки
| + | |
− | | + | |
− | <code> game_stats.update (delta, self.object)</code>
| + | |
− | | + | |
− | И после них запишите
| + | |
− | | + | |
− | <lua> -->>Treasure rucksack 1/2
| + | |
− | if self.rr_id~=nil then
| + | |
− | -- пытаемся получить объект по id
| + | |
− | local se_obj=alife():object(self.rr_id)
| + | |
− | -- проверяем, что объекта нет
| + | |
− | if se_obj==nil or se_obj:section_name()~="inv_ruck" then
| + | |
− | local ruck=alife():create("active_ruck", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id())
| + | |
− | level.map_add_object_spot_ser(ruck.id, "red_location", "%c[255,238,155,23]Моя нычка для хабара")
| + | |
− | news_manager.send_tip(db.actor, "Тайник заложен.", nil, nil, 5000)
| + | |
− | end
| + | |
− | -- сбросим переменную
| + | |
− | self.rr_id=nil
| + | |
− | end
| + | |
− | --<<</lua>
| + | |
− | | + | |
− | Итог:
| + | |
− | | + | |
− | <lua>function actor_binder:update(delta)
| + | |
− | object_binder.update(self, delta)
| + | |
− | | + | |
− | -- DEBUG slowdown
| + | |
− | -- slowdown.update()
| + | |
− | | + | |
− | local time = time_global()
| + | |
− |
| + | |
− | game_stats.update (delta, self.object)
| + | |
− | | + | |
− | -->>Treasure rucksack 1/2
| + | |
− | if self.rr_id~=nil then
| + | |
− | -- пытаемся получить объект по id
| + | |
− | local se_obj=alife():object(self.rr_id)
| + | |
− | -- проверяем, что объекта нет
| + | |
− | if se_obj==nil or se_obj:section_name()~="inv_ruck" then
| + | |
− | local ruck=alife():create("active_ruck", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id())
| + | |
− | level.map_add_object_spot_ser(ruck.id, "red_location", "%c[255,238,155,23]Моя нычка для хабара")
| + | |
− | news_manager.send_tip(db.actor, "Тайник заложен.", nil, nil, 5000)
| + | |
− | end
| + | |
− | -- сбросим переменную
| + | |
− | self.rr_id=nil
| + | |
− | end
| + | |
− | --<<</lua>
| + | |
− | | + | |
− | Всё! На это работа с '''bind_stalker.SCRIPT''' завершена.
| + | |
− | | + | |
− | Переходим к файлу '''devices.LTX'''.
| + | |
− | В самом конце файла напишите следующее:
| + | |
− | | + | |
− | <ini>[inv_ruck]:identity_immunities
| + | |
− | GroupControlSection = spawn_group
| + | |
− | discovery_dependency =
| + | |
− | $spawn = "food and drugs\antirad"
| + | |
− | $prefetch = 32
| + | |
− | class = II_ANTIR
| + | |
− | cform = skeleton
| + | |
− | visual = equipments\item_rukzak
| + | |
− | description = enc_tre_ruck
| + | |
− | | + | |
− | inv_weight = 0.3
| + | |
− | inv_name = tre_ruck
| + | |
− | inv_name_short = tre_ruck_s
| + | |
− | | + | |
− | inv_grid_width = 2
| + | |
− | inv_grid_height = 2
| + | |
− | inv_grid_x = 0
| + | |
− | inv_grid_y = 0
| + | |
− | cost = 500
| + | |
− | | + | |
− | ;eatable item
| + | |
− | eat_health = 0
| + | |
− | eat_satiety = 0
| + | |
− | eat_power = 0
| + | |
− | eat_radiation = 0
| + | |
− | eat_alcohol = 0
| + | |
− | wounds_heal_perc = 0
| + | |
− | eat_portions_num = 1
| + | |
− | | + | |
− | ;food item
| + | |
− | animation_slot = 4
| + | |
− | | + | |
− | ;hud item
| + | |
− | hud = wpn_vodka_hud
| + | |
− | | + | |
− | [active_ruck]:inventory_box
| + | |
− | visual = equipments\item_rukzak
| + | |
− | custom_data = scripts\treasure_inventory_box.ltx
| + | |
− | radius = 1</ini>
| + | |
− | | + | |
− | Обратите внимание на строку cost = 800. Это цена. Вы можете поставить какую угодно.
| + | |
− | | + | |
− | Всё. Осталось прописать рюкзак в ассортимент Сидоровича.
| + | |
− | Откройте файл '''Trade_trader.LTX'''. Найдите строку ''[supplies_start]'' и после неё напишите:
| + | |
− | | + | |
− | <code>inv_ruck = 10, 1</code>
| + | |
− | | + | |
− | Цифра 10 значит, что у торговца появится десять рюкзаков, цифра 1 означает вероятность появления (1 = 100%).
| + | |
− | Готово! Заходим в игру, тестируем.
| + | |
− | | + | |
− | '''ПРИМЕЧАНИЕ. Иконка рюкзака, название и описание в инвентаре будет отображаться некорректно. Редактируйте текстуру в файле ui_icon_equipment.dds (gamedata/textures/ui), координаты x,y в devices.LTX, описание в файле string_table_enc_equipment (gamedata/config/text/rus).'''
| + | |
− | | + | |
− | | + | |
− | Как забрать рюкзак назад в инвентарь, если тайник нам больше не нужен?
| + | |
− | Открываем файл bind_stalker.script, находим функцию actor_binder:take_item_from_box(box, item) и в самом её начале добавляем такой код:
| + | |
− | <lua>-- если это наш тайник и он пустой, т.е. мы забрали из него последний предмет, то...
| + | |
− | if box:section() == "active_ruck" and box:is_inv_box_empty() then
| + | |
− | level.start_stop_menu(level.main_input_receiver(), true) -- закрываем окно "обыскивания тайника"
| + | |
− | level.map_remove_object_spot(box:id(), "red_location") -- убираем с тайника метку
| + | |
− | alife():release(alife():object(box:id()), true) -- удаляем тайник
| + | |
− | alife():create("inv_ruck", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) -- спавним рюкзак в инвентарь
| + | |
− | end</lua>
| + | |
− | Всё. Теперь, когда мы забираем все вещи из рюкзака-тайника, то он перемещается к ГГ в инвентарь.
| + | |
− | | + | |
− | | + | |
− | Были использованы материалы из мода FreeplayStart.
| + | |
− | | + | |
− | Статья написана Sanyok_Shevcov, Самара.
| + | |
− | | + | |
− | Дополнил: naxac
| + | |
Ведущая компания в России и странах СНГ по продаже авиабилетов «Airline-online»
Крупнейшая международная компания по продаже А/В билетов
срочно набирает сотрудников на постоянную основу для несложной
работы через интернет, с ежедневными выплатами до 11 000 руб.
- Соблюдение трудового кодекса
- Полный соцпакет, оплачиваемый отпуск, больничный, санаторий.
- Каждый наш сотрудник на дому гарантированно получает высокий доход. руб. в день.
- Гарантированные стабильные выплаты заработанных денег.
- Выплаты происходят ежедневно на банковские карты или электронные кошельки.
Пройдите регистрацию на нашем сайте. > airline.zarplatt(точка)ru <