NO

[7.8]meteor System

Por Nostradamus, 06 de out. de 2006 em Linguagens de Programação

14
3.5k
NostradamusN
06 de outubro de 2006 às 11:02

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.

Thunder TigerT
06 de outubro de 2006 às 12:11

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);           }  }}}

 

2 semanas depois...
aiolaA
17 de outubro de 2006 às 18:12

poderia explicar melhor naum eh??? pq nau mentendi nd e é 7.8 entaum nem da

byetcha

1 mês depois...
BostinhaB
14 de novembro de 2006 às 22:39

Explica a funçao

Soh to vendo um monte de códigos ¬¬

2 semanas depois...
Fusion32F
23 de novembro de 2006 às 20:26

Ta dahora o codigo mas está um pouco desorganizado e com algumas variaveis desnescessarias.

Editado Outubro 3 por Fusion32

cleks2C
30 de novembro de 2006 às 20:23

Pelo o que eu entendi esse código faz com que "um meteoro caia", dá uma esplicada melhor por favor cara...

[]'s,

Cleks2

KenzoK
02 de dezembro de 2006 às 19:23

Cara se explicasse poderia receber melhores elogios u.u

//Kenzo

RocksodyR
05 de dezembro de 2006 às 12:17

manero o codigo mas porque so para acesso 2+

access >= 2

e tambem nem causa dano, poderia ser usado como fogo de artificios mas ai tem que ter mais efeitos.

abco

2 semanas depois...
felipejmF
17 de dezembro de 2006 às 18:59

queria saber onde botar esse codigo!!

e se alguem puder botar o url do post da snow plx!! manda ai!

ZorzinZ
18 de dezembro de 2006 às 05:01

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

Editado Dezembro 19 por Zorzin

laduxituL
19 de dezembro de 2006 às 17:51

Bela Zorzin funfo perfect aki =p

Perfect MapperP
24 de dezembro de 2006 às 01:01

muito boa ideia

mas onde poes os codes?

flw

bruxoB
27 de dezembro de 2006 às 18:35

Nao entendi a moral o.O

 

Tipo, ele tira dano dos monstros/players a volta?

 

Se tirar ae sim vale a pena.

1 mês depois...
Shin HisokaS
31 de janeiro de 2007 às 22:14

Aew mano valews.

RoXxX