Ir para conteúdo
Banner com Efeitos

Featured Replies

Postado

Fellow, Guys.
Hoje eu estava fazendo um mapa e colocando coisas que ja existiam ex: (Quests, Hunts e outras coisas de outros maps)
Cheguei numa conclusão que identificar TP por TP era cansativo e as vezes, fazer algum tile específico e/ou quest específica demoraria mais tempo também...
O que eu fiz?
com a ajuda do nosso queridíssimo ChatGPT e a idéia mirabolante de organizar isso da forma mais rápida também, ele gerou este código... que para alguns pode chegar a ser inútil
Mas, para mim vai otimizar muito tempo... tendo em vista que é abrangente também, caso for usar piso que teria por exemplo: "actionID & uniqueID, Reset & Reborn e outras features especificas",
seria uma boa otimizar isso com uma rápida solução de "item no chão, localização e o que você precisar"... (eu não adaptei isso, mas... se precisar eu faço e testo aqui)

para não bugar seria necessário: criar um novo ITEM no Item Editor com novo ID e colocar no mapa, configurando esse item especifico (possivelmente com SPRITE de TP)
Então, espero que seja útil essa contribuição, pois pra mim irá ser... e quis trazer para cá.


local TELEPORT_ITEMID = 10551 -- isso é o código do item que você vai usar

local teleporterPairs = {

{ from = {x = 124, y = 74, z = 7}, to = {x = 136, y = 76, z = 7} }, -- localização a - b (teleportarão entre si)

{ from = {x = 131, y = 67, z = 7}, to = {x = 125, y = 81, z = 7} }, -- localização c - d (também teleportarão entre si)

}

local teleportMap = {} -- daqui pra baixo é para a solução funcionar

local function posToKey(pos)

return string.format("%d,%d,%d", pos.x, pos.y, pos.z)

end

local function isSamePos(a, b)

return a.x b.x and a.y b.y and a.z == b.z

end

local function getSafeTile(fromPos, toPos)

local dx = toPos.x - fromPos.x

local dy = toPos.y - fromPos.y

if dx ~= 0 then dx = dx / math.abs(dx) end

if dy ~= 0 then dy = dy / math.abs(dy) end

return { x = toPos.x + dx, y = toPos.y + dy, z = toPos.z }

end

local function buildTeleportMap()

for _, pair in ipairs(teleporterPairs) do

local fromKey = posToKey(pair.from)

local toPos = pair.to

teleportMap[fromKey] = toPos

teleportMap[posToKey(toPos)] = pair.from

end

end

buildTeleportMap()

function onStepIn(cid, item, pos, _)

if not isPlayer(cid) or item.itemid ~= TELEPORT_ITEMID then

return true

end

local key = posToKey(pos)

local targetPos = teleportMap[key]

if not targetPos then

doPlayerSendCancel(cid, "Esse teleport nao esta configurado.") -- aqui é a mensagem caso algum player pise e não esteja configurado a localização...

return true

end

local safePos = getSafeTile(pos, targetPos)

doTeleportThing(cid, safePos)

doSendMagicEffect(safePos, CONST_ME_TELEPORT)

return true

end



és isso guys.

aka aka

 

monki-flip-monkey.gif

  • 2 weeks later...

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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo