Перейти к содержанию
Hardtmuth

[SoC] Снятие денег с трупов

Рекомендуемые сообщения

 

[SoC] Снятие денег с трупов

Автор статьи: RETRIX

Способ создания фишки "Снятие денег с трупов" для S.T.A.L.K.E.R.-Тень Чернобыля.

Находим в распакованном каталоге gamedata файл по адресу GameData/Scripts/treasure_manager.script.

*Файл можно править Notepad, Wordpad, Windows OfficeWord и другими текстовыми редакторами (прост. "Блокнот")

В файле treasure_manager.script находим следующую конструкцию кода:

--' Юзание инициатора (возможность выдать тайник)
function CTreasure:use(npc)
printf("TREASURE USE")
end

После строки "TREASURE USE" пишем следующий код:

if (npc and db.actor) then
lootmoney.lootmoney(npc)
end

В результате проделанной работы у нас получается в файле treasure_manager.script вот такая конструкция:

--' Юзание инициатора (возможность выдать тайник)
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 пишем вот такую конструкцию:

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.

  • Лайк 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Hardtmuth  Есть ли мод отдельно, снятия денег с КПК? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Всем привет! Хотел бы сказать, но это так не работает, ибо строечки в treasure_manager.script не ссылаются на файл lootmoney. Поэтому игра не может обратится к функции. Проверял стабильный вылет. 

Лог(кому нужен)

FATAL ERROR
 
[error]Expression    : fatal error
[error]Function      : CScriptEngine::lua_error
[error]File          : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
[error]Line          : 73
[error]Description   : <no expression>
[error]Arguments     : LUA error: ....e.r. verniy variant 1956\gamedata\scripts\_g.script:1233: attempt to index global 'treasure_manager' (a nil value)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
   
14 часов назад, Zufics_ сказал:

attempt to index global 'treasure_manager' (a nil value)

больше похоже на синтаксическую ошибку в treasure_manager.script


В беге за рассветом приближаешь свой закат

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
14 часов назад, Zufics_ сказал:

Лог(кому нужен)

И это по твоему лог?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

А как это можно в ЧН перенести?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

KAKOE_HeBe3eHuE точно также, только вывод сообщения изменить под чн, из-за него не работает


В беге за рассветом приближаешь свой закат

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу