Jump to content
Araştır
  • Diğer seçenekler ...
Sonuçları bul ...
Sonuçları bul ...
byxox

BDW Hakkında ufak bir soru

Önerilen Mesajlar

Arkadaşlar merhabalar,

BDW sisteminde mesela 8vs8 olmadan içeriye almıyor hata veriyor ve giremiyoruz.
2 orc 3 human olduğunda hiçkimseyi almıyor bu konuda nereye bakmalıyım yardımcı olabilir misiniz? Teşekkürler.

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı
@ byxox, alakalı fonksiyonu atarsan sorunun nerede olduğu hakkında yorum yapabiliriz.


border_defance olarak 7-8 yerde fonsksyon var tam nereye bakmalıyım acaba?

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı
border_defance olarak 7-8 yerde fonsksyon var tam nereye bakmalıyım acaba?


Kullanıcıların kayıt olduğu bir array olması lazım, ve bu array üzerinde döngü kurup koşulları kontrol eden bir fonksiyon. BDW ile alakalı fonksiyonlar içerisinde ZoneChange fonksiyonunu çağıranları buraya kopyala.

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı
Kullanıcıların kayıt olduğu bir array olması lazım, ve bu array üzerinde döngü kurup koşulları kontrol eden bir fonksiyon. BDW ile alakalı fonksiyonlar içerisinde ZoneChange fonksiyonunu çağıranları buraya kopyala.


merhabalar dostum

arama yaptıgım yazılar :

border_defense_war
bdw
zonechange olarak arama yaptım bdw ıle ılgılı olarak zonechange ıceren burayı buldum sadece :


Gameserverdgl.cpp

