Kanıt Resim ;
Ne işe Yarar ?
Oyuncu veya bir Mob zehirlendiği zaman can barı yeşil renge bürünür.
Fikirin Kaynağı ;
Bu fikir bir Türk olan Whistlee'ye aittir.Whistlee'nin orijinal paylaşımı Moblarda çalışmamaktadır ve SRC kaynaklı olmadığı için sadece bizim tarafımızdan görülebilmektedir.
Bu versiyonda ise ufak eklemelerle Moblara da aynı efekt eklenmiştir ayrıca efektli kişi yada mob tüm oyuncular tarafından görülebilir olacaktır.
Kod yazımında yardımcı olan Intern,VegaS™ ve HITRON'a teşekkürler.
Ayrıca Metin2 Dev'den konu sahibi Tatsumaru'ya teşekkürler.
Nasıl Ekleyeceğiz ?
Aşağıdaki adımları takip edin.
///// PACK TARAFI ; ( TAB ayarlarına dikkat ! )
01. taskbar.py açılır (root/locale/?????/ui) aşağıdaki bölüm bulunur:
ALTINA EKLENİR ;
02. ui.py açılır (root/) ve bu class'ın sonuna : class Gauge(Window): aşağıdaki bölüm eklenir:
03. uiparty.py açılır (root/) ve dosyanın en başına eklenir:
DİKKAT! Eğer hali hazırda dosyada mevcutsa import app'ı eklemeyin !
AŞAĞIDAKİ KOD BULUNUR ;
ÜSTÜNE EKLENİR ;
04. uiplayergauge.py açılır (root/) ve dosyanın en başına eklenir:
DİKKAT! Eğer hali hazırda dosyada mevcutsa import app'ı eklemeyin !
AŞAĞIDAKİ KOD BULUNUR ;
ÜSTÜNE EKLENİR ;
05. uitarget.py açılır (root/) ve dosyanın en başına eklenir:
DİKKAT! Eğer hali hazırda dosyada mevcutsa import app'ı eklemeyin !
AŞAĞIDAKİ KODU BULUN ;
ALTINA EKLEYİN ;
AŞAĞIDAKİ KODU BULUN ;
ALTINA EKLEYİN ;
DİKKAT! self.hpGauge = None Kodundan bu dosyada birden fazla yerde olabilir. Eğer öyleyse hepsinin altına aşağıdaki kodu ekleyin.
AŞAĞIDAKİ KODU BULUN ;
ALTINA EKLEYİN ;
AŞAĞIDAKİ KODU BULUN ;
ALTINA EKLEYİN ;
AŞAĞIDAKİ KODU BULUN ;
ALTINA EKLEYİN ;
AŞAĞIDAKİ KODU BULUN ;
ALTINA EKLEYİN ;
06. uitaskbar.py açılır (root/) ve dosyanın en başına eklenir:
DİKKAT! Eğer hali hazırda dosyada mevcutsa import app'ı eklemeyin !
AŞAĞIDAKİ KODU BULUN ;
ALTINA EKLEYİN ;
AŞAĞIDAKİ KODU BULUN ;
ALTINA EKLEYİN ;
AŞAĞIDAKİ KODU BULUN ;
ALTINA EKLEYİN ;
AŞAĞIDAKİ KODU BULUN ;
ALTINA EKLEYİN ;
BU FONKSİYONUN İÇİNDE ;
BUNU BULUN ;
ALTINA EKLEYİN ;
AŞAĞIDAKİ KODU BULUN ;
ÜSTÜNE EKLEYİN ;
07. GEREKLİ DDS DOSYALARI ; DosyaUpload - VirüsTotal
Python:
{
"name" : "HPRecoveryGaugeBar",
"type" : "bar",
"x" : 0,
"y" : 0,
"width" : 95,
"height" : 13,
"color" : 0x55ff0000,
},
{
"name" : "HPGauge",
"type" : "ani_image",
"x" : 0,
"y" : 0,
"delay" : 6,
"images" :
(
"D:/Ymir Work/UI/Pattern/HPGauge/01.tga",
"D:/Ymir Work/UI/Pattern/HPGauge/02.tga",
"D:/Ymir Work/UI/Pattern/HPGauge/03.tga",
"D:/Ymir Work/UI/Pattern/HPGauge/04.tga",
"D:/Ymir Work/UI/Pattern/HPGauge/05.tga",
"D:/Ymir Work/UI/Pattern/HPGauge/06.tga",
"D:/Ymir Work/UI/Pattern/HPGauge/07.tga",
),
},
ALTINA EKLENİR ;
Python:
{
"name" : "HPPoisonRecoveryGaugeBar",
"type" : "bar",
"x" : 0,
"y" : 0,
"width" : 95,
"height" : 13,
"color" : 0x55008000,
},
{
"name" : "HPPoisonGauge",
"type" : "ani_image",
"x" : 0,
"y" : 0,
"delay" : 6,
"images" :
(
"D:/Ymir Work/UI/Pattern/HPPoisonGauge/01.tga",
"D:/Ymir Work/UI/Pattern/HPPoisonGauge/02.tga",
"D:/Ymir Work/UI/Pattern/HPPoisonGauge/03.tga",
"D:/Ymir Work/UI/Pattern/HPPoisonGauge/04.tga",
"D:/Ymir Work/UI/Pattern/HPPoisonGauge/05.tga",
"D:/Ymir Work/UI/Pattern/HPPoisonGauge/06.tga",
"D:/Ymir Work/UI/Pattern/HPPoisonGauge/07.tga",
),
},
02. ui.py açılır (root/) ve bu class'ın sonuna : class Gauge(Window): aşağıdaki bölüm eklenir:
Python:
if app.ENABLE_POISON_GAUGE_EFFECT:
def SetGaugeColor(self, color):
if self.imgGauge:
self.imgGauge.LoadImage("d:/ymir work/ui/pattern/gauge_" + color + ".tga")
03. uiparty.py açılır (root/) ve dosyanın en başına eklenir:
DİKKAT! Eğer hali hazırda dosyada mevcutsa import app'ı eklemeyin !
Python:
import app
if app.ENABLE_POISON_GAUGE_EFFECT:
import chr
import chrmgr
AŞAĞIDAKİ KOD BULUNUR ;
Kod:
hpPercentage = max(0, hpPercentage)
ÜSTÜNE EKLENİR ;
Python:
if app.ENABLE_POISON_GAUGE_EFFECT:
if chrmgr.HasAffectByVID(self.GetCharacterVID(), chr.AFFECT_POISON):
self.gauge.SetGaugeColor("lime")
else:
self.gauge.SetGaugeColor("red")
04. uiplayergauge.py açılır (root/) ve dosyanın en başına eklenir:
DİKKAT! Eğer hali hazırda dosyada mevcutsa import app'ı eklemeyin !
Python:
import app
if app.ENABLE_POISON_GAUGE_EFFECT:
import chrmgr
AŞAĞIDAKİ KOD BULUNUR ;
Python:
self.SetPercentage(self.curHP, self.maxHP)
ÜSTÜNE EKLENİR ;
Python:
if app.ENABLE_POISON_GAUGE_EFFECT:
if chrmgr.HasAffectByVID(player.GetMainCharacterIndex(), chr.AFFECT_POISON):
self.SetGaugeColor("lime")
else:
self.SetGaugeColor("red")
05. uitarget.py açılır (root/) ve dosyanın en başına eklenir:
DİKKAT! Eğer hali hazırda dosyada mevcutsa import app'ı eklemeyin !
Python:
import app
if app.ENABLE_POISON_GAUGE_EFFECT:
import chrmgr
AŞAĞIDAKİ KODU BULUN ;
Python:
hpGauge = ui.Gauge()
hpGauge.SetParent(self)
hpGauge.MakeGauge(130, "red")
hpGauge.Hide()
ALTINA EKLEYİN ;
Python:
if app.ENABLE_POISON_GAUGE_EFFECT:
hpPoisonGauge = ui.Gauge()
hpPoisonGauge.SetParent(self)
hpPoisonGauge.MakeGauge(130, "lime")
hpPoisonGauge.SetPosition(175, 17)
hpPoisonGauge.SetWindowHorizontalAlignRight()
hpPoisonGauge.Hide()
AŞAĞIDAKİ KODU BULUN ;
Python:
self.hpGauge = None
ALTINA EKLEYİN ;
DİKKAT! self.hpGauge = None Kodundan bu dosyada birden fazla yerde olabilir. Eğer öyleyse hepsinin altına aşağıdaki kodu ekleyin.
Python:
if app.ENABLE_POISON_GAUGE_EFFECT:
self.hpPoisonGauge = None
AŞAĞIDAKİ KODU BULUN ;
Python:
self.hpGauge = hpGauge
ALTINA EKLEYİN ;
Python:
if app.ENABLE_POISON_GAUGE_EFFECT:
self.hpPoisonGauge = hpPoisonGauge
AŞAĞIDAKİ KODU BULUN ;
Python:
self.hpGauge.Hide()
ALTINA EKLEYİN ;
Python:
if app.ENABLE_POISON_GAUGE_EFFECT:
self.hpPoisonGauge.Hide()
AŞAĞIDAKİ KODU BULUN ;
Python:
self.hpGauge.SetPercentage(hpPercentage, 100)
ALTINA EKLEYİN ;
Python:
if app.ENABLE_POISON_GAUGE_EFFECT:
self.hpPoisonGauge.SetPercentage(hpPercentage, 100)
AŞAĞIDAKİ KODU BULUN ;
Python:
def OnUpdate(self):
ALTINA EKLEYİN ;
Python:
if app.ENABLE_POISON_GAUGE_EFFECT:
if self.hpGauge and self.hpGauge.IsShow():
if chrmgr.HasAffectByVID(self.GetTargetVID(), chr.AFFECT_POISON):
self.hpPoisonGauge.Show()
else:
self.hpPoisonGauge.Hide()
06. uitaskbar.py açılır (root/) ve dosyanın en başına eklenir:
DİKKAT! Eğer hali hazırda dosyada mevcutsa import app'ı eklemeyin !
Python:
import app
if app.ENABLE_POISON_GAUGE_EFFECT:
import chr
import chrmgr
AŞAĞIDAKİ KODU BULUN ;
Python:
self.spRecoveryGaugeBar = self.GetChild("SPRecoveryGaugeBar")
ALTINA EKLEYİN ;
Python:
if app.ENABLE_POISON_GAUGE_EFFECT:
self.hpPoisonGauge = self.GetChild("HPPoisonGauge")
self.hpPoisonRecoveryGaugeBar = self.GetChild("HPPoisonRecoveryGaugeBar")
self.hpPoisonGauge.Hide()
self.hpPoisonRecoveryGaugeBar.Hide()
AŞAĞIDAKİ KODU BULUN ;
Python:
self.spRecoveryGaugeBar = None
ALTINA EKLEYİN ;
Python:
if app.ENABLE_POISON_GAUGE_EFFECT:
self.hpPoisonGauge = None
self.hpPoisonRecoveryGaugeBar = None
AŞAĞIDAKİ KODU BULUN ;
Python:
self.SetHP(curHP, recoveryHP, maxHP)
ALTINA EKLEYİN ;
Python:
if app.ENABLE_POISON_GAUGE_EFFECT:
if chrmgr.HasAffectByVID(player.GetMainCharacterIndex(), chr.AFFECT_POISON):
self.hpGauge.Hide()
self.hpPoisonGauge.Show()
else:
self.hpPoisonGauge.Hide()
self.hpGauge.Show()
AŞAĞIDAKİ KODU BULUN ;
Python:
self.hpGauge.SetPercentage(curPoint, maxPoint)
ALTINA EKLEYİN ;
Python:
if app.ENABLE_POISON_GAUGE_EFFECT:
self.hpPoisonGauge.SetPercentage(curPoint, maxPoint)
BU FONKSİYONUN İÇİNDE ;
Python:
def SetHP(self, curPoint, recoveryPoint, maxPoint):
BUNU BULUN ;
Python:
if 0 == recoveryPoint:
ALTINA EKLEYİN ;
Python:
if app.ENABLE_POISON_GAUGE_EFFECT:
self.hpPoisonRecoveryGaugeBar.Hide()
AŞAĞIDAKİ KODU BULUN ;
Python:
self.hpRecoveryGaugeBar.SetSize(newWidth, self.GAUGE_HEIGHT)
self.hpRecoveryGaugeBar.Show()
ÜSTÜNE EKLEYİN ;
Python:
if app.ENABLE_POISON_GAUGE_EFFECT:
if chrmgr.HasAffectByVID(player.GetMainCharacterIndex(), chr.AFFECT_POISON):
if self.hpRecoveryGaugeBar.IsShow():
self.hpRecoveryGaugeBar.Hide()
self.hpPoisonRecoveryGaugeBar.SetSize(newWidth, self.GAUGE_HEIGHT)
self.hpPoisonRecoveryGaugeBar.Show()
return
else:
if self.hpPoisonRecoveryGaugeBar.IsShow():
self.hpPoisonRecoveryGaugeBar.Hide()
07. GEREKLİ DDS DOSYALARI ; DosyaUpload - VirüsTotal
///// SRC TARAFI
01. locale_inc.h açılır (client\UserInterface) define bölümüne eklenir:
02. PythonApplicationModule.cpp açılır (client\UserInterface) aşağıdaki kod bulunur:
ÜSTÜNE EKLEYİN ;
03. PythonCharacterManagerModule.cpp açılır (client\UserInterface) aşağıdaki kod bulunur:
ÜSTÜNE EKLEYİN ;
AŞAĞIDAKİ KODU BULUN ;
ÜSTÜNE EKLEYİN ;
C++:
#define ENABLE_POISON_GAUGE_EFFECT
02. PythonApplicationModule.cpp açılır (client\UserInterface) aşağıdaki kod bulunur:
C++:
#ifdef USE_OPENID
PyModule_AddIntConstant(poModule, "USE_OPENID", 1);
ÜSTÜNE EKLEYİN ;
C++:
#ifdef ENABLE_POISON_GAUGE_EFFECT
PyModule_AddIntConstant(poModule, "ENABLE_POISON_GAUGE_EFFECT", 1);
#else
PyModule_AddIntConstant(poModule, "ENABLE_POISON_GAUGE_EFFECT", 0);
#endif
03. PythonCharacterManagerModule.cpp açılır (client\UserInterface) aşağıdaki kod bulunur:
C++:
void initchrmgr()
ÜSTÜNE EKLEYİN ;
C++:
#ifdef ENABLE_POISON_GAUGE_EFFECT
PyObject * chrmgrHasAffectByVID(PyObject * poSelf, PyObject * poArgs)
{
int iVID, iAffect;
if (!PyTuple_GetInteger(poArgs, 0, &iVID))
return Py_BadArgument();
if (!PyTuple_GetInteger(poArgs, 1, &iAffect))
return Py_BadArgument();
CPythonCharacterManager & rkChrMgr = CPythonCharacterManager::Instance();
CInstanceBase * p = rkChrMgr.CPythonCharacterManager::GetInstancePtr(iVID);
if (p)
return Py_BuildValue("i", p->IsAffect(iAffect));
return Py_BuildNone();
}
#endif
AŞAĞIDAKİ KODU BULUN ;
C++:
{ NULL, NULL, NULL },
ÜSTÜNE EKLEYİN ;
C++:
#ifdef ENABLE_POISON_GAUGE_EFFECT
{ "HasAffectByVID", chrmgrHasAffectByVID, METH_VARARGS },
#endif
Metin2Dev'den Alıntıdır, Anlatım tarafımca Türkçeleştirilmiştir.
