- Katılım
- 16 Tem 2019
- Konular
- 715
- Mesajlar
- 3,551
- Çözüm
- 47
- Online süresi
- 6mo 20d
- Reaksiyon Skoru
- 2,110
- Altın Konu
- 34
- Başarım Puanı
- 309
- MmoLira
- 19,559
- DevLira
- 122
ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!
Örneğin çöle bir boss sabitlerken tek kanal olması için çölü game99 a taşıyorduk. Ben bunu yapmak istemiyordum bu yüzden regen.cpp de birkaç değişiklik yaptım. Başlığa tek kanal yazdım ama istediğiniz kanala ayarlayabiliyorsunuz. Yani mobun sadece ch1 ve ch3 de çıkmasını kolaylıkla ayarlayabiliyorsunuz. Baştan söyleyeyim anlatması kod yazmasından daha zor.
Kullanımı:
Anlatım:
Not: Anlatımda yanlışlık yapmam ihtimaline karşılık regen.cpp ve regen.h dosyasını aşağıya ekliyorum.
Common/ service.h
Game/regen.h
Game/regen.cpp
Kullanımı:
Kod:
regen.txt dosyasında ki z kısmını sistem kullanmıyordu bende orayı ch ye çevirdim.
Bu kısmı;
Hiç değiştirmezseniz (0) bütün kanallarda çıkar.
1 yaparsanız sadece ch1
2 yaparsanız sadece ch2
4 yaparsanız sadece ch3
8 yaparsanız sadece ch4
16 yaparsanız sadece ch5
32 yaparsanız sadece ch6
1+2 yani 3 yaparsanız ch1 ve ch2
1+2+4 yani 7 yaparsanız ch1 ve ch2 ve ch3
1+4 yani 5 yaparsanız ch1 ve ch3
2+8 yani 10 yaparsanız ch2 ve ch4
Antiflag hesaplamayla aynı.
Anlatım:
Not: Anlatımda yanlışlık yapmam ihtimaline karşılık regen.cpp ve regen.h dosyasını aşağıya ekliyorum.
Common/ service.h
Kod:
#define ELISIA_REGEN_CHANNEL_SECTION // Bir ve ya birden fazla ch ye mob sabitleme
Game/regen.h
Kod:
enum
{
REGEN_TYPE_MOB,
REGEN_TYPE_GROUP,
REGEN_TYPE_EXCEPTION,
REGEN_TYPE_GROUP_GROUP,
REGEN_TYPE_ANYWHERE,
REGEN_TYPE_MAX_NUM
};
// ALTINA EKLE
#ifdef ELISIA_REGEN_CHANNEL_SECTION
enum REGEN_CHANNEL
{
REGEN_CHANNEL_CH1 = (1 << 0), // 1
REGEN_CHANNEL_CH2 = (1 << 1), // 2
REGEN_CHANNEL_CH3 = (1 << 2), // 4
REGEN_CHANNEL_CH4 = (1 << 3), // 8
REGEN_CHANNEL_CH5 = (1 << 4), // 16
REGEN_CHANNEL_CH6 = (1 << 5), // 32
};
#endif
// typedef struct regen içerisinde ARAT
bool is_aggressive;
// ALTINA EKLE
#ifdef ELISIA_REGEN_CHANNEL_SECTION
DWORD channelFlag;
#endif
// typedef struct regen içerisinde ARAT
is_aggressive(0),
// ALTINA EKLE
#ifdef ELISIA_REGEN_CHANNEL_SECTION
channelFlag(0),
#endif
Game/regen.cpp
Kod:
// static bool read_line(FILE *fp, LPREGEN regen) İÇİNDE ARAT
str_to_number(regen->z_section, szTmp);
// DEĞİŞTİR
#ifdef ELISIA_REGEN_CHANNEL_SECTION
str_to_number(regen->z_section, 0);
str_to_number(regen->channelFlag, szTmp);
#else
str_to_number(regen->z_section, szTmp);
#endif
// ARAT
static void regen_spawn(LPREGEN regen, bool bOnce)
// KOMPLE DEĞİŞTİR
static void regen_spawn(LPREGEN regen, bool bOnce)
{
DWORD num;
DWORD i;
num = (regen->max_count - regen->count);
if (!num)
return;
for (i = 0; i < num; ++i)
{
LPCHARACTER ch = NULL;
if (regen->type == REGEN_TYPE_ANYWHERE)
{
ch = CHARACTER_MANAGER::instance().SpawnMobRandomPosition(regen->vnum, regen->lMapIndex);
if (ch)
++regen->count;
}
else if (regen->sx == regen->ex && regen->sy == regen->ey)
{
#ifdef ELISIA_REGEN_CHANNEL_SECTION
if (regen->channelFlag > 0)
{
if ((g_bChannel == 1 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH1))
|| (g_bChannel == 2 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH2))
|| (g_bChannel == 3 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH3))
|| (g_bChannel == 4 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH4))
|| (g_bChannel == 5 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH5))
|| (g_bChannel == 6 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH6)))
{
ch = CHARACTER_MANAGER::instance().SpawnMob(regen->vnum,
regen->lMapIndex,
regen->sx,
regen->sy,
regen->z_section,
false,
regen->direction == 0 ? number(0, 7) * 45 : (regen->direction - 1) * 45);
if (ch)
++regen->count;
}
}
else
{
ch = CHARACTER_MANAGER::instance().SpawnMob(regen->vnum,
regen->lMapIndex,
regen->sx,
regen->sy,
regen->z_section,
false,
regen->direction == 0 ? number(0, 7) * 45 : (regen->direction - 1) * 45);
if (ch)
++regen->count;
}
#else
ch = CHARACTER_MANAGER::instance().SpawnMob(regen->vnum,
regen->lMapIndex,
regen->sx,
regen->sy,
regen->z_section,
false,
regen->direction == 0 ? number(0, 7) * 45 : (regen->direction - 1) * 45);
if (ch)
++regen->count;
#endif
}
else
{
if (regen->type == REGEN_TYPE_MOB)
{
#ifdef ELISIA_REGEN_CHANNEL_SECTION
if (regen->channelFlag > 0)
{
if ((g_bChannel == 1 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH1))
|| (g_bChannel == 2 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH2))
|| (g_bChannel == 3 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH3))
|| (g_bChannel == 4 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH4))
|| (g_bChannel == 5 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH5))
|| (g_bChannel == 6 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH6)))
{
ch = CHARACTER_MANAGER::Instance().SpawnMobRange(regen->vnum, regen->lMapIndex, regen->sx, regen->sy, regen->ex, regen->ey, true, regen->is_aggressive, regen->is_aggressive);
if (ch)
++regen->count;
}
}
else
{
ch = CHARACTER_MANAGER::Instance().SpawnMobRange(regen->vnum, regen->lMapIndex, regen->sx, regen->sy, regen->ex, regen->ey, true, regen->is_aggressive, regen->is_aggressive);
if (ch)
++regen->count;
}
#else
ch = CHARACTER_MANAGER::Instance().SpawnMobRange(regen->vnum, regen->lMapIndex, regen->sx, regen->sy, regen->ex, regen->ey, true, regen->is_aggressive, regen->is_aggressive );
if (ch)
++regen->count;
#endif
}
else if (regen->type == REGEN_TYPE_GROUP)
{
#ifdef ELISIA_REGEN_CHANNEL_SECTION
if (regen->channelFlag > 0)
{
if ((g_bChannel == 1 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH1))
|| (g_bChannel == 2 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH2))
|| (g_bChannel == 3 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH3))
|| (g_bChannel == 4 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH4))
|| (g_bChannel == 5 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH5))
|| (g_bChannel == 6 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH6)))
{
if (CHARACTER_MANAGER::Instance().SpawnGroup(regen->vnum, regen->lMapIndex, regen->sx, regen->sy, regen->ex, regen->ey, bOnce ? NULL : regen, regen->is_aggressive))
++regen->count;
}
}
else
{
if (CHARACTER_MANAGER::Instance().SpawnGroup(regen->vnum, regen->lMapIndex, regen->sx, regen->sy, regen->ex, regen->ey, bOnce ? NULL : regen, regen->is_aggressive))
++regen->count;
}
#else
if (CHARACTER_MANAGER::Instance().SpawnGroup(regen->vnum, regen->lMapIndex, regen->sx, regen->sy, regen->ex, regen->ey, bOnce ? NULL : regen, regen->is_aggressive))
++regen->count;
#endif
}
else if (regen->type == REGEN_TYPE_GROUP_GROUP)
{
#ifdef ELISIA_REGEN_CHANNEL_SECTION
if (regen->channelFlag > 0)
{
if ((g_bChannel == 1 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH1))
|| (g_bChannel == 2 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH2))
|| (g_bChannel == 3 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH3))
|| (g_bChannel == 4 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH4))
|| (g_bChannel == 5 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH5))
|| (g_bChannel == 6 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH6)))
{
if (CHARACTER_MANAGER::Instance().SpawnGroupGroup(regen->vnum, regen->lMapIndex, regen->sx, regen->sy, regen->ex, regen->ey, bOnce ? NULL : regen, regen->is_aggressive))
++regen->count;
}
}
else
{
if (CHARACTER_MANAGER::Instance().SpawnGroupGroup(regen->vnum, regen->lMapIndex, regen->sx, regen->sy, regen->ex, regen->ey, bOnce ? NULL : regen, regen->is_aggressive))
++regen->count;
}
#else
if (CHARACTER_MANAGER::Instance().SpawnGroupGroup(regen->vnum, regen->lMapIndex, regen->sx, regen->sy, regen->ex, regen->ey, bOnce ? NULL : regen, regen->is_aggressive))
++regen->count;
#endif
}
}
if (ch && !bOnce)
ch->SetRegen(regen);
}
}
Son düzenleme:
- Katılım
- 27 Ara 2018
- Konular
- 17
- Mesajlar
- 616
- Çözüm
- 5
- Online süresi
- 1mo 21d
- Reaksiyon Skoru
- 219
- Altın Konu
- 0
- TM Yaşı
- 7 Yıl 5 Ay 16 Gün
- Başarım Puanı
- 136
- Yaş
- 28
- MmoLira
- 6,218
- DevLira
- 3
Örneğin çöle bir boss sabitlerken tek kanal olması için çölü game99 a taşıyorduk. Ben bunu yapmak istemiyordum bu yüzden regen.cpp de birkaç değişiklik yaptım. Başlığa tek kanal yazdım ama istediğiniz kanala ayarlayabiliyorsunuz. Yani mobun sadece ch1 ve ch3 de çıkmasını kolaylıkla ayarlayabiliyorsunuz. Baştan söyleyeyim anlatması kod yazmasından daha zor.
Kullanımı:
Kod:regen.txt dosyasında ki z kısmını sistem kullanmıyordu bende orayı ch ye çevirdim. Bu kısmı; Hiç değiştirmezseniz (0) bütün kanallarda çıkar. 1 yaparsanız sadece ch1 2 yaparsanız sadece ch2 4 yaparsanız sadece ch3 8 yaparsanız sadece ch4 16 yaparsanız sadece ch5 32 yaparsanız sadece ch6 1+2 yani 3 yaparsanız ch1 ve ch2 1+2+4 yani 7 yaparsanız ch1 ve ch2 ve ch3 1+4 yani 5 yaparsanız ch1 ve ch3 2+8 yani 10 yaparsanız ch2 ve ch4 Antiflag hesaplamayla aynı.
Anlatım:
Not: Anlatımda yanlışlık yapmam ihtimaline karşılık regen.cpp ve regen.h dosyasını aşağıya ekliyorum.
Common/ service.h
Kod:#define ELISIA_REGEN_CHANNEL_SECTION // Bir ve ya birden fazla ch ye mob sabitleme
Game/regen.h
Kod:enum { REGEN_TYPE_MOB, REGEN_TYPE_GROUP, REGEN_TYPE_EXCEPTION, REGEN_TYPE_GROUP_GROUP, REGEN_TYPE_ANYWHERE, REGEN_TYPE_MAX_NUM }; // ALTINA EKLE #ifdef ELISIA_REGEN_CHANNEL_SECTION enum REGEN_CHANNEL { REGEN_CHANNEL_CH1 = (1 << 0), // 1 REGEN_CHANNEL_CH2 = (1 << 1), // 2 REGEN_CHANNEL_CH3 = (1 << 2), // 4 REGEN_CHANNEL_CH4 = (1 << 3), // 8 REGEN_CHANNEL_CH5 = (1 << 4), // 16 REGEN_CHANNEL_CH6 = (1 << 5), // 32 }; #endif // typedef struct regen içerisinde ARAT bool is_aggressive; // ALTINA EKLE #ifdef ELISIA_REGEN_CHANNEL_SECTION DWORD channelFlag; #endif // typedef struct regen içerisinde ARAT is_aggressive(0), // ALTINA EKLE #ifdef ELISIA_REGEN_CHANNEL_SECTION channelFlag(0), #endif
Game/regen.cpp
Kod:// static bool read_line(FILE *fp, LPREGEN regen) İÇİNDE ARAT str_to_number(regen->z_section, szTmp); // DEĞİŞTİR #ifdef ELISIA_REGEN_CHANNEL_SECTION str_to_number(regen->z_section, 0); str_to_number(regen->channelFlag, szTmp); #else str_to_number(regen->z_section, szTmp); #endif // ARAT static void regen_spawn(LPREGEN regen, bool bOnce) // KOMPLE DEĞİŞTİR static void regen_spawn(LPREGEN regen, bool bOnce) { DWORD num; DWORD i; num = (regen->max_count - regen->count); if (!num) return; for (i = 0; i < num; ++i) { LPCHARACTER ch = NULL; if (regen->type == REGEN_TYPE_ANYWHERE) { ch = CHARACTER_MANAGER::instance().SpawnMobRandomPosition(regen->vnum, regen->lMapIndex); if (ch) ++regen->count; } else if (regen->sx == regen->ex && regen->sy == regen->ey) { #ifdef ELISIA_REGEN_CHANNEL_SECTION if (regen->channelFlag > 0) { if ((g_bChannel == 1 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH1)) || (g_bChannel == 2 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH2)) || (g_bChannel == 3 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH3)) || (g_bChannel == 4 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH4)) || (g_bChannel == 5 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH5)) || (g_bChannel == 6 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH6))) { ch = CHARACTER_MANAGER::instance().SpawnMob(regen->vnum, regen->lMapIndex, regen->sx, regen->sy, regen->z_section, false, regen->direction == 0 ? number(0, 7) * 45 : (regen->direction - 1) * 45); if (ch) ++regen->count; } } else { ch = CHARACTER_MANAGER::instance().SpawnMob(regen->vnum, regen->lMapIndex, regen->sx, regen->sy, regen->z_section, false, regen->direction == 0 ? number(0, 7) * 45 : (regen->direction - 1) * 45); if (ch) ++regen->count; } #else ch = CHARACTER_MANAGER::instance().SpawnMob(regen->vnum, regen->lMapIndex, regen->sx, regen->sy, regen->z_section, false, regen->direction == 0 ? number(0, 7) * 45 : (regen->direction - 1) * 45); if (ch) ++regen->count; #endif } else { if (regen->type == REGEN_TYPE_MOB) { #ifdef ELISIA_REGEN_CHANNEL_SECTION if (regen->channelFlag > 0) { if ((g_bChannel == 1 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH1)) || (g_bChannel == 2 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH2)) || (g_bChannel == 3 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH3)) || (g_bChannel == 4 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH4)) || (g_bChannel == 5 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH5)) || (g_bChannel == 6 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH6))) { ch = CHARACTER_MANAGER::Instance().SpawnMobRange(regen->vnum, regen->lMapIndex, regen->sx, regen->sy, regen->ex, regen->ey, true, regen->is_aggressive, regen->is_aggressive); if (ch) ++regen->count; } } else { ch = CHARACTER_MANAGER::Instance().SpawnMobRange(regen->vnum, regen->lMapIndex, regen->sx, regen->sy, regen->ex, regen->ey, true, regen->is_aggressive, regen->is_aggressive); if (ch) ++regen->count; } #else ch = CHARACTER_MANAGER::Instance().SpawnMobRange(regen->vnum, regen->lMapIndex, regen->sx, regen->sy, regen->ex, regen->ey, true, regen->is_aggressive, regen->is_aggressive ); if (ch) ++regen->count; #endif } else if (regen->type == REGEN_TYPE_GROUP) { #ifdef ELISIA_REGEN_CHANNEL_SECTION if (regen->channelFlag > 0) { if ((g_bChannel == 1 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH1)) || (g_bChannel == 2 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH2)) || (g_bChannel == 3 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH3)) || (g_bChannel == 4 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH4)) || (g_bChannel == 5 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH5)) || (g_bChannel == 6 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH6))) { if (CHARACTER_MANAGER::Instance().SpawnGroup(regen->vnum, regen->lMapIndex, regen->sx, regen->sy, regen->ex, regen->ey, bOnce ? NULL : regen, regen->is_aggressive)) ++regen->count; } } else { if (CHARACTER_MANAGER::Instance().SpawnGroup(regen->vnum, regen->lMapIndex, regen->sx, regen->sy, regen->ex, regen->ey, bOnce ? NULL : regen, regen->is_aggressive)) ++regen->count; } #else if (CHARACTER_MANAGER::Instance().SpawnGroup(regen->vnum, regen->lMapIndex, regen->sx, regen->sy, regen->ex, regen->ey, bOnce ? NULL : regen, regen->is_aggressive)) ++regen->count; #endif } else if (regen->type == REGEN_TYPE_GROUP_GROUP) { #ifdef ELISIA_REGEN_CHANNEL_SECTION if (regen->channelFlag > 0) { if ((g_bChannel == 1 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH1)) || (g_bChannel == 2 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH2)) || (g_bChannel == 3 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH3)) || (g_bChannel == 4 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH4)) || (g_bChannel == 5 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH5)) || (g_bChannel == 6 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH6))) { if (CHARACTER_MANAGER::Instance().SpawnGroupGroup(regen->vnum, regen->lMapIndex, regen->sx, regen->sy, regen->ex, regen->ey, bOnce ? NULL : regen, regen->is_aggressive)) ++regen->count; } } else { if (CHARACTER_MANAGER::Instance().SpawnGroupGroup(regen->vnum, regen->lMapIndex, regen->sx, regen->sy, regen->ex, regen->ey, bOnce ? NULL : regen, regen->is_aggressive)) ++regen->count; } #else if (CHARACTER_MANAGER::Instance().SpawnGroupGroup(regen->vnum, regen->lMapIndex, regen->sx, regen->sy, regen->ex, regen->ey, bOnce ? NULL : regen, regen->is_aggressive)) ++regen->count; #endif } } if (ch && !bOnce) ch->SetRegen(regen); } }
Teşekkürler
- Katılım
- 16 Nis 2020
- Konular
- 6
- Mesajlar
- 83
- Çözüm
- 1
- Online süresi
- 1mo 6d
- Reaksiyon Skoru
- 33
- Altın Konu
- 0
- TM Yaşı
- 6 Yıl 1 Ay 25 Gün
- Başarım Puanı
- 68
- Yaş
- 28
- MmoLira
- 1,536
- DevLira
- 0
Paylaşım için teşekkürler
- Katılım
- 24 Kas 2011
- Konular
- 50
- Mesajlar
- 277
- Online süresi
- 18d 22h
- Reaksiyon Skoru
- 137
- Altın Konu
- 7
- Başarım Puanı
- 159
- Yaş
- 37
- MmoLira
- 1,061
- DevLira
- 0
Herkesin işine yarar bu 

