Oskar1121

Untitled

Sep 15th, 2018
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.76 KB | None | 0 0
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <mod name="Task System" version="0.4.0" author="Oskar" contact="[email protected]" enabled="yes">
  3. <config name="tasks_conf"><![CDATA[
  4. REWARD_ITEM = 0
  5. REWARD_EXP = 1
  6. REWARD_MONEY = 2
  7. REWARD_ADDON = 3
  8. REWARD_SKILL = 4
  9. REWARD_STORAGE = 5
  10. REWARD_LEVEL = 6
  11.  
  12. AUTO_TASK_LIST = {
  13. [1] = {
  14. details = {'wolf', 'hollow snake', 'giant hollow snake', 'hollow wolf'}, totalKills = 200, storage = 2001, name = 'animals',
  15. rewards = {REWARD_ITEM, 2152, 5, REWARD_EXP, 0, 500}, -- 250 expa/500 gp -->
  16. requiredLevel = {1, 50000}, repeatable = false},
  17. [2] = {
  18. details = {'bandit', 'rukongai bandit', 'mafioso'}, totalKills = 300, storage = 2002, name = 'bandits',
  19. rewards = {REWARD_ITEM, 2152, 10, REWARD_EXP, 0, 750}, -- 750 expa/1k -->
  20. requiredLevel = {1, 50000}, repeatable = false},
  21. [3] = {
  22. details = {'pirate', 'pirate captain', 'hunter'}, totalKills = 500, storage = 2003, name = 'opositions',
  23. rewards = {REWARD_ITEM, 4865, 5, REWARD_EXP, 0, 2000}, -- 2000 expa/5 hunter soul -->
  24. requiredLevel = {1, 50000}, repeatable = false},
  25. [4] = {
  26. details = {'academy shinigami', 'shinigami', 'shinigami captain', 'exiled shinigami'}, totalKills = 750, storage = 2004, name = 'shinigamis',
  27. rewards = {REWARD_ITEM, 5882, 1, REWARD_EXP, 0, 4500}, -- 4500 expa/symbol 12 oddzialu -->
  28. requiredLevel = {1, 50000}, repeatable = false},
  29. [5] = {
  30. details = {'tsumibito', 'togabito', 'shuren', 'kushanada', 'hell guard'}, totalKills = 1000, storage = 2005, name = 'hell guards',
  31. rewards = {REWARD_ITEM, 5881, 1, REWARD_EXP, 0, 6000}, -- 6000 expa/symbol 11 oddzialu -->
  32. requiredLevel = {1, 50000}, repeatable = false},
  33. [6] = {
  34. details = {'metal golem', 'golden metal'}, totalKills = 1000, storage = 2006, name = 'metals',
  35. rewards = {REWARD_ITEM, 2173, 1, REWARD_EXP, 0, 8000}, -- 8000 expa/amulet of loss -->
  36. requiredLevel = {1, 50000}, repeatable = false},
  37. [7] = {
  38. details = {'fire skeleton', 'vampire', 'zombie'}, totalKills = 1000, storage = 2007, name = 'undeads',
  39. rewards = {REWARD_ITEM, 5879, 1, REWARD_EXP, 0, 10000}, -- 10000 expa/symbol 9 oddzialu -->
  40. requiredLevel = {1, 50000}, repeatable = false},
  41. [8] = {
  42. details = {'blank', 'dark blank', 'fury blank'}, totalKills = 1000, storage = 2008, name = 'blanks',
  43. rewards = {REWARD_ITEM, 5877, 1, REWARD_EXP, 0, 20000}, -- 20000 expa/symbol 7 oddzialu -->
  44. requiredLevel = {1, 50000}, repeatable = false},
  45. [9] = {
  46. details = {'ninja', 'white ninja'}, totalKills = 750, storage = 2009, name = 'ninjas',
  47. rewards = {REWARD_ITEM, 5876, 1, REWARD_EXP, 0, 60000}, -- 60000 expa/symbol 6 oddzialu -->
  48. requiredLevel = {1, 50000}, repeatable = false},
  49. [10] = {
  50. details = {'hollow', 'hollow spider', 'hollow bird', 'elder hollow bird', 'menos grande', 'adjuchas', 'arrancar'}, totalKills = 3000, storage = 2010, name = 'hollows',
  51. rewards = {REWARD_ITEM, 5899, 1, REWARD_EXP, 0, 100000}, -- 100000 expa/stamina pill -->
  52. requiredLevel = {1, 50000}, repeatable = false},
  53. [11] = {
  54. details = {'lava golem', 'marble golem', 'water golem'}, totalKills = 1000, storage = 2011, name = 'golems',
  55. rewards = {REWARD_ITEM, 4872, 1, REWARD_EXP, 0, 175000}, -- 175000 expa/symbol 3 oddzialu -->
  56. requiredLevel = {1, 50000}, repeatable = false},
  57. [12] = {
  58. details = {'bakkouto member', 'bakkouto warrior', 'bakkouto leader'}, totalKills = 1000, storage = 2012, name = 'bakkoutos',
  59. rewards = {REWARD_ITEM, 8979, 5, REWARD_EXP, 0, 250000}, -- 250000 expa/5 x kaien soul -->
  60. requiredLevel = {1, 50000}, repeatable = false},
  61. [13] = {
  62. details = {'samurai', 'hollow samurai', 'red samurai'}, totalKills = 1000, storage = 2013, name = 'samurais',
  63. rewards = {REWARD_ITEM, 4871, 1, REWARD_EXP, 0, 350000}, -- 350000 expa/symbol 2 oddzialu -->
  64. requiredLevel = {1, 50000}, repeatable = false},
  65. [14] = {
  66. details = {'kidou corps member', 'kidou corps mage', 'kidou corps commander'}, totalKills = 1000, storage = 2014, name = 'kidou corps',
  67. rewards = {REWARD_ITEM, 8865, 1, REWARD_EXP, 0, 500000}, -- 500000 expa/espada coat -->
  68. requiredLevel = {1, 50000}, repeatable = false},
  69. [15] = {
  70. details = {'hollow shinigami', 'hollow captain shinigami'}, totalKills = 1000, storage = 2015, name = 'hollow shinigamis',
  71. rewards = {REWARD_ITEM, 4870, 1, REWARD_EXP, 0, 500000}, -- 500000 expa/symbol 1 oddzialu -->
  72. requiredLevel = {1, 50000}, repeatable = false},
  73. [16] = {
  74. details = {'omnitsukido member', 'omnitsukido commander', 'omnitsukido leader'}, totalKills = 2000, storage = 2016, name = 'omnitsukidos',
  75. rewards = {REWARD_ITEM, 4870, 1, REWARD_EXP, 0, 500000}, -- 500000 expa/symbol 1 oddzialu -->
  76. requiredLevel = {1, 50000}, repeatable = false},
  77. [17] = {
  78. details = {'fullbring member', 'fullbring warrior', 'fullbring leader'}, totalKills = 5000, storage = 2017, name = 'fullbrings',
  79. rewards = {REWARD_ITEM, 4870, 1, REWARD_EXP, 0, 500000}, -- 500000 expa/symbol 1 oddzialu -->
  80. requiredLevel = {1, 50000}, repeatable = false},
  81. }
  82.  
  83. --[[function getDetails(cid, status, realCount)
  84. local count, detail, complete = #status.details / 2, '', true
  85.  
  86. local subStorage = getCreatureStorage(cid, countStorage)
  87.  
  88. local killsCount = subStorage ~= -1 and tostring(subStorage):explode('_')
  89. for i = 1, count do
  90. if status.var == TYPE_KILL and (not killsCount or ((tonumber(killsCount[i + 1]) or 0) < status.details[i * 2])) then
  91. complete = false
  92. elseif status.var == TYPE_ITEMBACK and getPlayerItemCount(cid, status.details[i * 2 - 1]) < status.details[i * 2] then
  93. complete = false
  94. end
  95.  
  96. if status.var == TYPE_KILL then
  97. detail = detail .. (realCount and tonumber(killsCount[i + 1]) or status.details[i * 2]) .. 'x of ' .. status.details[i * 2 - 1]
  98. elseif status.var == TYPE_ITEMBACK then
  99. detail = detail .. status.details[i * 2] .. 'x of ' .. getItemNameById(status.details[i * 2 - 1])
  100. end
  101.  
  102. if i < count - 1 and count > 2 then
  103. detail = detail .. ', '
  104. elseif i == count - 1 and count > 1 then
  105. detail = detail .. ' and '
  106. end
  107. end
  108.  
  109. return detail, complete
  110. end]]
  111.  
  112.  
  113.  
  114.  
  115. ]]></config>
  116.  
  117. <event type="kill" name="taskKill" event="script"><![CDATA[
  118. domodlib('tasks_conf')
  119.  
  120. local function doTakeReward(cid, var)
  121. for i = 1, #var / 3 do
  122. if var[i * 3 - 2] == REWARD_ITEM then
  123. doPlayerAddItem(cid, var[i * 3 - 1], var[i * 3], true)
  124. elseif var[i * 3 - 2] == REWARD_EXP then
  125. doAddExp(cid, var[i * 3])
  126. elseif var[i * 3 - 2] == REWARD_STORAGE then
  127. doCreatureSetStorage(cid, var[i * 3 - 1], var[i * 3])
  128. elseif var[i * 3 - 2] == REWARD_MONEY then
  129. doPlayerAddMoney(cid, var[i * 3])
  130. elseif var[i * 3 - 2] == REWARD_SKILL then
  131. doPlayerSetSkill(cid, var[i * 3 - 1], getPlayerSkillLevel(cid, var[i * 3 - 1]) + var[i * 3])
  132. elseif var[i * 3 - 2] == REWARD_ADDON then
  133. doPlayerAddOutfit(cid, (getPlayerSex(cid) == 0 and var[i * 3 - 1][1] or var[i * 3 - 1][2]), var[i * 3])
  134. elseif var[i * 3 - 2] == REWARD_LEVEL then
  135. doPlayerAddLevel(cid, var[i * 3])
  136. end
  137. end
  138. end
  139.  
  140. local function getTaskByName(name)
  141. for _, v in pairs(AUTO_TASK_LIST) do
  142. for i = 1, #v.details do
  143. if name == v.details[i]:lower() then
  144. return v
  145. end
  146. end
  147. end
  148.  
  149. return false
  150. end
  151.  
  152. function onKill(cid, target)
  153. if not isMonster(target) or not isPlayer(cid) then
  154. return true
  155. end
  156.  
  157. local var = getTaskByName(getCreatureName(target):lower())
  158. if not var then
  159. return true
  160. end
  161.  
  162. local storage = math.max(0, getCreatureStorage(cid, var.storage))
  163. if storage >= var.totalKills then
  164. return true
  165. end
  166.  
  167. storage = storage + 1
  168. if storage >= var.totalKills then
  169. doTakeReward(cid, var.rewards)
  170. doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'Congratulations! You finished ' .. var.name .. ' task.')
  171. else
  172. doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'You have killed ' .. var.name .. '. [' .. storage .. '/' .. var.totalKills .. '].')
  173. end
  174.  
  175. doCreatureSetStorage(cid, var.storage, storage)
  176. return true
  177. end
  178. ]]></event>
  179.  
  180. <talkaction words='!mission' event='script'><![CDATA[
  181. domodlib('tasks_conf')
  182.  
  183. function onSay(cid, words, param, channel)
  184. local id = tonumber(getCreatureStorage(cid, storage))
  185. local status = task[id]
  186. local message = ''
  187. if status then
  188. local detail, complete = getDetails(cid, status, true)
  189. message = 'Mission State [ ' .. id .. '] - ' .. detail
  190. if status.var == TYPE_KILL then
  191. message = message .. ' killed.'
  192. elseif status.var == TYPE_ITEMBACK then
  193. message = message .. ' gathered.'
  194. end
  195. else
  196. message = 'You are not started any task.'
  197. end
  198.  
  199. doPlayerPopupFYI(cid, message)
  200. end
  201.  
  202. ]]></talkaction>
  203.  
  204. <event type="login" name="taskLogin" event="script"><![CDATA[
  205.  
  206. function onLogin(cid)
  207. registerCreatureEvent(cid, 'taskKill')
  208. return true
  209. end
  210. ]]></event>
  211. </mod>
Advertisement
Add Comment
Please, Sign In to add comment