Postado Julho 23, 2016 8 anos Estou tentando criar um script que a cada 30 minutos os players online recebam um determinado item, mas estou apanhando bastante... Alguém se habilita a me ajudar? TFS 1.2 alguém por favor? @vankk ajuda aê feraaaa! kkkkk edit- Para quem precisar, está ai esse script lindo :D local config = { items = { {itemId = 2160, count = 100}, }, minLevel = 100 -- level minimo para receber os items } function onThink(interval) local players = Game.getPlayers() if #players == 0 then return true end for _, player in ipairs(players) do if player:getLevel() >= config.minLevel then local reward = config.items[math.random(#config.items)] local ret = player:addItemEx(Game.createItem(reward.itemId, reward.count)) if ret ~= RETURNVALUE_NOERROR then local inbox = player:getInbox() if inbox then inbox:addItemEx(rewardItem, INDEX_WHEREEVER, FLAG_NOLIMIT) end end player:sendTextMessage(MESSAGE_EVENT_ADVANCE, string.format('Did you recived %s. You can get more items within 30 minutes. %s', ItemType(reward.itemId):getName(), ret ~= 0 and "The reward was sent to your inbox due not enough capacity or room in your backpack." or "")) end end return true end Créditos totais ao @vankk! Obrigado!!! Editado Julho 24, 2016 8 anos por Leo Zanin atualizando (veja o histórico de edições)
Postado Julho 23, 2016 8 anos Caso o jogador seja acima do level configurado ele vai receber os items, evitando assim jogadores recebendo muitos items, e caso o jogador não tenha cap, o item será enviado para o Inbox dele. local config = { items = { {itemId = 111, count = 1}, {itemId = 111, count = 1}, {itemId = 1111, count = 1}, }, minLevel = 100 -- level minimo para receber os items } function onThink(interval) local players = Game.getPlayers() if #players == 0 then return true end for _, player in ipairs(players) do if player:getLevel() => config.minLevel then local reward = config.rewards[math.random(#config.items)] local ret = player:addItemEx(Game.createItem(reward.itemId, reward.count)) if ret ~= RETURNVALUE_NOERROR then local inbox = player:getInbox() if inbox then inbox:addItemEx(rewardItem, INDEX_WHEREEVER, FLAG_NOLIMIT) end end player:sendTextMessage(MESSAGE_EVENT_ADVANCE, string.format('Did you recived %s. You can get more items within 30 minutes. %s', ItemType(reward.itemId):getName(), ret ~= 0 and "The reward was sent to your inbox due not enough capacity or room in your backpack." or "")) end end return true end Editado Julho 23, 2016 8 anos por vankk (veja o histórico de edições) Discord: vankk #7765 Precisando de ajuda? Entre em contato comigo via Discord. Muitos vêm seus muitos dias de glória, mas poucos vêm seus muitos dias de luta.
Postado Julho 23, 2016 8 anos Autor 49 minutos atrás, vankk disse: Caso o jogador seja acima do level configurado ele vai receber os items, evitando assim jogadores recebendo muitos items, e caso o jogador não tenha cap, o item será enviado para o Inbox dele. local config = { items = { {itemId = 111, count = 1}, {itemId = 111, count = 1}, {itemId = 1111, count = 1}, }, minLevel = 100 -- level minimo para receber os items } function onThink(interval) local players = Game.getPlayers() if #players == 0 then return true end for _, player in ipairs(players) do if player:getLevel() => config.minLevel then local reward = config.rewards[math.random(#config.items)] local ret = player:addItemEx(Game.createItem(reward.itemId, reward.count)) if ret ~= RETURNVALUE_NOERROR then local inbox = player:getInbox() if inbox then inbox:addItemEx(rewardItem, INDEX_WHEREEVER, FLAG_NOLIMIT) end end player:sendTextMessage(MESSAGE_EVENT_ADVANCE, string.format('Did you recived %s. You can get more items within 30 minutes. %s', ItemType(reward.itemId):getName(), ret ~= 0 and "The reward was sent to your inbox due not enough capacity or room in your backpack." or "")) end end return true end Primeiramente obrigado pela ajuda @vankk, segundamente segue a imagem do erro que deu na distro:
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.