Metin2 Onaylı HP-SP Görme Sistemi Ekleme (Kolay anlatım)
Metin2 HP - SP GÖRME SİSTEMİ ANLATIMI
Bu sistemin amacı düello yaptığınızda karşı tarafın ne kadar canı kaldığını size gösterir, ve siz öldüğünüzde size "eziqqq can full" tarzında muhabbetler yapamaz, serveriniz güzelleşir.
Özel bir sistemdir, genellikle parayla satılır. Bu yazımızda ücretsiz olarak anlatıyoruz ve paylaşıyoruz.
Anlatıma başlayalım;
constinfo.py Açılır ve müsait bir yere yerleştirilir.
INPUT_IGNORE = 0
DUELLODAIZINVARMI = ""
BenimDuelloIznim = ""
PLAYER_MAX_HP = 0
PLAYER_HP = 0
PLAYER_SP = 0
INPUT = 0
PLAYER_MAX_SP = 0
PLAYER_NAME = ""
PYTHONTOLUA = 0
PYTHONISLEM = ""
game.py Açılır ve aşağıdaki kodlar taratılır,
"CloseSafebox" : self.CommandCloseSafebox,
Altına yapıştırılır.
"PythonToLua" : self.__PythonToLua, # ZacqooLeaven Share
"PythonIslem" : self.__PythonIslem, # ZacqooLeaven Share
"LuaToPython" : self.__LuaToPython, # ZacqooLeaven Share
game.py içinde taratılır,
def OpenQuestWindow(self, skin, idx):
altındakiler değiştirilir
if constInfo.INPUT == 1:
return
self.interface.OpenQuestWindow(skin, idx)
aratılır
def OnRecvWhisper(self, mode, name, line):
if mode == chat.WHISPER_TYPE_GM:
self.interface.RegisterGameMasterName(name)
ve bloğun altına aşağıdaki eklenir
if line.find("zacqooleavenhpspq") != -1:
chat.AppendChat(chat.CHAT_TYPE_INFO, locale.RAKIPKABULETMEDILANXD)
return
if line.find("zacqooleavenhpsp") != -1:
chat.AppendChat(chat.CHAT_TYPE_INFO, locale.RAKIPKABULETMEDILANXD2)
return
if line.find('HP kabul etmedi') != -1:
constInfo.DUELLODAIZINVARMI = "Kabul etmedi."
chat.AppendChat(chat.CHAT_TYPE_INFO, name + ' adli oyuncu HP ve SP gostermesini redetti. ')
return
constInfo.DUELLODAIZINVARMI = "Kabul etti."
elif line.find('HP kabul ettimaq') != -1:
chat.AppendChat(chat.CHAT_TYPE_INFO, name + " adli oyuncu duello'da HP ve SP gosterme'yi kabul etti. ")
constInfo.DUELLODAIZINVARMI = "Kabul etmedi."
return
elif line.find('C kabul etmedi') != -1:
chat.AppendChat(chat.CHAT_TYPE_INFO, name + ' adli oyuncu HP ve SP gotermesini redetti. ')
constInfo.DUELLODAIZINVARMI = "Kabul etti."
return
elif line.find('C kabul ettimaq') != -1:
chat.AppendChat(chat.CHAT_TYPE_INFO, name + " adli oyuncu duello'da HP ve SP gosterme'yi kabul etti. ")
pass
return
else:
game.py açılır ve en aşağıya eklenir
##zacqooleaven hp sp onay baslat
def __PythonToLua(self, id):
def __PythonIslem(self, PythonIslem):
constInfo.PYTHONTOLUA = int(id)
net.SendQuestInputStringPacket(constInfo.PYTHONISLEM)
if PythonIslem == "PYTHONISLEM":
net.SendQuestInputStringPacket(str(constInfo.PLAYER_VID))
elif PythonIslem == "PLAYER_VID":
if LuaToPython.find("#quest_input#") != -1:
def __LuaToPython(self, LuaToPython):
constInfo.INPUT = 1
constInfo.INPUT = 0
elif LuaToPython.find("#quest_inputbitir#") != -1:
elif LuaToPython.find("#rakip_hp_sp#") != -1:
constInfo.PLAYER_SP = LuaToPython.split("|")[3]
constInfo.PLAYER_HP = LuaToPython.split("|")[1]
constInfo.PLAYER_MAX_HP = LuaToPython.split("|")[2]
##zacqooleaven hp sp onay bitir
constInfo.PLAYER_MAX_SP = LuaToPython.split("|")[4]
uitarget.py açılır üstteki importlarin altına şunlar eklenir ;
import os
import uiCommon
import chat
import event
import uiHealth
uitarget.py içerisinde aratılır
def OnUpdate(self):
altına eklenir
if self.vid != 0 and player.IsPVPInstance(self.vid) and constInfo.DUELLODAIZINVARMI == "Kabul etti.":
constInfo.PLAYER_VID = self.vid
constInfo.PYTHONISLEM = "#hp_sp#"
self.healthBoard.Show()
event.QuestButtonClick(constInfo.PYTHONTOLUA)
if not self.healthBoard.IsShow():
uitarget.py içerisinde aratılır.
def __init__(self):
altına eklenir.
self.healthBoard = uiHealth.HealthBoard()
uitarget.py içerisinde aratılır
def Close(self):
altına eklenir
self.__Initialize()
self.healthBoard.Hide()
self.Hide()
uitarget.py içerisinde aratılır
def OnPVP(self):
net.SendChatPacket("/pvp %d" % (self.vid))
aşağıdakiyle komple değistirilir
def OnPVP(self):
""" Paylasimci ZacqooLeaven """
if player.IsChallengeInstance(self.vid):
questionDialog = uiCommon.QuestionDialog()
if constInfo.DUELLODAIZINVARMI == "":
questionDialog.SetText("Rakibin HP ve SP gorebilsin mi ? " + " " + chr.GetNameByVID(self.vid)+": Rakip kabul etmedi.")
else:
questionDialog.SetText("Rakibin HP ve SP gorebilsin mi ? " + " " + chr.GetNameByVID(self.vid)+":" + constInfo.DUELLODAIZINVARMI)
self.questionDialog = questionDialog
questionDialog.SetAcceptEvent(ui.__mem_func__(self.Yes2))
questionDialog.SetCancelEvent(ui.__mem_func__(self.No2))
questionDialog.Open()
questionDialog.SetText("Rakibinin HP ve SP gormesine izin veriyor musun? ")
elif not player.IsCantFightInstance(self.vid) or player.IsRevengeInstance(self.vid) or player.IsChallengeInstance(self.vid):
questionDialog = uiCommon.QuestionDialog()
questionDialog.SetAcceptEvent(ui.__mem_func__(self.Yes))
net.SendChatPacket("/pvp %d" % (self.vid))
questionDialog.SetCancelEvent(ui.__mem_func__(self.No))
questionDialog.Open()
self.questionDialog = questionDialog
def Yes(self):
self.questionDialog.Close()
net.SendWhisperPacket(chr.GetNameByVID(self.vid), "||"+"HP kabul ettimaq.")
if constInfo.DUELLODAIZINVARMI == "Kabul etmedi." or constInfo.DUELLODAIZINVARMI == "":
def No(self):
self.questionDialog.Close()
net.SendWhisperPacket(chr.GetNameByVID(self.vid), "||"+"HP kabul etmedi.Hpstanceingilizcebitti")
net.SendChatPacket("/pvp %d" % (self.vid))
def Yes2(self):
constInfo.DUELLODAIZINVARMI = ""
net.SendWhisperPacket(chr.GetNameByVID(self.vid), "||"+"C kabul ettimaq.")
chat.AppendChat(chat.CHAT_TYPE_INFO, locale.RAKIPKABULETMEDISENDEETMEDIN)
net.SendChatPacket("/pvp %d" % (self.vid))
net.SendWhisperPacket(chr.GetNameByVID(self.vid), '||zacqooleavenhpsp||')
else:
net.SendChatPacket("/pvp %d" % (self.vid))
self.questionDialog.Close()
def No2(self):
else:
self.questionDialog.Close()
if constInfo.DUELLODAIZINVARMI == "Kabul etti.":
constInfo.DUELLODAIZINVARMI = ""
chat.AppendChat(chat.CHAT_TYPE_INFO, locale.RAKIPKABULETMEDISENDEETMEDIN2)
net.SendWhisperPacket(chr.GetNameByVID(self.vid), '||zacqooleavenhpspq||')
net.SendChatPacket("/pvp %d" % (self.vid))
net.SendChatPacket("/pvp %d" % (self.vid))
net.SendWhisperPacket(chr.GetNameByVID(self.vid), "||"+"C kabul etmedi.Hpstanceingilizcebitti")
locale_tr > locale > tr > locale_game.txt açılır ve en alta eklenir
RAKIPKABULETMEDILANXD2 <Sistem> HP ve SP görüntülemesi için rakibin ve sizin onayınız gerekir.
RAKIPKABULETMEDILANXD <Sistem> Rakibiniz HP ve SP görüntülemesini redetti. Rakibiniz HP ve SP'nizi görüntülemeyecek.
RAKIPKABULETMEDISENDEETMEDIN <Sistem> Rakibiniz HP ve SP görüntülemesini redetti. Rakibiniz HP ve SP'nizi görüntülemeyecek.
RAKIPKABULETMEDISENDEETMEDIN2 <Sistem> HP ve SP görüntülemesini redettiniz. Taraflar HP ve SP görüntülemeyecek.
İndirilmesi gereken şu dosyaları indirin root içerisinde uihealth.py'yi root'un içerisine atıyoruz, quest klasörünün içindeki zcwsonay.lua 'yı questten okutuyoruz ve işlem tamamdır .
Ufak bir güncelleme (düello başlangıc efekti)
Eğer düello başladığında geri sayma efektini kullanıyorsanız problem oluşturabilir ikisini bir arada çalıştırmak için;
uitarget.py açılır ve aratılır
self.buttonDict[localeInfo.TARGET_BUTTON_FIGHT].SetEvent(ui.__mem_func__(self.demirwsgame))
Altındaki 2 satır değiştirilir
self.buttonDict[localeInfo.TARGET_BUTTON_ACCEPT_FIGHT].SetEvent(ui.__mem_func__(self.demirwsgame))
self.buttonDict[localeInfo.TARGET_BUTTON_AVENGE].SetEvent(ui.__mem_func__(self.demirwsgame))
Tekrar aratılır :
def demirwsgame(self):
kod bloğu tamamen değiştirilir
def demirwsgame(self):
if player.IsChallengeInstance(self.vid):
questionDialog = uiCommon.QuestionDialog()
if constInfo.DUELLODAIZINVARMI == "":
questionDialog.SetText("Rakibin HP ve SP gorebilsin mi ? " + " " + chr.GetNameByVID(self.vid)+": Rakip kabul etmedi.")
else:
questionDialog.SetText("Rakibin HP ve SP gorebilsin mi ? " + " " + chr.GetNameByVID(self.vid)+":" + constInfo.DUELLODAIZINVARMI)
self.questionDialog = questionDialog
questionDialog.SetAcceptEvent(ui.__mem_func__(self.Yes2))
questionDialog.SetCancelEvent(ui.__mem_func__(self.No2))
questionDialog.Open()
questionDialog.SetText("Rakibinin HP ve SP gormesine izin veriyor musun? ")
elif not player.IsCantFightInstance(self.vid) or player.IsRevengeInstance(self.vid) or player.IsChallengeInstance(self.vid):
questionDialog = uiCommon.QuestionDialog()
questionDialog.SetAcceptEvent(ui.__mem_func__(self.Yes))
net.SendChatPacket("/pvp %d" % (self.vid))
questionDialog.SetCancelEvent(ui.__mem_func__(self.No))
questionDialog.Open()
self.questionDialog = questionDialog
def Yes(self):
self.questionDialog.Close()
net.SendWhisperPacket(chr.GetNameByVID(self.vid), "||"+"HP kabul ettimaq.")
constInfo.demirstartgame = self.vid
constInfo.demirstartgame = self.vid
event.QuestButtonClick(constInfo.demirvidgame)
def No(self):
self.questionDialog.Close()
net.SendWhisperPacket(chr.GetNameByVID(self.vid), "||"+"HP kabul etmedi.Hpstanceingilizcebitti")
net.SendChatPacket("/pvp %d" % (self.vid))
constInfo.demirstartgame = self.vid
event.QuestButtonClick(constInfo.demirvidgame)
def Yes2(self):
if constInfo.DUELLODAIZINVARMI == "Kabul etmedi.":
if constInfo.DUELLODAIZINVARMI == "":
constInfo.DUELLODAIZINVARMI = ""
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.RAKIPKABULETMEDISENDEETMEDIN)
self.questionDialog.Close()
event.QuestButtonClick(constInfo.demirvid)
net.SendWhisperPacket(chr.GetNameByVID(self.vid), '||zacqooleavenhpsp||')
else:
net.SendWhisperPacket(chr.GetNameByVID(self.vid), "||"+"C kabul ettimaq.")
constInfo.demirstartgame = self.vid
event.QuestButtonClick(constInfo.demirvid)
def No2(self):
event.QuestButtonClick(constInfo.demirvid)
self.questionDialog.Close()
if constInfo.DUELLODAIZINVARMI == "Kabul etti.":
constInfo.DUELLODAIZINVARMI = ""
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.RAKIPKABULETMEDISENDEETMEDIN2)
net.SendWhisperPacket(chr.GetNameByVID(self.vid), '||zacqooleavenhpspq||')
constInfo.demirstartgame = self.vid
else:
event.QuestButtonClick(constInfo.demirvid)
net.SendWhisperPacket(chr.GetNameByVID(self.vid), "||"+"C kabul etmedi.Hpstanceingilizcebitti")
constInfo.demirstartgame = self.vid
Ve kullanım sorunsuzdur, yorumlarınızı eksik etmeyin takipde kalın daha güzel yenilikler paylaşılacaktır.
Metin2 Blogu.
bok
YanıtlaSil