Меню

Пда

Чатик

Поиск

Главная » Статьи » Моды и моддинг » Моддинг

Создание ремонтника.

Создание ремонтника.
Продолжем нашее так сказать обучение, как уже хочет публика,
требуется новый НПС и ещё что бы был ремонтником, на счёт нового
НПС можно посмотреть здесь, а по возможности ремонта сейчас
раскажем....
кто сделал ф-ию ремонта, мне не известно(кто знает, пусть напишет),
но она мелькала и продолжает мелькать в большинстве глобальных
модов...
что нам понадобится: готовый новый НПС, файлы в составе:
all.spawn в gamedata/spawns
character_desc_escape.xml в gamedata/config/gameplay
npc_profile.xml в gamedata/config/gameplay
а также файлы оригиналы:
\config:
localization.ltx
system.ltx
\script
escape_dialog. script
и создать новые:
dialogs_repair.xml
stable_repair_dialogs.xml
теперь всё по порядку:
сперва отредактируем имеющиеся файлы, тоесть те, которые не
требуется создавать:
в character_desc_escape.xml пропишем нашему НПС диалог:
<!---------------------------------------
esc_mehanik----------------------------------------------------->
<specific_character id="mehanik" team_default = "1">
<name>mehanik</name>
<icon>ui_npc_u_green_stalker_5</icon>
<bio>esc_stalker_novice_bio</bio>
<class>mehanik</class>
<community>stalker</community>
<terrain_sect>stalker_terrain</terrain_sect>
<rank>350</rank>
<reputation>10</reputation>
<money min="200" max="600" infinitive="0"/>
<snd_config>characters_voice\human_01\newbie\</snd_config>
<crouch_type>-1</crouch_type>
<visual>actors\soldier\soldier_bandana_6</visual>
<supplies>
[spawn] \n
wpn_pm \n
ammo_9x18_fmj = 1 \n
wpn_bm16 \n
ammo_12x70_buck \n
device_torch \n
#include "gameplay\character_items.xml" \n
#include "gameplay\character_food.xml"
</supplies>
#include "gameplay\character_criticals_3.xml"
<start_dialog>hello_dialog</start_dialog>
<actor_dialog>escape_repair</actor_dialog>
</specific_character>
в system.ltx сделаем ссылку на нашь repaid_dialog:
[dialogs]
files = dialogs_test, dialogs, dialogs_escape, dialogs_garbage,
dialogs_agroprom, dialogs_deadcity, dialogs_darkvalley, dialogs_pripyat,
dialogs_bar, dialogs_yantar, dialogs_military, dialogs_labx18,
dialogs_radar, dialogs_aes, dialogs_repair
в localization.ltx сделаем ссылку на текст диалога:
files = ui_st_pda, ui_st_mm_mp, ui_st_inventory, string_table_tutorial,
string_table_general, string_table_includes, stable_dialog_manager,
stable_dialog_manager_uni, stable_task_manager,
stable_treasure_manager, string_table_level_tips, string_table_items,
string_table_ui, string_table_enc_zone, string_table_outfit, stable_dialogs,
stable_dialogs_escape, stable_dialogs_garbage, stable_dialogs_agroprom,
stable_dialogs_deadcity, stable_dialogs_darkvalley,
stable_dialogs_pripyat, stable_dialogs_labx18, stable_dialogs_bar,
stable_dialogs_military, stable_dialogs_yantar, stable_dialogs_radar,
stable_dialogs_aes, mp_st_speechmenu, ui_st_keybinding,
ui_mp_teamdesc, ui_st_mm, stable_stories, ui_st_mapdesc,
string_table_enc_social, string_table_enc_mutants,
string_table_enc_weapons, string_table_enc_equipment, ui_st_mp,
ui_st_other, stable_game_credits, stable_repair_dialogs
теперь добавим саму функцию ремонта, для этого в файле
escape_dialog. script, пропишем следующие:
--------------------------------------------------------------------------------------------------------
--Repair
--------------------------------------------------------------------------------------------------------
local weapon_profit_margin = 1.3
local armor_profit_margin = 1.2
function repair_precond(npc, actor)
local item_in_slot_1 = db.actor:item_in_slot(1)
local item_in_slot_2 = db.actor:item_in_slot(2)
local item_in_slot_6 = db.actor:item_in_slot(6)
if item_in_slot_1 ~= nil and 1 > item_in_slot_1:condition() + 0.01 then return
true
elseif item_in_slot_2 ~= nil and 1 > item_in_slot_2:condition() + 0.01 then
return true
elseif item_in_slot_6 ~= nil and 1 > item_in_slot_6:condition() + 0.01 then
return true
else return false
end
end
function check_money_s1(npc, actor)
local item_in_slot = db.actor:item_in_slot(1)
if item_in_slot ~= nil then
local item_repair_cost = math.floor( (1-item_in_slot:condition()) *
item_in_slot:cost() * weapon_profit_margin )
if item_repair_cost > 0 and db.actor:money() >= item_repair_cost and 1 >
item_in_slot:condition() then
return true
end
end
return false
end
function check_money_s2(npc, actor)
local item_in_slot = db.actor:item_in_slot(2)
if item_in_slot ~= nil then
local item_repair_cost = math.floor( (1-item_in_slot:condition()) *
item_in_slot:cost() * weapon_profit_margin )
if item_repair_cost > 0 and db.actor:money() >= item_repair_cost and 1 >
item_in_slot:condition() then
return true
end
end
return false
end
function check_money_s6(npc, actor)
local item_in_slot = db.actor:item_in_slot(6)
if item_in_slot ~= nil then
local item_repair_cost = math.floor( (1-item_in_slot:condition()) *
item_in_slot:cost() * armor_profit_margin )
if item_repair_cost > 0 and db.actor:money() >= item_repair_cost and 1 >
item_in_slot:condition() then
return true
end
end
return false
end
function repiar_weapon_s1(npc, actor)
local item_in_slot = db.actor:item_in_slot(1)
if item_in_slot ~= nil then
local item_repair_cost = math.floor( (1-item_in_slot:condition()) *
item_in_slot:cost() * weapon_profit_margin )
item_in_slot:set_condition(1)
dialogs.relocate_money(actor, item_repair_cost, "out")
end
end
function repiar_weapon_s2(npc, actor)
local item_in_slot = db.actor:item_in_slot(2)
if item_in_slot ~= nil then
local item_repair_cost = math.floor( (1-item_in_slot:condition()) *
item_in_slot:cost() * weapon_profit_margin )
item_in_slot:set_condition(1)
dialogs.relocate_money(actor, item_repair_cost, "out")
end
end
function repiar_armor_s6(npc, actor)
local item_in_slot = db.actor:item_in_slot(6)
if item_in_slot ~= nil then
local item_repair_cost = math.floor( (1-item_in_slot:condition()) *
item_in_slot:cost() * armor_profit_margin )
item_in_slot:set_condition(1)
dialogs.relocate_money(actor, item_repair_cost, "out")
end
end
function repair_costs(first_speaker, second_speaker)
local task_texture, task_rect =
get_texture_info("ui_iconsTotal_lost_money")
local item_name_and_price = ""
local item_repair_cost = 0
if db.actor ~= nil then
local item_in_slot_1 = db.actor:item_in_slot(1)
local item_in_slot_2 = db.actor:item_in_slot(2)
local item_in_slot_6 = db.actor:item_in_slot(6)
if item_in_slot_1 ~= nil then
item_repair_cost = math.floor( (1-item_in_slot_1:condition()) *
item_in_slot_1:cost() * weapon_profit_margin )
if item_repair_cost > 0 then
item_name_and_price = game.translate_string("list_repair_0").."
%c[255,238,155,23]"..item_repair_cost.."Ru%c[default]"
db.actor:give_talk_message(item_name_and_price, task_texture, task_rect,
"iconed_trade_info")
end
end
if item_in_slot_2 ~= nil then
item_repair_cost = math.floor( (1-item_in_slot_2:condition()) *
item_in_slot_2:cost() * weapon_profit_margin )
if item_repair_cost > 0 then
item_name_and_price = game.translate_string("list_repair_1").."
%c[255,238,155,23]"..item_repair_cost.."Ru%c[default]"
db.actor:give_talk_message(item_name_and_price, task_texture, task_rect,
"iconed_trade_info")
end
end
if item_in_slot_6 ~= nil then
item_repair_cost = math.floor( (1-item_in_slot_6:condition()) *
item_in_slot_6:cost() * armor_profit_margin )
if item_repair_cost > 0 then
item_name_and_price = game.translate_string("list_repair_2").."
%c[255,238,155,23]"..item_repair_cost.."Ru%c[default]"
db.actor:give_talk_message(item_name_and_price, task_texture, task_rect,
"iconed_trade_info")
end
end
end
end
теперь создадим файл dialogs_repair.xml в config\gamepay со
следующим содержанием:

<game_dialogs>
<!--********************************-->
<!-- Repair dialog start -->
<!--********************************-->
<dialog id="escape_repair">
<precondition>escape_dialog.repair_precond</precondition>
<has_info>tutorial_end</has_info>
<phrase_list>
<phrase id="0">
<text>escape_repair_0</text>
<next>1</next>
</phrase>
<phrase id="1">
<text>escape_repair_1</text>
<action>escape_dialog.repair_costs</action>
<next>2</next>
<next>3</next>
<next>4</next>
<next>5</next>
</phrase>
<phrase id="2">
<precondition>escape_dialog.check_money_s1</precondition>
<text>escape_repair_2</text>
<action>escape_dialog.repiar_weapon_s1</action>
<next>6</next>
</phrase>
<phrase id="3">
<precondition>escape_dialog.check_money_s2</precondition>
<text>escape_repair_3</text>
<action>escape_dialog.repiar_weapon_s2</action>
<next>6</next>
</phrase>
<phrase id="4">
<precondition>escape_dialog.check_money_s6</precondition>
<text>escape_repair_4</text>
<action>escape_dialog.repiar_armor_s6</action>
<next>7</next>
</phrase>
<phrase id="5">
<text>escape_repair_5</text>
</phrase>
<phrase id="6">
<text>escape_repair_6</text>
<next>8</next>
<next>10</next>
</phrase>
<phrase id="7">
<text>escape_repair_7</text>
<next>9</next>
<next>10</next>
</phrase>
<phrase id="8">
<text>escape_repair_8</text>
</phrase>
<phrase id="9">
<text>escape_repair_9</text>
</phrase>
<phrase id="10">
<precondition>escape_dialog.repair_precond</precondition>
<text>escape_repair_10</text>
<next>11</next>
</phrase>
<phrase id="11">
<text>escape_repair_11</text>
<action>escape_dialog.repair_costs</action>
<next>2</next>
<next>3</next>
<next>4</next>
<next>5</next>
</phrase>
</phrase_list>
</dialog>
</game_dialogs>
теперь создадим файл с текстовкой которую будет видеть игрок, файл
stable_repair_dialogs.xml config\text\rus:

