Ir para conteúdo

Featured Replies

Postado

Seguinte, eu abri o exani tera e editei para que ele pudesse ser usado em todos os sqm ao redor do tile de saida, mas ele ainda só funciona se tiver embaixo.

Segue o script.

local SPOTS = {384, 418, 8278, 8592}




function onCastSpell(cid, var)


local position = getThingPosition(cid)


position.stackpos = 0


-- posicoes ao redor do buraco
local position2 = position
position2.y = position2.y + 1
local position3 = position
position3.y = position3.y - 1
local position4 = position
position4.x = position4.x + 1
local position5 = position
position5.x = position5.x - 1
local position6 = position
position6.y = position6.y + 1
position6.x = position6.x + 1
local position7 = position
position7.y = position7.y - 1
position7.x = position7.x - 1
local position8 = position
position8.y = position8.y + 1
position8.x = position8.x - 1
local position9 = position
position9.y = position9.y - 1
position9.x = position9.x + 1
-- 
local ground = getThingFromPos(position)
local ground2 = getThingFromPos(position2)
local ground3 = getThingFromPos(position3)
local ground4 = getThingFromPos(position4)
local ground5 = getThingFromPos(position5)
local ground6 = getThingFromPos(position6)
local ground7 = getThingFromPos(position7)
local ground8 = getThingFromPos(position8)
local ground9 = getThingFromPos(position9)
if(isInArray(SPOTS, ground.itemid) or isInArray(SPOTS, ground2.itemid) or isInArray(SPOTS, ground3.itemid) or isInArray(SPOTS, ground4.itemid) or isInArray(SPOTS, ground5.itemid) or isInArray(SPOTS, ground6.itemid) or isInArray(SPOTS, ground7.itemid) or isInArray(SPOTS, ground8.itemid) or isInArray(SPOTS, ground9.itemid)) then


local newPosition = position


newPosition.y = newPosition.y + 1


newPosition.z = newPosition.z - 1




doTeleportThing(cid, newPosition, false)


doSendMagicEffect(position, CONST_ME_TELEPORT)


return true


else


doPlayerSendCancel(cid, "Você precisa estar perto da saída (embaixo do buraco) para usar este feitiço.")


doSendMagicEffect(position, CONST_ME_POFF)


return false 
end


end


Se eu edito tipo position2.y = 400
Ele só vai conseguir usar a spell se no Y 399 do mapa tiver a tile de saída..
Então qualquer position tá mexendo em todos, não sei porque.

Editado por Danves (veja o histórico de edições)



 tumblr_mwfeg45FIV1qk4cb3o4_500.gif

Resolvido por Danves

Ir para solução
  • Respostas 8
  • Visualizações 411
  • Created
  • Última resposta

Top Posters In This Topic

Postado

Se eu edito tipo position2.y = 400 Ele só vai conseguir usar a spell se no Y 399 do mapa tiver a tile de saída..


vc não coloca position2.y = 400.. vc coloca tudo em função da posição atual igualzinho tá 

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Postado
  • Autor

Ainda não entendi. Eu coloquei um doPlayerSendTextMessage mostrando a nova pos de cada um e todos dão a posição atual do meu personagem..
Então fiz o seguinte:

doPlayerSendTextMessage(cid,27,""..alok1.." Y "..alok2.."")
position.stackpos = 0
 
-- posicoes ao redor do buraco
local pos2 = position
pos2.y = pos2.y + 1
local pos3 = position
pos3.y = pos3.y - 2
local pos4 = position
pos4.x = pos4.x + 3
local pos5 = position
pos5.x = pos5.x - 4
local pos6 = position
pos6.y = pos6.y + 5
pos6.x = pos6.x + 5
local pos7 = position
pos7.y = pos7.y - 6
pos7.x = pos7.x - 6
local alok3 = pos7.x
local alok4 = pos7.y
doPlayerSendTextMessage(cid,27,""..alok3.." Y "..alok4.."")


E as coordenadas deram o seguinte:
03:37 703 Y 402(minha verdadeira pos)
03:37 701 Y 400(pos do 7)
ou seja chegou a variar em 2 na pos7 pra minha posição verdadeira
Ainda não sei porque um influencia em outro

@edit: o const_me_poff tá indo na pos X702 Y 399


@Edit2: o y = 400 que eu disse era so pra mostrar como um pos tava fazendo todas mudarem

@Edit3:  Adicionei um 

local alok5 = position.x
local alok6 = position.y
doPlayerSendTextMessage(cid,27,""..alok5.." Y "..alok6.."")
no final
e percebi que o position realmente foi modificado. Porque diabos mexer em outras variaveis tá mexendo na position..

Editado por Danves (veja o histórico de edições)



 tumblr_mwfeg45FIV1qk4cb3o4_500.gif

Postado

Se eu edito tipo position2.y = 400 Ele só vai conseguir usar a spell se no Y 399 do mapa tiver a tile de saída.. Então qualquer position tá mexendo em todos, não sei porque.

Pelo que vi, você não precisa alterar nada no script, além dos IDS da tabela com a string SPOTS:
local SPOTS = {384, 418, 8278, 8592}

Que no caso, quando você estiver no sqm exatamente abaixo do buraco (sqms de ID: 384 ou 418 ou 8278 ou 8592), o player poderá usar a spell e subir como se tivesse usado uma rope.

Se te ajudei com o que postei, clique em liked.png
Bizzle

Postado
  • Autor

Eu quero mudar para não precisar estar exatamente embaixo do buraco, e sim tanto ao redor quanto embaixo. Dei um edit no script e agora as coordenadas tão certas, mas ainda só funciona estando embaixo.

local SPOTS = {384, 418, 8278, 8592}




function onCastSpell(cid, var)


local position = getThingPosition(cid)



position.stackpos = 0


-- posicoes ao redor do buraco
local pos2 = getThingPosition(cid)


pos2.y = pos2.y + 1
local pos3 = getThingPosition(cid)


pos3.y = pos3.y - 1
local pos4 = getThingPosition(cid)


pos4.x = pos4.x + 1
local pos5 = getThingPosition(cid)


pos5.x = pos5.x - 1
local pos6 = getThingPosition(cid)


pos6.y = pos6.y + 1
pos6.x = pos6.x + 1
local pos7 = getThingPosition(cid)


pos7.y = pos7.y - 1
pos7.x = pos7.x - 1
doPlayerSendTextMessage(cid,27,""..alok3.." Y "..alok4.."")
local pos8 = getThingPosition(cid)


pos8.y = pos8.y + 1
pos8.x = pos8.x - 1
local pos9 = getThingPosition(cid)


pos9.y = pos9.y - 1
pos9.x = pos9.x + 1
doPlayerSendTextMessage(cid,27,""..alok5.." Y "..alok6.."")
-- 
local ground = getThingFromPos(position)
local ground2 = getThingFromPos(pos2)
local ground3 = getThingFromPos(pos3)
local ground4 = getThingFromPos(pos4)
local ground5 = getThingFromPos(pos5)
local ground6 = getThingFromPos(pos6)
local ground7 = getThingFromPos(pos7)
local ground8 = getThingFromPos(pos8)
local ground9 = getThingFromPos(pos9)
if(isInArray(SPOTS, ground.itemid) or isInArray(SPOTS, ground2.itemid) or isInArray(SPOTS, ground3.itemid) or isInArray(SPOTS, ground4.itemid) or isInArray(SPOTS, ground5.itemid) or isInArray(SPOTS, ground6.itemid) or isInArray(SPOTS, ground7.itemid) or isInArray(SPOTS, ground8.itemid) or isInArray(SPOTS, ground9.itemid)) then


local newPosition = position


newPosition.y = newPosition.y + 1


newPosition.z = newPosition.z - 1




doTeleportThing(cid, newPosition, false)


doSendMagicEffect(position, CONST_ME_TELEPORT)


return true


else


doPlayerSendCancel(cid, "Você precisa estar perto da saída (embaixo do buraco) para usar este feitiço.")


doSendMagicEffect(position, CONST_ME_POFF)


return false 
end


end


@edit:
percebi ao verificaro itemid das ground que só a ground diz o que ta embaixo de mim, as demais o itemid é "0", não entendo porque.


Solucionei, bastava adicionar stackpos em cada posição (não sei o que é essa função mas percebi vendo que tinha isso na position)
Segue o script funcionando:

local SPOTS = {384, 418, 8278, 8592}




function onCastSpell(cid, var)


local position = getThingPosition(cid)



position.stackpos = 0


-- posicoes ao redor do buraco
local pos2 = getThingPosition(cid)


pos2.y = pos2.y + 1
local pos3 = getThingPosition(cid)


pos3.y = pos3.y - 1
local pos4 = getThingPosition(cid)


pos4.x = pos4.x + 1
local pos5 = getThingPosition(cid)


pos5.x = pos5.x - 1
local pos6 = getThingPosition(cid)


pos6.y = pos6.y + 1
pos6.x = pos6.x + 1
local pos7 = getThingPosition(cid)


pos7.y = pos7.y - 1
pos7.x = pos7.x - 1

local pos8 = getThingPosition(cid)


pos8.y = pos8.y + 1
pos8.x = pos8.x - 1
local pos9 = getThingPosition(cid)


pos9.y = pos9.y - 1
pos9.x = pos9.x + 1

-- 
pos2.stackpos = 0
pos3.stackpos = 0
pos4.stackpos = 0
pos5.stackpos = 0
pos6.stackpos = 0
pos7.stackpos = 0
pos8.stackpos = 0
pos9.stackpos = 0


local ground = getThingFromPos(position)
local ground2 = getThingFromPos(pos2)
local ground3 = getThingFromPos(pos3)
local ground4 = getThingFromPos(pos4)
local ground5 = getThingFromPos(pos5)
local ground6 = getThingFromPos(pos6)
local ground7 = getThingFromPos(pos7)
local ground8 = getThingFromPos(pos8)
local ground9 = getThingFromPos(pos9)
if(isInArray(SPOTS, ground.itemid) or isInArray(SPOTS, ground2.itemid) or isInArray(SPOTS, ground3.itemid) or isInArray(SPOTS, ground4.itemid) or isInArray(SPOTS, ground5.itemid) or isInArray(SPOTS, ground6.itemid) or isInArray(SPOTS, ground7.itemid) or isInArray(SPOTS, ground8.itemid) or isInArray(SPOTS, ground9.itemid)) then


local newPosition = position


newPosition.y = newPosition.y + 1


newPosition.z = newPosition.z - 1




doTeleportThing(cid, newPosition, false)


doSendMagicEffect(position, CONST_ME_TELEPORT)


return true


else


doPlayerSendCancel(cid, "Você precisa estar perto da saída (embaixo do buraco) para usar este feitiço.")


doSendMagicEffect(position, CONST_ME_POFF)


return false 
end


end

Editado por Danves (veja o histórico de edições)



 tumblr_mwfeg45FIV1qk4cb3o4_500.gif

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