Postado Junho 13, 2017 7 anos Eae galera, estou com o seguinte problema: preciso de um script que, a cada 30 minutos todos os players online ganhem um determinado item: Versão do OT: 10, TFS 1.2 Meu Script (globalevents): local config = { items = { {itemId = 11219, 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 Erro: [Warning - Event::checkScript] Can not load script: scripts/online.lua data/globalevents/scripts/online.lua:16: 'then' expected near '=' Agradeço desde já!!
Postado Junho 13, 2017 7 anos tenta ai Citar local config = { items = { {itemId = 11219, 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() > 100 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 Junho 13, 2017 7 anos por Antipush (veja o histórico de edições)
Postado Junho 13, 2017 7 anos Autor 1 hora atrás, Antipush disse: local config = { items = { {itemId = 11219, 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() > 100 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 Mesmo erro
Postado Junho 13, 2017 7 anos local config = { items = { {itemId = 11219, 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 GitHub: https://github.com/s3kk Conteúdo: [SERVER] Heromassa[GESIOR] Gesior 2012 modificado por Sekk[GESIOR] Shop Addons & Mounts - TFS 1.x[GESIOR] Outfitter para Characters e Rank[SISTEMA] Castle 24h[TALKACTION] Multi Element Wand[ACTION] Multi Elemental Arrow & Shield[PROGRAMAÇÃO] Compilar TFS 0.4 no Linux[PROGRAMAÇÃO] Compilando TFS 0.4 no MSVC(x64 e x32) [INFRAESTRUTURA] Configuração COMPLETA Google VM + Tibia 11.x
Postado Junho 13, 2017 7 anos Autor 41 minutos atrás, Sekk disse: local config = { items = { {itemId = 11219, 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 Não apareceu erros ao iniciar o server, mas depois apareceu isso: Lua Script Error: [GlobalEvent Interface] data/globalevents/scripts/online.lua:onThink data/globalevents/scripts/online.lua:17: attempt to index field 'rewards' (a nil value) stack traceback: [C]: in function '__index' data/globalevents/scripts/online.lua:17: in function <data/globalevents/scripts/online.lua:9> [Error - GlobalEvents::think] Failed to execute event: OnlinePoints Edit: Funcionou agora, retirei o 'rewards' e coloquei 'items', agora funcionou. OBRIGADO!! Para quem futuramente precisar do script: local config = { items = { {itemId = 11219, 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.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 Editado Junho 13, 2017 7 anos por Alberto1997 (veja o histórico de edições)
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.