Olá, tenho aqui um script de teleport por comando.
Funciona simplesmente da seguinte forma :
Você executa um comando + o lugar que quer ir (exemplo : "!teleport Cidade 1", e você é teleportado para o lugar escolhido.
Porém, tem restrições. No caso do meu código, você não pode teleportar se estiver durante estado de Battle, fora de Protection Zones, sem um certo item na bag e se não for premium.
Até aí tudo bem, consegui deixar da forma que eu desjava, mas tem uma coisa.
Quero que o comando só execute em certo SQM. Já tentei de diversas formas porém não consegui, e estou pedindo ajuda.
Aqui está o comando :
function onSay(cid, words, param) local config = { pz = true, battle = true, need_level = true, premium = true, need_Item = true, Item = 2010 } local lugar = { ["Cidade 1"] = { -- nome do lugar pos = {x=1090, y=1236, z=7},level = 8}, ["Cidade 2"] = { -- nome do lugar pos = {x=1090, y=1236, z=7},level = 8}, ["Cidade 3"] = { -- nome do lugar pos = {x=1090, y=1236, z=7},level = 8}, ["Cidade 4"] ={ -- nome do lugar pos = {x=1090, y=1236, z=7},level = 8}, } if (param == "Lista") then local str = "" str = str .. "Ilhas disponíveis :\n\n" for name, pos in pairs(lugar) do str = str..name.."\n" end str = str .. "" doShowTextDialog(cid, 6579, str) return TRUE end local a = lugar[param] if not(a) then doPlayerSendTextMessage(cid, 22, "Esta ilha não existe.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return TRUE elseif config.premium == true and isPremium(cid) == FALSE then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Apenas players Premium Accounts podem teleportar. Para comprar Premium Account acesse : \n www.???.com") return TRUE elseif config.pz == true and getTilePzInfo(getCreaturePosition(cid)) == FALSE then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Você só pode teleportar dentro de Protection Zones. ") return TRUE elseif config.need_Item == true and getPlayerItemCount(cid,config.Item) < 1 then doPlayerSendCancel(cid,"Você precisa da " .. getItemNameById(config.Item) .. " para teleportar para " .. param .. " Island.") return TRUE elseif config.battle == true and getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você não pode teleportar durante o estado de battle.") return TRUE elseif config.need_level == true and getPlayerLevel(cid) < a.level then doPlayerSendTextMessage(cid, 22, "Você não tem level suficiente. \n Você precisa ser Lv."..a.level.."+ para poder teleportar para " .. param .. " Island.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return TRUE end doTeleportThing(cid, a.pos) doSendMagicEffect(a.pos, CONST_ME_TELEPORT) doPlayerSendTextMessage(cid, 22, " Você foi teleportado para \n " .. param .. ". Island.") end
Para quem não entendeu, quero que o comando só teleporte caso você esteja encima de certo SQM. Caso contrário (else), ele envia uma mensagem :
"doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Você não pode utilizar este comando fora do SQM correto.")"
Se alguém for resolver, na hora de colocar as coordenadas, pode por x,y e z = 0 , que depois eu configuro.