Equipment viewer on/off button

Indította Noisa, 2015-05-18, 23:43:40

Sziasztok!
Itt egy equipment viewer on/off gombot tudunk összehozni.
Lehet ciki a felszerelés esetleg titok, kikapcsolhatjuk tilthatjuk,hogy megnézzék.Vagy ellenkező esetben bekapcsolhatjuk ha büszkélkedni akarunk.
Elsőként...tegyük be a P3NG3R álltal publikált kibővitett equipment viewer-t(ha még nincs)
http://metin2dev.org/board/index.php?/topic/2994-cpy-extended-equipment-viewer/

Majd jöhet a ki/be kapcsoló gombunk, de mielőtt nekirontasz:
(Csináljatok biztonsági mentést, és "TAB")


Kliens oldal/bin

packet.h
keressetek rá:
BLOCK_PARTY_REQUEST         = (1 << 5),
majd alá írjátok:
BLOCK_VIEW_EQUIPMENT = (1 << 6),

pythonplayermodul.cpp
keressetek rá:
PyModule_AddIntConstant(poModule, "BLOCK_PARTY_REQUEST", BLOCK_PARTY_REQUEST);
és illesszétek alá:
PyModule_AddIntConstant(poModule, "BLOCK_VIEW_EQUIPMENT", BLOCK_VIEW_EQUIPMENT);

Kész ...build... :)

Kliens oldal
root/uitarget.py
keressetek rá:
self.buttonDict[localeInfo.TARGET_BUTTON_EXIT_OBSERVER].SAFE_SetEvent(self.__OnExitObserver)
alá illesszétek be:
self.buttonDict[localeInfo.TARGET_BUTTON_VIEW_EQUIPMENT].SAFE_SetEvent(self.__OnViewEquipment)
majd keressetek rá:
BUTTON_NAME_LIST =
és ide illesszétek be:
localeInfo.TARGET_BUTTON_VIEW_EQUIPMENT,
tovább...keressetek rá:
def __OnExitObserver(self):
net.SendChatPacket("/observer_exit")

és alá illesszétek be:
def __OnViewEquipment(self):
net.SendChatPacket("/view_equip " + str(self.vid))

Mentés...

root/uioption.py
keressetek rá:
self.blockButtonList[4].SetToggleUpEvent(self.__OnClickBlockFriendButton)
alá ilesszétek be:
self.blockButtonList[5].SetToggleDownEvent(self.__OnClickBlockViewEquipmentButton)
majd alatta keressetek rá:
self.blockButtonList[4].SetToggleDownEvent(self.__OnClickBlockFriendButton)
és illessétek be alá:
self.blockButtonList[5].SetToggleDownEvent(self.__OnClickBlockViewEquipmentButton)

keressetek rá:
self.blockButtonList.append(GetObject("block_friend_button"))
és illesszétek alá:
self.blockButtonList.append(GetObject("block_view_equipment_button"))
majd keressétek meg:
def __OnClickBlockPartyRequest(self):
self.RefreshBlock()
global blockMode
net.SendChatPacket("/setblockmode " + str(blockMode ^ player.BLOCK_PARTY_REQUEST))

és alá illesszétek be:
def __OnClickBlockViewEquipmentButton(self):
self.RefreshBlock()
global blockMode
net.SendChatPacket("/setblockmode " + str(blockMode ^ player.BLOCK_VIEW_EQUIPMENT))

tovább
keressetek rá:
self.blockButtonList[5].SetToggleUpEvent(self.__OnClickBlockPartyRequest)
illesszétek be alá:
self.blockButtonList[6].SetToggleUpEvent(self.__OnClickBlockViewEquipmentButton)
kicsit lejjebb:
self.blockButtonList[5].SetToggleDownEvent(self.__OnClickBlockPartyRequest)
és alá:
self.blockButtonList[6].SetToggleDownEvent(self.__OnClickBlockViewEquipmentButton)
és még keressetek rá:
self.blockButtonList.append(GetObject("block_party_request_button"))
illesszétek be alá:
self.blockButtonList.append(GetObject("block_view_equipment_button"))
menthetjük...

uiscript/gameoptiondialog.py

Itt keressük meg:
{
"name" : "block_party_request_button",
"type" : "toggle_button",

"x" : LINE_DATA_X+MIDDLE_BUTTON_WIDTH*2,
"y" : 140,

"text" : uiScriptLocale.OPTION_BLOCK_PARTY_REQUEST,
"tooltip_text" : "Csoport letíltása",

"default_image" : ROOT_PATH + "middle_button_01.sub",
"over_image" : ROOT_PATH + "middle_button_02.sub",
"down_image" : ROOT_PATH + "middle_button_03.sub",
},

és illesszk alá:
{
"name" : "block_view_equipment_button",
"type" : "toggle_button",

"x" : LINE_DATA_X+MIDDLE_BUTTON_WIDTH*0,
"y" : 165,

"text" : uiScriptLocale.OPTION_BLOCK_VIEW_EQUIPMENT,
"tooltip_text" : "Kukucskálás letíltása",

"default_image" : ROOT_PATH + "middle_button_01.sub",
"over_image" : ROOT_PATH + "middle_button_02.sub",
"down_image" : ROOT_PATH + "middle_button_03.sub",
},


Megjegyzésként még, hogy itt izlés szerint az ablak méretét modosítani kell mert többek lettünk egy gombbal.
Én lusta voltam számolgatni ezért nálam így néz ki:
window = {
"name" : "GameOptionDialog",
"style" : ("movable", "float",),

"x" : 0,
"y" : 0,

"width" : 300,
"height" : 25*11+8,

"children" :
(
{
"name" : "board",
"type" : "board",

"x" : 0,
"y" : 0,

"width" : 300,
"height" : 25*11+8,

"children" :

helyett:
window = {
"name" : "GameOptionDialog",
"style" : ("movable", "float",),

"x" : 0,
"y" : 0,

"width" : 300,
"height" : 350,

"children" :
(
{
"name" : "board",
"type" : "board",

"x" : 0,
"y" : 0,

"width" : 300,
"height" : 350,

"children" :

Ezzel a kliens résszel készen is lennénk.         

Server

char.h
keressük meg:
enum EBlockAction
illesszétek be:
BLOCK_VIEW_EQUIPMENT = (1 << 6),
és valahogy így nézzen ki:
enum EBlockAction
{
BLOCK_EXCHANGE = (1 << 0),
BLOCK_PARTY_INVITE = (1 << 1),
BLOCK_GUILD_INVITE = (1 << 2),
BLOCK_WHISPER = (1 << 3),
BLOCK_MESSENGER_INVITE = (1 << 4),
BLOCK_PARTY_REQUEST = (1 << 5),
BLOCK_VIEW_EQUIPMENT = (1 << 6),
};

mentés...

char.cpp
keressetek rá:
void CHARACTER::SetBlockMode(BYTE bFlag)
és illesszétek a bockba:
SetQuestFlag("game_option.block_view_equipment", bFlag & BLOCK_VIEW_EQUIPMENT ? 1 : 0);
ilyesmi lesz :
void CHARACTER::SetBlockMode(BYTE bFlag)
{
m_pointsInstant.bBlockMode = bFlag;

ChatPacket(CHAT_TYPE_COMMAND, "setblockmode %d", m_pointsInstant.bBlockMode);

SetQuestFlag("game_option.block_exchange", bFlag & BLOCK_EXCHANGE ? 1 : 0);
SetQuestFlag("game_option.block_party_invite", bFlag & BLOCK_PARTY_INVITE ? 1 : 0);
SetQuestFlag("game_option.block_guild_invite", bFlag & BLOCK_GUILD_INVITE ? 1 : 0);
SetQuestFlag("game_option.block_whisper", bFlag & BLOCK_WHISPER ? 1 : 0);
SetQuestFlag("game_option.block_messenger_invite", bFlag & BLOCK_MESSENGER_INVITE ? 1 : 0);
SetQuestFlag("game_option.block_party_request", bFlag & BLOCK_PARTY_REQUEST ? 1 : 0);
SetQuestFlag("game_option.block_view_equipment", bFlag & BLOCK_VIEW_EQUIPMENT ? 1 : 0);
}

mentés...

cmd_general.cpp:
keressetek rá:
ACMD(do_view_equip)
és modosítsátok, hogy így nézzen ki:
if (!tch->IsPC())
return;

if (tch->IsBlockMode(BLOCK_VIEW_EQUIPMENT))
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot view the equipment of the target."));
return;
}

mentés....
és fordulhat... :)

Már csak a quest van hátra

game_option.quest
és itt értelemszerűen illesszétek be:
if pc.getqf("block_view_equipment") == 1 then
msg = msg.."Felszerelés "
val = val + 6
end


Ezzel megvolnánk . Remélem nem hagytam ki semmi mivel, hogy nem dokumentáltam a folyamatot csak emlékezetből írtam.
Külön köszönet P3NG3R-nek és AngelOfGod-nak a segítségért és az útmutatásért.
Ha valami még sem működik küldj egy PM-et és megpróbálok segíteni.