Ir para conteúdo

Naze

Membro
  • Registro em

  • Última visita

Tudo que Naze postou

  1. Totem q adiciona no set vc se refere a oq? um Item que equipa em um slot? ou um item q usa no outro item (ex: armadura) e fixa.
  2. Naze postou uma resposta no tópico em Suporte OTServer Derivados
    O player é removido pq o player para de existir a todos, Oq fizeram ai é uma gambiarra das brabas q se fosse vc nao usaria e procuraria fazer corretamente. As funções que da o "ghost" e volta são sendCreatureDisappear(creature, creature->getTile()->getClientIndexOfThing(this, creature)); // desaparece sendCreatureAppear(creature); // aparece o exemplo de uso dela ta la em Player::sendCreatureChangeVisible que vc usou, o motivo do crash deve ser pq ao desloga ele vai retirar party e como a um player inexistente vai da esse crash. Vai da mais trabalho ajeita isso resolvendo os próximos problemas q aparecer doq fazer algo pratico exatamente pra oq quer. @edit o desaparecimento é individual, em game.cpp tem um loop da sendCreatureChangeVisible, entao poderia fazer melhor nao ficando pros membros da party. Mas caso queira continuar usando dessa forma, da pra colocar umas verificação pra remover da party, fazer checa de player existente em tudo antes de executa... e por ai vai.
  3. @Zoodi testa amigo, se não der certo criei um topico com seu problema, evite posta em tópicos já finalizados q não são de sua autoria.
  4. como falou q e 1.3 recomendo passar as posições pro padrão 1.3 - > Position(x, y, z) Testa ai local cfg = { -- [lvl] o min lvl nos conxete e maxLvL = xx [1] = {maxLvl = 19, pos = { {x = 234, y = 234, z =7}, {x = 235, y = 235, z = 7}, {x = 234, y = 234, z =7}, {x = 235, y = 235, z = 7}, } }, [20] = {maxLvl = 29, pos = { {x = 234, y = 234, z =7}, {x = 235, y = 235, z = 7}, {x = 234, y = 234, z =7}, {x = 235, y = 235, z = 7}, } }, [30] = {maxLvl = 30, pos = { {x = 234, y = 234, z =7}, {x = 235, y = 235, z = 7}, {x = 234, y = 234, z =7}, {x = 235, y = 235, z = 7}, } }, [50] = {maxLvl = 50, pos = { {x = 234, y = 234, z =7}, {x = 235, y = 235, z = 7}, {x = 234, y = 234, z =7}, {x = 235, y = 235, z = 7}, } }, } function onStepIn(player) local lvl = player:getLevel() for min, n in pairs(cfg) do x = math.random(#n.pos) if lvl >= min and lvl <= n.maxLvl then player:teleportTo(n.pos[x]) end end return true end
  5. Você pode fazer isso pela própria magia, defina a Word e o nome tipo m1, m2, m3 que vc deu de exemplo É dentro do script coloca todas magia e no onCastSpell vc verifica isso por getVocation ou "getArmadura" (a forma q vc usa pra identificar) If getVocation(cid) == 3 then -- chamada da spell da vocation3 return true elseif getVocation(cid) == 4 then -- chamada da spell da vocation 4 return true ..... E assim vai se for outra versão com funções diferentes, usa mesma lógica
  6. @XGaduX sim, pode colocar 1 ou quantos quiser seguindo a formatacao que coloquei
  7. local rewards = { --{item = {ID_ITEM, COUNT}, {ID_ITEM, COUNT}...}, chance = 0.porcentagem*}, <- NAO ESQUECA DA VIRGULA -- SEGUE OS EXEMPLOS: {item = {{1234, 1}}, chance = 0.02}, -- Da item 1x 1235 e 100x 2160 com 2 % de chance {item = {{5532, 1}, {2160, 100}}, chance = 0.02135}, -- da 1x 1334 e 100x 2160, chance de 2% e uns quebrados {item = {{3454, 1}, {2160, 100}}, chance = 0.10}, -- 10% de chance {item = {{7424, 1}}, chance = 0.02}, {item = {{3644, 1}, {2157, 1}, {7644, 1}}, chance = 0.0005}, } function getReward() local n = math.random() local x = math.random(#rewards) local chance = rewards[x].chance if chance >= n then return rewards[x].item end return getReward() end function onUse(cid, item, fromPos, itemEx, toPos) reward = getReward() str = "" for _, itens in pairs(reward) do doPlayerAddItem(cid, itens[1], itens[2]) str = str.." "..itens[2].."x "..getItemNameById(itens[1]).."," end doPlayerSendTextMessage(cid, 22, "Voce recebeu:"..str.." por abrir a box!") doRemoveItem(item.uid, 1) return true end Nao testei se der erro so mandar q arrumo
  8. Naze postou uma resposta no tópico em Ferramentas OpenTibia
    Seu dat e spr é extendido, provavelmente seleciono isso, coloca dll ou pega um .exe extendido #edit ou o oposto
  9. É possivel, você so precisaria fazer um calculo que anule o calculo feito das 'skill_tries' necessaria pra dar o up, que vc pode achar em "Vocation::getReqSkillTries" no vocation.cpp, Ou modificar essa função para ser um valor fixo pra up. Nenhuma, como falei na primeira pergunta ela não diminui a velocidade e sim a "experiencia" que vc ganha da skill é cada vez mais necessaria para upar. è a mesma forma que acontece com Level, mas com outros cálculos. No caso é a função "Vocation::getReqSkillTries". Não entendi direito a pergunta, mas pra essa e qualquer outra do tipo, tudo possível so saber oq e onde modificar, Tudo é possivel... por script o que citou no topico ja te da um exemplo de como mudar com doPlayerSetRate(cid, skill, skillRate)
  10. Coloque aspas no numero, corrigi no post a cima. player->getStorage("474758", value);
  11. deixa seu emote spells no config.lua como false em Spells.cpp procure: SpeakClasses type = SPEAK_SAY; if(g_config.getBool(ConfigManager::EMOTE_SPELLS)) type = SPEAK_MONSTER_SAY; e abaixo coloque: std::string value; player->getStorage("474758", value); type = value == "1" ? SPEAK_MONSTER_SAY : type; agora cria uma talkaction tipo !emotespell e adiciona esse script: function onSay (cid, words, param) if param == "" then return doPlayerSendTextMessage(cid, 22, "Fale !emotespell on para ativar, e !emotespell off para desativar.") end if param =="on" then setPlayerStorageValue(cid, 474758, 1) doPlayerSendTextMessage(cid, 22, "EmoteSpell Ativado.") return true end if param =="off" then setPlayerStorageValue(cid, 474758, 0) doPlayerSendTextMessage(cid, 22, "EmoteSpell Desativado.") return true end end Testa ae se der erro avisa que arrrumo, tou no trampo entao nao tem como testa.
  12. Cara complicado te ajuda vc mando um script limpo avulso, e pediu uma verificação de storage, onde? ao falar hi? ao conversa? Faz o seguinte vou te manda esse limpo q normalmente uso pra criar npc e ele com verificação de storage das duas forma vc compara e faz do jeito que quiser.
  13. É o mesmo script, so tirei uma função q ja existe na tfs 1.3, e mudei a checagem de tempo pra funções da lib q uso vou passa ela tbm. <movevent event="StepIn" actionid="14876" script="treiner_in.lua"/> <movevent event="StepIn" actionid="14877" script="treiner_out.lua"/> treiner_in.lua local posSend = Position(565, 2699, 6) -- posicao da primeira pos (linha 1 coluna 1) local storage = 18481 -- storage que salva a ultima vez que o player entrou (pra evitar spams) local config = { distX= 19, -- distancia em X entre cada sala (de uma mesma linha) distY= 13, -- distancia em Y entre cada sala (de uma mesma coluna) rX= 21, -- numero de colunas rY= 10 -- numero de linhas } local function heartScript(player, pos, i, j) -- isso é o coração do nosso script, nao mexa nisso j = j or 0 p = i or 0 if p >= config.rX then p = 0 j = j < config.rY -1 and j + 1 or false end if j then posi = Position(pos.x + ( p * config.distX), pos.y + (j * config.distY), pos.z) if Tile(posi):isWalkable() then player:teleportTo(posi) posi:sendMagicEffect(11) else heartScript(player, pos, p + 1, j) end else player:sendTextMessage(MESSAGE_STATUS_DEFAULT, "Treiners esgotados.") end end function onStepIn(player, item, position, fromPosition) if not player:exhaustCheck(storage) then heartScript(player, posSend) else player:teleportTo(fromPosition) player:sendTextMessage(MESSAGE_STATUS_DEFAULT, "Aguarde "..player:exhaustTime(storage).." para entrar novamente nos treiners.") end return true end treiner_out.lua local npos = Position(160, 54, 7) -- posição que ele vai ao sair da sala local storage = 18481 -- storage que salva a ultima vez que o player entrou (pra evitar spams) function onStepIn(player, item, pos, lastPos, fromPos, toPos, actor) player:teleportTo(npos) npos:sendMagicEffect(11) player:exhaustSet(storage, 5) return true end exhausted.lua -- coloca em lib/core, e adiciona dofile('data/lib/core/exhausted.lua') no core.lua creditos a night wolf, apenas passei pra 1.3
  14. Já existe e bem explicado para instalar @ edit, não reparei que queria 1.3 vou pegar o meu que passei pra 1.x e ja posto é mesma coisa.
  15. Este tópico foi movido para a seção de Suporte Otserv Alternativo
  16. Seria melhor vc da algum exemplo de Skill pois não entendi nada doq deseja, de qualquer forma pode dar delay em magic effect com m addEvent addEvent(doSendMagicEffect, delay, posição, efeito) Delay em milissegundos
  17. Estava precisando de uma maquina linux para alguns trabalho e testes e bancar minha vps só pra isso não é viavel, usar dual boot tbm não é do meu gosto, e criar uma maquina virtual não chegava ao ponto que exatamente eu queria, que é facilidade e trabalha no terminal do Linux. Então descobri um metodo que seria criar uma maquina virtual e rodala em background, e usar como se estivessa montado com a rede do meu Windows, podendo acessar pelo localhost, sem ta colocando numeros de porta na frente (localhost:1234). Com isso vai ta podendo trabalha em um Linux direto de seu PC, como se estivesse acessando uma VPS comum, e ter total controle de sua maquina podendo até entra na interface grafica oq nao faz sentido ja que tou fazendo isso pra nao precisa entra nela. Fiz um video explicando todos passo e deixarei os links e comando utilizado a baixo. O video está acelerado para nao ficar mais extenso. VirtualBox: download Lembre-se de desativar Hyper-V em seu windows caso tenha ativado para virtualbox funcionar corretamente. Linux Mint: download Aconselho a baixar a edição Xfce por ser mais leve e rapida.. Instalar ssh: sudo apt-get install openssh-server verificar: sudo service ssh status Codigo para criar arquivo .bat, lembre-se de trocar o diretorio de acordo com sua instalação e o nome de acordo com o que criou: Iniciar: "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" startvm "NOME DA MAQUINA" -type headless desligar: "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" controlvm "NOME DA MAQUINA" poweroff soft Acesso ssh é feito por: usuario@localhost No meu caso usei usario "naze" e cmd do windows 10 ssh naze@localhost
  18. osh e o resto ta faltando uma parte vou estrutura pra tu e coloca la
  19. Manda novamente como colocou
  20. @Senju uchira Não é possível bro, 1.3 é orientada a objeto, já 0.4 não o servidor lê de outra forma os script. Mas pra te dá um ânimo tem um cara da comunidade criando uma lib que vai solucionar isso fazendo funcionar script 1.3 em qualquer versão. Caso tenha mais alguma dúvida cria um tópico.
  21. Olha, essa action dara apenas um, vc pode aumenta ela ou fazer varias, vai de você mais sugiro criar outro topico com mais duvida se tiver, vou encerrar esse pois a duvida do autor foi sanada.
  22. Naze postou uma resposta no tópico em Suporte Tibia OTServer
    Não precisa reinicia, manda no SQL do phpmyadmin q é sucesso, mas se por acabo reinicia o mysql ou a servidor tem q manda novamente o comando isso é normal. Quando cria a guild no site, seu char deve esta offline ou a guild será criada mais não aparecerá em jogo mesmo, da mesma forma pra invitar player.
  23. Adiciona discord e me chama que te ajudo, por aqui fica meio difícil saber oq aconteceu sem erros..
  24. @H3ITORR Esse retorna o valor da Storage, se coloca o da outfit q deseja e o cara tiver vai retorna 1, vc usa pra verificar como na action acima... getPlayerStorageValue(cid, STORAGE) Esse SET a storage no player, assim ele ganhara o valor da storage e consequentemente a outfit setPlayerStorageValue(cid, STORAGE, 1) -- 1 é o Valor da storage que recebera. Trocando os valor de onde tem essas funções conseguira usar com a que adicionou,
  25. nunca vi base dbo, mas ajuda você colocando um exemplo, procura a spells q deseja em spells.xml e veja onde ta o script dela pra posta.

Informação Importante

Confirmação de Termo