Postado Maio 30, 2017 8 anos Autor já verificou se aonde o player está tem alguma tag especial como no pvp ou protect zone? 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 Maio 30, 2017 8 anos @xWhiteWolf já verifiquei sim.. Vou estar postando tudo certinho como estou usando e com imagens, tudo bem explicado pra facilitar.. Posso estar errando em algo simples, mesmo já tendo revisado várias vezes.. movements.xml <!-- Sistema de Trainers --> <movevent type="StepIn" actionid="14876" event="script" value="trainertp.lua"/> <movevent type="StepIn" actionid="14877" event="script" value="trainertp2.lua"/> Em data/movements/scripts/trainertp.lua local position = {x = 605, y = 7, z = 7} -- posicao da primeira pos (linha 1 coluna 1) local config = { distX= 3, -- distancia em X entre cada sala (de uma mesma linha) distY= 6, -- distancia em Y entre cada sala (de uma mesma coluna) rX= 60, -- numero de colunas rY= 48 -- numero de linhas } local storage = 18481 -- storage que salva a ultima vez que o player entrou (pra evitar spams) local function isWalkable(pos, creature, proj, pz)-- by Nord -- só adicione se vc já não tiver ela if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end if getTopCreature(pos).uid > 0 and creature then return false end if getTileInfo(pos).protection and pz then return false, true end local n = not proj and 3 or 2 for i = 0, 255 do pos.stackpos = i local tile = getTileThingByPos(pos) if tile.itemid ~= 0 and not isCreature(tile.uid) then if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then return false end end end return true end local function check_disponivel(npos) if isWalkable(npos, true, true) then return true end return false end local function countdown(pos, Arraypos) if not check_disponivel(pos) then for lugares = 1, #Arraypos do creature = getTopCreature(Arraypos[lugares]).uid if not isCreature(creature)then doCreateMonster("Trainer", Arraypos[lugares]) doSendAnimatedText(Arraypos[lugares], "GO!!", TEXTCOLOR_ORANGE) doSendMagicEffect(Arraypos[lugares], 10) end end end end local function fazQualquerCoisa(cid, pos, i, j) -- isso é o coração do nosso script, nao mexa nisso j = j or 0 p = i or 0 if p >= config.rX then p = 0 j = j < config.rY -1 and j + 1 or false end if j then posi = {x = pos.x + ( p * config.distX), y = pos.y + (j * config.distY), z = pos.z} if check_disponivel(posi) then doTeleportThing(cid, posi) doSendMagicEffect(posi, 10) countdown(posi, {{x = posi.x - 1, y = posi.y + 1, z = posi.z}, {x = posi.x + 1 , y = posi.y + 1, z = posi.z}}) else fazQualquerCoisa(cid, pos, p + 1, j) end else doPlayerSendCancel(cid, "Couldn't find any position for you right now.") end end function onStepIn(cid, item, pos, lastPos, fromPos, toPos, actor) if getPlayerStorageValue(cid, storage) - os.time() <= 0 then fazQualquerCoisa(cid, position) else doTeleportThing(cid, fromPos) doPlayerSendCancel(cid, "You gotta wait a few seconds before you can enter trainning room again") end return true end Em data/movements/scripts/trainertp2.lua local npos = {x = 612, y = 642, z = 7} -- posição que ele vai ao sair da sala local storage = 18481 -- storage que salva a ultima vez que o player entrou (pra evitar spams) function onStepIn(cid, item, pos, lastPos, fromPos, toPos, actor) ArrayPos = {{x = fromPos.x - 1, y = fromPos.y + 1, z = fromPos.z}, {x = fromPos.x + 1 , y = fromPos.y + 1, z = fromPos.z}} for _, pos in ipairs(ArrayPos) do creature = getTopCreature(pos).uid if isMonster(creature)then doSendMagicEffect(getThingPos(creature), 14) doRemoveCreature(creature) end end doTeleportThing(cid, npos) doPlayerSetStorageValue(cid, storage, os.time() + 5) return true end Quando o player está no trainer, ele consegue atacar o trainer, mas o trainer não ataca ele.. A parte de rodar o char e comer food, eu não adicionei pois não pretendo usar por causa do otservlist.. Editado Maio 30, 2017 8 anos por DiegoRulez (veja o histórico de edições)
Postado Maio 31, 2017 8 anos Autor ele não ataca pq vc tá usando o tile do depot no trainer, o monstro não ataca quem está nesse tile se não me engano. Faz o teste de tentar trocar o tile ou tentar sumonar o monstro com o gm dentro da cabine do trainer pra ver se ele ataca o player 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 Maio 31, 2017 8 anos @xWhiteWolf Testei fazendo uma sala dessa maneira, e não deu resultados.. Puxei o trainer com o GM pra fora da área e também não funciona.. Quando tentei sumonar um trainer por ali sem entrar no TP eu tomei debug nos 2 chares..
Postado Junho 1, 2017 8 anos Autor qnd vc tomou debug e relogou aonde estava o trainer? vc verificou se tem alguma propriedade no tile onde a criatura nasceu? ta muito estranho isso :// 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)
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.