Tudo que Garou postou
-
[PEDIDO] Attack Speed
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. .
-
simDamage(level, attackSkill, attackValue, attackFactor)
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.
-
[HELP] ot item editor
E você está mesmo abrindo um otb de versão 9.44? Na imagem, parece que é um de versão 8.60.
-
[HELP] ot item editor
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.
-
Mindrage's Spellmaker 0.68B
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
-
(resolvido) ERRO FUNÇÃO - customcallbackonsell
Tudo bem, irei refazer o NPC por inteiro e postarei na comunidade. Att.
-
(resolvido) ERRO FUNÇÃO - customcallbackonsell
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.
-
Spell que imobiliza
Você pode fazer uma magia com um CALLBACK_PARAM_TARGETCREATURE e a função doCreatureSetNoMove(cid, true)
- Perfect Upgrade System
-
GetFatorialNumber()
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
-
GetPotenciacao()
math.pow(x, y) ou x ^ y
-
GetTabuada()
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
-
NPC Guard - Ataca players com skulls.
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.
-
WODBO SERVER
Dúvidas, pedidos e suporte em geral devem ser postados na área Suporte OTServ Tópico Movido
- Forge System
-
Projeto Global Full 8.6
@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
-
NPC Guard - Ataca players com skulls.
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.
- Quests no Log
- Forge System
-
[Help] Second Promotion (epic)
Veja isso no vocations.xml
-
NPC Guard - Ataca players com skulls.
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
-
[Help] Second Promotion (epic)
É 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.
-
[Help] Second Promotion (epic)
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
-
[Duvida] Modem
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.
-
[Help] CHAR MORRE E RESETA POSITION TEMPLE
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.