-
Total de itens
750 -
Registro em
-
Última visita
-
Dias Ganhos
8
Tudo que dalvorsn postou
-
pedido Npc que teletransporta por storage help-me
pergunta respondeu ao leandrozera de dalvorsn em Scripts
https://gist.github.com/dalvorsn/ddd2e23ab8c651fb91da ps.: tu não falou a respeito do level, então julguei que seria um valor dinamico de acordo com a cidade ... -
dúvida Spells setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
pergunta respondeu ao chateadoagr de dalvorsn em Scripts
O tipo de combate não define o effect, ele é definido de outra maneira, posta a spell se não fica dificil te ajudar ps.: o distro que está usando também é de suma importancia -
pedido Npc que teletransporta por storage help-me
pergunta respondeu ao leandrozera de dalvorsn em Scripts
Não é dificl, basta pegar um de exemplo, se usar nodes então facilita muito. Eu poderia fazer pra ti, mas não te traria conhecimento se tu não tentasse primeiro. -
Segundo as sources, os WeaponType_t sao: enum WeaponType_t { WEAPON_NONE = 0, WEAPON_SWORD, WEAPON_CLUB, WEAPON_AXE, WEAPON_DIST, WEAPON_SHIELD, WEAPON_FIST, WEAPON_WAND, WEAPON_AMMO }; Ou seja, começa em 0, sendo none, depois sword 1 ate chegar em ammo que é o 8. Agora é só ir nessa parte do script: function isHandItem(uid) -- NW based on Mock uid = uid or 0 if isInArray({1,2,3,4,5,6}, getItemWeaponType(uid)) then return true end return false end Especificamente na tabela, removendo os numeros referentes aos tipos de equipamento que não quer refinar. function isHandItem(uid) -- NW based on Mock uid = uid or 0 if isInArray({5,6}, getItemWeaponType(uid)) then return true end return false end Deixando assim somente serão refinados shield e fist.
-
Tem bbcode de github ai?
-
pedido Npc que teletransporta por storage help-me
pergunta respondeu ao leandrozera de dalvorsn em Scripts
começa a fazer ele que eu te ajudo na parte da storage -
https://gist.github.com/dalvorsn/181968ae477debd90d2d
-
De mais informações sobre o servidor, mostre mais dados para que possam te ajudar. Em si parece simples, "adicionar um novo pokemon", mas deve-se levar em conta que um unico pokemon está ligado a diversos sistemas(o que vai variar de acordo com o servidor open source a que se refere). Adicionar como monstro, sem sistemas nem magias e simples, basta criar o xml dele com os respectivos dados, health, looktype, name, name description e etc. Porém ele não vai ter magias, não vai ter os comandos "m1" etc, não vai ter a vida regulada por scripts, não terá captura, não terá nada, será apenas um monstro. Entendo isso, você deve se perguntar: - Quais sistemas eu tenho no meu servidor? - Quais dependem de configuração individual de pokemon? - Quais os arquivos responsaveis por isso e como faço para adicioná-las? - Tenho conhecimento em programação o suficiente para entendê-los? Dentre outras ... Bom, boa sorte, e tente ser menos genérico. A pergunta é simples, mas a resposta é demasiadamente extensa.
-
Claro que sim, é só controlar no goback/death e etc Voce terá que mudar o modo como é salvo, terás que salvar quantos segundos restam para a magia ser usada, e só iniciar a contagem quando der go Faça algo assim na string que salvar no attribute: local example = "LastGo: "..os.time() .."TimeRemain: 5" Toda vez que der go(summonar seu pokemon) tu seta o atributo lastGo, e toda vez que der back seta o TimeRemain dai na função de pegar o cooldown, voce vai somar o lastGo com o TimeRemain e comparar com o os.time()
-
Ninguem vai adivinhar o erro por uma imagem, poste o modulo que talvez alguem te ajude. Podem ser inumeras coisas, mas a mais provavel e que no otui esteja sendo configurados uma quantidade fixa de moves, sendo que o certo seria criar os widgets de acordo com o numero de moves
-
Procure por algum addEvent, e a unica forma de fazer esse delay, leia o script e veja qual o certo
-
Acho que não dá não, tu tem é que editar no otb/dat mesmo
-
Se tu quer usar a lib do jiddo system leia e aprenda como usá-la, os arquivos dela estão todos no pasta de npcs do seu servidor, va lendo aos poucos e testando, sem duvidas ela tem muita funcionalidades, mas sinceramente acho muito mais versátil e livre fazer diretamente com as callbacks, voce com uma tabela simples faz o talkstate, e as falas por ifs, não tem misterio nenhum nisso
-
Usa somente as callbacks do npc, nao usa o jiddo system function onCreatureAppear(cid) --aqui e quando player chega perto end function onCreatureDisappear(cid) -- aqui e quando o player se afasta da visao do npc end function onCreatureSay(cid, type, msg) -- aqui e quando o player fala, e aqui que tem que fazer o msg container, do jeito que tu tava --fazendo no primeiro hi ele nao chamava sua funcao ele tava chamando a --callback do jiddo end function onThink() -- aqui e a callback que executa de tempos em tempos, nao sei dizer de quantos --emquantos segundos, mas deve ter configuracao pra isso no xml end
-
acabei de falar, "é só tirar as mensagens de greeting do xml", dai na callback onSay do npc tu faz normal, como os npcs mais antigos aquele msgcontains e etc
-
negativo, tem como tu configurar tudo em lua, é so tirar as mensagem de greeting do xml
-
provavelmente quando ultrapassar o limite ou ele nao vai deixar add mais, ou vai apagar os debaixo, acho mais provavel apagar os de baixo if getPlayerLevel >= 100 then E tu quer saber de diretorio ou arquivos? são coisas diferentes Bem, de qualquer modo, nativamente e forma limpa não tem um meio, há sim varias gambiarras, vou citar uma delas aqui: function exists(name) if type(name)~="string" then return false end return os.rename(name,name) and true or false end function isFile(name) if type(name)~="string" then return false end if not exist(name) then return false end local f = io.open(name) if f then f:close() return true end return false end function isDir(name) return (exist(name) and not isFile(name)) end
-
NetworkMessage Autor: DalvoDescrição: Lib direcionada a manipulação de bytes, feita com intuito de auxiliar nos opcodes para otclient, porém tem uma vasta gama de utilidades. NetworkMessage = {}function NetworkMessage.create(pdata) -- NetworkMessage.create([pdata]) -- @params -- 'pdata': string -- Instancia a classe NetworkMessage, se pdata é fornecido é definido o atributo data igual a pdata e size igual a #pdata return setmetatable({ data = pdata or "", size = pdata and #pdata or 0, pos = 1}, { __index = NetworkMessage })endfunction NetworkMessage:reset() -- NetworkMessage.reset(self) -- self:reset() -- @params -- 'self': table -- Reinicia os atributos do objeto self.data = "" self.size = 0 self.pos = 1endfunction NetworkMessage:setBuffer(buffer) -- NetworkMessage.setBuffer(self, buffer) -- self:setBuffer(buffer) -- @params -- 'self': table -- 'buffer': string -- Define 'buffer' como atributo data if not type(buffer) == "string" then return false end self.data = buffer self.size = #buffer self.pos = 1endfunction NetworkMessage:getBuffer() -- NetworkMessage.getBuffer(self) -- self:getBuffer() -- @params -- 'self': table -- Retorna o atributo 'data' return self.dataendfunction NetworkMessage:getSize() -- NetworkMessage.getSize(self) -- self:getSize() -- @params -- 'self': table -- Retorna o atributo 'size' return self.sizeendfunction NetworkMessage:getRanges(byteCount, signed) -- NetworkMessage.getRanges(self, byteCount, signed) -- self:getRanges(byteCount, signed) -- @params -- 'self': table -- 'byteCount': number -- 'signed': boolean -- Função interna usada para calcular o limite do valor de 'byteCount' bytes, se signed é true reajusta seu valor para signed local min, max = 0, ((256^byteCount) -1) if(signed)then max = math.floor(max/2) min = -max-1 end return -min, maxendfunction NetworkMessage:canRead(size) -- NetworkMessage.canRead(self, size) -- self:canRead(size) -- @params -- 'self': table -- 'size': number -- Verifica se pode ser lido o numero 'size' de bytes, retorna um booleano return (self.pos + size) > (self.size + 1)endfunction NetworkMessage:readBytes(byteCount, signed) -- NetworkMessage.readBytes(self, byteCount, signed) -- self:readBytes(byteCount, signed) -- @params -- 'self': table -- 'byteCount': number -- 'signed': boolean -- Tenta ler 'byteCount' numero de bytes, retorna o valor numerico dos bytes -- se possivel a leitura, e false se não. Se signed é true reajusta valor para signed if self:canRead(byteCount) then return false end local min, _ = self:getRanges(byteCount, signed) local value = 0 for byte = 1, byteCount do value = value + ( self.data:byte(self.pos) * (256^(byte-1)) ) self.pos = self.pos + 1 end return value + minendfunction NetworkMessage:addBytes(value, count, signed) -- NetworkMessage.addBytes(self, value, count, signed) -- self:addBytes(value, count, signed) -- @params -- 'self': table -- 'value': number -- 'count':number -- 'signed':boolean -- Tenta escrever 'value' em 'count' bytes, se 'value' for maior que o numero de bytes -- suporta retorna false. Se signed é true reajusta valor para signed if signed then value = value * 2 end if value >= (256^count) then return false end for byte = count, 1, -1 do local power = (256 ^ (byte-1)) self.data = self.data .. string.char( math.floor(value/power) ) value = value % power end self.size = self.size + count self.pos = self.pos + count return trueend-- Metodos para pegar valoresfunction NetworkMessage:getU8() return self:readBytes(1, false)endfunction NetworkMessage:getU16() return self:readBytes(2, false)endfunction NetworkMessage:getU32() return self:readBytes(4, false)endfunction NetworkMessage:getU64() return self:readBytes(8, false)endfunction NetworkMessage:getI8() return self:readBytes(1, true)endfunction NetworkMessage:getI16() return self:readBytes(2, true)endfunction NetworkMessage:getI32() return self:readBytes(4, true)endfunction NetworkMessage:getI64() return self:readBytes(8, true)end-- Metodos para adição de valoresfunction NetworkMessage:addU8(value) return self:addBytes(value, 1, false)endfunction NetworkMessage:addU16(value) return self:addBytes(value, 2, false)endfunction NetworkMessage:addU32(value) return self:addBytes(value, 4, false)endfunction NetworkMessage:addU64(value) return self:addBytes(value, 8, false)endfunction NetworkMessage:addI8(value) return self:addBytes(value, 1, true)endfunction NetworkMessage:addI16(value) return self:addBytes(value, 2, true)endfunction NetworkMessage:addI32(value) return self:addBytes(value, 4, true)endfunction NetworkMessage:addI64(value) return self:addBytes(value, 8, true)endfunction NetworkMessage:addString(str) -- NetworkMessage.addString(self, str) -- self:addString(str) -- @params -- 'self': table -- 'str': string -- Tenta adicionar 'str', se o tamanho supera dois bytes, retorna false if not self:addU16(#str) then return false end self.data = self.data .. str self.size = self.size + #str self.pos = self.pos + #str return trueendfunction NetworkMessage:getString() -- NetworkMessage.getString(self) -- self:getString() -- @params -- 'self': table -- Tenta ler a string e retorna-la em caso de sucesso, se falho retorna false local size = self:getU16() if not (size and self:canRead(size)) then return false end local str = "" for byte=0, size-1 do str = str .. string.char(self.data:byte(self.pos + byte)) end self.pos = self.pos + size return strend Link da lib
-
dúvida Alguem ajuda nesses 2 erros? Help
tópico respondeu ao edilson22 de dalvorsn em Lixeira Pública
Mostra o erro e completo cara, ai não ta dizendo exatamente o erro, nem se quer onde é, mas suponho que seja em algum mod porque usa o domolib com as informações que deu fica complicado, tenta copiar o erro completo ai -
function removeWall() return true end WTF!! que desgraça é essa vei? não deveria ter uma função ai para remover a parede não? >.<
-
olha um script de box que tu consegue fazer, é a coisa mais banal do mundo, só dar um transform e setar os atributos
-
msg->put<uint16_t>(type+1); Mas tem que trocar na source toda onde declara e onde usa ><
-
Não, ele é feito para protocolos recentes, acima de 10.1, atualmente para 10.36 Convertê-lo para 8.6 seria bem complicado, e até onde sei os desenvolvedores nao tem nem se quer a intenção de fazer um para versoes antigas como 8.6
-
[OTClient] Adicionando a transparencia
tópico respondeu ao Tony Araujo de dalvorsn em Tutoriais de Clients
Acho mais sensato atualizar para a versao mais recente, acredito que nao mude muita coisa nos modulos escritos anteriormente rs -
Envia tudo do server, é melhor cara, dai tu monta a estrutura do pacote em bytes, não fica absurdamente grande não, tu vai pelo tamanho, por exemplo, o id do icone tu precisa de um uint16_t, o tempo de cooldown pode usar um uint8_t, e o nome é string, usa um uint8_t para o tamanho e o faz a leitura da string Porem com nem todos os pokes tem todos os cds, é desnecessario enviar cds vazios, então tu faz o primeiro byte de todos com o numero de moves, dai faz a leitura que nem disse ai pra cada move e caso não tenha lib do networkmessage, da uma lida em bitstream e endianess que é de boas de fazer, a parte de leitura eu fiz uma vez num script: 'spr extractor' no arquivo SpriteReader, a parte de leitura ta la, e a de escrita é o inverso, não muda quase nada
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.