- Mesaj
- 480
- Çözümler
- 30
- Beğeni
- 120
- Puan
- 574
- Ticaret Puanı
- 0
Merhaba. Örneğin x bir zindanda süre bitince otomatik şehirde başlamasını istemiyorum. Şehirde başla butonuna basınca da olduğu yerde başlatması gerek. Yapabilecek var mı acaba?
// Bu kısmı bulup aşağıdaki gibi düzenle;
SCharDeadEventInfo* pEventInfo = AllocEventInfo<SCharDeadEventInfo>();
if (IsPC())
{
pEventInfo->isPC = true;
pEventInfo->dwID = this->GetPlayerID();
if (GetDungeon() == false)
{
m_pkDeadEvent = event_create (dead_event, pEventInfo, PASSES_PER_SEC (180));
}
}
//Ara;
if (subcmd == SCMD_RESTART_TOWN)
//Degistir;
if (subcmd == SCMD_RESTART_TOWN && ch->GetDungeon() == false)
game/char_battle.cpp:[/FONT] [FONT=trebuchet ms]// Bu kısmı bulup aşağıdaki gibi düzenle; SCharDeadEventInfo* pEventInfo = AllocEventInfo<SCharDeadEventInfo>(); if (IsPC()) { pEventInfo->isPC = true; pEventInfo->dwID = this->GetPlayerID(); if (GetDungeon() == false) { m_pkDeadEvent = event_create (dead_event, pEventInfo, PASSES_PER_SEC (180)); } }
game/cmd_general.cpp://Ara; if (subcmd == SCMD_RESTART_TOWN) //Degistir; if (subcmd == SCMD_RESTART_TOWN && ch->GetDungeon() == false)
Denemek için vaktim yok fakat düz mantık şöyle bir şey yapılabilir, deneyip eksiklik görürseniz bilgi verirsiniz düzenlerim.
O zaman direkt map indexini kontrol edebiliriz if koşulunda, map indexi nedir ? Ekleyebilirseniz öyle deneyin, isterseniz bana söylerseniz ben düzenleyim.Öncelikle vakit ayırdığınız için teşekkür ederim. Tekrardan şehirde başlatıyor.
O zaman direkt map indexini kontrol edebiliriz if koşulunda, map indexi nedir ? Ekleyebilirseniz öyle deneyin, isterseniz bana söylerseniz ben düzenleyim.
Bu şekilde dener misin ?game/char_battle.cpp:[/FONT] [FONT=trebuchet ms]// Bu kısmı bulup aşağıdaki gibi düzenle; SCharDeadEventInfo* pEventInfo = AllocEventInfo<SCharDeadEventInfo>(); if (IsPC()) { pEventInfo->isPC = true; pEventInfo->dwID = this->GetPlayerID(); if (! (ch->GetMapIndex() >= 1120000 && ch->GetMapIndex() < 1130000)) { m_pkDeadEvent = event_create (dead_event, pEventInfo, PASSES_PER_SEC (180)); } }
game/cmd_general.cpp://Ara; if (subcmd == SCMD_RESTART_TOWN) //Degistir; if (subcmd == SCMD_RESTART_TOWN) if (! (ch->GetMapIndex() >= 1120000 && ch->GetMapIndex() < 1130000))
DİKKAT; Alttaki if bloğundan sonra fonksiyonun geri kalanını bir tab ileri almayı unutmayın, karışıklık olmasın.
Bu şekilde dener misin ?
HmmBiraz geç cevap verdim kusura bakmayın evde değildim. Denedim ve sonuç yine aynı.
HmmPeki bu grupla girilen bir zindan mı? (Nemere, Razo gibi) Eğer öyleyse farklı bir fonksiyonu kullanarak kontrol etmeyi deneyebiliriz, değilse farklı şeyler denemek lazım ama şuan test edemiyorum, aklıma gelenleri yazıyorum size belki işe yarar diye.
Map index de mapın normal indexini baz alın zindana girdiğinizde görüneni değil, sondaki değerler sıra belirteci zindan kapatılırken kişiye özel olarak bu belirtece göre kapatıyor. Bu şekilde düzenlenip denenebilir.
çok daha basit bir şekilde, dungeon mapinin dosyasını ftpden bulup base_position'u değiştir gitsin
Foxfs ya da korumalı pack kullanıyosanız py ile de yapabilirsiniz, zamanında şu kod bloğunu burda yeniden başlayı map adına göre iptal etmeyi eklemiştim:
Uirestart.py de(siz de şehirde başlamaya uyarlarsınız), olmazsa akşam ben düzenleyip atarım, fakat srcde halletmek daha oturaklı olur
def RestartHere(self):
import background
import chat
if background.GetCurrentMapName() == "metin2_map_c1": //bu kısma map dosya ismi yazılacak
chat.AppendChat(chat.CHAT_TYPE_INFO, "In this map you can only restart in the city.")
return FALSE
net.SendChatPacket("/restart_here")