Postado Setembro 9, 2018 6 anos @Lyu Seu lindo kkk muito bom o script... parabéns doido tmj Meus trabalhos: [Movements] TFS 1.1+ Area Hardcore [Movements] TFS 1.1+ Tile Party [Action] TFS 1.1+ Bau diário [Action] TFS 1.1+ Guild Dungeon Lever [Talkactions] TFS 0.3.6 / 0.4 Quest Hunt por Tempo Contato: Discord: Tataboy67#4934
Postado Setembro 9, 2018 6 anos Autor 1 hora atrás, tataboy67 disse: @Lyu Seu lindo kkk muito bom o script... parabéns doido tmj haha valeu @tataboy67, tamo junto!
Postado Setembro 10, 2018 6 anos legal. Editado Setembro 10, 2018 6 anos por Igorzerah (veja o histórico de edições)
Postado Setembro 19, 2018 6 anos Em 08/09/2018 em 17:15, Lyu disse: Fala clã, há um tempo soltei um sistema privado meu no grupo do TK no Discord e hoje resolvi soltar aqui no Fórum também, abaixo irei explicar um pouquinho sobre esse sistema. O que é Legendary Lever? É um sistema de alavancas que vendem itens (aleatórios), similar à uma surprise bag, porém cada item possui x porcento de chances de dropar ao jogador que estiver pagando para tentar a sorte. Qual o objetivo afinal? Bom, na época que desenvolvi esse sistema, era para um cliente meu que acabou desistindo da compra quando eu estava prestes a começar a desenvolver. O objetivo do cara era criar 5 alavancas, onde cada alavanca teria pelo menos 1 item lendário com 3% de chance de dropar ao jogador que estivesse puxando a alavanca, e cada alavanca teria entre 5 a 7 itens ao todo (a maioria itens simples). Mas a ideia por trás de tudo era lucrar com isso, fazer jogadores donatarem mais para poder tentar pegar esses itens lendários (claro, o cara ia ter que gastar muito pra isso). Terminou que resolvi desenvolver esse sistema com proteção contra duplo click, exaustão, logs de ações, etc. Em qual versão posso utilizar esse sistema? Esse sistema foi programado para rodar em TFS 1.x. Se vocês quiserem, em breve posso converter para 0.4 e trazer ao Fórum, mas aí vai depender do feedback Sem mais delongas, vamos ao sistema! antes de tudo, crie uma pasta chamada legendarylever em data/actions/scripts, e dentro da legendarylever crie outra pasta chamada lib. data/actions/scripts/legendarylever/lib/lib.lua : Mostrar conteúdo oculto -- Legendary Lever was developed by lyu (Legendary Lever now is public) if not randomitems then randomitems = {} function randomitems:saveLog(...) local message = '[%s] %s has found %s %s\n' local file = io.open('data/logs/randomitems/' .. ... .. '.log', 'a') if not file then return end io.output(file) io.write(message:format(os.date('%d/%m/%Y %H:%M'), ...)) io.close(file) end function randomitems:random(p, obj, exhaust, item) if not rawequal(type(obj), 'table') then return error('table of items not found.') end if not p:getGroup():getAccess() then -- double-click protect if obj.exhaust and obj.exhaust > os.time() then return p:getMoney() >= obj.coust and p:sendCancelMessage('Lever exhausted for ' .. obj.exhaust - os.time() ..' seconds.') or true end -- the exhaust of x object is global for all players obj.exhaust = os.time() + (not exhaust and 2 or exhaust) if obj.onlypremium and not p:isPremium() then return p:say('Sorry, only premium players can use this lever.', TALKTYPE_MONSTER_SAY) end if not p:removeMoney(obj.coust) then return p:say('Payment fail, you need ' .. obj.coust .. ' gold coins.', TALKTYPE_MONSTER_SAY) end if exhaust > 1 then item:transform(item.itemid + 1) addEvent(function() item:transform(item.itemid - 1) end, ((obj.exhaust - os.time())-1) * 1000) end end -- this function is necessary to repeat the loop if the result was nil local function randomize() for _, it in ipairs(obj) do if it.chance>=100-(math.random()*100) then local item = p:addItem(it.itemid, it.amount) local name = not rawequal(type(item), 'table') and item:getName() or item[1]:getName() self:saveLog(p:getName(), it.amount, name) p:save() -- [security] save player if it.broadcast then local msg = '[Legendary Levers] %s has found %s %s.' if not p:getGroup():getAccess() then Game.broadcastMessage(msg:format(p:getName(), rawequal(it.amount, 1) and 'a' or it.amount, name .. '' .. (it.amount > 1 and 's' or '')), MESSAGE_EVENT_ADVANCE) end end p:sendTextMessage(MESSAGE_INFO_DESCR, 'Congratulations, you have found ' .. (rawequal(it.amount, 1) and 'a' or it.amount) .. ' ' .. name .. '' .. (it.amount > 1 and 's.' or '.')) return not p:isInGhostMode() and p:getPosition():sendMagicEffect(it.broadcast and 7 or 15) end end -- repeat randomize() end -- called by self:random(...) randomize() return true end else error('>> randomitems/lib.lua loading failed.') end agora abra data/lib/lib.lua e inclua esta linha : dofile('data/actions/scripts/legendarylever/lib/lib.lua') Feito isso, você já pode começar a criar os arquivos das alavancas. Vamos então criar a nossa primeira alavanca! data/actions/scripts/legendarylever/royalcrossbow.lua : Mostrar conteúdo oculto -- Legendary Lever was developed by lyu (Legendary Lever now is public) local lever = { {itemid = 8851, amount = 1, chance = 5, broadcast = true}, {itemid = 8300, amount = 1, chance = 12, broadcast = false}, {itemid = 9971, amount = 50, chance = 25, broadcast = false}, {itemid = 7253, amount = 1, chance = 65, broadcast = false}, } lever.onlypremium = false lever.coust = 10000 function onUse(player, item) return randomitems:random(player, lever, 2, item) end data/actions/actions.xml : <action actionid="3370" script="legendarylever/royalcrossbow.lua"/> E por fim, adicione a actionid 3370 em uma alavanca no Remere's Map Editor! ? Para criar novas alavancas, você já deve saber o que se fazer. Sim! CTRL + C CTRL + V no arquivo royalcrossbow.lua, renomea o nome, edite a tabela de itens, preços, premium etc e adicione a tag no XML com uma nova actionid (a actionid põe em uma nova alavanca no Remere's). A configuração não preciso nem explicar né! A única dica que dou, é deixar brodacast = true apenas nos itens mais difíceis de dropar, ou seja, os lendários. Porque isso irá anunciar ao servidor todo que aquele player conseguiu o danado do item haha ? Então é isso, espero que tenham gostado! *Edit: Para salvar log de ações, crie uma pasta chamada randomitems em data/logs. Créditos: Lyu (isme) o.4 seria uma boa 758x426.bmp
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.