- Katılım
- 6 Kas 2021
- Mesajlar
- 4,158
- Tepkime puanı
- 5,553
- Puanları
- 113
- Yaş
- 32
- Konum
- Türkiye
- Dc
- fatihbulut
Max vurulacak damageyi sqlden ayarlar ve reload m ile günceller.
INSTANCE_TYPE_STONE hatası alırsanız.::
Sistemin orjinali bu. Bu şekilde kullanmak isterseniz:
Damage Limit Sistemi
Bu sistem, belirlenen metin taşları veya özel moblar için maksimum hasar limiti ekler. Böylece oyuncular bu hedeflere belirlenen değerin üzerinde hasar vuramaz.
Server Part
İçinde arat:
Aşağıdaki koddan önce:
Ekle:
Dosya:
Altına ekle:
İçinde arat:
Arat:
Üstüne ekle:
Aşağıdaki fonksiyondan sonra:
Ekle:
Arat:
Fonksiyonu bununla değiştir:
Not
Bu sistemde server tarafı gerçek hasar limitini uygular. Client tarafı ise hedef penceresinde oyuncuya ilgili metin taşı için hasar limitini gösterir.
INSTANCE_TYPE_STONE hatası alırsanız.::
Kod:
PythonCharacterModule.cpp içinde
PyModule_AddIntConstant(poModule, "INSTANCE_TYPE_NPC", CActorInstance::TYPE_NPC);
//altına ekle
PyModule_AddIntConstant(poModule, "INSTANCE_TYPE_STONE", CActorInstance::TYPE_STONE);
Gizli içerik
Bu içeriği görmek için cevap yazmalısınız.
Damage Limit Sistemi
Bu sistem, belirlenen metin taşları veya özel moblar için maksimum hasar limiti ekler. Böylece oyuncular bu hedeflere belirlenen değerin üzerinde hasar vuramaz.
Server Part
Kod:
char_battle.cpp
İçinde arat:
Kod:
bool CHARACTER::Damage
Aşağıdaki koddan önce:
Kod:
if (pAttacker)
SendDamagePacket(pAttacker, dam, damageFlag);
Ekle:
Kod:
std::map<int, int> damageLimits = {
{8009, 25000},
{8010, 30000},
{8011, 35000},
{8012, 40000},
{8013, 45000},
{8014, 50000},
{8024, 55000},
{8025, 60000},
{8026, 70000},
{8027, 100000},
{8127, 100000},
{8158, 100000}
};
auto it = damageLimits.find(GetRaceNum());
if (it != damageLimits.end() && dam > it->second) {
dam = it->second;
}
Dosya:
Kod:
uitarget.py
Kod:
GRADE_NAME = {
nonplayer.PAWN : localeInfo.TARGET_LEVEL_PAWN,
nonplayer.S_PAWN : localeInfo.TARGET_LEVEL_S_PAWN,
nonplayer.KNIGHT : localeInfo.TARGET_LEVEL_KNIGHT,
nonplayer.S_KNIGHT : localeInfo.TARGET_LEVEL_S_KNIGHT,
nonplayer.BOSS : localeInfo.TARGET_LEVEL_BOSS,
nonplayer.KING : localeInfo.TARGET_LEVEL_KING,
}
Altına ekle:
Kod:
LIMITE_NIVEL = {
8009: "25000",
8010: "30000",
8011: "35000",
8012: "40000",
8013: "45000",
8014: "50000",
8024: "55000",
8025: "60000",
8026: "70000",
8027: "100000",
8127: "100000",
8158: "100000",
}
İçinde arat:
Kod:
def __init__(self):
Arat:
Kod:
closeButton = ui.Button()
Üstüne ekle:
Kod:
damageLimitText = ui.TextLine()
damageLimitText.SetParent(self)
damageLimitText.SetOutline()
damageLimitText.SetHorizontalAlignRight()
damageLimitText.Hide()
self.damageLimitText = damageLimitText
Aşağıdaki fonksiyondan sonra:
Kod:
def __ShowMainCharacterMenu(self):
Ekle:
Kod:
def ShowDamageLimitText(self, vid):
vnum = nonplayer.GetRaceNumByVID(vid)
if vnum in self.LIMITE_NIVEL:
limita_damage = self.LIMITE_NIVEL[vnum]
self.damageLimitText.SetText("Limita damage este: " + str(limita_damage))
else:
self.damageLimitText.SetText("Nu exista limita de damage pentru acest metin.")
self.damageLimitText.Show()
Arat:
Kod:
def UpdatePosition(self):
Fonksiyonu bununla değiştir:
Kod:
def UpdatePosition(self):
self.SetPosition(wndMgr.GetScreenWidth() / 2 - self.GetWidth() / 2, 10)
if chr.GetInstanceType(self.vid) == chr.INSTANCE_TYPE_STONE:
self.SetSize(self.GetWidth(), self.GetHeight() + 20)
self.ShowDamageLimitText(self.vid)
self.damageLimitText.SetPosition(self.GetWidth() / 2, 30)
self.damageLimitText.Show()
else:
self.damageLimitText.Hide()
Bu sistemde server tarafı gerçek hasar limitini uygular. Client tarafı ise hedef penceresinde oyuncuya ilgili metin taşı için hasar limitini gösterir.
