add game&rawdata
This commit is contained in:
parent
0133cd976c
commit
49b34b5546
45731 changed files with 709831 additions and 0 deletions
87
gamedata/scripts/ranks.script
Normal file
87
gamedata/scripts/ranks.script
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
--[[----------------------------------------------------------------------------
|
||||
Õðàíèëèùå òåêñòîâûõ èíòåðïðåòàöèé ðàíãîâ è ôóíêöèè äëÿ ðàáîòû ñ íèì.
|
||||
×óãàé Àëåêñàíäð
|
||||
------------------------------------------------------------------------------]]
|
||||
|
||||
-- ðàíãè. ôîðìàò: {novice={0,30}, experienced={30,60}, ...}
|
||||
local stalker_rank_intervals
|
||||
local monster_rank_intervals
|
||||
|
||||
local stalker_max_rank_name
|
||||
local monster_max_rank_name
|
||||
|
||||
local ranks_loaded = false
|
||||
|
||||
-- ïàðñèò çàäàííóþ ñòðîêó ðàíãîâ â çàäàííóþ òàáëèöó.
|
||||
-- âîçâðàùàåò íàçâàíèå ìàêñèìàëüíîãî ðàíãà
|
||||
function parse_ranks( s, tbl )
|
||||
s = "0," .. s .. ",10000"
|
||||
|
||||
local t = parse_names( s )
|
||||
local i = 2
|
||||
|
||||
while i < #t do
|
||||
tbl[t[i]] = { tonumber(t[i-1]), tonumber(t[i+1]) }
|
||||
i = i + 2
|
||||
end
|
||||
|
||||
return t[i-2]
|
||||
end
|
||||
|
||||
-- âû÷èòûâàåò ñòàëêåðñêèå è ìîíñòðÿ÷èå ðàíãè èç game_relations.ltx
|
||||
function read_all_ranks()
|
||||
stalker_rank_intervals = {}
|
||||
monster_rank_intervals = {}
|
||||
|
||||
local ltx = system_ini()
|
||||
|
||||
stalker_max_rank_name = parse_ranks( ltx:r_string( "game_relations", "rating" ), stalker_rank_intervals )
|
||||
monster_max_rank_name = parse_ranks( ltx:r_string( "game_relations", "monster_rating" ), monster_rank_intervals )
|
||||
|
||||
ranks_loaded = true
|
||||
|
||||
-- print_table( stalker_rank_intervals )
|
||||
end
|
||||
|
||||
--
|
||||
function get_rank_name( rank, tbl )
|
||||
for name, interval in pairs( tbl ) do
|
||||
if rank >= interval[1] and rank < interval[2] then
|
||||
return name
|
||||
end
|
||||
end
|
||||
|
||||
return nil
|
||||
end
|
||||
|
||||
-- âîçâðàùàåò íàçâàíèå ðàíãà çàäàííîãî game_object (ïåðñîíàæà)
|
||||
function get_obj_rank_name( obj )
|
||||
if not ranks_loaded then
|
||||
read_all_ranks()
|
||||
end
|
||||
|
||||
local obj_rank
|
||||
|
||||
-- HACK
|
||||
if obj.m_story_id ~= nil then
|
||||
obj_rank = obj:rank()
|
||||
else
|
||||
obj_rank = obj:character_rank()
|
||||
end
|
||||
|
||||
if IsStalker(obj) then
|
||||
return get_rank_name( obj_rank, stalker_rank_intervals ) or stalker_max_rank_name
|
||||
else
|
||||
return get_rank_name( obj_rank, monster_rank_intervals ) or monster_max_rank_name
|
||||
end
|
||||
end
|
||||
|
||||
-- âîçâðàùàåò òàáëè÷êó ñ èíòåðâàëîì ðàíãîâ äëÿ çàäàííîãî íàçâàíèÿ èíòåðâàëà
|
||||
function get_rank_interval( name )
|
||||
if not ranks_loaded then
|
||||
read_all_ranks()
|
||||
end
|
||||
|
||||
return stalker_rank_intervals[name] or monster_rank_intervals[name]
|
||||
end
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue