joadson

Server Side

Mar 3rd, 2021
556
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×