Снятие денег с убитых персонажей
Способ создания фишки "Снятие денег с трупов" для S.T.A.L.K.E.R.-Тень Чернобыля.
Находим в распакованном каталоге gamedata файл по адресу GameData/Scripts/treasure_manager.script.
*Файл можно править Notepad, Wordpad, Windows OfficeWord и другими текстовыми редакторами (прост. "Блокнот")
В файле treasure_manager.script находим следующую конструкцию кода:
Quote
--' Юзание инициатора (возможность выдать тайник)
function CTreasure:use(npc)
printf("TREASURE USE")
end
После строки "TREASURE USE" пишем следующий код:
Quote
if (npc and db.actor) then
lootmoney.lootmoney(npc)
end
В результате проделанной работы у нас получается в файле treasure_manager.script вот такая конструкция:
Quote
--' Юзание инициатора (возможность выдать тайник)
function CTreasure:use(npc)
printf("TREASURE USE")
if (npc and db.actor) then
lootmoney.lootmoney(npc)
end
Теперь в каталоге деректории игры по адресу gamedata/scripts создаём новый текстовый документ lootmoney.txt. Открываем файл блокнотом или другим текстовым редактором и сохраняем его как lootmoney.script c кодировкой ANSI. Можно взять готовый скрипт LUA, подчистить его и переименовать. Это значения мало имеет.
В файл gamedata/scripts/lootmoney.script пишем вот такую конструкцию:
Quote
function lootmoney(npc)
if npc ~= nil and not string.find(npc:section(),"arena") and npc:character_community()~="arena_enemy" then
local money = npc:money()
if money ~= nil and money ~=0 then
local deadmoney = money
local npc_rank
npc_rank = ranks.get_obj_rank_name(npc)
if npc_rank ~= nil then
if npc_rank == "novice" and deadmoney >=400 then deadmoney=math.random(25,400)
elseif npc_rank == "experienced" and deadmoney >=500 then deadmoney=math.random(50,500)
elseif npc_rank == "veteran" and deadmoney >=600 then deadmoney=math.random(100,600)
elseif npc_rank == "master" and deadmoney >=700 then deadmoney=math.random(200,700)
end
end
local news_texti = "\\n%c[255,255,0,0]Мёртвый сталкер: %c[default]"..npc:character_name().."\\n%c[255,255,0,0]Обнаружено денег: %c[default]"..game.translate_string(tostring(deadmoney).."руб.")
db.actor:give_game_news(news_texti, "ui\\ui_iconsTotal", Frect():set(0,0,83,47), 1, 4000)
db.actor:give_money(deadmoney)
game_stats.money_quest_update(deadmoney)
npc:give_money(-money)
game_stats.money_quest_update(-money)
end
end
end
Теперь всё необходимо сохранить и закрыть файлы. Способ должен работать. При обыске трупов сталкеров будет автоматически сниматься определённая сумма денег, подобно тому, как поступает информация о тайниках и статьи в энциклопедию. Приятной игры.
Структура данной фишки выдрана из LootMoney MOD. Автор статьи - RETRIX.