Ir para conteúdo

Xagah

Membro
  • Registro em

  • Última visita

Tudo que Xagah postou

  1. São estes mesmos. .otbm ==> Todos os sprites e suas posições; -spawn ==> Local onde os "monsters" irão ficar; -house ==> Onde serão as casas e onde são as portas;
  2. Não sei se funcionará no Pokemón, mas aqui eu estava com o mesmo problema. Era um problema de interpretação. Quando clica com o botão direito, não selecione a opção "raw", mas sim a opção "GroundBrush". Veja se dá resultado. O meu problema aqui era este. Abraço.
  3. Xagah postou uma resposta no tópico em Suporte Tibia OTServer
    Há um outro lugar (fórum) que tem um Tuto bem explicado para compilar (perfeito). Entre em contato privado comigo que informo.
  4. Olá, bom dia. Só "dá debug" com problema de imagens. Ou seja, quando há um item. Por exemplo: Que só poderia ficar no chão e está ou em sua mochila. Ou, também, quando um item não agrupável e no outro é. Eu indicaria vc limpar os itens que estão na mochila e corpo do player pela databse. Se isto não funcionar a questão é que algum item no mapa está causando isto. Confira aí, se não der certo volte.
  5. Xagah postou uma resposta no tópico em Suporte Tibia OTServer
    Olá, bom dia. Não entendi se o problema é: Vender o Vial Vazio ou se ele não pega os líquidos.
  6. Xagah postou uma resposta no tópico em Suporte Tibia OTServer
    Isto é a codificação do texto. Depende de duas coisas. 1ª - Quando vai criar a DataBase, tem que escolher ut8-bin. 2ª - No início de todo script .xml ou .lua deve inserir: <?xml version="1.0" encoding="UTF-8"?> Isto resolverá o problema.
  7. Olá, bom dia. Olha, é difícil ter um sistema 100% sem bugs. Quem tem, não fornece com tanta facilidade. É melhor pegar um, encontrar os bugs e ir pedindo ajuda na solução deles. Além de ser mais fácil, você também irá aprendendo como modificar seu server. Se você tem um erro no BattleSystem, posta o erro aqui que iremos ajudar com prazer. Abraço.
  8. Xagah postou uma resposta no tópico em Suporte Tibia OTServer
    Olá, bom dia. Colega, penso que a questão é outra. Funciona da Seguinte Maneira: PvP: worldType = "pvp" No-PvP worldType = "Optional" PvP-Enforced worldType = "Hardcore" Confira se funciona e volte aqui. Ah, confira se os "players" não estão em uma área no-pvp também. Abraço.
  9. Velho, o script playerdeath.lua não está nem mesmo sendo usado no seu server. O erro, muito provavelmente, está em outro arquivo. Ou então, faça assim, adicione em seu login.xml (dentro de data > CreatureScripts > Script > login.lua ) registerCreatureEvent(cid, "PlayerDeath") E depois, dentro do seu creaturescripts.xml (dentro de data > CreatureScripts > creaturescripts.xml) adicione: <event type="playerdeath" name="PlayerDeath" event="script" value="playerdeath.lua"/> Se não der certo volta.
  10. Xagah postou uma resposta no tópico em Suporte Tibia OTServer
    Opa, bom dia. Tive o mesmo problema que você. Ele aparece como se não estivesse respondendo, mas ESTÁ! Deixe ele. Se seu PC não é bom ele pode levar em torno de 15 a 18 minutos para compilar, é normal. Em uma máquina boa ele leva em torno de 20 a 25 segundos. Veja se é isto. Caso contrário volte. Abraço.
  11. Xagah postou uma resposta no tópico em Suporte Tibia OTServer
    Vou testar de novo aqui. Qual dos dois arquivos vc está usando? O primeiro ou o segundo?
  12. Xagah postou uma resposta no tópico em Suporte Tibia OTServer
    Faça a Seguinte substituição: Substitua: function onCastSpell(cid, var) return doCombat(cid, combat, var) end Por: function onCastSpell(cid, var) if (isPlayer(cid) == true) then return doCombat(cid, combat, var) else return true end end Acredito que resolverá seu problema.
  13. Se ainda estiver aí, poste o seu script do creaturescripts.xml
  14. Nossa, li o tópico algumas vezes... o problema é a questão do "blocklink's", certo? Se for, acredito que o erro não seja na Distro, pois a própria distro acusa o caminho do arquivo com erro e qual é o erro. Vc tem o arquivo do blocklinks (caso contrário a distro "diria" que não encontrou, e não que encontrou um erro) poste ele aqui. Abraço.
  15. Pessoal, tem que marcar os tópicos como resolvidos. Eu venho seco pra ver o erro e foi resolvido há tempos.. Poxa.. =(
  16. Xagah postou uma resposta no tópico em Suporte Tibia OTServer
    Você ajustou a posição dos monstros? local monsterPositions = { {x = 1216, y = 1252, z = 7}, --posição do monstro 1 {x = 1216, y = 1254, z = 7}, --posição do monstro 2 {x = 1216, y = 1256, z = 7}, --posição do monstro 3 {x = 1222, y = 1252, z = 7}, --posição do monstro 4 {x = 75, y = 1254, z = 7}, --posição do monstro 5 {x = 75, y = 1256, z = 7} --posição do monstro 6 } Aqui funcionou certinho. O que deve estar acontecendo é que entra na sala, os monstros são criados no lugar que o Script pede, mas esse lugar não é o que vc tem no SEU mapa. Confere se é isto.
  17. Xagah postou uma resposta no tópico em Suporte Tibia OTServer
    Substitua: function onCastSpell(cid, var) doPlayerSendTextMessage(cid,27,"EFEITO MÁGICO: Recupera sua vida e mana múltiplas vezes (10x) durante 5 segundos. O cálculo de regeneração é de acordo com seu level e nível mágico.") for i = 1, 10 do addEvent(doCombat, (i * 400) - 400, cid, combat, var) addEvent(doCombat, (i * 500) - 500, cid, combat2, var) end return true end Por: function onCastSpell(cid, var) if isPlayer(cid) == TRUE then doPlayerSendTextMessage(cid,27,"EFEITO MÁGICO: Recupera sua vida e mana múltiplas vezes (10x) durante 5 segundos. O cálculo de regeneração é de acordo com seu level e nível mágico.") if exhaustion.check(cid, 30030) then return FALSE else for i = 1, 10 do addEvent(doCombat, (i * 400) - 400, cid, combat, var) addEvent(doCombat, (i * 500) - 500, cid, combat2, var) end return true end end end Testa aí, se der errado volte aqui. Abraço.
  18. Olá, bom dia. Colega, entendo muito de OT, mas pouco do Pokemon. Vou falar algumas coisas e, por analogia, faça o mais próximo possível. Cada pokemón tem o seu próprio arquivo. Você pode encontrar eles na pasta data > monsters. Abra, neste caso, o do Pinsir, por exemplo. Acredito que deve estar Pinsir.xml. Dentro do Arquivo vc vai encontrar deste modo: <?xml version="1.0" encoding="UTF-8"?> <monster name="Deathbringer" nameDescription="deathbringer" race="undead" experience="5100" speed="300" manacost="0"> <health now="10000" max="10000"/> <look type="231" corpse="7349"/> ... Ali onde está <look type=''231" é que vc deve colocar a "roupa" do seu monsters. O problema é que o seu client não deve estar sendo compatível com o OT que vc baixou. Para saber exatamente no seu faça o download do DatEditor. Download: DatEditor (Link Direto) Scan: Scan do Arquivo Agora vá em File > Open > (selecione seu .spr e seu .dat). Ao lado de Open seleciona a Opcão 760 (apta para o Tibia 8.54). Vá, ao lado direito inferior, e desça a barra até o final. Vai ser a parte de effects. Vá subindo aos poucos até encontrar o monstro que deseja. Quando encontrar, clique sobre a imagem dele e pegue a seguinte informação: Por exemplo, no caso acima eu selecionei o Ferumbras, o LookType dele é 229. No local marcado em vermelho vc pega o número da "roupa" de seu Pokemón e já era! Se não der certo volta aqui. Abraço.
  19. Olá, bom dia. A função elseif complementa um if, e este não existe ali. Insira isto e veja o que dá: local strg = divulgue local texto = "Curta nossa pagina no Facebook." function onUse(cid, item, frompos, item2, topos) if (getPlayerStorageValue(cid, strg)~= 2) then if getPlayerStorageValue(cid, strg) == 0 then setPlayerStorageValue(cid, strg, 1) doPlayerSendTextMessage(cid, 23, texto) else doPlayerSendCancel(cid, "Voce ja clicou, agora va pegar sua recompensa no NPC Rey.") end else getPlayerStorageValue(cid, strg) == 2 then doPlayerSendCancel(cid, "Voce ja pegou sua recompensa por ajudar na divulgacao.") return true end Se não der certo volte aqui. Abraço.
  20. Olá, bom dia. Cara, confere, antes de mexer no script, se vc não colocou o mapa como PVP. Se for este o caso a questão não reside no script. Veja aí.
  21. Olá, bom dia. Há várias maneiras, mas para fazer chover em um andar inteiro é interessante vc usar o script do Kaotar (de outro Fórum). Primeiro passo: Vá em Data > Lib > (crie um arquivo chamado rain.lua e cole isto dentro) -- Features: -- chance = OBJECT.chance = INT -- createItem = OBJECT.createItem = {chance = INT, item = {itemid = INT, type = INT}} Rain = {ignoreIds = {4526}} function Rain:new() local obj = {} setmetatable(obj, self) self.__index = self return obj end function Rain:getPositionInArea(fromPos, toPos) self.positions = {} for Y = fromPos.y, toPos.y do for X = fromPos.x, toPos.x do if (getTileThingByPos({x=X, y=Y, z=7, stackpos=0}).itemid ~= 0) then if not (string.match(string.lower(getItemNameById(getTileThingByPos({x=X, y=Y, z=7, stackpos=0}).itemid)), "water")) then table.insert(self.positions, {x=X, y=Y, z=Z}) end end end end return true end function Rain:doRain(position, disteffect, effect) if (self.duraction ~= self.executed) then local chance = self.chance or 100 if (math.random(0, 1000) <= chance) then for Z = 0, 7 do if (getTileThingByPos(({x = position.x, y = position.y, z = Z})).itemid ~= 0) then doSendDistanceShoot({x = position.x - 7, y = position.y - 5, z = Z}, {x = position.x, y = position.y, z = Z}, disteffect) doSendMagicEffect({x = position.x, y = position.y, z = Z}, effect) if (self.createItem) then if (math.random(0, 1000) <= self.createItem.chance) then if (isInArray(self.ignoreIds, getTileThingByPos({x=X, y=Y, z=Z, stackpos=0}).itemid) == FALSE) then local item = doCreateItem(self.createItem.item.itemid, self.createItem.item.type, {x=position.x, y=position.y, z=Z}) doDecayItem(item) end end end break end end end return true else return false end end function Rain:start(positions, effects, duraction, delay, var) self:getPositionInArea(positions.fromPos, positions.toPos) if not (self.positions[1]) then return false end self.delay = delay self.var = var or self self.effects = effects self.duraction = duraction self.executed = 0 addEvent(doCallback, self.delay, {var=self.var}) return true end function doCallback(p) for _, v in pairs(p.var.positions) do if not (p.var:doRain(v, p.var.effects.disteffect, p.var.effects.effect)) then return true end end addEvent(doCallback, p.var.delay, {var=p.var}) p.var.executed = p.var.executed+1 end 2º Vá na pasta Data > GlobalEvents > (crie um arquivo chamado rain.lua e cole isto dentro) local rain = Rain:new() function onThink(interval, lastExecution) local minX = 990 local minY = 993 local maxX = 1008 local maxY = 1006 local frompos = {x=math.random(minX, maxX), y=math.random(minY, maxY), z=7} local topos = {x=math.random(frompos.x, maxX), y=math.random(frompos.y, maxY), z=7} local effects = { snow = { disteffect = CONST_ANI_SNOWBALL, effect = CONST_ME_ENERGYAREA }, rain = { disteffect = CONST_ANI_ICE, effect = CONST_ME_LOSEENERGY } } random = math.random(0, 10) if (random == 0) then rain.chance = math.random(10,50) rain:start({fromPos = frompos, toPos = topos}, effects.snow, 300, math.random(100, 500)) else rain.chance = math.random(40,100) rain.createItem = {chance = math.random(0,10), item = {itemid = 2016, type = 1}} rain:start({fromPos = frompos, toPos = topos}, effects.rain, math.random(300, 1000), math.random(100, 350)) end return TRUE end 3º Vá no arquivo Data > GlobalEvents > globalevents.lua e adicione isto dentro: <globalevent name="rain" interval="200" event="script" value="rain.lua"/> Obs: o interval é o tempo que dura o SEU efeito em milisegundos. Ou seja, se vc cronometrou 3 segundos, vc deve colocar alí 3000. 4º - Vá em sua pasta Data > Lib > (crie um arquivo chamado rain.lua e cole isto: -- Features: -- chance = OBJECT.chance = INT -- createItem = OBJECT.createItem = {chance = INT, item = {itemid = INT, type = INT}} Rain = {ignoreIds = {4526}} function Rain:new() local obj = {} setmetatable(obj, self) self.__index = self return obj end function Rain:getPositionInArea(fromPos, toPos) self.positions = {} for Y = fromPos.y, toPos.y do for X = fromPos.x, toPos.x do if (getTileThingByPos({x=X, y=Y, z=7, stackpos=0}).itemid ~= 0) then if not (string.match(string.lower(getItemNameById(getTileThingByPos({x=X, y=Y, z=7, stackpos=0}).itemid)), "water")) then table.insert(self.positions, {x=X, y=Y, z=Z}) end end end end return true end function Rain:doRain(position, disteffect, effect) if (self.duraction ~= self.executed) then local chance = self.chance or 100 if (math.random(0, 1000) <= chance) then for Z = 0, 7 do if (getTileThingByPos(({x = position.x, y = position.y, z = Z})).itemid ~= 0) then doSendDistanceShoot({x = position.x - 7, y = position.y - 5, z = Z}, {x = position.x, y = position.y, z = Z}, disteffect) doSendMagicEffect({x = position.x, y = position.y, z = Z}, effect) if (self.createItem) then if (math.random(0, 1000) <= self.createItem.chance) then if (isInArray(self.ignoreIds, getTileThingByPos({x=X, y=Y, z=Z, stackpos=0}).itemid) == FALSE) then local item = doCreateItem(self.createItem.item.itemid, self.createItem.item.type, {x=position.x, y=position.y, z=Z}) doDecayItem(item) end end end break end end end return true else return false end end function Rain:start(positions, effects, duraction, delay, var) self:getPositionInArea(positions.fromPos, positions.toPos) if not (self.positions[1]) then return false end self.delay = delay self.var = var or self self.effects = effects self.duraction = duraction self.executed = 0 addEvent(doCallback, self.delay, {var=self.var}) return true end function doCallback(p) for _, v in pairs(p.var.positions) do if not (p.var:doRain(v, p.var.effects.disteffect, p.var.effects.effect)) then return true end end addEvent(doCallback, p.var.delay, {var=p.var}) p.var.executed = p.var.executed+1 end Agora seu sistema está montado. A partir de de agora é configurar. Tem que configurar pois o "system" segue coordenadas, logo vc deve inserir as do seu mapa! Assim, vá no arquivo Data > Globalevents > rain.lua e edite o seguinte: local minX = Posição 'x' mínima, ou seja, inferior direita; local minY = Posição 'y' mínima, também inferior direita; local maxX = Posição 'x' máxima, superior esquerda; local maxY = Posição 'y' máxima, superior esquerda tb Não é necessário editar o andar, já está "setado" para o 7. Além de tudo, você ainda pode configurar a "chance" de chover. Pra isto vc pode inserir, dentro do: data > globalevents > globalevents.xml Na linha que comentamos acima o código: rain.chance = Math.random (20.100) Modifique o 20, que é a chance de ocorrer. Bom, penso que é isto. Testei aqui no meu server, funcionou. Maaas... fica a dica, quanto maior foi a área que chovia, maior era o "lag". Eu configurei em áreas remotas (ilhas, cidades, etc.) de tempos em tempos. É um efeito legal, mas pode consumir mais memRam do que imagina. Qualquer coisa volte aqui.
  22. Level 100, mas fiz teste com players level 100+ com outros lvl 100+ e ainda assim o resultado foi o mesmo. Tem alguma outra idéia?
  23. Colega, tentei de várias maneiras, mas como, em meu servidor, selecionei para "dentro de pz" os players podem passar um pelo outro, irei ter que desenvolver um Script. Ainda assim, obrigado pela Preocupação. Rep+ pra ti.
  24. Consegui a resposta. O modules estava errado. Não havia disponível do correto na Net. Tópico resolvido. Caso alguém tenha interesse, entre em contato comigo.
  25. Bring Up My Post Alguém? BUMP!

Informação Importante

Confirmação de Termo