Postado Julho 6, 2018 6 anos Opa gente tudo bem? Estou tentando aprender cada vez mais de script, e acabei de fazer 1 script legal para postar aqui pra vocês... Porém está com 1 pequeno problema nele ! A verificação de itens está com problema... eu não sei porque na verdade, fiz tudo certinho. Não sei porque que:Mesmo que o [Mdr] Henrique, não possua os 2 itens para entrar, o item de ambos é removido .OU SEJA:Se o jogador 1 possuir Crystal coin, e o 2 possuir Crystal coin, ele está sendo removido ! Se o jogador 1 possuir Scarab coin, e o jogador 2 não possuir Scarab coin, ele não é removido ! Porem eu testei com apenas 1 item, ele funciona perfeitamente: items = { -- itens necessários para que os players entrem. [1] = {item = 2160, count = 1}, }, Está ai o script inteiro: local config = { members = 2, -- membros ou +. level = 300, -- nivel que todos os membros devem ter para entrar. leader = false, -- sómente o leader pode entrar no teleport. pos_to = {x = 1143, y = 1066, z = 7}, -- posição que os jogadores serão teleportados. items = { -- itens necessários para que os players entrem. [1] = {item = 2160, count = 1}, [2] = {item = 2159, count = 1} -- [3] = {item = ItemID, count = Quantidade} }, } function onStepIn(player, item, position, fromPosition) local party = player:getParty() if not party then player:teleportTo(fromPosition) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) position:sendMagicEffect(CONST_ME_MAGIC_RED) return player:sendCancelMessage("You don't have a party.") end local leader = party:getLeader() if config.leader then if player:getId() == leader:getId() then local member = party:getMembers() if #member >= config.members-1 then for _, var in pairs(member) do if var:getLevel() > config.level then for tab = 1, #config.items do if var:getItemCount(config.items[tab].item) >= config.items[tab].count and leader:getItemCount(config.items[tab].item) >= config.items[tab].count then var:removeItem(config.items[tab].item, config.items[tab].count) leader:removeItem(config.items[tab].item, config.items[tab].count) var:sendTextMessage(22,"Your team join the room.") leader:sendTextMessage(22,"Your team join the room.") var:teleportTo(config.pos_to) leader:teleportTo(config.pos_to) else player:teleportTo(fromPosition) var:sendTextMessage(22,"Um dos membros nao possui os itens necessarios.") leader:sendTextMessage(22,"Um dos membros nao possui os itens necessarios.") end end else var:sendTextMessage(22,"Um dos membros da party nao possui nivel superior a "..config.level..".") leader:sendTextMessage(22,"Um dos membros da party nao possui nivel superior a "..config.level..".") end end else player:teleportTo(fromPosition) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) position:sendMagicEffect(CONST_ME_MAGIC_RED) player:sendTextMessage(20,"Somente party's com " .. config.members-1 .. " ou mais jogadores, poderao passar.") end else player:teleportTo(fromPosition) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) position:sendMagicEffect(CONST_ME_MAGIC_RED) player:sendCancelMessage("Somente o leader pode entrar por aqui.") end else local member = party:getMembers() if #member >= config.members-1 then for _, var in pairs(member) do if var:getLevel() > config.level then for tab = 1, #config.items do if var:getItemCount(config.items[tab].item) >= config.items[tab].count and leader:getItemCount(config.items[tab].item) >= config.items[tab].count then var:removeItem(config.items[tab].item, config.items[tab].count) leader:removeItem(config.items[tab].item, config.items[tab].count) var:sendTextMessage(22,"Your team join the room.") leader:sendTextMessage(22,"Your team join the room.") var:teleportTo(config.pos_to) leader:teleportTo(config.pos_to) else player:teleportTo(fromPosition) var:sendTextMessage(22,"Um dos membros nao possui os itens necessarios.") leader:sendTextMessage(22,"Um dos membros nao possui os itens necessarios.") end end else var:sendTextMessage(22,"Um dos membros da party nao possui nivel superior a "..config.level..".") leader:sendTextMessage(22,"Um dos membros da party nao possui nivel superior a "..config.level..".") end end else player:teleportTo(fromPosition) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) position:sendMagicEffect(CONST_ME_MAGIC_RED) player:sendTextMessage(20,"Somente party's com " .. config.members-1 .. " ou mais jogadores, poderao passar.") end end end O meu objetivo seria: Só poderá entrar se ambos os jogadores possuírem os 2 itens com suas devidas quantidades. Editado Julho 6, 2018 6 anos por tataboy67 (veja o histórico de edições) 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 Julho 7, 2018 6 anos @tataboy67 lógica da programação, a menos que você crie variáveis auxiliares para lhe ajudar a identificar que todos tem os requisitos o mais simples a se fazer é uma checagem com negação. Players: kot, tata e o tibiaking, 3x players. Se kot não tem os itens, então bloqueia fim Se tata não tem os itens, então bloqueia fim Se tibiaking não tem os itens, então bloqueia fim Caso ambos tenham, irão passar para a próxima sentença, remover e teleportar ambos!!
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.