Advertisement
Oskar1121

Untitled

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