Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Então use o que te falei acima.

Não se esqueça de dar REP+ para quem te ajudou e caso seja a solução marcar como melhor resposta!

 

NÃO CLIQUE AQUI!

NEM AQUI!

________________________________________________________________________________________________________________________________________________________________________________________________________________________

 

A imaginação é mais importante que o conhecimento.” Albert Einstein

Link para o post
Compartilhar em outros sites
  • Respostas 12
  • Created
  • Última resposta

Top Posters In This Topic

Popular Days

Top Posters In This Topic

Popular Posts

Agora sim, uma explicação clara. Isso pegará o valor da storage 1 + storage 2 + storage 3 e o resultado será o vocationID que o player terá. Lembrando que isso verifica esses códigos APENAS quando o player loga. Se quiser pode substituir    function onLogin(cid)   por   function onThink(cid, interval)   e a tag substitua de   <event type="login" name="VocationStorage" script="others/VocationStorage.lua"/>   por   <event name="VocationStorage" interval="1000" script

Acho que pois pelo oque eu vi você seleciona o numero da voc e ela vira
Oque eu havia pensando seria o seguinte(não sei simplicar)

  Mostrar conteúdo oculto

local e1 = 10001


local e2 = 10002
local e3 = 10003
local e4 = 10004
local e5 = 10005
local e6 = 10006
local e7 = 10007
local e8 = 10008
local e9 = 10009
local e10 = 10010

function onLogin(cid)
local s1 = getPlayerStorageValue(cid, e1)
local s2 = getPlayerStorageValue(cid, e2)
local s3 = getPlayerStorageValue(cid, e3)
local s4 = getPlayerStorageValue(cid, e4)
local s5 = getPlayerStorageValue(cid, e5)
local s6 = getPlayerStorageValue(cid, e6)
local s7 = getPlayerStorageValue(cid, e7)
local s8 = getPlayerStorageValue(cid, e8)
local s9 = getPlayerStorageValue(cid, e9)
local s10 = getPlayerStorageValue(cid, e10)

if s1 then
   if s2 then
      if s3 then   
         doPlayerSetVocation(cid, 1)
      elseif s4 then   
         doPlayerSetVocation(cid, 2)
      elseif s5 then   
         doPlayerSetVocation(cid, 3)
      elseif s6 then   
         doPlayerSetVocation(cid, 4)
      elseif s7 then   
         doPlayerSetVocation(cid, 5)
      elseif s8 then   
         doPlayerSetVocation(cid, 6)
      elseif s9 then   
         doPlayerSetVocation(cid, 7)
      elseif s10 then   
         doPlayerSetVocation(cid, 8)
      end
   elseif s3 then
   elseif s4 then
   elseif s5 then
   elseif s6 then
   elseif s7 then
   elseif s8 then
   elseif s9 then
   elseif s10 then
   end
elseif s2 then

elseif s3 then

elseif s4 then

elseif s5 then

elseif s6 then

elseif s7 then

elseif s8 then

elseif s9 then

elseif s10 then
end
end

