Yardım Bazı harita ve zindanlarda şehirden başlatmayı iptal etme

Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

DeadLyEscaPe

Üye
Üye
Mesaj
424
Çözümler
27
Beğeni
104
Puan
474
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?
 
game/char_battle.cpp:
 // 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.
 
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.

Öncelikle vakit ayırdığınız için teşekkür ederim. Tekrardan şehirde başlatıyor.
 
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 ?
 
Biraz geç cevap verdim kusura bakmayın evde değildim. Denedim ve sonuç yine aynı.
Hmm :unsure: Peki 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.
 
Hmm :unsure: Peki 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.

Hayır tek kişilik bir zindan. Girdiğimde map index 1120000 oluyor.
 
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.
 
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")
 
ç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")

Yorumlar için teşekkürler ama source tarafından yapsam daha sağlıklı olacak gibi.
 
Geri
Üst