- Katılım
- 23 Eki 2022
- Mesajlar
- 3,515
- Çözümler
- 9
- Tepkime puanı
- 2,145
- Puanları
- 113
- Yaş
- 28
Slotlar metinler npcler itemli
Slotlar metinler npcler itemli
[CHARGE=200]
[/CHARGE]
Slotlar metinler npcler itemli
[CHARGE=200]
Kod:
📌 C++ Tarafı
1. char.h
CHARACTER classına ekle 👇
// char.h
private:
bool m_bGhost;
public:
void SetGhost(bool b) { m_bGhost = b; }
bool IsGhost() const { return m_bGhost; }
2. char.cpp
Constructor'a varsayılan değer ekle 👇
CHARACTER::CHARACTER()
{
...
m_bGhost = false;
}
Sonra çarpışma/çakışma kontrolü yapılan yerde (örneğin CHARACTER::CanMoveTo() veya battle.cpp içinde CheckCollision gibi fonksiyonlarda) şu kontrolü ekle 👇
if (IsGhost())
return true; // Ghost modda engel yok
3. cmd_general.cpp (veya cmd_gm.cpp)
Test için GM komutu ekle 👇
ACMD(do_ghost)
{
if (ch->IsGhost())
{
ch->SetGhost(false);
ch->ChatPacket(CHAT_TYPE_INFO, "Ghost modu kapatıldı.");
}
else
{
ch->SetGhost(true);
ch->ChatPacket(CHAT_TYPE_INFO, "Ghost modu aktifleştirildi.");
}
}
cmd_gm.cpp içinde komut tablosuna ekle:
{ "ghost", do_ghost, 0, POS_DEAD, GM_IMPLEMENTOR },
📌 Quest Tarafı
Ghost itemlerini (52070–52072) quest ile bağlamak için 👇
quest r10dev_ghost begin
state start begin
when 52070.use or 52071.use or 52072.use begin
if pc.getqf("ghost") == 0 then
pc.setqf("ghost", 1)
command("ghost on")
syschat("Geçiş modu aktifleştirildi.")
else
pc.setqf("ghost", 0)
command("ghost off")
syschat("Geçiş modu kapatıldı.")
end
end
end
end
📌 Item Proto
Bunları zaten hazırlamıştık 👇
52070 1GunlukGecisModu ITEM_QUEST ... REAL_TIME_FIRST_USE 86400 ...
52071 3GunlukGecisModu ITEM_QUEST ... REAL_TIME_FIRST_USE 259200 ...
52072 7GunlukGecisModu ITEM_QUEST ... REAL_TIME_FIRST_USE 604800 ...
Süre dolduğunda item otomatik silinir ✅
👉 Böylece:
Core tarafı → char.h, char.cpp, cmd_gm.cpp eklemeleri.
Quest → item ile aç/kapat kontrolü.
Item_proto → süreli silinme.
[/CHARGE]