Postado Outubro 4, 2014 10 anos 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 Outubro 4, 2014 10 anos por Danves (veja o histórico de edições)
Postado Outubro 4, 2014 10 anos 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 (obg ao @Beeny por fazer essa linda sign <3)
Postado Outubro 4, 2014 10 anos 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 Outubro 4, 2014 10 anos por Danves (veja o histórico de edições)
Postado Outubro 4, 2014 10 anos 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 Bizzle
Postado Outubro 4, 2014 10 anos 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 Outubro 4, 2014 10 anos por Danves (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.