Sziasztok! :)
Privátban kértek tőlem leírást ahhoz, hogy, hogy jó lenne ha mutatná a leltárban, hogy mennyi sárkányérme (SÉ) van nála.
Ezért most hoztam nektek egy leírást!
Itt egy videó, hogy miről beszélek: https://www.youtube.com/watch?v=93aufcRE_4s#t=15
34k és az alatt lévő game fájlok esetén:
Kliens oldal:
root.eix/epk --> uiinventory.py
Rákerestek erre:
self.wndMoneySlot = self.GetChild("Money_Slot")
Alá teszitek ezt:
self.wndMds = self.GetChild("Mds")
self.wndMdsSlot = self.GetChild("Mds_Slot")
Ezután keresel erre:
def Destroy(self):
Megkeresed ebben a funkcióban a yang helyét (money):
Idéz
self.wndMoney = 0
self.wndMoneySlot = 0
A money alá teszed ezt:
self.wndMds = 0
self.wndMdsSlot = 0
Rákeresel erre:
def RefreshStatus(self):
Lecseréled az egész funkciót erre:
def RefreshStatus(self):
money = player.GetElk()
self.wndMoney.SetText(locale.NumberToMoneyString(money))
import constInfo
self.wndMds.SetText(str(constInfo.mds) + " Md's")
Rákeresel erre:
def OnUpdate(self):
Ha van alatta funkció akkor ezt alámásolod:
import constInfo
self.wndMds.SetText(str(constInfo.mds) + " Md's")
Ha nincs def OnUpdate(self) funkciód, akkor létehozod, ami így nézzen ki:
def RefreshStatus(self):
money = player.GetElk()
self.wndMoney.SetText(locale.NumberToMoneyString(money))
import constInfo
self.wndMds.SetText(str(constInfo.mds) + " SÉ") ###Md's helyett SÉ
def OnUpdate(self):
import constInfo
self.wndMds.SetText(str(constInfo.mds) + " SÉ")
###Figyelj, hogy az uiinventory.py végén legyen üres sor!###
game.py
Rákeresel erre:
def __ServerCommand_Build(self):
Alá írod ezt:
#Carga Mds Start
"Mds" : self.__Mds,
#Carga Mds End
A game.py végére (nem teljesen a végére) beilleszted ezt:
def __Mds(self, coins):
import constInfo
constInfo.mds = int(coins)
continfo.py
Beleírod ezt:
mds = 0
locale_**.eix/epk --> inventorywindow.py
Rákeresel erre:
"name":"Money_Slot",
A Money_Slot végére illeszted az Mds_Slot-ot.
Ezt beilleszted alá:
# Coins-system or SÉ
{
"name":"Mds_Slot",
"type":"button",
#x és y koordináta értékével tudod tologatni a leltáron belül a kis dobozt,
#ami mutatja a SÉ-t.
"x":-68,
"y":48,
"horizontal_align":"center",
"vertical_align":"bottom",
"default_image" : "d:/ymir work/ui/public/parameter_slot_05.sub",
"over_image" : "d:/ymir work/ui/public/parameter_slot_05.sub",
"down_image" : "d:/ymir work/ui/public/parameter_slot_05.sub",
"children" :
(
{
"name":"Mds_Icon",
"type":"image",
"x":-21,
"y":2,
"image":"d:/ymir work/ui/game/windows/money_icon.sub",
},
{
"name" : "Mds",
"type" : "text",
"x" : 5,
"y" : 3,
"horizontal_align" : "right",
"text_horizontal_align" : "right",
"text" : "123456789",
},
),
},
Mentheted ezt is! Ezzel vége a kliens oldalnak!
Aztán már csak egy teendő van hátra, hogy a hozzátartozó quest-et berakod és lefuttatod ./qc-val.
Quest hozzá:
quest mds begin
state start begin
when login begin
loop_timer("carga_mds", 10) --10sec-enként ellenőrzi az értékét az Mds-nek (SÉ) (átírhatod az időzítőt)
end
when carga_mds.timer begin
local coins = mysql_query("SELECT coins from account.account WHERE id="..pc.get_account_id().." LIMIT 1;")[1][1]
cmdchat("Mds "..coins)
end
end
end
Apropó!!
A quest rendes futásához szükség van a MYSQL adatfeldolgozó parancsra:
http://metin2hungary.net/index.php/topic,151357.msg825882.html#msg825882
Üdvözlettel,
Pisti95
40k avagy forrás esetén:
Game fájl forrás:
Server/game/src/
input_login.cpp
#include -ok alá egyből bemásolod ezt:
static void _send_coins(LPCHARACTER ch)
{
if (ch)
{
SQLMsg * pMsg = DBManager::instance().DirectQuery("select coins from account.account WHERE id = %d",ch->GetDesc()->GetAccountTable().id);
if (pMsg->Get()->uiNumRows > 0)
{
MYSQL_ROW row = mysql_fetch_row(pMsg->Get()->pSQLResult);
ch->ChatPacket(CHAT_TYPE_COMMAND, "BINARY_Update_Coins %s", row[0]);
delete pMsg;
}
}
}
Rákeresel erre:
void CInputLogin::Entergame(LPDESC d, const char * data)
Ezen belül pedig ezt a sort keresd meg:
_send_bonus_info(ch);
Alá írod ezt:
_send_coins(ch);
Kliens oldal
root.eix/epk
constinfo.py
Elejére ezt írod:
mds = 0
game.py
Rákeresel erre:
serverCommandList={
Alá írod a többi közé ezt:
"BINARY_Update_Coins" :self.BINARY_Update_Coins,
A végére ezt írod:
def BINARY_Update_Coins(self, coins):
constInfo.mds =(str(coins))
uiinventory.py
Rákerestek erre:
self.wndMoneySlot = self.GetChild("Money_Slot")
Alá teszitek ezt:
self.wndMds = self.GetChild("Mds")
self.wndMdsSlot = self.GetChild("Mds_Slot")
Ezután keresel erre:
def Destroy(self):
Megkeresed ebben a funkcióban a yang helyét (money):
Idéz
self.wndMoney = 0
self.wndMoneySlot = 0
A money alá teszed ezt:
self.wndMds = 0
self.wndMdsSlot = 0
Rákeresel erre:
def RefreshStatus(self):
Lecseréled az egész funkciót erre:
def RefreshStatus(self):
money = player.GetElk()
self.wndMoney.SetText(localeInfo.NumberToMoneyString(money))
import constInfo
self.wndMds.SetText(str(constInfo.mds) + " SÉ")
Rákeresel erre:
def OnUpdate(self):
Ha van alatta funkció akkor ezt alámásolod:
import constInfo
self.wndMds.SetText(str(constInfo.mds) + " SÉ")
Ha nincs, akkor bemásolod a def RefreshStatus(self): alá:
def OnUpdate(self):
import constInfo
self.wndMds.SetText(str(constInfo.mds) + " SÉ")
locale_**.eix/epk
inventorywindow.py
Rákeresel erre:
"name":"Money_Slot",
A Money_Slot végére illeszted az Mds_Slot-ot.
Ezt beilleszted alá:
# Coins-system
{
"name":"Mds_Slot",
"type":"button",
#x és y koordináta értékével tudod tologatni a leltáron belül a kis dobozt,
#ami mutatja a SÉ-t.
"x":-68,
"y":48,
"horizontal_align":"center",
"vertical_align":"bottom",
"default_image" : "d:/ymir work/ui/public/parameter_slot_05.sub",
"over_image" : "d:/ymir work/ui/public/parameter_slot_05.sub",
"down_image" : "d:/ymir work/ui/public/parameter_slot_05.sub",
"children" :
(
{
"name":"Mds_Icon",
"type":"image",
"x":-21,
"y":2,
"image":"d:/ymir work/ui/game/windows/money_icon.sub",
},
{
"name" : "Mds",
"type" : "text",
"x" : 5,
"y" : 3,
"horizontal_align" : "right",
"text_horizontal_align" : "right",
"text" : "123456789",
},
),
},
Ezzel készen is vagyunk!
Megjegyzés: A leltárban lévő mennyiség, csak teleportálásnál fog frissülni!
Üdvözlettel,
Pisti95