if (pTempleEvent.ZoneID == ZONE_BORDER_DEFENSE_WAR)
{
pUser->ZoneChange(pTempleEvent.ZoneID,0.0f,0.0f);
TerminitionTime(ZONE_BORDER_DEFENSE_WAR, 1801);

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı
merhabalar dostum

arama yaptıgım yazılar :

border_defense_war
bdw
zonechange olarak arama yaptım bdw ıle ılgılı olarak zonechange ıceren burayı buldum sadece :


Gameserverdgl.cpp

if (pTempleEvent.ZoneID == ZONE_BORDER_DEFENSE_WAR)
{
pUser->ZoneChange(pTempleEvent.ZoneID,0.0f,0.0f);
TerminitionTime(ZONE_BORDER_DEFENSE_WAR, 1801);


Burası olabilir, fonksiyonu tamamen atman lazım.

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı
Burası olabilir, fonksiyonu tamamen atman lazım.



void CGameServerDlg::TempleEventTeleportUsers()

{
switch (pTempleEvent.ActiveEvent)
{
case TEMPLE_EVENT_BORDER_DEFENCE_WAR:
pTempleEvent.isAttackable = false;
break;
case TEMPLE_EVENT_CHAOS:
pTempleEvent.isAttackable = false;
break;
case TEMPLE_EVENT_JURAD_MOUNTAIN:
pTempleEvent.isAttackable = false;
break;
case TEMPLE_EVENT_UTC:
pTempleEvent.isAttackable = false;
break;
}

foreach_stlmap (itr, m_TempleEventUserArray)
{
CUser * pUser = GetUserPtr(itr->second->m_socketID);

if (pUser == nullptr
|| !pUser->isInGame())
continue;

//Evente Giren Userin Seekte Kalması.
Packet result;
pUser->PartyBBSDelete(result);

if (pTempleEvent.ZoneID == ZONE_CHAOS_DUNGEON)
{
if (pUser->CheckExistItem(CHAOS_MAP, 1))
pUser->RobItem(CHAOS_MAP, 1);

pUser->ZoneChange(pTempleEvent.ZoneID,0.0f,0.0f); // Start position is random...
TerminitionTime(ZONE_CHAOS_DUNGEON,1201);
}
if (pTempleEvent.ZoneID == ZONE_JURAD_MOUNTAIN)
{
pUser->JuraidSpot = 0;
pUser->ZoneChange(pTempleEvent.ZoneID,0.0f,0.0f);
TerminitionTime(ZONE_JURAD_MOUNTAIN, 3001);
}
if (pTempleEvent.ZoneID == ZONE_BORDER_DEFENSE_WAR)
{
pUser->ZoneChange(pTempleEvent.ZoneID,0.0f,0.0f);
TerminitionTime(ZONE_BORDER_DEFENSE_WAR, 1801);
}
if (pTempleEvent.ZoneID == ZONE_UNDER_THE_CASTLE)
{
pUser->ZoneChange(pTempleEvent.ZoneID,0.0f,0.0f);
TerminitionTime(ZONE_UNDER_THE_CASTLE, 3601);
}
}
}

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı
void CGameServerDlg::TempleEventTeleportUsers()

{
switch (pTempleEvent.ActiveEvent)
{
case TEMPLE_EVENT_BORDER_DEFENCE_WAR:
pTempleEvent.isAttackable = false;
break;
case TEMPLE_EVENT_CHAOS:
pTempleEvent.isAttackable = false;
break;
case TEMPLE_EVENT_JURAD_MOUNTAIN:
pTempleEvent.isAttackable = false;
break;
case TEMPLE_EVENT_UTC:
pTempleEvent.isAttackable = false;
break;
}

foreach_stlmap (itr, m_TempleEventUserArray)
{
CUser * pUser = GetUserPtr(itr->second->m_socketID);

if (pUser == nullptr
|| !pUser->isInGame())
continue;

//Evente Giren Userin Seekte Kalması.
Packet result;
pUser->PartyBBSDelete(result);

if (pTempleEvent.ZoneID == ZONE_CHAOS_DUNGEON)
{
if (pUser->CheckExistItem(CHAOS_MAP, 1))
pUser->RobItem(CHAOS_MAP, 1);

pUser->ZoneChange(pTempleEvent.ZoneID,0.0f,0.0f); // Start position is random...
TerminitionTime(ZONE_CHAOS_DUNGEON,1201);
}
if (pTempleEvent.ZoneID == ZONE_JURAD_MOUNTAIN)
{
pUser->JuraidSpot = 0;
pUser->ZoneChange(pTempleEvent.ZoneID,0.0f,0.0f);
TerminitionTime(ZONE_JURAD_MOUNTAIN, 3001);
}
if (pTempleEvent.ZoneID == ZONE_BORDER_DEFENSE_WAR)
{
pUser->ZoneChange(pTempleEvent.ZoneID,0.0f,0.0f);
TerminitionTime(ZONE_BORDER_DEFENSE_WAR, 1801);
}
if (pTempleEvent.ZoneID == ZONE_UNDER_THE_CASTLE)
{
pUser->ZoneChange(pTempleEvent.ZoneID,0.0f,0.0f);
TerminitionTime(ZONE_UNDER_THE_CASTLE, 3601);
}
}
}

Burada bir kısıtlama göremedim.
void CGameServerDlg::TempleEventTeleportUsers() bu fonksiyon nerede call edilmiş ise oradaki kodlarıda atar mısın?

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı
Burada bir kısıtlama göremedim.
void CGameServerDlg::TempleEventTeleportUsers() bu fonksiyon nerede call edilmiş ise oradaki kodlarıda atar mısın?


void CGameServerDlg::TempleEventTimer()

{
uint32 nHour = g_localTime.tm_hour;
uint32 nMinute = g_localTime.tm_min;
uint32 nSeconds = g_localTime.tm_sec;

if (m_nTempleEventRemainSeconds > 0)
m_nTempleEventRemainSeconds--;

if (pTempleEvent.ActiveEvent == -1)
{
for (int i = 0; i {
if (nHour == m_nBorderDefenseWarTime[i] && nMinute == 0)
{
pTempleEvent.ActiveEvent = TEMPLE_EVENT_BORDER_DEFENCE_WAR;
pTempleEvent.ZoneID = ZONE_BORDER_DEFENSE_WAR;
m_nTempleEventRemainSeconds = 600; // 10 minutes
TempleEventStart();
break;
}
}

for (int i = 0; i {
if (nHour == m_nChaosTime[i] && nMinute == 0)
{
pTempleEvent.ActiveEvent = TEMPLE_EVENT_CHAOS;
pTempleEvent.ZoneID = ZONE_CHAOS_DUNGEON;
m_nTempleEventRemainSeconds = 600; // 10 minutes
TempleEventStart();
break;
}
}

for (int i = 0; i {
if (nHour == m_nJuraidTime[i] && nMinute == 0)
{
pTempleEvent.ActiveEvent = TEMPLE_EVENT_JURAD_MOUNTAIN;
pTempleEvent.ZoneID = ZONE_JURAD_MOUNTAIN;
m_nTempleEventRemainSeconds = 600; // 10 minutes
JuraidAnnounce = 0;
JuraidTempleEventStart();
break;
}
}
for (int i = 0; i {
if (nHour == m_nUtcTime[i] && nMinute == 0)
{
pTempleEvent.ActiveEvent = TEMPLE_EVENT_UTC;
pTempleEvent.ZoneID = ZONE_UNDER_THE_CASTLE;
m_nTempleEventRemainSeconds = 600; // 10 minutes
TempleEventStart();
break;
}
}
}
else if (pTempleEvent.ActiveEvent != -1)
{
if (pTempleEvent.ActiveEvent == TEMPLE_EVENT_BORDER_DEFENCE_WAR)
{
for(int i =0; i {
if(pTempleEvent.m_sMiniTimerNation[i] == 0)
continue;

if(pTempleEvent.m_sBdwMiniTimer[i]-- != 0 )
continue;

TempleEventFinish(i,pTempleEvent.m_sMiniTimerNation[i]);
}
for(int i = 0; i {
if (nHour == m_nBorderDefenseWarTime[i] && nMinute == 10 && !pTempleEvent.isActive)
{
m_nTempleEventRemainSeconds = 0;
pTempleEvent.LastEventRoom = 1;
pTempleEvent.isActive = true;
TempleEventStart();
TempleEventTeleportUsers();
TempleEventSummon();
break;
}
else if (nHour == m_nBorderDefenseWarTime[i] && nMinute == 11 && !pTempleEvent.isAttackable)
{
pTempleEvent.isAttackable = true;
break;
}
else if (nHour == m_nBorderDefenseWarTime[i] && nMinute == 40 && pTempleEvent.isAttackable)
{
TerminationFinish();
pTempleEvent.isAttackable = false;
break;
}
else if (nHour == m_nBorderDefenseWarTime[i] && nMinute == 40 && nSeconds == 20 && pTempleEvent.isActive)
{
TempleEventFinish();
break;
}
}
}
if (pTempleEvent.ActiveEvent == TEMPLE_EVENT_CHAOS)
{
for(int i = 0; i {
if (nHour == m_nChaosTime[i] && nMinute == 10 && nSeconds == 0 && !pTempleEvent.isActive)
{
m_nTempleEventRemainSeconds = 0;
pTempleEvent.LastEventRoom = 1;
pTempleEvent.isActive = true;
TempleEventStart(); // Set RemainSeconds to zero
TempleEventTeleportUsers();
TempleEventSummon();
break;
}
else if (nHour == m_nChaosTime[i] && nMinute == 11 && !pTempleEvent.isAttackable)
{
pTempleEvent.isAttackable = true;
break;
}
else if (nHour == m_nChaosTime[i] && nMinute == 30 && pTempleEvent.isAttackable)
{
TerminationFinish();
pTempleEvent.isAttackable = false;
break;
}
else if (nHour == m_nChaosTime[i] && nMinute == 30 && nSeconds == 20 && pTempleEvent.isActive)
{
TempleEventFinish();
break;
}
}
}
if (pTempleEvent.ActiveEvent == TEMPLE_EVENT_JURAD_MOUNTAIN)
{
for(int i = 0; i {
if (nHour == m_nJuraidTime[i] && nMinute == 10 && !pTempleEvent.isActive)
{
m_nTempleEventRemainSeconds = 0;
pTempleEvent.LastEventRoom = 1;
pTempleEvent.isActive = true;
JuraidTempleEventStart(); // Set RemainSeconds to zero
TempleEventTeleportUsers();
TempleEventSummon();
break;
}
else if (nHour == m_nJuraidTime[i] && nMinute == 11 && !pTempleEvent.isAttackable)
{
pTempleEvent.isAttackable = true;
break;
}
else if (nHour == m_nJuraidTime[i] && nMinute == 50 && pTempleEvent.isAttackable)
{
TerminationFinish();
pTempleEvent.isAttackable = false;
break;
}
else if (nHour == m_nJuraidTime[i] && nMinute == 50 && nSeconds == 20 && pTempleEvent.isActive)
{
TempleEventFinish();
break;
}
}
}
if (pTempleEvent.ActiveEvent == TEMPLE_EVENT_UTC)
{
for(int i = 0; i {
if (nHour == m_nUtcTime[i] && nMinute == 10 && !pTempleEvent.isActive)
{
m_nTempleEventRemainSeconds = 0;
pTempleEvent.LastEventRoom = 1;
pTempleEvent.isAttackable = false;
pTempleEvent.isActive = true;
TempleEventStart(); // Set RemainSeconds to zero
TempleEventTeleportUsers();
TempleEventSummon();
break;
}
else if (nHour == m_nUtcTime[i] && nMinute == 1 && !pTempleEvent.isAttackable)
{
pTempleEvent.isAttackable = true;
break;
}
else if (nHour == m_nUtcTime[i] && nMinute == 62&& pTempleEvent.isActive)
{
TempleEventFinish();
break;
}
}
}
}
}


burasımı dostum

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı
@ byxox, TempleEventStart(); ve TempleEventSummon() fonksiyonlarını at.


Günaydın kardeşim

void CGameServerDlg::TempleEventStart()

{
Packet result(WIZ_EVENT, uint8(TEMPLE_EVENT));
pTempleEvent.StartTime = (uint32)UNIXTIME;
pTempleEvent.KarusUserCount = 0;
pTempleEvent.ElMoradUserCount = 0;
pTempleEvent.AllUserCount = 0;
pTempleEvent.isDevaControl = false;
pTempleEvent.isDevaFlag = false;
memset(pTempleEvent.KarusDeathCount, 0, sizeof(pTempleEvent.KarusDeathCount));
memset(pTempleEvent.ElmoDeathCount, 0, sizeof(pTempleEvent.ElmoDeathCount));
result Send_All(&result);
}


void CGameServerDlg::TempleEventSummon()

{
if (pTempleEvent.ActiveEvent == TEMPLE_EVENT_CHAOS)
{
for (int i = 0; i pTempleEvent.LastEventRoom; i++)
{
foreach_stlmap_nolock(itr, m_MonsterRespawnListInformationArray)
{
if (itr->second->ZoneID == ZONE_CHAOS_DUNGEON)
{
SpawnEventNpc(itr->second->sSid, false, itr->second->ZoneID, itr->second->X, itr->second->Y, itr->second->Z, itr->second->sCount, itr->second->bRadius, 60 * MINUTE, 0, -1, i + 1/* EventRoom */);
SpawnEventNpc(itr->second->sSid, true, itr->second->ZoneID, itr->second->X, itr->second->Y, itr->second->Z, itr->second->sCount, itr->second->bRadius, 60 * MINUTE, 0, -1, i + 1/* EventRoom */);
}
}
}
}
else if (pTempleEvent.ActiveEvent == TEMPLE_EVENT_BORDER_DEFENCE_WAR)
{
for (int i = 0; i pTempleEvent.LastEventRoom; i++)
{
foreach_stlmap_nolock(itr, m_MonsterRespawnListInformationArray)
{
if (itr->second->ZoneID == ZONE_BORDER_DEFENSE_WAR)
{
SpawnEventNpc(itr->second->sSid, false, itr->second->ZoneID, itr->second->X, itr->second->Y, itr->second->Z, itr->second->sCount, itr->second->bRadius, 60 * MINUTE, 0, -1, i + 1/* EventRoom */);
SpawnEventNpc(itr->second->sSid, true, itr->second->ZoneID, itr->second->X, itr->second->Y, itr->second->Z, itr->second->sCount, itr->second->bRadius, 60 * MINUTE, 0, -1, i + 1/* EventRoom */);
}
}
}
}
else if (pTempleEvent.ActiveEvent == TEMPLE_EVENT_JURAD_MOUNTAIN)
{
for (int i = 0; i pTempleEvent.LastEventRoom; i++)
{
foreach_stlmap_nolock(itr, m_MonsterRespawnListInformationArray)
{
if (itr->second->ZoneID == ZONE_JURAD_MOUNTAIN)
{
SpawnEventNpc(itr->second->sSid, false, itr->second->ZoneID, itr->second->X, itr->second->Y, itr->second->Z, itr->second->sCount, itr->second->bRadius, 60 * MINUTE, 0, -1, i + 1/* EventRoom */);
SpawnEventNpc(itr->second->sSid, true, itr->second->ZoneID, itr->second->X, itr->second->Y, itr->second->Z, itr->second->sCount, itr->second->bRadius, 60 * MINUTE, 0, -1, i + 1/* EventRoom */);
}
}
}
}
else if (pTempleEvent.ActiveEvent == TEMPLE_EVENT_UTC)
{
for (int i = 0; i pTempleEvent.LastEventRoom; i++)
{
foreach_stlmap_nolock(itr, m_MonsterRespawnListInformationArray)
{
if (itr->second->ZoneID == ZONE_UNDER_THE_CASTLE)
{
SpawnEventNpc(itr->second->sSid, false, itr->second->ZoneID, itr->second->X, itr->second->Y, itr->second->Z, itr->second->sCount, itr->second->bRadius, 60 * MINUTE, 0, -1, i + 1/* EventRoom */);
SpawnEventNpc(itr->second->sSid, true, itr->second->ZoneID, itr->second->X, itr->second->Y, itr->second->Z, itr->second->sCount, itr->second->bRadius, 60 * MINUTE, 0, -1, i + 1/* EventRoom */);
}
}
}
}
}

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı
Günaydın kardeşim

void CGameServerDlg::TempleEventStart()

{
Packet result(WIZ_EVENT, uint8(TEMPLE_EVENT));
pTempleEvent.StartTime = (uint32)UNIXTIME;
pTempleEvent.KarusUserCount = 0;
pTempleEvent.ElMoradUserCount = 0;
pTempleEvent.AllUserCount = 0;
pTempleEvent.isDevaControl = false;
pTempleEvent.isDevaFlag = false;
memset(pTempleEvent.KarusDeathCount, 0, sizeof(pTempleEvent.KarusDeathCount));
memset(pTempleEvent.ElmoDeathCount, 0, sizeof(pTempleEvent.ElmoDeathCount));
result Send_All(&result);
}


void CGameServerDlg::TempleEventSummon()

{
if (pTempleEvent.ActiveEvent == TEMPLE_EVENT_CHAOS)
{
for (int i = 0; i pTempleEvent.LastEventRoom; i++)
{
foreach_stlmap_nolock(itr, m_MonsterRespawnListInformationArray)
{
if (itr->second->ZoneID == ZONE_CHAOS_DUNGEON)
{
SpawnEventNpc(itr->second->sSid, false, itr->second->ZoneID, itr->second->X, itr->second->Y, itr->second->Z, itr->second->sCount, itr->second->bRadius, 60 * MINUTE, 0, -1, i + 1/* EventRoom */);
SpawnEventNpc(itr->second->sSid, true, itr->second->ZoneID, itr->second->X, itr->second->Y, itr->second->Z, itr->second->sCount, itr->second->bRadius, 60 * MINUTE, 0, -1, i + 1/* EventRoom */);
}
}
}
}
else if (pTempleEvent.ActiveEvent == TEMPLE_EVENT_BORDER_DEFENCE_WAR)
{
for (int i = 0; i pTempleEvent.LastEventRoom; i++)
{
foreach_stlmap_nolock(itr, m_MonsterRespawnListInformationArray)
{
if (itr->second->ZoneID == ZONE_BORDER_DEFENSE_WAR)
{
SpawnEventNpc(itr->second->sSid, false, itr->second->ZoneID, itr->second->X, itr->second->Y, itr->second->Z, itr->second->sCount, itr->second->bRadius, 60 * MINUTE, 0, -1, i + 1/* EventRoom */);
SpawnEventNpc(itr->second->sSid, true, itr->second->ZoneID, itr->second->X, itr->second->Y, itr->second->Z, itr->second->sCount, itr->second->bRadius, 60 * MINUTE, 0, -1, i + 1/* EventRoom */);
}
}
}
}
else if (pTempleEvent.ActiveEvent == TEMPLE_EVENT_JURAD_MOUNTAIN)
{
for (int i = 0; i pTempleEvent.LastEventRoom; i++)
{
foreach_stlmap_nolock(itr, m_MonsterRespawnListInformationArray)
{
if (itr->second->ZoneID == ZONE_JURAD_MOUNTAIN)
{
SpawnEventNpc(itr->second->sSid, false, itr->second->ZoneID, itr->second->X, itr->second->Y, itr->second->Z, itr->second->sCount, itr->second->bRadius, 60 * MINUTE, 0, -1, i + 1/* EventRoom */);
SpawnEventNpc(itr->second->sSid, true, itr->second->ZoneID, itr->second->X, itr->second->Y, itr->second->Z, itr->second->sCount, itr->second->bRadius, 60 * MINUTE, 0, -1, i + 1/* EventRoom */);
}
}
}
}
else if (pTempleEvent.ActiveEvent == TEMPLE_EVENT_UTC)
{
for (int i = 0; i pTempleEvent.LastEventRoom; i++)
{
foreach_stlmap_nolock(itr, m_MonsterRespawnListInformationArray)
{
if (itr->second->ZoneID == ZONE_UNDER_THE_CASTLE)
{
SpawnEventNpc(itr->second->sSid, false, itr->second->ZoneID, itr->second->X, itr->second->Y, itr->second->Z, itr->second->sCount, itr->second->bRadius, 60 * MINUTE, 0, -1, i + 1/* EventRoom */);
SpawnEventNpc(itr->second->sSid, true, itr->second->ZoneID, itr->second->X, itr->second->Y, itr->second->Z, itr->second->sCount, itr->second->bRadius, 60 * MINUTE, 0, -1, i + 1/* EventRoom */);
}
}
}
}
}


Buralarda da yok. Sen .cpp'yi komple at istersen :D

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı
@ byxox, TempleEventStart(); ve TempleEventSummon() fonksiyonlarını at.


günaydın kardeşim

hatayı gördüm şu şekilde

eger bdw başlama zamanını event tıme den ayarlarsam ve normal oyun ıcerısınde bdw zamanı geldıgın de tıklarsam 1/1 bıle olsa gırıyor

fakat gm komutlarına openbdw komutu ekledıgımde bdw yazısı yukarıda gelıyor tıklıyorum ve zamanı bıttıgınde içerıye alırken ' you have been rejected due to unmatched members' hatası alıyorum acaba bır kontrol mu eklemem lazım burası için

İletiyi paylaş


Link to post
Sitelerde Paylaş

×
×
  • Yeni Oluştur...