Ir para conteúdo

Gabriel.

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    Para fazer isso tu pode fazer uma "variável" direto na src e no .xml do pokémon, funcionaria da mesma maneira que ele fez o para puxar as informações do pokémon (move set), ficando algo desta maneira:
    <move name="harden" interval="10000" level="10"/> ---
    Em monsters.cpp procure por:
    if ((attr = node.attribute("name"))) {//pota sb.name = attr.as_string(); } De um enter e adicione abaixo:
    if ((attr = node.attribute("level"))) {//pota sb.level = pugi::cast<uint16_t>(attr.value()); } Agora em monsters.h procure por:
    name(other.name), //pota E adicione abaixo:
    level(other.level), //pota Depois procure por:
    std::string name = "none"; //pota E adicione:
    uint16_t level = 0; Agora vá em luascripts.cpp e procure por:
    setField(L, "name", spellBlock.name); //pota E adicione abaixo:
    setField(L, "level", spellBlock.level); //pota Feito isso só compilar novamente e fazer as alterações/ checagens no script de moves(m1, m2, etc..)
    Fiquei como preguiça de procurar como é feito a checagem do level do pokémon, então fiz em cima do level do player mesmo:
    ---
    No arquivo summonspells.lua procure por:
    if move[i] then E coloque embaixo:
    if move[1].level > player:getLevel() then player:sendCancelMessage("You must be level "..move[1].level.." or higher to use this move.") player:getPosition():sendMagicEffect(CONST_ME_POFF) break end  
  2. Gostei
    Para fazer isso tu pode fazer uma "variável" direto na src e no .xml do pokémon, funcionaria da mesma maneira que ele fez o para puxar as informações do pokémon (move set), ficando algo desta maneira:
    <move name="harden" interval="10000" level="10"/> ---
    Em monsters.cpp procure por:
    if ((attr = node.attribute("name"))) {//pota sb.name = attr.as_string(); } De um enter e adicione abaixo:
    if ((attr = node.attribute("level"))) {//pota sb.level = pugi::cast<uint16_t>(attr.value()); } Agora em monsters.h procure por:
    name(other.name), //pota E adicione abaixo:
    level(other.level), //pota Depois procure por:
    std::string name = "none"; //pota E adicione:
    uint16_t level = 0; Agora vá em luascripts.cpp e procure por:
    setField(L, "name", spellBlock.name); //pota E adicione abaixo:
    setField(L, "level", spellBlock.level); //pota Feito isso só compilar novamente e fazer as alterações/ checagens no script de moves(m1, m2, etc..)
    Fiquei como preguiça de procurar como é feito a checagem do level do pokémon, então fiz em cima do level do player mesmo:
    ---
    No arquivo summonspells.lua procure por:
    if move[i] then E coloque embaixo:
    if move[1].level > player:getLevel() then player:sendCancelMessage("You must be level "..move[1].level.." or higher to use this move.") player:getPosition():sendMagicEffect(CONST_ME_POFF) break end  
  3. Curtir
    Para fazer isso tu pode fazer uma "variável" direto na src e no .xml do pokémon, funcionaria da mesma maneira que ele fez o para puxar as informações do pokémon (move set), ficando algo desta maneira:
    <move name="harden" interval="10000" level="10"/> ---
    Em monsters.cpp procure por:
    if ((attr = node.attribute("name"))) {//pota sb.name = attr.as_string(); } De um enter e adicione abaixo:
    if ((attr = node.attribute("level"))) {//pota sb.level = pugi::cast<uint16_t>(attr.value()); } Agora em monsters.h procure por:
    name(other.name), //pota E adicione abaixo:
    level(other.level), //pota Depois procure por:
    std::string name = "none"; //pota E adicione:
    uint16_t level = 0; Agora vá em luascripts.cpp e procure por:
    setField(L, "name", spellBlock.name); //pota E adicione abaixo:
    setField(L, "level", spellBlock.level); //pota Feito isso só compilar novamente e fazer as alterações/ checagens no script de moves(m1, m2, etc..)
    Fiquei como preguiça de procurar como é feito a checagem do level do pokémon, então fiz em cima do level do player mesmo:
    ---
    No arquivo summonspells.lua procure por:
    if move[i] then E coloque embaixo:
    if move[1].level > player:getLevel() then player:sendCancelMessage("You must be level "..move[1].level.." or higher to use this move.") player:getPosition():sendMagicEffect(CONST_ME_POFF) break end  
  4. Obrigado
    Na real eu entrei no tópico ontem e vi sua duvida, por isso fiz a postagem! Eu tenho um servidor/ projeto porem é feito em cima da 0.3.6 (854) e muita coisa é pelo .xml por isso essas coisinhas eu consigo ajudar.
  5. Obrigado
    Sinceramente? Tenho nem ideia kk Eu sei que ele usa o .xml para puxar as spells, o que tu pode fazer é tentar fazer uma checagem direto no arquivo da pasta talkactions se tem um atributo "m1.Solar_Beam" e soltar a spell do atributo em vez do da .xml! Porem isso é apenas uma ideia louca kk Precisa ser melhor estudada..
  6. Obrigado
    Para fazer isso tu pode fazer uma "variável" direto na src e no .xml do pokémon, funcionaria da mesma maneira que ele fez o para puxar as informações do pokémon (move set), ficando algo desta maneira:
    <move name="harden" interval="10000" level="10"/> ---
    Em monsters.cpp procure por:
    if ((attr = node.attribute("name"))) {//pota sb.name = attr.as_string(); } De um enter e adicione abaixo:
    if ((attr = node.attribute("level"))) {//pota sb.level = pugi::cast<uint16_t>(attr.value()); } Agora em monsters.h procure por:
    name(other.name), //pota E adicione abaixo:
    level(other.level), //pota Depois procure por:
    std::string name = "none"; //pota E adicione:
    uint16_t level = 0; Agora vá em luascripts.cpp e procure por:
    setField(L, "name", spellBlock.name); //pota E adicione abaixo:
    setField(L, "level", spellBlock.level); //pota Feito isso só compilar novamente e fazer as alterações/ checagens no script de moves(m1, m2, etc..)
    Fiquei como preguiça de procurar como é feito a checagem do level do pokémon, então fiz em cima do level do player mesmo:
    ---
    No arquivo summonspells.lua procure por:
    if move[i] then E coloque embaixo:
    if move[1].level > player:getLevel() then player:sendCancelMessage("You must be level "..move[1].level.." or higher to use this move.") player:getPosition():sendMagicEffect(CONST_ME_POFF) break end  
  7. Gostei
    Gabriel. deu reputação a FeeTads em AutoLoot Sources pra Otx2 (modificando o script do naze)   
    salve rapaziada, do TK, esses tempos eu tava a procura de um autoloot bom e eficiente, e como vocês devem saber, o autoloot usado nos scripts .lua são bem "pesados"
    o @Naze fez um excelentíssimo trabalho e disponibilizou um script de autoloot na source, porém como a vida é dificil, ele tem alguns bugs de função e um deles é no 
    "remove autoloot" que quando o player digita "!autoloot remove, nome-do-item" nada acontece, eu decidi mexer e vim disponibilizar arrumado pra vcs.
    LEMBRANDO QUE 100% DOS CRÉDITOS SÃO AO @Naze porém se vc procurar no tópico dele ainda vai estar bugado, então resolvi deixar aqui certinho pra ajudar quem precisar.


    Link do tópico do naze: https://tibiaking.com/forums/topic/101086-otimizado-autoloot-in-sources-for-otx2-ou-menor/
     

    caso alguém ja utilize esse autoloot e esteja com o problema de remover items do autoloot
    só ir em player.cpp e trocar

    isso:
     
    void Player::removeAutoLoot(uint16_t id) { if(checkAutoLoot(id)) { return; } AutoLoot.remove(id); }
    por isso:
    void Player::removeAutoLoot(uint16_t id) { if(!checkAutoLoot(id)) return; for(std::list<uint16_t>::iterator it = AutoLoot.begin(); it != AutoLoot.end(); ++it) { if((*it) == id) { AutoLoot.erase(it); break; } } }
    todos os créditos ao Naze, não sei se alguém mais fez esse código, mas como peguei do link citado acima que é post dele deixo aqui o autoloot 100% funcional direto nas sources
  8. Curtir
    Gabriel. recebeu reputação de Under em Onde que ficas as configurações para balancear os pokemons?   
    Isso não é PokeStorm, isso é PDA, basicamente é o que o @Underewar te explicou:
    - No arquivo Pokemon Status.lua você ira alterar a força do pokémon em si:
    ['Vileplume'] = {offense = 1, defense = 6.5, specialattack = 6.5, life = 1100, vitality = 7, agility = 200, exp = 1, level = 75, wildLvl = 45, type = 'grass', type2 = 'poison'},  
    Mas explicando o que cada coisa significa:
    - Offense = Atributo de attack do pokémon;
    - Defense = Atributo de defesa do pokémon;
    - SpecialAttack = Atributo relacionado ao dano das spells;
    - Life = Vida inicial do pokémon no caso "1100", não significa que ele ira ficar com essa life, já que o atributo vitality altera esse valor.
    - Vitality = Atributo que ira modificar o valor fixo do "life".
    - Agility = Atributo relacionado a velocidade do pokémon.
    - Exp = Auto explicativa exp do pokémon.
    - Level = Level que o player precisa para usar o pokémon.
    - WildLvl = Level utilizado para alterar o dano do pokémon caso o mesmo seja selvagem.

Informação Importante

Confirmação de Termo