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
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 ?
 
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