Ir para conteúdo

Garou

Membro
  • Registro em

  • Última visita

Tudo que Garou postou

  1. Garou respondeu ao post em um tópico de Ayna em Suporte Tibia OTServer
    Acima, tentativa de comércio de scripts, aposto. Não há uma função, que manipule o atributo attackspeed, implementada no projeto The Forgotten Server. Para fazer um sistema desse tipo, você precisaria editar o player.cpp para criar algo parecido como uma variável que dê bônus de attackspeed e depois criar uma função que manipule esse bônus no luascript.cpp. Ou seja seria preciso edição nas sources com linguagem C++ e edição Lua para criar um script que funcione como você quer. .
  2. Nome: simDamage(level, attackSkill, attackValue, attackFactor) Autor: Lpz Tipo: Função Lua Informações: Bom, essa é uma função que nome já diz o que ela faz, ela simula o dano máximo corpo-a-corpo baseado na fórmula que o projeto The Forgotten Server 0.4_DEV usa. Ela é muito útil no caso de você querer balancear as vocações do servidor. Para instalar essa função em seu servidor, abra o arquivo 050-functions.lua localizado em data/lib e, no fim do arquivo, cole este conteúdo: function simDamage(level, attackSkill, attackValue, attackFactor) factor = { [0] = 0.5, [1] = 0.75, [2] = 1 } attackFactor = factor[attackFactor] or 0.75 return math.ceil((2 * (attackValue * (attackSkill + 5.8) / 25 + (level - 1) / 10)) * attackFactor) end O uso da função é simples, se eu quiser, por exemplo, simular o dano de um jogador com level 100, sword skill 60, Magic Sword e em Full Attack, faço isso: simDamage(100, 60, 48, 2) Se você não souber o que é o attackFactor, não precisa colocar na função que ele usa o valor de Balanced. No caso são aqueles escudinhos, em cor vermelha, amarela e verde. Os IDs para função são, 0 para Full Defence, 1 para Balanced e 2 para Full Attack. Obs: Lembrando que para simular danos de arcos, você deve pegar o ataque da flecha e somar com o ataque do arco. Att.
  3. Garou respondeu ao post em um tópico de Cat em Suporte Tibia OTServer
    E você está mesmo abrindo um otb de versão 9.44? Na imagem, parece que é um de versão 8.60.
  4. Garou respondeu ao post em um tópico de Cat em Suporte Tibia OTServer
    Olá, Daaniel. Na pasta de seu OTItemEditor, localize a pasta de nome data, caso não exista, crie-a. Agora vá no diretório onde seu Tibia está instalado, geralmente em C:/Arquivos de Programas/Tibia ou C:/Arquivos de Programas (x86)/Tibia no caso de sistemas 64-bits. Copie os arquivos tibia.spr e tibia.dat para a pasta data de seu OTItemEditor e renomeie eles com a versão do Tibia dos arquivos. Por exemplo, os arquivos são provenientes da versão 8.60 do Tibia, logo iremos renomear desse jeito: - tibia860.spr - tibia860.dat Você pode adicionar vários arquivos fonte do Tibia na pasta data, tornando possível a edição de arquivos items.otb de diferentes versões. Att.
  5. Garou respondeu ao post em um tópico de Gabrielzxzx em Ferramentas OpenTibia
    Prefiro fazer magias manualmente, pois assim posso implementar várias coisas que spellmakers não possuem. Mas este é um tipo de aplicativo muito bom para preguiçosos de plantão
  6. Tudo bem, irei refazer o NPC por inteiro e postarei na comunidade. Att.
  7. Retire qualquer função que tenha adicionado em suas bibliotecas. Esse NPC não está só com esse problema, ele possui vários outros, por exemplo, ele está chamando uma tabela de nome tasks que em momento algum foi declarada no código. Aconselho que você procure outro script desse tipo para seu servidor.
  8. Garou respondeu ao post em um tópico de danilo9317 em Suporte Tibia OTServer
    Você pode fazer uma magia com um CALLBACK_PARAM_TARGETCREATURE e a função doCreatureSetNoMove(cid, true)
  9. function fatorial(number) local ret = number for j = (number - 1), 1, -1 do ret = ret * j end return ret end É uma ótima forma de aprendizado, continue
  10. math.pow(x, y) ou x ^ y
  11. Esse while está fazendo o quê aí? Creio que ele é inútil pois seu loop é interrompido sem qualquer condição. function tabuaba(value) for i = 1, 10 do print(value .." x ".. i .." = " .. value*i) end end
  12. Dá para ver pela screenshot apresentada que seu servidor não possui a função doSteerCreature. O sistema está 100% funcional em The Forgotten Server, não posso garantir que funcione em distros ultrapassados. Abraços.
  13. Garou respondeu ao post em um tópico de rubinita em Suporte Tibia OTServer
    Dúvidas, pedidos e suporte em geral devem ser postados na área Suporte OTServ Tópico Movido
  14. Garou respondeu ao post em um tópico de Garou em Sistemas, Mods & Funções .lua
    Como não é agrupável, você deverá colocar de 1 em 1 na receita. Vou dar uma olhada se posso optimizar ainda mais o código nesse quesito.
  15. Garou respondeu ao post em um tópico de Laerciosf em Formação de Equipe
    @japazinho Apenas reporte o tópico, pois você está cometendo flood por moderação secundária. Fica o aviso. Tópico movido para Projetos/Formação de Equipes
  16. Olá, Bonefox Obrigado pelo report, achei um pequeno bug, o NPC ignorava white skulls. Agora sobre dar /goto no NPC e o servidor dar crash, sinto muito, isso é particular do seu distro.
  17. Garou respondeu ao post em um tópico de Tryaron em Suporte Tibia OTServer
    Evite o double post, se ninguém atendeu seu pedido, é porque ainda não o viu ou não conseguiu fazer. Abraços
  18. Garou respondeu ao post em um tópico de Garou em Sistemas, Mods & Funções .lua
    Ela serve para evitar que o jogador não possa forjar o item no inventário, apesar que eu não cheguei a atualizar a action, apenas lib. Acho que essa parte pode ser removida sem problemas.
  19. Veja isso no vocations.xml
  20. Nome: Guard Tipo: NPC Autor: Oneshot Muitos devem conhecer o NPC Guard, que possui inteligência artificial e ataca jogadores que possuem skulls de servidores que baixam. Acontece que o script desse NPC foi programado apenas para um NPC só, então quando você tenta, por exemplo, ter dois Guards no servidor, se um está na cidade A e outro na cidade B e, por exemplo, o NPC da cidade A começa atacar um jogador, o NPC da cidade B se teleporta "magicamente" para a cidade A. Pensando nisso, resolvi otimizar todo o código, orientando ele a objetos. Isso faz com que cada NPC (objeto) tenha suas próprias variáveis e não compartilhem mais elas entre si. Em data/npc/lib, crie um arquivo chamado guard.lua e adicione o conteúdo abaixo: Guard = { config = { attackspeed = 1000, }, combat = {type = COMBAT_PHYSICALDAMAGE, min = 100, max = 200} } function Guard:new() local ret = {} setmetatable({}, {__index = self.combat}) setmetatable(ret, {__index = self}) return ret end function Guard:reset() self.config = Guard.config self.target = 0 selfFollow(0) doTeleportThing(self.id, self.position) end function Guard:updateTarget() if self.target ~= 0 then return end local creatures = getSpectators(getThingPosition(self.id), self.range, self.range, false) for i = 1, #creatures do local target = creatures[i] if isCreature(target) and not isNpc(target) and getCreatureSkull(target) >= 3 then if not getTilePzInfo(getThingPosition(target)) then if selfFollow(target) then selfSay("I don't tolerate people like you, ".. getCreatureName(target)) self.target = target self:attack() break end end else self:reset() end end end function Guard:attack() if self.target == 0 then self:reset() return end self.time = self.time or os.clock() if self.time < os.clock() then if getDistanceBetween(getThingPosition(self.id), getThingPosition(self.target)) == 1 then doTargetCombatHealth(self.id, self.target, self.combat.type, -self.combat.min, -self.combat.max, CONST_ME_DRAWBLOOD) end self.time = self.time + (self.config.attackspeed/1000) end end Agora em data/npc/scripts, crie um arquivo chamado guard.lua e adicione o conteúdo abaixo: local guard = Guard:new() function onCreatureAppear(cid) if cid == getNpcId() then guard.id = getNpcId() guard.target = 0 guard.position = getNpcPos() end end function onCreatureDisappear(cid) if cid == guard.target then guard:reset() end end function onCreatureSay(cid, type, msg) return false end function onThink() guard:updateTarget() if guard.target ~= 0 then if isCreature(guard.target) then guard:attack() else guard:reset() end else guard:reset() end end E em data/npc/ crie um arquivo chamado guard.xml e adicione o conteúdo abaixo: <?xml version="1.0" encoding="UTF-8"?> <npc name="Guard" script="guard.lua" walkinterval="0" speed="200" floorchange="0"> <health now="100" max="100"/> <look type="134" head="57" body="59" legs="40" feet="76" addons="0"/> <parameters/> </npc> Abraços \o
  21. É proibida também a moderação secundária, underewarr. Leia as Regras Gerais. Agora sobre seu problema, Generator, peça a um webmaster pois creio que o problema já não é mais Lua e sim PHP. Edit: Na verdade, tenho um palpite, veja se o fromvoc das vocações Epic estão corretos. No caso o fromvoc do Epic Elite Knight deveria ser 8, Epic Royal Paladin seria 7 e assim por diante.
  22. Mas o segredo não está na vocação do jogador, mas sim na promotion level dele. Creio que funcionaria assim: function onLogin(cid) if vip.hasVip(cid) then if getPlayerPromotionLevel(cid) <= 1 then setPlayerStorageValue(cid, 3636, getPlayerPromotionLevel(cid)) setPlayerPromotionLevel(cid, 2) end elseif not vip.hasVip(cid) and vip.getVip(cid) == 0 then setPlayerPromotionLevel(cid, getPlayerStorageValue(cid, 3636)) end return true end
  23. Garou respondeu ao post em um tópico de pinho em Suporte Tibia OTServer
    Olá, pinho Primeiro, acesse este site www.meuip.com.br para sabermos qual seu endereço de IP. Use ele no arquivo config.lua. Caso não funcione, temos que considerar que sua internet é compartilhada e que há um roteador onde deve ser feito o desbloqueio das portas 7171 e 7172. E qualquer suporte relacionado a OTServ deve ser feito na seção Suporte OTServ e não na seção Atendimento Geral, onde devem ser postados tópicos relacionados ao fórum.
  24. Um palpite plausível é que no seu mapa, o temple position não está configurada. Isso soluciona o fato de que apenas alguns jogadores estão sofrendo com esse problema, ou seja, o town id deles é igual a dessa cidade sem temple position.

Informação Importante

Confirmação de Termo