<string_table>
<string id="list_repair_0">
<text>Стоимость починки оружия в первом слоте:</text>
</string>
<string id="list_repair_1">
<text>Стоимость починки оружия во втором слоте:</text>
</string>
<string id="list_repair_2">
<text>Стоимость починки брони:</text>
</string>
<!--********************************-->
<!-- Repair dialog start -->
<!--********************************-->
<string id="escape_repair_0">
<text>Слыш, да ты никак стволы чинишь... и бронежилеты?</text>
</string>
<string id="escape_repair_1">
<text>А... это ты о той штуке, что в тисках? Да, хороший ствол будет.
Правда дорогущий. Так что тебе надо отремонтировать?
Предупреждаю - это не дешевая работа, чем больше износ тем
дороже. Итак?\n \nСписок возможных починок:</text>
</string>
<string id="escape_repair_2">
<text>Отремонтируй первый ствол.</text>
</string>
<string id="escape_repair_3">
<text>Отремонтируй второй ствол.</text>
</string>
<string id="escape_repair_4">
<text>Отремонтируй броньку.</text>
</string>
<string id="escape_repair_5">
<text>Черт, с деньгами напряг. Зайду позже.</text>
</string>
<string id="escape_repair_6">
<text>Щас... всё мигом сделаю...\n \nГотово, забирай!</text>
</string>
<string id="escape_repair_7">
<text>Да... Меченый, здорово тябя потрепало. Так... где то у меня были
броньпластины... ага вот они... вот так... угу... уф.\n \nПолучай, как
новенький!</text>
</string>
<string id="escape_repair_8">
<text>Хм. Отличная работа. Слушай, а где ты так навострился?
Молчишь? Ну и ладно.</text>
</string>
<string id="escape_repair_9">
<text>Мастерская работа, не зря такие деньги берешь.</text>
</string>
<string id="escape_repair_10">
<text>Можеш ещё кое-что поченить?</text>
</string>
<string id="escape_repair_11">
<text>Ну давай, сделаю.\n \nСписок возможных починок:</text>
</string>
</string_table>
всё, теперь после того как получим флешку от Шустрого и отнесём
Сидоровичу, мы свободно можем чинить оружие и броню у нашего
механика.
Категория: Моддинг | Добавил: Gluck (22.07.2012)
Просмотров: 608 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Наши партнеры


Книги сталкер
Найти другие книги

Новые Темы

Популярные Темы

Новые Файлы

Популярные Файлы

В вылазке: 2
Новичков: 2
Сталкеров: 0


Кто был сегодня на сайте:


Вакансии
Яндекс.Метрика Рейтинг@Mail.ru
Яндекс.Метрика