Max vurulacak damageyi sqlden ayarlar ve reload m ile günceller.
INSTANCE_TYPE_STONE hatası alırsanız.::

İndir
Virüs Total
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
Dosya:
Kod:
İçinde arat:
Kod:
Aşağıdaki koddan önce:
Kod:
Ekle:
Kod:
Client Part
Dosya:
Kod:
Arat:
Kod:
Altına ekle:
Kod:
İçinde arat:
Kod:
Arat:
Kod:
Üstüne ekle:
Kod:
Aşağıdaki fonksiyondan sonra:
Kod:
Ekle:
Kod:
Arat:
Kod:
Fonksiyonu bununla değiştir:
Kod:
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.::
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);

İndir
Virüs Total
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
Dosya:
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;
}
Client Part
Dosya:
Kod:
uitarget.py
Arat:
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()
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.


