Форум программистов, компьютерный форум CyberForum.ru

Скрипт боса - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Имеется массив M строк, N столбцов (M и N различны http://www.cyberforum.ru/cpp-beginners/thread284853.html
1. Имеется массив M строк, N столбцов (M и N различны и не менее 5). Ввести элементы, распечатать. Повернуть относительно горизонтальной линии, не создавая дополнительных массивов. Распечатать результирующий массив. 2. Дан 2-мерный массив целых чисел (M строк, N столбцов; M!=N; M>=3; N>=3). M и N известно на этапе разработки алгоритма. Элементы вводят с клавиатуры. Вывести массив на экран в...
C++ Исправьте, пожалуйста. Односвязный список Создается массив указателей на элемент списка, который ссылается на следующий. добавляю ведомости о спортсменах, но при выводе выводится только последний добавленный элемент. Помогите.#include "stdafx.h" #include <string> #include <iostream> using namespace std; struct spm{ int count; int number; float result; char name; http://www.cyberforum.ru/cpp-beginners/thread284849.html
работа с классами(как перебрать все объекты класса) C++
Здравствуйте! Я начинающий программист..... может и не программист вовсе. Но мне необходимо сделать такую задачу. С классами начала работать буквально вчера, когда возникла необходимость сделать задачку. Сама задачка такая. "Описать и реализовать класс Bill, представляющий собой разовый платеж за телефонный разговор. Класс должен включать в себя поля номера телефона, тарифа за минуту разговора,...
C++ считывание из файла
писал прогу не могу доделать(((( надо считать все из текстового файла и сделать в структуру struct i_list { char name; char company; char price; char quantity; i_list *next;
C++ Нахождение числа ближнего к X http://www.cyberforum.ru/cpp-beginners/thread284834.html
Всем привет) Подскажите, что не так в этом коде? for(i=0; i<n; i++) { for(j=0; j<m; j++) { a=rand()%10; cout<<a<<" "; } cout<<endl;
C++ Подскажите с Калькулятором... Ребят подскажите не могу понять в чем ошибка, нужно чтоб он решал в восьмеричной с/с, но не хочет решать кому не сложно может объяснить что я тут намудрил не так #include <cstdlib> #include <iostream> #include <math.h> using namespace std; int qwe (); int asd (); int main() { подробнее

Показать сообщение отдельно
Jettard
 Аватар для Jettard
40 / 38 / 5
Регистрация: 27.05.2010
Сообщений: 253
28.04.2011, 00:17     Скрипт боса
Всем привет. Значит хочу сделать свой сервер мангос, для друзей. Преимущественно серверы мангоса сырые и недоделанные. Хочу чтобы вы мне помогли лутше разобраться с кодом одного босса, вот скрипт:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
#include "precompiled.h"
#include "gruuls_lair.h"
 
enum
{
    SAY_AGGRO                   = -1565010,
    SAY_SLAM1                   = -1565011,
    SAY_SLAM2                   = -1565012,
    SAY_SHATTER1                = -1565013,
    SAY_SHATTER2                = -1565014,
    SAY_SLAY1                   = -1565015,
    SAY_SLAY2                   = -1565016,
    SAY_SLAY3                   = -1565017,
    SAY_DEATH                   = -1565018,
 
    EMOTE_GROW                  = -1565019,
 
    SPELL_GROWTH                = 36300,
    SPELL_CAVE_IN               = 36240,
    SPELL_GROUND_SLAM           = 33525,                    //AoE Ground Slam applying Ground Slam to everyone with a script effect (most likely the knock back, we can code it to a set knockback)
    SPELL_REVERBERATION         = 36297,
    SPELL_SHATTER               = 33654,
 
    SPELL_SHATTER_EFFECT        = 33671,
    SPELL_HURTFUL_STRIKE        = 33813,
    SPELL_STONED                = 33652,                    //Spell is self cast by target
 
    SPELL_MAGNETIC_PULL         = 28337,
    SPELL_KNOCK_BACK            = 24199                     //Knockback spell until correct implementation is made
};
 
struct MANGOS_DLL_DECL boss_gruulAI : public ScriptedAI
{
    boss_gruulAI(Creature* pCreature) : ScriptedAI(pCreature)
    {
        m_pInstance = (ScriptedInstance*)pCreature->GetInstanceData();
        Reset();
    }
 
    ScriptedInstance* m_pInstance;
 
    uint32 m_uiGrowth_Timer;
    uint32 m_uiCaveIn_Timer;
    uint32 m_uiCaveIn_StaticTimer;
    uint32 m_uiGroundSlamTimer;
    uint32 m_uiHurtfulStrike_Timer;
    uint32 m_uiReverberation_Timer;
 
    bool m_bPerformingGroundSlam;
 
    void Reset()
    {
        m_uiGrowth_Timer            = 30000;
        m_uiCaveIn_Timer            = 27000;
        m_uiCaveIn_StaticTimer      = 30000;
        m_uiGroundSlamTimer         = 35000;
        m_uiHurtfulStrike_Timer     = 8000;
        m_uiReverberation_Timer     = 60000+45000;
        m_bPerformingGroundSlam     = false;
    }
 
    void Aggro(Unit *pWho)
    {
        DoScriptText(SAY_AGGRO, m_creature);
 
        if (!m_pInstance)
            return;
 
        m_pInstance->SetData(TYPE_GRUUL_EVENT, IN_PROGRESS);
    }
 
    void JustReachedHome()
    {
        if (m_pInstance)
            m_pInstance->SetData(TYPE_GRUUL_EVENT, NOT_STARTED);
    }
 
    void KilledUnit(Unit* pVictim)
    {
        switch(urand(0, 2))
        {
            case 0: DoScriptText(SAY_SLAY1, m_creature); break;
            case 1: DoScriptText(SAY_SLAY2, m_creature); break;
            case 2: DoScriptText(SAY_SLAY3, m_creature); break;
        }
    }
 
    void JustDied(Unit* pKiller)
    {
        DoScriptText(SAY_DEATH, m_creature);
 
        if (!m_pInstance)
            return;
 
        m_pInstance->SetData(TYPE_GRUUL_EVENT, DONE);
    }
 
    void SpellHitTarget(Unit* pTarget, const SpellEntry* pSpell)
    {
        //This to emulate effect1 (77) of SPELL_GROUND_SLAM, knock back to any direction
        //It's initially wrong, since this will cause fall damage, which is by comments, not intended.
        if (pSpell->Id == SPELL_GROUND_SLAM)
        {
            if (pTarget->GetTypeId() == TYPEID_PLAYER)
            {
                switch(urand(0, 1))
                {
                    case 0: pTarget->CastSpell(pTarget, SPELL_MAGNETIC_PULL, true, NULL, NULL, m_creature->GetGUID()); break;
                    case 1: pTarget->CastSpell(pTarget, SPELL_KNOCK_BACK, true, NULL, NULL, m_creature->GetGUID()); break;
                }
            }
        }
 
        //this part should be in mangos
        if (pSpell->Id == SPELL_SHATTER)
        {
            //this spell must have custom handling in mangos, dealing damage based on distance
            pTarget->CastSpell(pTarget, SPELL_SHATTER_EFFECT, true);
 
            if (pTarget->HasAura(SPELL_STONED))
                pTarget->RemoveAurasDueToSpell(SPELL_STONED);
 
            //clear this, if we are still performing
            if (m_bPerformingGroundSlam)
            {
                m_bPerformingGroundSlam = false;
 
                //and correct movement, if not already
                if (m_creature->GetMotionMaster()->GetCurrentMovementGeneratorType() != CHASE_MOTION_TYPE)
                {
                    if (m_creature->getVictim())
                        m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim());
                }
            }
        }
    }
 
    void UpdateAI(const uint32 uiDiff)
    {
        //Return since we have no target
        if (!m_creature->SelectHostileTarget() || !m_creature->getVictim())
            return;
 
        // Growth
        // Gruul can cast this spell up to 30 times
        if (m_uiGrowth_Timer < uiDiff)
        {
            DoScriptText(EMOTE_GROW, m_creature);
            DoCastSpellIfCan(m_creature,SPELL_GROWTH);
            m_uiGrowth_Timer = 30000;
        }
        else
            m_uiGrowth_Timer -= uiDiff;
 
        if (m_bPerformingGroundSlam)
        {
            if (m_uiGroundSlamTimer < uiDiff)
            {
                m_uiGroundSlamTimer     = 120000;
                m_uiHurtfulStrike_Timer = 8000;
 
                //Give a little time to the players to undo the damage from shatter
                if (m_uiReverberation_Timer < 10000)
                    m_uiReverberation_Timer += 10000;
 
                DoCastSpellIfCan(m_creature, SPELL_SHATTER);
            }
            else
                m_uiGroundSlamTimer -= uiDiff;
        }
        else
        {
            // Hurtful Strike
            if (m_uiHurtfulStrike_Timer < uiDiff)
            {
                // Find 2nd-aggro target within melee range.
                Unit* pTarget = NULL;
                ThreatList const& tList = m_creature->getThreatManager().getThreatList();
                ThreatList::const_iterator itr = tList.begin();
                std::advance(itr, 1);
                for (;itr != tList.end(); ++itr)
                {
                    pTarget = m_creature->GetMap()->GetUnit((*itr)->getUnitGuid());
 
                    // exclude pets, totems & player out of melee range
                    if (!pTarget || pTarget->GetTypeId() != TYPEID_PLAYER || !m_creature->CanReachWithMeleeAttack(pTarget))
                    {
                        pTarget = NULL;
                        continue;
                    }
                    //we've found someone
                    break;
                }
 
                if (pTarget)
                    DoCastSpellIfCan(pTarget,SPELL_HURTFUL_STRIKE);
                else
                    DoCastSpellIfCan(m_creature->getVictim(),SPELL_HURTFUL_STRIKE);
 
                m_uiHurtfulStrike_Timer = 8000;
            }
            else
                m_uiHurtfulStrike_Timer -= uiDiff;
 
            // Reverberation
            if (m_uiReverberation_Timer < uiDiff)
            {
                DoCastSpellIfCan(m_creature, SPELL_REVERBERATION, CAST_TRIGGERED);
                m_uiReverberation_Timer = urand(15000, 25000);
            }
            else
                m_uiReverberation_Timer -= uiDiff;
 
            // Cave In
            if (m_uiCaveIn_Timer < uiDiff)
            {
                if (Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM,0))
                    DoCastSpellIfCan(pTarget,SPELL_CAVE_IN);
 
                if (m_uiCaveIn_StaticTimer >= 4000)
                    m_uiCaveIn_StaticTimer -= 2000;
 
                    m_uiCaveIn_Timer = m_uiCaveIn_StaticTimer;
 
            }
            else
                m_uiCaveIn_Timer -= uiDiff;
 
            // Ground Slam, Gronn Lord's Grasp, Stoned, Shatter
            if (m_uiGroundSlamTimer < uiDiff)
            {
                m_creature->GetMotionMaster()->Clear();
                m_creature->GetMotionMaster()->MoveIdle();
 
                m_bPerformingGroundSlam = true;
                m_uiGroundSlamTimer     = 10000;
 
                DoCastSpellIfCan(m_creature, SPELL_GROUND_SLAM);
            }
            else
                m_uiGroundSlamTimer -= uiDiff;
 
            DoMeleeAttackIfReady();
        }
    }
};
 
CreatureAI* GetAI_boss_gruul(Creature* pCreature)
{
    return new boss_gruulAI(pCreature);
}
 
void AddSC_boss_gruul()
{
    Script *newscript;
    newscript = new Script;
    newscript->Name = "boss_gruul";
    newscript->GetAI = &GetAI_boss_gruul;
    newscript->RegisterSelf();
}
взял отсюда
https://scriptdev2.svn.sourceforge.n...nd/gruuls_lair
Помогите только с коментами, что есть что...
Хорошо бы, если обьяснили действия войдов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 13:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru