Postado Outubro 21, 2018 6 anos Autor 14 horas atrás, lordzetros disse: Cantos superiores e inferiores da área azul. Em data/creaturescripts/scripts/pushTrainers.lua adicione: --[[ Script - Lordzetros Pedido - Christinacsa Fórum TibiaKing ]] local config = { supEsquerdo = {x = 1016, y = 1024, z = 7}, -- Canto superior esquerdo da área que você quer que os jogadores não puxem infDireito = {x = 1018, y = 1026, z = 7}, -- Canto inferior direito da área que você quer que os jogadores não puxem msgFalha = "Não é permitido puxar o player desta área." -- Mensagem quando o jogador tentar puxar da área } function calcula_posicoes(sup,inf) pos_t = {} for l = sup.y, inf.y do for j = sup.x, inf.x do table.insert(pos_t, {x = j, y = l, z = sup.z}) end end return pos_t end function onPush(cid, target) local tabela = calcula_posicoes(config.supEsquerdo, config.infDireito) if isPlayer(target) and isInArray(getCreaturePosition(target)) then doPlayerSendCancel(cid, config.msgFalha) end return false end Em data/creaturescripts/creaturescripts.xml adicione essa linha de código abaixo de alguma outra semelhante: <event type = "push" name ="pushTrainer" event ="script" value ="pushTrainers.lua" /> Em data/creaturescripts/scripts/login.lua antes do último return true, cole isto: registerCreatureEvent(cid, "pushTrainer") Não pude testar por conta das sources do servidor que baixei para testar scripts, mas caso tenha algum erro, estarei para ajudar. [É pra funcionar], haha. então nesse seu sistema eu posso adicionar varias outras posições? 7 horas atrás, DukeeH disse: Só uma sugestão, use o script do amigo acima, mas não coloque as posições como ele falou, coloque da area toda dos trainers, pelo que entendi tem vários trainers em uma area. Pega o primeiro sqm de < /\ e o ultimo de > \/ e coloque as posições. Ou tenho esse que é por targeting, como prefereir: Então se o player estiver atacando os monstros da lista, não tem como puxar ele. creaturescripts/creaturescripts.xml <event type="push" name="Anti-Push" event="script" value="anti-push.lua"/> creaturescripts/scripts/anti-push.lua local targetList, GAMEMASTER = {"Purching Bag", "Monstro2", "Monstro3"}, 5 function onPush(cid, target) if(getPlayerAccess(cid) < GAMEMASTER) then if((target ~= cid and isPlayer(target)) and (getCreatureTarget(target) > 0 and isInArray(targetList, getCreatureName(getCreatureTarget(target)):lower()))) then doPlayerSendCancel(cid, "You cannot move this object.") return false end end return true end Irei testar achei uma boa ideia @DukeeH Olha deu error na terceira linha
Postado Outubro 21, 2018 6 anos @Christinacsa function isPosInArray(array, pos) for _, v in pairs(array) do if v.x == pos.x and v.y == pos.y and v.z == pos.z then return true end end return false end local pos = { {x = 56, y = 201, z = 6}, } function onPush(cid, target) if isPlayer(target) and isPosInArray(pos, getThingPos(target)) then doPlayerSendCancel(cid, "Você não pode empurrar players nesta area.") return false end return true end login.lua registerCreatureEvent(cid, "PushPlayerThere") xml <event type="push" name="PushPlayerThere" event="script" value="PushPlayer.lua" />
Postado Outubro 21, 2018 6 anos Autor @Celulose Como funciona ? é colocando a posição da onde o jogador vai ficar e do trainer? e da pra eu por outras posições ???
Postado Outubro 21, 2018 6 anos @Christinacsa então, nesse script que fiz você pode bloquear o push em toda área de trainer, assim fica mais fácil, assim como o Dukee citou. Na imagem que postei com a resposta, você pode colocar a posição do canto superior esquerdo da área de treino e o canto inferior direito, tudo configurável no script. Assim essa área toda delimitada por você, fica proibido de algum player dá push em alguém. Um exemplo acima. Editado Outubro 21, 2018 6 anos por lordzetros (veja o histórico de edições)
Postado Outubro 21, 2018 6 anos @Christinacsa exemplo. function isPosInArray(array, pos) for _, v in pairs(array) do if v.x == pos.x and v.y == pos.y and v.z == pos.z then return true end end return false end local pos = { {x = 56, y = 201, z = 6} {x = 57, y = 198, z = 6}, {x = 53, y = 198, z = 6}, {x = 54, y = 198, z = 6} } function onPush(cid, target) if isPlayer(target) and isPosInArray(pos, getThingPos(target)) then doPlayerSendCancel(cid, "Você não pode empurrar players nesta area.") return false end return true end A Posição que você colocar não vai conseguir empurra o player.
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.