Oskar1121

Untitled

Oct 6th, 2018
203
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.92 KB | None | 0 0
  1. <?xml version='1.0' encoding='ISO-8859-1'?>
  2. <mod name='Daily Task' version='1.0' enabled='yes'>
  3. <config name='DailyTask_conf'><![CDATA[
  4. TASKTYPE_KILL = 1
  5. TASKTYPE_ITEM = 2
  6.  
  7. storageMain = 5000
  8. storageCount = 5001
  9. storageTimer = 5002
  10.  
  11. REWARD_ITEM = 1
  12. REWARD_EXP = 2
  13.  
  14. timerDuration = 24 * 60 * 60 -- 24h * 60m * 60s
  15.  
  16. messageAlreadyDone = 'Sorry, you already did dailytask today.'
  17. messageKilled = 'You have killed %s of %d. Total killed %d / %d.'
  18. messageNotGain = 'Sorry, but You must take a dailytask firstly. You can do it by writing: !dailytask.'
  19. messageNotDone = 'Sorry, you are not able to finish dailytask.'
  20.  
  21. taskList = {
  22. {level = {1, 100}, type = TASKTYPE_KILL, list = {'wolf', 'bear'}, amount = 50,
  23. reward = {
  24. randomize = false,
  25. {REWARD_ITEM, 2347, 50},
  26. {REWARD_EXP, 750000}
  27. }},
  28.  
  29. {level = {1, 100}, type = TASKTYPE_KILL, list = {'farmer', 'bandit', 'shinobazu'}, amount = 100,
  30. reward = {
  31. randomize = false,
  32. {REWARD_ITEM, 2347, 100},
  33. {REWARD_EXP, 1000000}
  34. }},
  35. {level = {1, 100}, type = TASKTYPE_KILL, list = {'prisoner', 'sound shinobi'}, amount = 150,
  36. reward = {
  37. randomize = false,
  38. {REWARD_ITEM, 2347, 100},
  39. {REWARD_EXP, 1500000}
  40. }},
  41. {level = {101, 300}, type = TASKTYPE_KILL, list = {'monk'}, amount = 250,
  42. reward = {
  43. randomize = false,
  44. {REWARD_ITEM, 2349, 25},
  45. {REWARD_EXP, 6500000}
  46. }},
  47. {level = {101, 300}, type = TASKTYPE_KILL, list = {'sand shinobi'}, amount = 300,
  48. reward = {
  49. randomize = false,
  50. {REWARD_ITEM, 2349, 25},
  51. {REWARD_EXP, 7500000}
  52. }},
  53. {level = {101, 300}, type = TASKTYPE_KILL, list = {'anbu'}, amount = 400,
  54. reward = {
  55. randomize = false,
  56. {REWARD_ITEM, 2349, 25},
  57. {REWARD_EXP, 8500000}
  58. }},
  59. {level = {301, 500}, type = TASKTYPE_KILL, list = {'zetsu clone'}, amount = 500,
  60. reward = {
  61. randomize = false,
  62. {REWARD_ITEM, 2349, 50},
  63. {REWARD_EXP, 50000000}
  64. }},
  65. {level = {301, 500}, type = TASKTYPE_KILL, list = {'samurai'}, amount = 500,
  66. reward = {
  67. randomize = false,
  68. {REWARD_ITEM, 2349, 50},
  69. {REWARD_EXP, 50000000}
  70. }},
  71. {level = {301, 500}, type = TASKTYPE_KILL, list = {'golem', 'elite golem'}, amount = 500,
  72. reward = {
  73. randomize = false,
  74. {REWARD_ITEM, 2349, 50},
  75. {REWARD_EXP, 50000000}
  76. }},
  77. {level = {501, 800}, type = TASKTYPE_KILL, list = {'senju member', 'uchiha member'}, amount = 750,
  78. reward = {
  79. randomize = false,
  80. {REWARD_ITEM, 2349, 75},
  81. {REWARD_EXP, 100000000}
  82. }},
  83. {level = {501, 800}, type = TASKTYPE_KILL, list = {'cursed samurai'}, amount = 500,
  84. reward = {
  85. randomize = false,
  86. {REWARD_ITEM, 2349, 75},
  87. {REWARD_EXP, 100000000}
  88. }},
  89. {level = {501, 800}, type = TASKTYPE_KILL, list = {'akatsuki member'}, amount = 500,
  90. reward = {
  91. randomize = false,
  92. {REWARD_ITEM, 2349, 75},
  93. {REWARD_EXP, 100000000}
  94. }},
  95. {level = {801, 2000}, type = TASKTYPE_KILL, list = {'edo tensei member'}, amount = 1000,
  96. reward = {
  97. randomize = false,
  98. {REWARD_ITEM, 2349, 100},
  99. {REWARD_EXP, 500000000}
  100. }},
  101.  
  102. {level = {801, 2000}, type = TASKTYPE_KILL, list = {'rikudou member'}, amount = 1000,
  103. reward = {
  104. randomize = false,
  105. {REWARD_ITEM, 2349, 100},
  106. {REWARD_EXP, 500000000}
  107. }},
  108.  
  109. {level = {2001, 10000}, type = TASKTYPE_KILL, list = {'rikudou member'}, amount = 5000,
  110. reward = {
  111. randomize = false,
  112. {REWARD_ITEM, 2346, 5},
  113. {REWARD_EXP, 500000000}
  114. }},
  115.  
  116. {level = {2001, 10000}, type = TASKTYPE_KILL, list = {'rikudou member'}, amount = 10000,
  117. reward = {
  118. randomize = false,
  119. {REWARD_ITEM, 2346, 10},
  120. {REWARD_EXP, 1000000000}
  121. }},
  122.  
  123. {level = {2001, 10000}, type = TASKTYPE_KILL, list = {'obito', 'madara', 'naruto', 'sasuke'}, amount = 200,
  124. reward = {
  125. randomize = false,
  126. {REWARD_ITEM, 2344, 1},
  127. {REWARD_EXP, 1000000000}
  128. }}
  129.  
  130. }
  131.  
  132. function getTask(cid)
  133. local level = getPlayerLevel(cid)
  134. local list = {}
  135. for i = 1, #taskList do
  136. if level >= taskList[i].level[1] and level <= taskList[i].level[2] then
  137. table.insert(list, i)
  138. end
  139. end
  140.  
  141. return list[math.random(#list)]
  142. end
  143.  
  144. function addReward(cid, var)
  145. if var[1] == REWARD_ITEM then
  146. if type(var[3]) == 'table' then
  147. doPlayerAddItem(cid, var[2], math.random(var[3][1], var[3][2]))
  148. else
  149. doPlayerAddItem(cid, var[2], var[3])
  150. end
  151. elseif var[1] == REWARD_EXP then
  152. doSendAnimatedText(getThingPos(cid), var[2], COLOR_WHITE)
  153. doPlayerAddExperience(cid, var[2])
  154. end
  155. end
  156.  
  157. function addRewards(cid, list)
  158. if list.randomize then
  159. addReward(cid, list[math.random(#list)])
  160. else
  161. for _, v in pairs(list) do
  162. if type(v) == 'table' then
  163. print(v[1])
  164. addReward(cid, v)
  165. end
  166. end
  167. end
  168.  
  169. doCreatureSetStorage(cid, storageMain, -1)
  170. doCreatureSetStorage(cid, storageCount, -1)
  171. end
  172.  
  173. function getMonsterKilled(cid, list)
  174. local var = getCreatureStorage(cid, storageCount)
  175. local result = {}
  176. for i = 1, #list do
  177. result[list[i]] = 0
  178. end
  179.  
  180. if var ~= -1 then
  181. local strExplode = tostring(var):explode(';')
  182. for i = 1, #strExplode / 2 do
  183. result[strExplode[i * 2 - 1]] = strExplode[i * 2]
  184. end
  185. end
  186.  
  187. return result
  188. end
  189.  
  190. function showTask(cid, id)
  191. local var = taskList[id]
  192. if not var then
  193. return false
  194. end
  195.  
  196. local text = 'You daily quest is '
  197. if var.type == TASKTYPE_ITEM then
  198. text = text .. 'bring '
  199.  
  200. local count = #var.list / 2
  201. for i = 1, count do
  202. text = text .. '\n' .. getItemNameById(var.list[i * 2 - 1]) .. ' (' .. getPlayerItemCount(cid, var.list[i * 2 - 1]) .. ' / ' .. var.list[i * 2] .. ')'
  203.  
  204. if i < count then
  205. text = text .. ', '
  206. end
  207. end
  208. elseif var.type == TASKTYPE_KILL then
  209. text = text .. 'kill ' .. var.amount
  210.  
  211. local count = #var.list
  212. local monsterList = getMonsterKilled(cid, var.list)
  213. for i = 1, count do
  214. text = text .. '\n' .. var.list[i] .. ' (' .. monsterList[var.list[i]] .. ')'
  215.  
  216. if i < count then
  217. text = text .. ', '
  218. end
  219. end
  220. end
  221.  
  222. text = text .. '.'
  223. doShowTextDialog(cid, 1961, text)
  224. end
  225.  
  226. function addTask(cid)
  227. local id = getTask(cid)
  228.  
  229. doCreatureSetStorage(cid, storageMain, id)
  230. doCreatureSetStorage(cid, storageTimer, os.time() + timerDuration)
  231. showTask(cid, id)
  232.  
  233. if taskList[id].type == TASKTYPE_KILL then
  234. registerCreatureEvent(cid, 'DailyTaskOnKill')
  235. end
  236. end
  237.  
  238. ]]></config>
  239.  
  240. <talkaction words='!dailytask' event='script'><![CDATA[
  241. domodlib('DailyTask_conf')
  242.  
  243. function onSay(cid, words, param, channel)
  244. local id = getCreatureStorage(cid, storageMain)
  245. if id > 0 then
  246. showTask(cid, id)
  247. return true
  248. end
  249.  
  250. if getCreatureStorage(cid, storageTimer) > os.time() then
  251. doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, messageAlreadyDone)
  252. return true
  253. end
  254.  
  255. addTask(cid)
  256. return true
  257. end
  258.  
  259. ]]></talkaction>
  260.  
  261. <talkaction words='!report' event='script'><![CDATA[
  262. domodlib('DailyTask_conf')
  263.  
  264. function onSay(cid, words, param, channel)
  265. local id = getCreatureStorage(cid, storageMain)
  266. if id <= 0 then
  267. doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, messageNotGain)
  268. return true
  269. end
  270.  
  271. local var = taskList[id]
  272. if var.type == TASKTYPE_KILL then
  273. local monsterList = getMonsterKilled(cid, var.list)
  274. local count = 0
  275. for k, v in pairs(monsterList) do
  276. count = count + tonumber(v)
  277. end
  278.  
  279. if count < var.amount then
  280. doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, messageNotDone)
  281. return true
  282. end
  283. elseif var.type == TASKTYPE_ITEM then
  284. local count = #var.list / 2
  285. for i = 1, count do
  286. if getPlayerItemCount(cid, var.list[i * 2 - 1]) < var.list[i * 2] then
  287. doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, messageNotDone)
  288. return true
  289. end
  290. end
  291.  
  292. for i = 1, count do
  293. doPlayerRemoveItem(cid, var.list[i * 2 - 1], var.list[i * 2])
  294. end
  295. end
  296.  
  297. addRewards(cid, var.reward)
  298. return true
  299. end
  300.  
  301. ]]></talkaction>
  302.  
  303. <event type="login" name="DailyTaskLogin" event="script"><![CDATA[
  304. domodlib('DailyTask_conf')
  305.  
  306. function onLogin(cid)
  307. local id = getCreatureStorage(cid, storageMain)
  308. if id < 1 then
  309. return true
  310. end
  311.  
  312. local var = taskList[id]
  313. if var.type == TASKTYPE_KILL then
  314. registerCreatureEvent(cid, 'DailyTaskOnKill')
  315. end
  316.  
  317. return true
  318. end
  319. ]]></event>
  320.  
  321. <event type="kill" name="DailyTaskOnKill" event="script"><![CDATA[
  322. domodlib('DailyTask_conf')
  323.  
  324. function onKill(cid, target)
  325. local id = getCreatureStorage(cid, storageMain)
  326. if id < 1 then
  327. return true
  328. end
  329.  
  330. local var = taskList[id]
  331. local name = getCreatureName(target):lower()
  332. if isInArray(var.list, name) then
  333. local monsterList = getMonsterKilled(cid, var.list)
  334.  
  335. monsterList[name] = monsterList[name] + 1
  336.  
  337. local buffer, i = '', 0
  338. local description = ''
  339. local count = 0
  340. for k, v in pairs(monsterList) do
  341. i = i + 1
  342. count = count + tonumber(v)
  343. buffer = buffer .. k .. ';' .. v
  344. description = description .. k .. ' (' .. v .. ')'
  345. if i < #var.list then
  346. buffer = buffer .. ';'
  347. description = description .. ', '
  348. end
  349. end
  350.  
  351. doCreatureSetStorage(cid, storageCount, buffer)
  352. if count <= var.amount then
  353. doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, messageKilled:format(description, var.amount, count, var.amount))
  354. end
  355. end
  356.  
  357. return true
  358. end
  359. ]]></event>
  360.  
  361. </mod>
Advertisement
Add Comment
Please, Sign In to add comment