All pastes #735657 Raw Edit

hyjal_functions.h By Palmik v0.2

public cpp v1 · immutable
·published 2007-10-13 20:34 UTC
rendered paste body
void SpawnMonster(uint32 CreatureEntry, int NumberOfSpawns, int EventNumber)        {        int N = EventNumber;        struct Data        {            float StartMinX;            float StartMinY;            float StartDiffX;            float StartDiffY;            float StartZ;            float StartO;            float EndMinX;            float EndMinY;            float EndDiffX;            float EndDiffY;            float EndZ;                    };                     Data EventData[5]        {            //First (Rage Winterchill) event            {                4900,                -1675,                20,                20,                1322,                5.800,                5018,                -1745,                17,                13,                1324                        }                   };        Creature* Spawned = NULL;                for(i = 1; i <= NeumberOfSpawns; i++)                {                    //Use "random coords" to not let all mobs spawn at the same place                    float StartX = (rand()%EventData[N-1].StartDiffX) + EventData[N-1].StartMinX;                    float StartY = (rand()%EventData[N-1].StartDiffY) + EventData[N-1].StartMinY;                    float StartZ = EventData[N-1].StartZ;                    float StartOrientation = EventData[N-1].StartO;                            Spawned = m_creature->SummonCreature(CreatureEntry,StartX,StartY,StartZ,StartOrientation,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,120000);                    Spawned->setFaction(1720);                            //Make them move towards the camp (random coords again)!                    float CampX = (rand()%EventData[N-1].EndDiffX) + EventData[N-1].EndMinX;                    float CampY = (rand()%EventData[N-1].EndDiffY) + EventData[N-1].EndMinY;                    float CampZ = EventData[N-1].EndZ;                            //Calculating time we need (thanks draenei script)... Btw I think if we use SendMoveToPacket(), we would not have to calculate the time, because this function already do this.                    float dx = CampX - StartX;                    float dy = CampY - StartY;                    float dz = CampZ - StartZ;                    double dist = ::sqrt((dx*dx) + (dy*dy) + (dz*dz));                    double speed = Spawned->GetSpeed(MOVE_RUN);                            if(speed<=0)                        speed = 2.5f;                    speed *= 0.001f;                            uint32 TotalTime = static_cast<uint32>( dist/speed + 0.5 );                            Spawned->SendMonsterMove(CampX,CampY,CampZ,0,true,TotalTime);                }        }    }