Ir para conteúdo

[7.8]meteor System


Posts Recomendados

Esse código foi baseado no código de nevar do Vitor.

 

bool Game::CreateMeteoreEffect(Creature* creature){    Position pos = creature->getPosition();    pos.x-=7;    pos.y+=5;    Position From = pos;    Position To = creature->getPosition();        bool doAnimation = true;    for(int areax = creature->getPosition().x-1; areax <= creature->getPosition().x+1; areax++){    for(int areay = creature->getPosition().y-1; areay <= creature->getPosition().y+1; areay++){    Position toPos(areax, areay, creature->getPosition().z);    Tile* toTile = map->getTile(toPos);        Item* larvaItem = Item::CreateItem(389,1);    Item* fireItem = Item::CreateItem(1492,1);                    internalAddItem(toTile, fireItem);       startDecay(fireItem);     }       if(doAnimation == true){       SpectatorVec::iterator it;       SpectatorVec list;              getSpectators(Range(From, true), list);                     for(it = list.begin(); it != list.end(); it++){        Player* player = dynamic_cast<Player*>((*it));        if(player)        player->sendDistanceShoot(From, toPos, NM_ANI_FIRE);        }     }   }}}

 

E no usewand do wand of inferno adicione:

 

if(player->access >= 2)  CreateMeteoreEffect(attackedCreature);        else{               return;         }

 

Bom uso.

Link para o comentário
Compartilhar em outros sites

Cara, baseado no code do vitor nada eu que fiz esqueceu? o do vitor é bem diferente =~

 

bool Game::CreateMeteoreEffect(Creature* creature){   Position c = creature->getPosition();   Position pos = Position(c.x-7, c.y+5, c.z);     Position From = pos;   Position To = creature->getPosition();        for(int areax = creature->getPosition().x-1; areax <= creature->getPosition().x+1; areax++){   for(int areay = creature->getPosition().y-1; areay <= creature->getPosition().y+1; areay++){   Position toPos(areax, areay, creature->getPosition().z);   Tile* toTile = map->getTile(toPos);      Item* larvaItem = Item::CreateItem(389,1);   Item* fireItem = Item::CreateItem(1492,1);               internalAddItem(toTile, fireItem);      startDecay(fireItem);    } //// Distance shoot       SpectatorVec list;       getSpectators(Range(From, true), list);       for(SpectatorVec::iterator it = list.begin(); it != list.end(); it++){       Player* player = dynamic_cast<Player*>((*it));       if(player)       player->sendDistanceShoot(From, toPos, NM_ANI_FIRE);           }  }}}

 

Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...
  • 4 weeks later...
  • 2 weeks later...
  • 2 weeks later...

Com esse código, quando o player usa o wand of inferno, solta tipo um efeito de fogo no monstro ou player que ela esta atacando e deixa (3x3 Firefields)...

Soh num entendi porque você colocou para access somente maior ou igual a 2..

Tem um problema no seu código.... Tanto no seu code quanto no do Thunder Tiger, tem 1 chave a mais no final do code. :icon1: Esse código nao funciona em New CVS e tem uns bugs...

Mas... vlw a intenção :bigsmile:

Vou passar o code pra New SVN e arrumar ele: (funciona em ot 7.9, por exemplo: Last SVN, XikeOTS e em alguns 7.8 também =)

No final de Game.cpp adicione:

 

bool Game::CreateMeteoreEffect(Creature* creature){   Position pos = creature->getPosition();   pos.x-=7;   pos.y+=5;   Position From = pos;   Position To = creature->getPosition();      bool doAnimation = true;   for(int areax = creature->getPosition().x-1; areax <= creature->getPosition().x+1; areax++){   for(int areay = creature->getPosition().y-1; areay <= creature->getPosition().y+1; areay++){   Position toPos(areax, areay, creature->getPosition().z);   Tile* toTile = map->getTile(toPos);      Item* fireItem = Item::CreateItem(1492,1);             internalAddItem(toTile, fireItem);      startDecay(fireItem);    if(doAnimation == true){      SpectatorVec::iterator it;      SpectatorVec list;            getSpectators(list, From, true);                  for(it = list.begin(); it != list.end(); it++){       Player* player = dynamic_cast<Player*>((*it));       if(player)       player->sendDistanceShoot(From, toPos, NM_ANI_FIRE);       }    }  }}}

 

-------------------------------------

Game.h, depois de:

 

int loadMap(std::string filename, std::string filekind);

 

Adicione:

 

bool CreateMeteoreEffect(Creature* creature);

 

-------------------------

Weapons.cpp depois de:

 

bool Weapon::useWeapon(Player* player, Item* item, Creature* target) const{	if(!playerWeaponCheck(player, target)){  return false;	}

 

Adicione:

 

if(item->getID() == 2187)g_game.CreateMeteoreEffect(target);

 

---------------------------------------------

Pronto.. Agora sim ta funcionando 100% em ots 7.9 e ots 7.8 =)

=)

Zorzin

Link para o comentário
Compartilhar em outros sites

  • 1 month later...
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...