Advertisement
joadson

Server Side

Mar 3rd, 2021
1,034
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 23.02 KB | None | 0 0
  1. --[[ Por Ryukiimaru
  2.  
  3.       Sistema de Craft
  4.         Estrutura da tablea = CRAF.ITEMS~[idwork][rank][id]
  5.         st = storage de base pra verificar
  6.         qnt = quantidade total por unidade que é craftado
  7.         name = ... nome
  8.         itemid = itemid do item :D
  9.         level = level requisitado minimo para craftar
  10.         exp = experiência adiquirida por unidade ( mesmo que ele faça + de 1x por craft )
  11.         recipe = receita requirida, {itemid, quantidade}, etc..
  12.         desc = descrição do item
  13.  
  14. ]]
  15.  
  16. CRAFT = {}
  17. CRAFT.ITEMS = {}
  18.  
  19. CRAFT.ITEMS[1] = {} -- Ex* Profissão Aventureiro, o index vai ser o id da profissão.
  20.  
  21. CRAFT.ITEMS[1] = {}
  22. CRAFT.ITEMS[1]["E"] = {}
  23. CRAFT.ITEMS[1]["E"][1] = {st = 1, qnt = 1, itemid = 18609, level = 0,  timeByUnit = 5, exp = 0, recipe = {{12187,1}}, desc = "Um tecido muito delicado, usado para produção de decorações e acessórios fashion. (0 exp)"}
  24. CRAFT.ITEMS[1]["E"][2] = {st = 2, unique = true, qnt = 20, itemid = 18610, level = 2,  timeByUnit = 5, exp = 20, recipe = {{15998,1}}, desc = "Esse material é usado para acelerar o processo de produção de itens."}
  25. CRAFT.ITEMS[1]["E"][3] = {st = 3, unique = true, qnt = 1, itemid = 18611, level = 0,  timeByUnit = 60*5, exp = 50, recipe = {{16103,50},{17094,25}}, desc = "Encoraje sua equipe com essa bandeira de guerra e ganhe 5% de experiência bônus."}
  26. CRAFT.ITEMS[1]["E"][4] = {st = 4, qnt = 5, itemid = 11806, level = 0,  timeByUnit = 60*2, exp = 40, recipe = {{16058,10},{17094,5}}, desc = "Uma cadeira feita de madeira para decorar sua casa."}
  27. CRAFT.ITEMS[1]["E"][5] = {st = 5, qnt = 2, itemid = 11789, level = 0,  timeByUnit = 60*5, exp = 70, recipe = {{16058,12},{17094,4}}, desc = "Uma mesa feita de madeira para decorar sua casa."}
  28. CRAFT.ITEMS[1]["E"][6] = {st = 6, qnt = 1, itemid = 1732, level = 0,  timeByUnit = 60*4, exp = 50, recipe = {{16058,14},{17094,5}}, desc = "Um armário de madeira para decorar sua casa e guardar alguns objetos."}
  29. CRAFT.ITEMS[1]["E"][7] = {st = 7, qnt = 2, itemid = 1724, level = 0,  timeByUnit = 60*10, exp = 50, recipe = {{16058,12},{17094,4}}, desc = "Um pequeno armário feito de madeira para decorar sua casa e guardar alguns objetos."}
  30. CRAFT.ITEMS[1]["E"][8] = {st = 8, qnt = 1, itemid = 18612, level = 15,  timeByUnit = 60*60*2, exp = 500, recipe = {{18609,6},{17841,5},{16064,10},{15946,8},{17090,250},{17090,250},{17090,250},{17090,250}}, desc = "Você ama a natureza e sua frase preferida é paz e amor? Então essa roupa foi feita especialmente para você."}
  31. CRAFT.ITEMS[1]["E"][9] = {st = 9, qnt = 1, itemid = 18613, level = 15,  timeByUnit = 60*60*2, exp = 500, recipe = {{18609,6},{17841,5},{12341,10},{17853,7},{17090,250},{17090,250},{17090,250},{17090,250}}, desc = "Você ama a natureza e sua frase preferida é paz e amor? Então essa roupa foi feita especialmente para você."}
  32. CRAFT.ITEMS[1]["E"][10] = {st = 10, qnt = 1, itemid = 18614, level = 17,  timeByUnit = 60*60*2, exp = 750, recipe = {{12222,3},{18616,80},{18617,1},{5896,3},{17090,250},{17090,250},{17090,250},{17090,250}}, desc = "Você será um verdadeira chef quando estiver usando essa roupa especial."}
  33. CRAFT.ITEMS[1]["E"][11] = {st = 11, qnt = 1, itemid = 18615, level = 17,  timeByUnit = 60*60*2, exp = 750, recipe = {{5946,7},{16092,20},{18609,3},{18618,1},{18619,1},{17090,250},{17090,250},{17090,250},{17090,250}}, desc = "Você está indo para a escola, garota? Então você precisa vestir seu uniforme antes."}
  34. CRAFT.ITEMS[1]["E"][12] = {st = 12, qnt = 1, itemid = 16297, level = 15,  timeByUnit = 60*60*1, exp = 450, recipe = {{16058,200},{16084,200},{12200,100},{12182,2},{17094,200},{17090,200}}, desc = "Com esse equipamento é fácil explorar as profundezas do mar em segurança. (Uma das três partes da roupa de mergulho)"}
  35. CRAFT.ITEMS[1]["E"][13] = {st = 13, qnt = 1, itemid = 16298, level = 15,  timeByUnit = 60*60*1, exp = 450, recipe = {{12161,200},{12334,100},{17094,200},{17090,200}}, desc = "Com esse equipamento é fácil explorar as profundezas do mar em segurança. (Uma das três partes da roupa de mergulho)"}
  36. CRAFT.ITEMS[1]["E"][14] = {st = 14, qnt = 1, itemid = 16296, level = 15,  timeByUnit = 60*60*1, exp = 450, recipe = {{12161,200},{12188,2},{12170,10},{17094,200},{17090,200}}, desc = "Com esse equipamento é fácil explorar as profundezas do mar em segurança. (Uma das três partes da roupa de mergulho)"}
  37. CRAFT.ITEMS[1]["E"][15] = {st = 15, qnt = 1, itemid = 16294, level = 15,  timeByUnit = 60*60*1, exp = 450, recipe = {{12201,3},{12175,14},{12171,25},{17094,200},{17090,200}}, desc = "Cansado de andar na neve? Essa parte da roupa de ski proporcionará grandes aventuras na neve."}
  38. CRAFT.ITEMS[1]["E"][16] = {st = 16, qnt = 1, itemid = 16295, level = 15,  timeByUnit = 60*60*1, exp = 450, recipe = {{12196,18},{12164,200},{17094,200},{17090,200}}, desc = "Cansado de andar na neve? Essa parte da roupa de ski proporcionará grandes aventuras na neve."}
  39. CRAFT.ITEMS[1]["E"][17] = {st = 17, qnt = 1, itemid = 16293, level = 15,  timeByUnit = 60*60*1, exp = 450, recipe = {{12177,10},{12153,2},{12172,5},{17094,200},{17090,200}}, desc = "Cansado de andar na neve? Essa parte da roupa de ski proporcionará grandes aventuras na neve."}
  40. CRAFT.ITEMS[1]["E"][18] = {st = 18, qnt = 1, itemid = 16424, level = 10,  timeByUnit = 60*3, exp = 20, recipe = {{12154,2},{12163,72},{17090,200}}, desc = "Deixe o seu Bulbasaur ainda mais bonito com esse chapéu."}
  41. CRAFT.ITEMS[1]["E"][19] = {st = 19, qnt = 1, itemid = 16420, level = 10,  timeByUnit = 60*3, exp = 20, recipe = {{16061,8},{12162,288},{17090,200}}, desc = "Espionagem, infiltração e inteligência são as características de um ninja. Seu charmander nunca mais será o mesmo."}
  42. CRAFT.ITEMS[1]["E"][20] = {st = 20, qnt = 1, itemid = 18651, level = 12,  timeByUnit = 60*4, exp = 30, recipe = {{12158,2},{12161,72},{17090,200}}, desc = "Deixe seu Wartortle estiloso usando esse cachecol refinado."}
  43. CRAFT.ITEMS[1]["E"][21] = {st = 21, qnt = 1, itemid = 18620, level = 2,  timeByUnit = 60*2, exp = 5, recipe = {{16062,4},{16076,72},{17090,200}}, desc = "Após passar por um treinamento de alto nível, sua Caterpie precisa apenas dessa boina para ser um verdadeiro militar."}
  44. CRAFT.ITEMS[1]["E"][22] = {st = 22, qnt = 1, itemid = 18621, level = 2,  timeByUnit = 60*2, exp = 5, recipe = {{12171,40},{17090,200}}, desc = "Bombas, tiros e Guerra! Caterpie no estílo Rambo!"}
  45. CRAFT.ITEMS[1]["E"][23] = {st = 23, qnt = 1, itemid = 18622, level = 2,  timeByUnit = 60*2, exp = 5, recipe = {{12171,40},{16076,150},{17090,200}}, desc = "Sem treinamento duro ou guerra, a Caterpie só quer ficar na moda."}
  46. CRAFT.ITEMS[1]["E"][24] = {st = 24, qnt = 1, itemid = 18623, level = 8,  timeByUnit = 60*3, exp = 35, recipe = {{12171,40},{16063,2},{17090,200}}, desc = "Um simples acessório para tornar sua Butterfree o pokémon mais bonito do mundo!"}
  47. CRAFT.ITEMS[1]["E"][25] = {st = 25, qnt = 1, itemid = 18618, level = 8,  timeByUnit = 60*3, exp = 35, recipe = {{16062,4},{12171,5},{17090,200}}, desc = "Um simples acessório para tornar sua Butterfree o pokémon mais bonito do mundo!"}
  48. CRAFT.ITEMS[1]["E"][26] = {st = 26, qnt = 1, itemid = 18624, level = 8,  timeByUnit = 60*3, exp = 35, recipe = {{12153,8},{17090,200}}, desc = "Colocando ordem nos encrenqueiros da floresta, Capitã Butterfree está na área."}
  49. CRAFT.ITEMS[1]["E"][27] = {st = 27, qnt = 1, itemid = 18625, level = 4,  timeByUnit = 60*2, exp = 25, recipe = {{12200,20},{16058,300},{17090,200}}, desc = "Está tendo uma festa fantasia na cidade ? Seu pidgey parece perfeito com esse addon."}
  50. CRAFT.ITEMS[1]["E"][28] = {st = 28, qnt = 1, itemid = 18626, level = 4,  timeByUnit = 60*2, exp = 25, recipe = {{12200,25},{12208,1},{17090,200}}, desc = "Seu pidgey parece um cara bom? Eu garanto que usando esse bonè a impressãoo será outra."}
  51. CRAFT.ITEMS[1]["E"][29] = {st = 29, qnt = 1, itemid = 18627, level = 6,  timeByUnit = 60*2, exp = 25, recipe = {{16059,2},{17090,200}}, desc = "O Halloween chegou? É hora de assustar as crianças com o Pidgey Zumbi."}
  52. CRAFT.ITEMS[1]["E"][30] = {st = 30, qnt = 1, itemid = 18628, level = 4,  timeByUnit = 60*2, exp = 25, recipe = {{12173,23},{16084,300},{17090,200}}, desc = "Rattata usando uma touca de banho? Hmm, isso é estranho."}
  53. CRAFT.ITEMS[1]["E"][31] = {st = 31, qnt = 1, itemid = 18629, level = 14,  timeByUnit = 60*2, exp = 80, recipe = {{12200,25},{16064,1},{17090,200}}, desc = "Embeleze seu Fearow com esse cachecol feito de penas especiais."}
  54. CRAFT.ITEMS[1]["E"][32] = {st = 32, qnt = 1, itemid = 18630, level = 14,  timeByUnit = 60*2, exp = 80, recipe = {{16064,3},{17090,200}}, desc = "Embeleze seu Fearow com esse cachecol feito de penas especiais."}
  55. CRAFT.ITEMS[1]["E"][33] = {st = 33, qnt = 1, itemid = 18631, level = 14,  timeByUnit = 60*4, exp = 70, recipe = {{12172,10},{17090,200}}, desc = "Embeleze seu Fearow com esse cachecol feito de penas especiais."}
  56. CRAFT.ITEMS[1]["E"][34] = {st = 34, qnt = 1, itemid = 18619, level = 10,  timeByUnit = 60*3, exp = 60, recipe = {{17840,4},{17090,200}}, desc = "Que tal dar um toque mais feminino para a Arbok colocando arcos na cabeça dela?"}
  57. CRAFT.ITEMS[1]["E"][35] = {st = 35, qnt = 1, itemid = 18632, level = 10,  timeByUnit = 60*3, exp = 60, recipe = {{12183,3},{17090,200}}, desc = "Que tal dar um toque mais feminino para a Arbok colocando arcos na cabeça dela?"}
  58. CRAFT.ITEMS[1]["E"][36] = {st = 36, qnt = 1, itemid = 16435, level = 10,  timeByUnit = 60*3, exp = 60, recipe = {{12284,4},{12204,4},{17090,250}}, desc = "Que tal assustar algumas crianças com esse Pikachu Fantasma?"}
  59. CRAFT.ITEMS[1]["E"][37] = {st = 37, qnt = 1, itemid = 16434, level = 8,  timeByUnit = 60*3, exp = 60, recipe = {{12284,2},{12164,62},{17090,200}}, desc = "Um pequeno acessório para deixar seu Pikachu estiloso e bonito."}
  60. CRAFT.ITEMS[1]["E"][38] = {st = 38, qnt = 1, itemid = 16433, level = 8,  timeByUnit = 60*3, exp = 60, recipe = {{12176,15},{17090,200}}, desc = "Um pequeno acessório para deixar seu Pikachu estiloso e bonito."}
  61. CRAFT.ITEMS[1]["E"][39] = {st = 39, qnt = 1, itemid = 16431, level = 8,  timeByUnit = 60*3, exp = 60, recipe = {{12284,1},{12176,8},{17090,200}}, desc = "Um pequeno acessório para deixar seu Pikachu estiloso e bonito."}
  62. CRAFT.ITEMS[1]["E"][40] = {st = 40, qnt = 1, itemid = 18637, level = 8,  timeByUnit = 60*3, exp = 60, recipe = {{12177,12},{12208,1},{17090,200}}, desc = "Seu Sandshrew ficará assustador usando esse chapéu de cavaleiro."}
  63. CRAFT.ITEMS[1]["E"][41] = {st = 41, qnt = 1, itemid = 18638, level = 16,  timeByUnit = 60*6, exp = 120, recipe = {{12177,12},{12208,1},{17090,250},{17090,150}}, desc = "Seu Sandslash está um pouco velho? Então certifique-se de comprar esse addon elegante para ele."}
  64. CRAFT.ITEMS[1]["E"][42] = {st = 42, qnt = 1, itemid = 18639, level = 18,  timeByUnit = 60*6, exp = 132, recipe = {{16066,7},{12165,300},{17090,250},{17090,250},{17090,250},{17090,50}}, desc = "A melhor Nidoqueen possui essa faixa vermelha e é respeitada por isso."}
  65. CRAFT.ITEMS[1]["E"][43] = {st = 43, qnt = 1, itemid = 18640, level = 8,  timeByUnit = 60*2, exp = 32, recipe = {{16103,82},{17850,3},{17090,200}}, desc = "O que foi isso que rapidamente apareceu e retornou para a terra? Era um Diglett? Parecia um ninja!"}
  66. CRAFT.ITEMS[1]["E"][44] = {st = 44, qnt = 1, itemid = 18641, level = 12,  timeByUnit = 60*4, exp = 67, recipe = {{12157,20},{12186,1},{17090,200}}, desc = "Vista seu meowth como um dos personagens mais assustadores da televisão. Talvez ele possa aparecer nos seus sonhos?"}
  67. CRAFT.ITEMS[1]["E"][45] = {st = 45, qnt = 1, itemid = 18642, level = 10,  timeByUnit = 60*3, exp = 55, recipe = {{12194,20},{12193,1},{17090,200}}, desc = "Por ter naturalmente o presente de teleportar, agora o Abra decidiu explorar o ramo da magia."}
  68. CRAFT.ITEMS[1]["E"][46] = {st = 46, qnt = 1, itemid = 18643, level = 8,  timeByUnit = 60*2, exp = 35, recipe = {{17843,1},{16079,220},{17090,200}}, desc = "Seu machop será temido no ringue, o verdadeiro campeão."}
  69. CRAFT.ITEMS[1]["E"][47] = {st = 47, qnt = 1, itemid = 18644, level = 14,  timeByUnit = 60*5, exp = 106, recipe = {{16068,10},{17090,200}}, desc = "Disfarce seu Victreebel para que ele não seja descoberto quando necessário. Tlavez ninguém o note."}
  70. CRAFT.ITEMS[1]["E"][48] = {st = 48, qnt = 1, itemid = 18645, level = 6,  timeByUnit = 60*2, exp = 31, recipe = {{12155,10},{17852,1},{17090,200}}, desc = "Geodude com cara de bravo? Usando esse addon você nunca terá essa impressão."}
  71. CRAFT.ITEMS[1]["E"][49] = {st = 49, qnt = 1, itemid = 18646, level = 10,  timeByUnit = 60*3, exp = 41, recipe = {{12204,2},{17090,200}}, desc = "Apesar de já ser assustador por natureza. o Haunter quer pregar ainda mais peças nas pessoas."}
  72. CRAFT.ITEMS[1]["E"][50] = {st = 50, qnt = 1, itemid = 16865, level = 14,  timeByUnit = 60*4, exp = 85, recipe = {{12208,3},{12209,2},{17090,250},{17090,250},{17090,250},{17090,50}}, desc = "Torne seu Lickitung um verdadeiro mercenário."}
  73. CRAFT.ITEMS[1]["E"][51] = {st = 51, qnt = 1, itemid = 18648, level = 8,  timeByUnit = 60*3, exp = 73, recipe = {{12210,3},{17090,200}}, desc = "Um Weezing fumando um cachimbo? Não pode ser verdade."}
  74. CRAFT.ITEMS[1]["E"][52] = {st = 52, qnt = 1, itemid = 18649, level = 10,  timeByUnit = 60*3, exp = 78, recipe = {{12341,10},{17090,300}}, desc = "Uma Tangela com chapéu do bobo da corte? Isso é hilário."}
  75. CRAFT.ITEMS[1]["E"][53] = {st = 53, qnt = 1, itemid = 18650, level = 8,  timeByUnit = 80*3, exp = 78, recipe = {{12341,5},{12204,3},{16083,100},{17090,300}}, desc = "Vista sua Tangela para o Halloween com essa fantasia de fantasma e assuste todas as crianças lá fora."}
  76.  
  77. CRAFT.ITEMS[1]["D"] = {}
  78. CRAFT.ITEMS[1]["D"][1] = {st = 6, qnt = 1, itemid = 2000, level = 0, timeByUnit = 10, exp = 10, recipe = {{2001,2},{2002,2}}, desc = "Este é um item, e essa é sua descrição"}
  79. CRAFT.ITEMS[1]["D"][2] = {st = 7, qnt = 1, itemid = 2000, level = 22, timeByUnit = 10, exp = 10, recipe = {{2001,2},{2002,2}}, desc = "Este é um item, e essa é sua descrição"}
  80. CRAFT.ITEMS[1]["D"][3] = {st = 8, qnt = 1, itemid = 2000, level = 25, timeByUnit = 10, exp = 10, recipe = {{2001,2},{2002,2}}, desc = "Este é um item, e essa é sua descrição"}
  81. CRAFT.ITEMS[1]["D"][4] = {st = 9, qnt = 1, itemid = 2000, level = 30, timeByUnit = 10, exp = 10, recipe = {{2001,2},{2002,2}}, desc = "Este é um item, e essa é sua descrição"}
  82. CRAFT.ITEMS[1]["D"][5] = {st = 10, qnt = 1, itemid = 2000, level = 35, timeByUnit = 10, exp = 10, recipe = {{2001,2},{2002,2}}, desc = "Este é um item, e essa é sua descrição"}
  83.  
  84. CRAFT.ITEMS[2] = {} -- Profissão de id 2
  85. CRAFT.ITEMS[3] = {}
  86. CRAFT.ITEMS[4] = {}
  87.  
  88. CRAFT.DUST = 18610
  89. CRAFT.OPCODE = 103
  90. CRAFT.STORAGE = {
  91.   BASEQNT = 8887400,
  92.   BASECOLLECTED = 8888500,
  93.   BASETIME = 8889600,
  94. }
  95.  
  96. function CRAFT.sendInfo(cid, open_window)
  97.   local work = getPlayerWork(cid)
  98.   local ITEMS = CRAFT.ITEMS[work]
  99.   local protocol = Protocol_create("work")
  100.   if not ITEMS then
  101.     doPlayerPopupFYI(cid, "Você não tem profissão.")
  102.     return
  103.   end
  104.   Protocol_add(protocol, WORKS.LIST[work].name)
  105.   Protocol_add(protocol, getWorkLevel(cid, work))
  106.   Protocol_add(protocol, getWorkPercent(cid, work))
  107.   Protocol_add(protocol, open_window)
  108.   doSendPlayerExtendedOpcode(cid, CRAFT.OPCODE, table.tostring(protocol))
  109. end
  110.  
  111. function CRAFT.sendItemsByRank(cid, rank, max_board)
  112.   local ITEMS = CRAFT.ITEMS[getPlayerWork(cid)]
  113.   if not ITEMS then
  114.     doPlayerPopupFYI(cid, "Você não tem profissão.")
  115.     return
  116.   end
  117.   if not ITEMS[rank] then
  118.     doPlayerPopupFYI(cid, "Nenhum item para esta classificação.")
  119.     return
  120.   end
  121.   local first, send_items, maxSend = true, {}, 5
  122.   for id, info in ipairs(ITEMS[rank]) do
  123.     local INFO = {}
  124.     INFO.id = id
  125.     INFO.qnt = info.qnt
  126.     INFO.desc = info.desc
  127.     INFO.name = getItemNameById(info.itemid)
  128.     INFO.level = info.level
  129.     INFO.timeByUnit = info.timeByUnit
  130.     INFO.exp = info.exp
  131.     INFO.storage_qnt = getPlayerStorageValue(cid, CRAFT.STORAGE.BASEQNT + info.st)
  132.     INFO.storage_collected = getPlayerStorageValue(cid, CRAFT.STORAGE.BASECOLLECTED + info.st)
  133.     INFO.storage_time = getPlayerStorageValue(cid, CRAFT.STORAGE.BASETIME + info.st)
  134.     if INFO.storage_time > os.time() then
  135.       INFO.storage_time = INFO.storage_time - os.time()
  136.     else
  137.       INFO.storage_time = 0
  138.     end
  139.     INFO.itemid = getItemInfo(info.itemid).clientId
  140.     INFO.recipe = {}
  141.     for _, item in pairs(info.recipe) do
  142.       INFO.recipe[#INFO.recipe+1] = {
  143.         getItemInfo(item[1]).clientId, item[2], getItemNameById(item[1])
  144.       }
  145.     end
  146.     send_items[#send_items + 1] = INFO
  147.     if #send_items == maxSend then
  148.       CRAFT.sendItems(cid, rank, max_board, send_items, first)
  149.       first = false
  150.       send_items = {}
  151.     end
  152.   end
  153.   if #send_items > 0 then
  154.     CRAFT.sendItems(cid, rank, max_board, send_items, first)
  155.   end
  156. end
  157.  
  158. function CRAFT.sendItems(cid, rank, max_board, items, first)
  159.   local protocol = Protocol_create("items")
  160.   Protocol_add(protocol, first)
  161.   Protocol_add(protocol, rank)
  162.   Protocol_add(protocol, max_board)
  163.   Protocol_add(protocol, items)
  164.   doSendPlayerExtendedOpcode(cid, CRAFT.OPCODE, table.tostring(protocol))
  165. end
  166.  
  167. function CRAFT.refreshItem(cid, rank, id)
  168.   local ITEMS = CRAFT.ITEMS[getPlayerWork(cid)]
  169.   if not ITEMS then
  170.     doPlayerPopupFYI(cid, "Você não tem profissão.")
  171.     return
  172.   end
  173.   if not ITEMS[rank] then
  174.     doPlayerPopupFYI(cid, "Nenhum item para esta classificação.")
  175.     return
  176.   end
  177.   local INFO = ITEMS[rank][id]
  178.   if not INFO then
  179.     doPlayerPopupFYI(cid, "Nenhum item com este ID. ")
  180.     return
  181.   end
  182.   INFO.storage_qnt = getPlayerStorageValue(cid, CRAFT.STORAGE.BASEQNT + INFO.st)
  183.   INFO.storage_collected = getPlayerStorageValue(cid, CRAFT.STORAGE.BASECOLLECTED + INFO.st)
  184.   INFO.storage_time = getPlayerStorageValue(cid, CRAFT.STORAGE.BASETIME + INFO.st)
  185.   if INFO.storage_time > os.time() then
  186.     INFO.storage_time = INFO.storage_time - os.time()
  187.   else
  188.     INFO.storage_time = 0
  189.   end
  190.   local protocol = Protocol_create("refreshItem")
  191.   Protocol_add(protocol, rank)
  192.   Protocol_add(protocol, id)
  193.   Protocol_add(protocol, INFO)
  194.   doSendPlayerExtendedOpcode(cid, CRAFT.OPCODE, table.tostring(protocol))
  195. end
  196.  
  197. function CRAFT.createItem(cid, rank, id, qnt)
  198.   local ITEMS = CRAFT.ITEMS[getPlayerWork(cid)]
  199.   if not ITEMS then
  200.     doPlayerPopupFYI(cid, "Você não tem profissão.")
  201.     return
  202.   end
  203.   if not ITEMS[rank] then
  204.     doPlayerPopupFYI(cid, "Nenhum item para esta classificação.")
  205.     return
  206.   end
  207.   local INFO = ITEMS[rank][id]
  208.   if not INFO then
  209.     doPlayerPopupFYI(cid, "Nenhum item com este ID.")
  210.     return
  211.   end
  212.   if getWorkLevel(cid, getPlayerWork(cid)) < INFO.level then
  213.     doPlayerPopupFYI(cid, "Nível insuficiente para criar este item.")
  214.     return
  215.   end
  216.   local reqItem = ""
  217.   for _, item in pairs(INFO.recipe) do
  218.     local itemCount, reqCount = getPlayerItemCount(cid, item[1]), (item[2] * qnt)
  219.     if itemCount < reqCount then
  220.       reqItem = reqItem..(#reqItem == 0 and "Faltam: " or ", ")..(reqCount - itemCount).." "..getItemNameById(item[1])
  221.     end
  222.   end
  223.   if #reqItem > 0 then
  224.     doPlayerPopupFYI(cid, "Você não tem os materiais necessários.\n"..reqItem..".")
  225.     return
  226.   end
  227.   for _, item in pairs(INFO.recipe) do
  228.     doPlayerRemoveItem(cid, item[1], (item[2] * qnt))
  229.   end
  230.   -- VERIFICAÇÕES DA RECEITA E NIVEL
  231.   local currentQnt = getPlayerStorageValue(cid, CRAFT.STORAGE.BASEQNT + INFO.st)
  232.   local currentTime = getPlayerStorageValue(cid, CRAFT.STORAGE.BASETIME + INFO.st)
  233.   setPlayerStorageValue(cid, CRAFT.STORAGE.BASEQNT + INFO.st, (currentQnt <= 0 and 0 or currentQnt) + qnt)
  234.   setPlayerStorageValue(cid, CRAFT.STORAGE.BASETIME + INFO.st, (INFO.timeByUnit * qnt) + (currentTime > os.time() and currentTime or os.time()))
  235.   CRAFT.refreshItem(cid, rank, id)
  236. end
  237.  
  238. function CRAFT.speedUp(cid, rank, id)
  239.   local ITEMS = CRAFT.ITEMS[getPlayerWork(cid)]
  240.   if not ITEMS then
  241.     doPlayerPopupFYI(cid, "Você não tem profissão.")
  242.     return
  243.   end
  244.   if not ITEMS[rank] then
  245.     doPlayerPopupFYI(cid, "Nenhum item para esta classificação.")
  246.     return
  247.   end
  248.   local INFO = ITEMS[rank][id]
  249.   if not INFO then
  250.     doPlayerPopupFYI(cid, "Nenhum item com este ID.")
  251.     return
  252.   end
  253.   local currentTime = getPlayerStorageValue(cid, CRAFT.STORAGE.BASETIME + INFO.st)
  254.   if currentTime < os.time() then return end
  255.   currentTime = currentTime - os.time()
  256.   local dustCost =  math.ceil(currentTime/(5*60))
  257.   if getPlayerItemCount(cid, CRAFT.DUST) < dustCost then
  258.     doPlayerPopupFYI(cid, "Não possui dusts suficientes")
  259.     return
  260.   end
  261.   doPlayerRemoveItem(cid, CRAFT.DUST, dustCost)
  262.   setPlayerStorageValue(cid, CRAFT.STORAGE.BASETIME + INFO.st, os.time()-1)
  263.   CRAFT.refreshItem(cid, rank, id)
  264. end
  265.  
  266. function CRAFT.collectItem(cid, rank, id)
  267.   local ITEMS = CRAFT.ITEMS[getPlayerWork(cid)]
  268.   if not ITEMS then
  269.     doPlayerPopupFYI(cid, "Você não tem profissão.")
  270.     return
  271.   end
  272.   if not ITEMS[rank] then
  273.     doPlayerPopupFYI(cid, "Nenhum item para esta classificação.")
  274.     return
  275.   end
  276.   local INFO = ITEMS[rank][id]
  277.   if not INFO then
  278.     doPlayerPopupFYI(cid, "Nenhum item com este ID.")
  279.     return
  280.   end
  281.   local currentQnt = getPlayerStorageValue(cid, CRAFT.STORAGE.BASEQNT + INFO.st)
  282.   currentQnt = (currentQnt < 0 and 0 or currentQnt)
  283.   if currentQnt <= 0 then
  284.     doPlayerPopupFYI(cid, "Nenhum item para coletar")
  285.     return
  286.   end
  287.   local currentCollectable = getPlayerStorageValue(cid, CRAFT.STORAGE.BASECOLLECTED + INFO.st)
  288.   currentCollectable = (currentCollectable < 0 and 0 or currentCollectable)
  289.   local availableQnt = currentQnt - currentCollectable
  290.   if availableQnt <= 0 then
  291.     doPlayerPopupFYI(cid, "Nenhum item para coletar")
  292.     return
  293.   end
  294.   local currentTime = getPlayerStorageValue(cid, CRAFT.STORAGE.BASETIME + INFO.st)
  295.   if currentTime > os.time() then
  296.     local collectable = math.floor(((currentQnt * INFO.timeByUnit) - (currentTime - os.time())) / INFO.timeByUnit)
  297.     local availableCollectable = collectable - currentCollectable
  298.     if availableCollectable <= 0 then
  299.       doPlayerPopupFYI(cid, "Aguarde, não há itens para coletar")
  300.       return
  301.     end
  302.     setPlayerStorageValue(cid, CRAFT.STORAGE.BASECOLLECTED + INFO.st, availableCollectable + (currentCollectable <= 0 and 0 or currentCollectable))
  303.     giveWorkExp(cid, getPlayerWork(cid), INFO.exp * availableCollectable)
  304.     if isItemStackable(INFO.itemid) then
  305.       local item = doPlayerAddItem(cid, INFO.itemid, INFO.qnt * availableCollectable)
  306.       if INFO.unique then
  307.         doItemSetAttribute(item, "unique", 1)
  308.       end
  309.     else
  310.       for i=1, INFO.qnt * availableCollectable do
  311.         local item = doPlayerAddItem(cid, INFO.itemid, 1)
  312.         if INFO.unique then
  313.           doItemSetAttribute(item, "unique", 1)
  314.         end
  315.       end
  316.     end
  317.   else
  318.     setPlayerStorageValue(cid, CRAFT.STORAGE.BASEQNT + INFO.st, -1)
  319.     setPlayerStorageValue(cid, CRAFT.STORAGE.BASETIME + INFO.st, -1)
  320.     setPlayerStorageValue(cid, CRAFT.STORAGE.BASECOLLECTED + INFO.st, -1)
  321.     giveWorkExp(cid, getPlayerWork(cid), INFO.exp * availableQnt)
  322.     if isItemStackable(INFO.itemid) then
  323.       local item = doPlayerAddItem(cid, INFO.itemid, INFO.qnt * availableQnt)
  324.       if INFO.unique then
  325.         doItemSetAttribute(item, "unique", 1)
  326.       end
  327.     else
  328.       for i=1, INFO.qnt * availableQnt do
  329.         local item = doPlayerAddItem(cid, INFO.itemid, 1)
  330.         if INFO.unique then
  331.           doItemSetAttribute(item, "unique", 1)
  332.         end
  333.       end
  334.     end
  335.   end
  336.   CRAFT.refreshItem(cid, rank, id)
  337. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement