Postado Outubro 6, 2018 6 anos local config, players = { actionId = 1225, -- Action ID da quest. healthLose = 50, -- Quantidade de life perdido a cada clique. healthTotal = 10000, -- Quantidade a ser alcançada de life. reward = { [1] = {itemId = 2160, amount = 100} -- Recompensa itemId e quantidade }, globalStorage = 52220, -- Storage global storagePlayer = 52221 -- Storage do player }, {} function onUse(player, item, fromPosition, target, toPosition, isHotkey) if item.actionid ~= config.actionId then return false end if Game.getStorageValue(config.globalStorage) > 0 then player:sendCancelMessage('The daily quest has already been made.') return true end if player:getStorageValue(config.storagePlayer) > 0 then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The chest is empty.') return true end local difference = player:getHealth() - config.healthLose player:addHealth( - difference) players[player:getId()] = ((players[player:getId()] == nil and 0 or players[player:getId()]) + config.healthLose) if players[player:getId()] == config.healthTotal then if not player then return false end for i = 1, #config.reward do local rewards = config.reward[i] player:addItem(rewards.itemId, rewards.amount) end Game.setStorageValue(config.globalStorage, 1) player:setStorageValue(config.storagePlayer, 1) player:sendTextMessage('You did the quest.') for k in pairs(players) do players[k] = nil end end return true end
Postado Outubro 6, 2018 6 anos Autor Em 06/10/2018 em 00:30, FlavioHulk disse: local config, players = { actionId = 1225, -- Action ID da quest. healthLose = 50, -- Quantidade de life perdido a cada clique. healthTotal = 10000, -- Quantidade a ser alcançada de life. reward = { [1] = {itemId = 2160, amount = 100} -- Recompensa itemId e quantidade }, globalStorage = 52220, -- Storage global storagePlayer = 52221 -- Storage do player }, {} function onUse(player, item, fromPosition, target, toPosition, isHotkey) if item.actionid ~= config.actionId then return false end if Game.getStorageValue(config.globalStorage) > 0 then player:sendCancelMessage('The daily quest has already been made.') return true end if player:getStorageValue(config.storagePlayer) > 0 then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The chest is empty.') return true end local difference = player:getHealth() - config.healthLose player:addHealth( - difference) players[player:getId()] = ((players[player:getId()] == nil and 0 or players[player:getId()]) + config.healthLose) if players[player:getId()] == config.healthTotal then if not player then return false end for i = 1, #config.reward do local rewards = config.reward[i] player:addItem(rewards.itemId, rewards.amount) end Game.setStorageValue(config.globalStorage, 1) player:setStorageValue(config.storagePlayer, 1) player:sendTextMessage('You did the quest.') for k in pairs(players) do players[k] = nil end end return true end Exatamente o mesmo erro .-.
Postado Outubro 6, 2018 6 anos Adiciona em: data/lib/core/game.lua if not globalStorageTable then globalStorageTable = {} end function Game.getStorageValue(key) return globalStorageTable[key] or -1 end function Game.setStorageValue(key, value) globalStorageTable[key] = value end Testei o script e tudo está funcionando normalmente... Boa sorte ! local config, players = { actionId = 1225, -- Action ID da quest. healthLose = 50, -- Quantidade de life perdido a cada clique. healthTotal = 300, -- Quantidade a ser alcançada de life. reward = { [1] = {itemId = 2160, amount = 100} -- Recompensa itemId e quantidade }, globalStorage = 52220, -- Storage global storagePlayer = 52221 -- Storage do player }, {} function onUse(player, item, fromPosition, target, toPosition, isHotkey) if item.actionid ~= config.actionId then return false end if Game.getStorageValue(config.globalStorage) > 0 then player:sendCancelMessage('The daily quest has already been made.') return true end if player:getStorageValue(config.storagePlayer) > 0 then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The chest is empty.') return true end local difference = player:getHealth() - config.healthLose player:addHealth( - difference) players[player:getId()] = ((players[player:getId()] == nil and 0 or players[player:getId()]) + config.healthLose) if players[player:getId()] == config.healthTotal then if not player then return false end for i = 1, #config.reward do local rewards = config.reward[i] player:addItem(rewards.itemId, rewards.amount) end Game.setStorageValue(config.globalStorage, 1) player:setStorageValue(config.storagePlayer, 1) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You did the quest.') for k in pairs(players) do players[k] = nil end end return true end Editado Outubro 6, 2018 6 anos por FlavioHulk (veja o histórico de edições)
Postado Outubro 6, 2018 6 anos Autor @FlavioHulk Boa tarde man, obrigado novamente por estar me ajudando, acabaram os erros na Distro, porem esta com algum erro no script, quando eu dou Use uma vez o char fica com o HP determinado aqui; healthLose = 50, -- Quando dou Use fico com a quantidade que coloco pra perder, ou seja, se tenho 5000 de HP, dou Use fico com o valor registrado ali. Ai depois eu fico dando use algumas vezes sem tomar dano, pois o HP já esta o mesmo do "HealthLose" logo ele não altera nada, e depois de alguns Uses eu pego a reward. Não querendo abusar da sua bondade, mas eu também tinha pedido pra ter 1 determinado tempo pra conseguir perder a quantidade de HP necessário, por exemplo, se o player não conseguisse perder 1k de HP em 10 segundos a contagem reiniciaria. Obrigado novamente pela ajuda que esta dando. #Edit Fiz um teste aqui, coloquei o meu char com 5000 de HP, coloquei HealthLose = 4999 (Perder 1 de HP por clique) e o HealthTotal = 10 (Teria que dar use 10 vezes), comi uma food pra ficar healando e fiz perder 20 de HP 1 por vez e não recebi o premio nem deu quest completa. #Edit2 local difference = config.healthLose To de folga hoje tava dando uma olhada, tava aqui o erro ^^, agora falta o negocio do tempo, vou ir dando uma pesquisada ate vc aparecer dnv u.u Editado Outubro 7, 2018 6 anos por RXSora (veja o histórico de edições)
Postado Outubro 8, 2018 6 anos Adiciona esta função em lib/core/player.lua function Player.setExhaustion(self, value, time) self:setStorageValue(value, time + os.time()) end function Player.getExhaustion(self, value) local storage = self:getStorageValue(value) if not storage or storage <= os.time() then return 0 end return storage - os.time() end function Player:hasExhaustion(value) return self:getExhaustion(value) >= os.time() and true or false end Testa esse script, e me retorna algum erro ou possível bug, pois estou fazendo esboços. local config, players = { actionId = 1225, -- Action ID da quest. healthLose = 50, -- Quantidade de life perdido a cada clique. healthTotal = 300, -- Quantidade a ser alcançada de life. reward = { [1] = {itemId = 2160, amount = 100} -- Recompensa itemId e quantidade }, globalStorage = 52220, -- Storage global storagePlayer = 52221, -- Storage do player storageTime = 52222, -- Storage do Tempo time = 10 * 60 -- Tempo em segundos }, {} function onUse(player, item, fromPosition, target, toPosition, isHotkey) if item.actionid ~= config.actionId then return false end if Game.getStorageValue(config.globalStorage) > 0 then player:sendCancelMessage('The daily quest has already been made.') return true end if player:getStorageValue(config.storagePlayer) > 0 then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The chest is empty.') return true end local difference = config.healthLose player:addHealth( - difference) if not player:hasExhaustion(config.storageTime) then if players[player:getId()] then players[player:getId()] = nil player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Your sacrifice was reseted.') end player:setExhaustion(config.storageTime, config.time) end players[player:getId()] = ((players[player:getId()] == nil and 0 or players[player:getId()]) + config.healthLose) if players[player:getId()] == config.healthTotal then if not player then return false end for i = 1, #config.reward do local rewards = config.reward[i] player:addItem(rewards.itemId, rewards.amount) end Game.setStorageValue(config.globalStorage, 1) player:setStorageValue(config.storagePlayer, 1) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You did the quest.') for k in pairs(players) do players[k] = nil end end return true end
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.