- Katılım
- 16 Eki 2009
- Konular
- 82
- Mesajlar
- 2,278
- Çözüm
- 1
- Online süresi
- 22d 19h
- Reaksiyon Skoru
- 825
- Altın Konu
- 16
- Başarım Puanı
- 239
- Yaş
- 36
- MmoLira
- 4,621
- DevLira
- 12
Örneğin çöle bir boss sabitlerken tek kanal olması için çölü game99 a taşıyorduk. Ben bunu yapmak istemiyordum bu yüzden regen.cpp de birkaç değişiklik yaptım. Başlığa tek kanal yazdım ama istediğiniz kanala ayarlayabiliyorsunuz. Yani mobun sadece ch1 ve ch3 de çıkmasını kolaylıkla ayarlayabiliyorsunuz. Baştan söyleyeyim anlatması kod yazmasından daha zor.
Kullanımı:
Kod:regen.txt dosyasında ki z kısmını sistem kullanmıyordu bende orayı ch ye çevirdim. Bu kısmı; Hiç değiştirmezseniz (0) bütün kanallarda çıkar. 1 yaparsanız sadece ch1 2 yaparsanız sadece ch2 4 yaparsanız sadece ch3 8 yaparsanız sadece ch4 16 yaparsanız sadece ch5 32 yaparsanız sadece ch6 1+2 yani 3 yaparsanız ch1 ve ch2 1+2+4 yani 7 yaparsanız ch1 ve ch2 ve ch3 1+4 yani 5 yaparsanız ch1 ve ch3 2+8 yani 10 yaparsanız ch2 ve ch4 Antiflag hesaplamayla aynı.
Anlatım:
Not: Anlatımda yanlışlık yapmam ihtimaline karşılık regen.cpp ve regen.h dosyasını aşağıya ekliyorum.
Common/ service.h
Kod:#define ELISIA_REGEN_CHANNEL_SECTION // Bir ve ya birden fazla ch ye mob sabitleme
Game/regen.h
Kod:enum { REGEN_TYPE_MOB, REGEN_TYPE_GROUP, REGEN_TYPE_EXCEPTION, REGEN_TYPE_GROUP_GROUP, REGEN_TYPE_ANYWHERE, REGEN_TYPE_MAX_NUM }; // ALTINA EKLE #ifdef ELISIA_REGEN_CHANNEL_SECTION enum REGEN_CHANNEL { REGEN_CHANNEL_CH1 = (1 << 0), // 1 REGEN_CHANNEL_CH2 = (1 << 1), // 2 REGEN_CHANNEL_CH3 = (1 << 2), // 4 REGEN_CHANNEL_CH4 = (1 << 3), // 8 REGEN_CHANNEL_CH5 = (1 << 4), // 16 REGEN_CHANNEL_CH6 = (1 << 5), // 32 }; #endif // typedef struct regen içerisinde ARAT bool is_aggressive; // ALTINA EKLE #ifdef ELISIA_REGEN_CHANNEL_SECTION DWORD channelFlag; #endif // typedef struct regen içerisinde ARAT is_aggressive(0), // ALTINA EKLE #ifdef ELISIA_REGEN_CHANNEL_SECTION channelFlag(0), #endif
Game/regen.cpp
Kod:// static bool read_line(FILE *fp, LPREGEN regen) İÇİNDE ARAT str_to_number(regen->z_section, szTmp); // DEĞİŞTİR #ifdef ELISIA_REGEN_CHANNEL_SECTION str_to_number(regen->z_section, 0); str_to_number(regen->channelFlag, szTmp); #else str_to_number(regen->z_section, szTmp); #endif // ARAT static void regen_spawn(LPREGEN regen, bool bOnce) // KOMPLE DEĞİŞTİR static void regen_spawn(LPREGEN regen, bool bOnce) { DWORD num; DWORD i; num = (regen->max_count - regen->count); if (!num) return; for (i = 0; i < num; ++i) { LPCHARACTER ch = NULL; if (regen->type == REGEN_TYPE_ANYWHERE) { ch = CHARACTER_MANAGER::instance().SpawnMobRandomPosition(regen->vnum, regen->lMapIndex); if (ch) ++regen->count; } else if (regen->sx == regen->ex && regen->sy == regen->ey) { #ifdef ELISIA_REGEN_CHANNEL_SECTION if (regen->channelFlag > 0) { if ((g_bChannel == 1 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH1)) || (g_bChannel == 2 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH2)) || (g_bChannel == 3 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH3)) || (g_bChannel == 4 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH4)) || (g_bChannel == 5 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH5)) || (g_bChannel == 6 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH6))) { ch = CHARACTER_MANAGER::instance().SpawnMob(regen->vnum, regen->lMapIndex, regen->sx, regen->sy, regen->z_section, false, regen->direction == 0 ? number(0, 7) * 45 : (regen->direction - 1) * 45); if (ch) ++regen->count; } } else { ch = CHARACTER_MANAGER::instance().SpawnMob(regen->vnum, regen->lMapIndex, regen->sx, regen->sy, regen->z_section, false, regen->direction == 0 ? number(0, 7) * 45 : (regen->direction - 1) * 45); if (ch) ++regen->count; } #else ch = CHARACTER_MANAGER::instance().SpawnMob(regen->vnum, regen->lMapIndex, regen->sx, regen->sy, regen->z_section, false, regen->direction == 0 ? number(0, 7) * 45 : (regen->direction - 1) * 45); if (ch) ++regen->count; #endif } else { if (regen->type == REGEN_TYPE_MOB) { #ifdef ELISIA_REGEN_CHANNEL_SECTION if (regen->channelFlag > 0) { if ((g_bChannel == 1 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH1)) || (g_bChannel == 2 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH2)) || (g_bChannel == 3 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH3)) || (g_bChannel == 4 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH4)) || (g_bChannel == 5 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH5)) || (g_bChannel == 6 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH6))) { ch = CHARACTER_MANAGER::Instance().SpawnMobRange(regen->vnum, regen->lMapIndex, regen->sx, regen->sy, regen->ex, regen->ey, true, regen->is_aggressive, regen->is_aggressive); if (ch) ++regen->count; } } else { ch = CHARACTER_MANAGER::Instance().SpawnMobRange(regen->vnum, regen->lMapIndex, regen->sx, regen->sy, regen->ex, regen->ey, true, regen->is_aggressive, regen->is_aggressive); if (ch) ++regen->count; } #else ch = CHARACTER_MANAGER::Instance().SpawnMobRange(regen->vnum, regen->lMapIndex, regen->sx, regen->sy, regen->ex, regen->ey, true, regen->is_aggressive, regen->is_aggressive ); if (ch) ++regen->count; #endif } else if (regen->type == REGEN_TYPE_GROUP) { #ifdef ELISIA_REGEN_CHANNEL_SECTION if (regen->channelFlag > 0) { if ((g_bChannel == 1 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH1)) || (g_bChannel == 2 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH2)) || (g_bChannel == 3 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH3)) || (g_bChannel == 4 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH4)) || (g_bChannel == 5 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH5)) || (g_bChannel == 6 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH6))) { if (CHARACTER_MANAGER::Instance().SpawnGroup(regen->vnum, regen->lMapIndex, regen->sx, regen->sy, regen->ex, regen->ey, bOnce ? NULL : regen, regen->is_aggressive)) ++regen->count; } } else { if (CHARACTER_MANAGER::Instance().SpawnGroup(regen->vnum, regen->lMapIndex, regen->sx, regen->sy, regen->ex, regen->ey, bOnce ? NULL : regen, regen->is_aggressive)) ++regen->count; } #else if (CHARACTER_MANAGER::Instance().SpawnGroup(regen->vnum, regen->lMapIndex, regen->sx, regen->sy, regen->ex, regen->ey, bOnce ? NULL : regen, regen->is_aggressive)) ++regen->count; #endif } else if (regen->type == REGEN_TYPE_GROUP_GROUP) { #ifdef ELISIA_REGEN_CHANNEL_SECTION if (regen->channelFlag > 0) { if ((g_bChannel == 1 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH1)) || (g_bChannel == 2 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH2)) || (g_bChannel == 3 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH3)) || (g_bChannel == 4 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH4)) || (g_bChannel == 5 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH5)) || (g_bChannel == 6 && IS_SET(regen->channelFlag, REGEN_CHANNEL_CH6))) { if (CHARACTER_MANAGER::Instance().SpawnGroupGroup(regen->vnum, regen->lMapIndex, regen->sx, regen->sy, regen->ex, regen->ey, bOnce ? NULL : regen, regen->is_aggressive)) ++regen->count; } } else { if (CHARACTER_MANAGER::Instance().SpawnGroupGroup(regen->vnum, regen->lMapIndex, regen->sx, regen->sy, regen->ex, regen->ey, bOnce ? NULL : regen, regen->is_aggressive)) ++regen->count; } #else if (CHARACTER_MANAGER::Instance().SpawnGroupGroup(regen->vnum, regen->lMapIndex, regen->sx, regen->sy, regen->ex, regen->ey, bOnce ? NULL : regen, regen->is_aggressive)) ++regen->count; #endif } } if (ch && !bOnce) ch->SetRegen(regen); } }
Paylaşım için teşekkürler.
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 0
- Görüntüleme
- 275
- Cevaplar
- 37
- Görüntüleme
- 2K
- Cevaplar
- 8
- Görüntüleme
- 2K
- Cevaplar
- 25
- Görüntüleme
- 9K