Editado por dring (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Mas o que eu fiz é a simplificação disso, usando só uma storage. Vamos lá, você quer se tornar arqueiro vamos supor. Você vai para a escola 1 e ganha na storage 10000 o valor 1000. Dai na escola dois ganha o valor antigo + 400 que daria 1400. Dai na escola três você ganha o valor antigo + 10 que daria 1410. Dai no meu script ponha:

 

[1410] = 3 --que é o vocation id do paladino

 

E deu!

 

Dai no mesmo script quero virar um knight. Escola 1 dá a storage 1000. Dai na escola dois dá o valor antigo + 300. Na três dá o valor antigo + 30. Dai no meu script:

 

[1330] = 4 --que é o vocation id do knight

 

E deu!

 

Edit:

 

Eu não sei se você sabe, mas uma storage tem um valor. Esse valor vai até o infinito se quiser, então com esse beneficio você pode evitar usar 10 storages e usar só uma.

Editado por mateusak (veja o histórico de edições)

Não se esqueça de dar REP+ para quem te ajudou e caso seja a solução marcar como melhor resposta!

 

NÃO CLIQUE AQUI!

NEM AQUI!

________________________________________________________________________________________________________________________________________________________________________________________________________________________

 

A imaginação é mais importante que o conhecimento.” Albert Einstein

Link para o post
Compartilhar em outros sites

Eu sei porem teria que ter 3 storage no minimo eu pensei nisso depois. Pois cada uma das 3 storage eu usaria um valor de 1 a 10 (pois só pode ter 3 e quando vai poder mudar)  tem como pegar o valor da storage e somar? Tipo s1==1 s2==2 s3==3 que daria 6 e 6 seria a vocação?

Link para o post
Compartilhar em outros sites

Agora sim, uma explicação clara.

  Mostrar conteúdo oculto
local storages = {10000, 10001, 10002}
 
function onLogin(cid)
local sV1 = getPlayerStorageValue(cid, storages[1])
local sV2 = getPlayerStorageValue(cid, storages[2])
local sV3 = getPlayerStorageValue(cid, storages[3])
doPlayerSetVocation(cid, (sV1 + sV2 + sV3))
end

Isso pegará o valor da storage 1 + storage 2 + storage 3 e o resultado será o vocationID que o player terá. Lembrando que isso verifica esses códigos APENAS quando o player loga. Se quiser pode substituir 

 

function onLogin(cid)

 

por

 

function onThink(cid, interval)

 

e a tag substitua de

 

<event type="login" name="VocationStorage" script="others/VocationStorage.lua"/>

 

por

 

<event name="VocationStorage" interval="1000" script="others/VocationStorage.lua"/>

 

mas não sei se iria funcionar...

Não se esqueça de dar REP+ para quem te ajudou e caso seja a solução marcar como melhor resposta!

 

NÃO CLIQUE AQUI!

NEM AQUI!

________________________________________________________________________________________________________________________________________________________________________________________________________________________

 

A imaginação é mais importante que o conhecimento.” Albert Einstein

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por Under
      Apresentando o Tibia-IA: A IA para Desenvolvimento de Servidores Tibia! 
       O que é o Tibia-IA?
      Um modelo de IA especializado para Tibia! Ele está atualmente em teste gratuito, e eu adoraria que vocês o experimentassem. Basta acessar https://ai.tibiaking.com, criar uma conta e começar a usar totalmente de graça! 
       Versão Experimental Fechada
      Atualmente, algumas funcionalidades ainda estão em desenvolvimento. No momento, apenas a geração de scripts está disponível para o público.
      Se encontrarem qualquer problema nos scripts gerados, me avisem! Vamos juntos construir a IA mais poderosa para ajudar no desenvolvimento de servidores Tibia!  
      Contato direto discord : underewar
       Acesse agora: https://ai.tibiaking.com
       Como funciona?
       Geração automática de scripts LUA para TFS  Suporte a diferentes eventos, criaturas, NPCs, magias, etc.  Ferramenta em constante evolução para aprimorar o desenvolvimento Novidades em breve confira no site. O acesso ao Tibia-IA está disponível para testes GRATUITOS! Até dia 05/05/2025
      Basta criar uma conta em: https://ai.tibiaking.com
      Utilize a IA para gerar seus scripts de forma simples e rápida
      Envie feedbacks para ajudarmos a tornar a ferramenta ainda melhor!

      Problemas relatar diretamente no meu discord pessoal : underewar
       



    • Por L3K0T
      L3KOT tfs: 1.3
       
      Bom esse sistema é bem simples, ele anuncia pro servidor todo ao matar um tal monstro especifico.
       
       
      1° vai em otserv\data\creaturescripts\scripts copia um arquivo.lua, renomeia para monsterkill.lua e add dentro;;;
      function onDeath(monster, corpse, killer, mostDamageKiller, unjustified, mostDamageUnjustified) local monstro = "Diablo" if monster:getName() == monstro then Game.broadcastMessage("O Jogador "..killer:getName().." matou o Boss " ..monster:getName().. "! ") end return true end  
      Em creaturescripts.xml add
      <event type="death" name="monsterkill" script="monsterkill.lua"/>  
      Abra o xml do monstro que você quer que apareça a mensagem global depois de mata-lo e add lá no final depois de loot;;
      <script> <event name="monsterkill" /> </script> feito isso, salve tudo e pronto!!! Sucesso e jamais desista do seus projetos.
       
       
      ajuda sandada para @Faysal creditos: L3K0T and @Faysal  
       
       
    • Por Deletera
      Atenção! Os arquivos disponibilizados abaixo são da versão 12.64!
      Para obter otserv 12.64+ atualizado com novas áreas e novos gráficos acesse o github oficial do projeto OTX: https://github.com/opentibiabr/otservbr-global
       
      Servidor feito especialmente para jogadores que gostam do Tibia Oldstyle,
      mas colocado na versao 12 com novas funcionalidades, mounts, outfits e itens.  
       
      Todos Outfits sao frees & Addons coletando itens
       
      PVP clássico, old school times
       
      Spells adaptadas a versao 8.60
       
      Mais de 50 quests na Teleport Room
       
      Tasks e Missions para explorar o mapa
       
      Raids automáticas com novos bosses
       
      Reward System desabilitado, loot tradicional (bem melhor assim, certo?)
       
      Áreas custom e inovadoras como Hogwarts
       
      Em resumo, o OT busca ser simples, resgatando a naturalidade do que era o baiak da versão 8.60 em 2009, mas com implementações 12x+
       
      ◄IMAGENS►
      ◄DATAPACK & DLLS►
      » OTX Baiak Styller 12.64 MediaFire (Scan)
       » OtservBR Dlls & Executável (Windows 64x)
      (Antes de rodar o OT verifique de usar a mesma database e configurar o login no config.lua)
       
      ◄CLIENTS►
      » Tibia Client 12.64 MediaFire (Scan)
      (Para conectar ao cliente 12 (localhost), acesse usando 127.0.0.1_client.exe, localizado na pasta bin.)
       
      ◄WEB►
      » [GesiorAcc] para Tibia 12.64 MediaFire (Scan)
      Instale o XAMP para rodar com a data base e site disponíveis
      (não se esquece de alterar o login e senha no config.lua, para o atual a senha do mysql está como "XIPA2")
       
      » [Data base] acc/email e senha: god/god MediaFire (Scan)
      O OT está configurado para aceitar acc no lugar de email (opcional) para usar as acc de testes é senha 123123
       
      ◄Créditos►
      Waldir Teixeira (Saruman/Deletera) &
       
    • Por Under
      Tutorial Completo: Como Adicionar uma Nova Vocação no Canary Server
       
       
       
       
       
      1. Entendendo a Lógica das Vocações
      No servidor Canary, cada vocação representa uma classe de personagem com habilidades, atributos e características específicas. Para que o servidor reconheça uma nova vocação, é necessário:
      - Definir um identificador único (ID);
      - Registrar o ClientID (usado para exibição no cliente);
      - Especificar um BaseID (para herança de características ou evolução);
      - Configurar atributos, fórmulas e habilidades no XML.
       
       
      2. Alterando a Enumeração das Vocações (Código Fonte C++)
      Arquivo: `src/creatures/creatures_definitions.hpp`
      Adicione os novos IDs no enum `Vocation_t`:
       
      enum Vocation_t : uint16_t {     VOCATION_NONE = 0,     VOCATION_SORCERER = 1,     VOCATION_DRUID = 2,     VOCATION_PALADIN = 3,     VOCATION_KNIGHT = 4,     VOCATION_MASTER_SORCERER = 5,     VOCATION_ELDER_DRUID = 6,     VOCATION_ROYAL_PALADIN = 7,     VOCATION_ELITE_KNIGHT = 8,     VOCATION_WARRIOR = 9,     VOCATION_ELITE_WARRIOR = 10,     VOCATION_LAST = VOCATION_ELITE_WARRIOR };  
       
       
       
       
      3. Atualizando o Script de Vocações (Lua)
      Arquivo: `data/libs/vocation.lua`
      Adicione os novos valores nas três seções do objeto `VOCATION`:
       
      VOCATION = {     ID = {         WARRIOR = 9,         ELITE_WARRIOR = 10,         ...     },     CLIENT_ID = {         WARRIOR = 0,         ELITE_WARRIOR = 0,         ...     },     BASE_ID = {         WARRIOR = 5,         ...     } }  
       
       
       
       
      4. Criando Função de Verificação da Nova Vocação
      Arquivo: `data/libs/functions/player.lua`
      Adicione a seguinte função no final do arquivo:
       
      function Player.isWarrior(self)     return table.contains({VOCATION.ID.WARRIOR, VOCATION.ID.ELITE_WARRIOR}, self:getVocation():getId()) end  
       
       
       
       
      5. Configurando as Vocações no XML
      Arquivo: `data/XML/vocations.xml`
      Adicione o bloco de cada nova vocação com os atributos desejados:
       
      <vocation id="9" clientid="0" baseid="5" name="Warrior" description="a warrior"   magicshield="0" gaincap="25" gainhp="15" gainmana="5" gainhpticks="4000"   gainhpamount="1" gainmanaticks="6000" gainmanaamount="2" manamultiplier="3.0"   attackspeed="2000" basespeed="110" soulmax="200" gainsoulticks="15000" fromvoc="5">     <formula meleeDamage="1.0" distDamage="1.0" defense="1.0" armor="1.0" />     <skill id="0" multiplier="1.1" />     <skill id="1" multiplier="1.1" />     <skill id="2" multiplier="1.1" />     <skill id="3" multiplier="1.1" />     <skill id="4" multiplier="1.4" />     <skill id="5" multiplier="1.1" />     <skill id="6" multiplier="1.1" /> </vocation> <vocation id="10" clientid="0" baseid="6" name="Elite Warrior" description="an elite warrior"   magicshield="0" gaincap="25" gainhp="15" gainmana="5" gainhpticks="4000"   gainhpamount="1" gainmanaticks="6000" gainmanaamount="2" manamultiplier="3.0"   attackspeed="2000" basespeed="110" soulmax="200" gainsoulticks="15000" fromvoc="5">     <formula meleeDamage="1.0" distDamage="1.0" defense="1.0" armor="1.0" />     <skill id="0" multiplier="1.1" />     <skill id="1" multiplier="1.1" />     <skill id="2" multiplier="1.1" />     <skill id="3" multiplier="1.1" />     <skill id="4" multiplier="1.4" />     <skill id="5" multiplier="1.1" />     <skill id="6" multiplier="1.1" /> </vocation>  
       
       
       
       
      6. Compilando o Servidor
      Após todas as alterações, é obrigatório recompilar o servidor para que as novas vocações sejam reconhecidas corretamente.
       
       
       
      Conclusão:
       
      Ao seguir todos os passos, suas novas vocações estarão totalmente integradas ao servidor. Você poderá usá-las para personagens.
       
       
    • Por Under
      ATENÇÃO, DESENVOLVEDORES DE OTSERV! 
      Uma nova era está chegando — e você vai fazer parte dela desde o começo! 
       Ferramentas de IA + Formação Completa
      Estamos finalizando ferramentas exclusivas de inteligência artificial que vão revolucionar a forma como você cria e gerencia servidores de Tibia.
      E pra abrir com estilo, chegou a primeira etapa da nossa formação completa:
       Curso de Pixel Art para Tibia e Derivados


      Instrutor: Brendon Nogard, fundador da Pixel Art School
      Uma das maiores referências em arte para servidores de tibia no Brasil!
       Quem é o Nogard? @Nogard
      video-de-apresent.mp4
       
      Criador das primeiras remakes gráficas da PXG
      Mais de 10 anos de experiência com Pixel Art
      Conduziu a evolução da perspectiva GBA para um visual moderno e imersivo
      Influenciou uma geração inteira de criadores na comunidade OTServer no Brasil.
       O que você vai aprender nesse curso?
      Compre Aqui!
       Perspectiva 45° para Tibia e derivados
       Criação de itens: pokébolas, loots, mochilas, poções
       Personagens animados com variações de cabelo
       Criaturas como Wolf, Werewolf, Snake, Horse e Centauro
       Cenários: paredes, cortinas, troféus
       Texturas: folhas, rochas
       Fundamentos de estilo, coerência e construção de sprites profissionais
        Duração: 12 horas
        VALOR : R$250,00
       BÔNUS POR R$50,00
      Também está disponível o Curso de Pixel Art Top Down, ideal pra quem quer começar do zero absoluto:
      Crie personagens, inimigos, chefes
      Monte todo o ambiente do seu jogo
         Duração: 3 horas
       Por que isso é importante pra você?
      Esse é o primeiro passo pra criar um OTServer com:
       Identidade visual única
       Alto nível gráfico
       Suporte de ferramentas de IA exclusivas
       E um método claro, testado e acessível!
       Nas próximas 4 semanas...
      Vamos liberar novos cursos sobre:
       Criação de mapas
       Desenvolvimento de sistemas e scripts
       IA aplicada ao design de jogo (desenvolvimento)
       Balanceamento, mecânicas e muito mais!
       Garanta sua vaga agora!
      Comece hoje mesmo com o pé direito.
      Compre Aqui!
  • Estatísticas dos Fóruns

    96845
    Tópicos
    519606
    Posts



×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo