add game&rawdata
This commit is contained in:
parent
0133cd976c
commit
49b34b5546
45731 changed files with 709831 additions and 0 deletions
123
gamedata/scripts/task_manager.script
Normal file
123
gamedata/scripts/task_manager.script
Normal file
|
|
@ -0,0 +1,123 @@
|
|||
local random_task = nil
|
||||
|
||||
class "CRandomTask"
|
||||
function CRandomTask:__init()
|
||||
--' Íà êîíñòðóêòîðå âû÷èòûâàåì LTX è ñîçäàåì çàãîòîâêè êâåñòîâ.
|
||||
self.task_ini = ini_file("misc\\task_manager.ltx")
|
||||
|
||||
--' Òàáëèöà ïðîèíèöèàëèçèðîâàííûõ êâåñòîâ.
|
||||
self.task_info = {}
|
||||
end
|
||||
-- Save
|
||||
function CRandomTask:save(packet)
|
||||
set_save_marker(packet, "save", false, "CRandomTask")
|
||||
local n = 0
|
||||
for k,v in pairs(self.task_info) do
|
||||
n = n + 1
|
||||
end
|
||||
packet:w_u16(n)
|
||||
for k,v in pairs(self.task_info) do
|
||||
packet:w_stringZ(k)
|
||||
self.task_info[k]:save(packet)
|
||||
end
|
||||
|
||||
set_save_marker(packet, "save", true, "CRandomTask")
|
||||
end
|
||||
-- Load
|
||||
function CRandomTask:load(reader)
|
||||
set_save_marker(reader, "load", false, "CRandomTask")
|
||||
|
||||
local n = reader:r_u16()
|
||||
for i=1,n do
|
||||
local id = reader:r_stringZ()
|
||||
local obj = task_objects.CGeneralTask(self.task_ini, id)
|
||||
obj:load(reader)
|
||||
self.task_info[id] = obj
|
||||
end
|
||||
|
||||
set_save_marker(reader, "load", true, "CRandomTask")
|
||||
end
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
--' Âûäà÷à êâåñòà èãðîêó
|
||||
function CRandomTask:give_task(task_id)
|
||||
printf("CRandomTask:give_task() task_id[%s]", tostring(task_id))
|
||||
|
||||
if not self.task_ini:section_exist(task_id) then
|
||||
abort("There is no task [%s] in task ini_file or ini_file is not included!!!", task_id)
|
||||
end
|
||||
self.task_info[task_id] = task_objects.CGeneralTask(self.task_ini, task_id)
|
||||
|
||||
self.task_info[task_id]:give_task()
|
||||
end
|
||||
--' Ïðîâåðÿåì, íå âûïîëíåí ëè òàñê
|
||||
function CRandomTask:task_complete(p1)
|
||||
local task = self.task_info[p1]
|
||||
if task == nil then
|
||||
return false
|
||||
end
|
||||
task:check_task(self)
|
||||
if task.last_check_task == "complete" then
|
||||
task:give_reward()
|
||||
xr_statistic.inc_completed_quests_counter()
|
||||
return true
|
||||
else
|
||||
return false
|
||||
end
|
||||
end
|
||||
--' Ïðîâåðÿåì, íå ïðîôåéëåí ëè òàñê
|
||||
function CRandomTask:task_fail(p1)
|
||||
local task = self.task_info[p1]
|
||||
if task == nil then
|
||||
return false
|
||||
end
|
||||
task:check_task(self)
|
||||
|
||||
return task.last_check_task == "fail" or task.last_check_task == "reversed"
|
||||
end
|
||||
--' Êîëëáåê òàñêà
|
||||
function CRandomTask:task_callback(task, completed)
|
||||
-- printf("CRandomTask:task_callback")
|
||||
--' Åñëè çàäàíèå âûïîëíèëîñü - íàäî âûäàòü ñ íåãî íàãðàäó!
|
||||
local task_id = task:get_id()
|
||||
local delta
|
||||
--print_table(self.task_info)
|
||||
if self.task_info[task_id] == nil then
|
||||
return
|
||||
end
|
||||
|
||||
printf("CLEAR TASK %s", tostring(task_id))
|
||||
self.task_info[task_id]:deactivate_task(task)
|
||||
|
||||
self.task_info[task_id] = nil
|
||||
end
|
||||
|
||||
|
||||
function get_task_manager()
|
||||
if random_task == nil then
|
||||
random_task = CRandomTask()
|
||||
end
|
||||
return random_task
|
||||
end
|
||||
|
||||
|
||||
|
||||
function task_complete(p1)
|
||||
return get_task_manager():task_complete(p1)
|
||||
end
|
||||
function task_fail(p1)
|
||||
return get_task_manager():task_fail(p1)
|
||||
end
|
||||
function task_callback(_task, state)
|
||||
-- printf("task_callback")
|
||||
--'  ñëó÷àå åñòü êâåñò âûïîëíåí èëè ïðîâàëåí - íàäî âûçâàòü îáíóëåíèå.
|
||||
if state == task.fail or state == task.completed then
|
||||
-- printf("task_callback1")
|
||||
get_task_manager():task_callback(_task, state == task.completed)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function clear_task_manager()
|
||||
--' random_task = nil
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue