játékbeállítás menübe gomb (m)

Indította Noisa, 2015-05-15, 20:52:14

Sziasztok!
A játékbeállítás menübe szerettem volna létrehozni egy buttont equipment viewer ki/be kapcsolására de valószínű kicsit naív voltam,hogy egyszerűen fog menni. A gombot létrehoztam és a következő a syserr:
0515 10:50:48055 ::   File "ui.py", line 1130, in OnToggleDown

0515 10:50:48056 ::   File "uiGameOption.py", line 236, in __OnClickBlockViewEquipmentButton

0515 10:50:48056 :: AttributeError
0515 10:50:48056 :: :
0515 10:50:48056 :: 'module' object has no attribute 'BLOCK_VIEW_EQUIPMENT'
0515 10:50:48056 ::

0515 10:51:52262 :: Traceback (most recent call last):

0515 10:51:52262 ::   File "ui.py", line 1130, in OnToggleDown

0515 10:51:52262 ::   File "uiGameOption.py", line 236, in __OnClickBlockViewEquipmentButton

0515 10:51:52262 :: AttributeError
0515 10:51:52262 :: :
0515 10:51:52263 :: 'module' object has no attribute 'BLOCK_VIEW_EQUIPMENT'

A következőkbe írtam be nem tudom jól, illetve elég e ?
uitarget:
self.buttonDict[localeInfo.TARGET_BUTTON_INVITE_GUILD].SAFE_SetEvent(self.__OnGuildAddMember)
self.buttonDict[localeInfo.TARGET_BUTTON_DISMOUNT].SAFE_SetEvent(self.__OnDismount)
self.buttonDict[localeInfo.TARGET_BUTTON_EXIT_OBSERVER].SAFE_SetEvent(self.__OnExitObserver)
self.buttonDict[localeInfo.TARGET_BUTTON_VIEW_EQUIPMENT].SAFE_SetEvent(self.__OnViewEquipment)
self.buttonDict[localeInfo.TARGET_BUTTON_REQUEST_ENTER_PARTY].SAFE_SetEvent(self.__OnRequestParty)
self.buttonDict[localeInfo.TARGET_BUTTON_BUILDING_DESTROY].SAFE_SetEvent(self.__OnDestroyBuilding)
self.buttonDict[localeInfo.TARGET_BUTTON_EMOTION_ALLOW].SAFE_SetEvent(self.__OnEmotionAllow)

BUTTON_NAME_LIST = (
localeInfo.TARGET_BUTTON_WHISPER,
localeInfo.TARGET_BUTTON_EXCHANGE,
localeInfo.TARGET_BUTTON_FIGHT,
localeInfo.TARGET_BUTTON_ACCEPT_FIGHT,
localeInfo.TARGET_BUTTON_AVENGE,
localeInfo.TARGET_BUTTON_FRIEND,
localeInfo.TARGET_BUTTON_INVITE_PARTY,
localeInfo.TARGET_BUTTON_LEAVE_PARTY,
localeInfo.TARGET_BUTTON_EXCLUDE,
localeInfo.TARGET_BUTTON_INVITE_GUILD,
localeInfo.TARGET_BUTTON_DISMOUNT,
localeInfo.TARGET_BUTTON_EXIT_OBSERVER,
localeInfo.TARGET_BUTTON_VIEW_EQUIPMENT,
localeInfo.TARGET_BUTTON_REQUEST_ENTER_PARTY,
localeInfo.TARGET_BUTTON_BUILDING_DESTROY,
localeInfo.TARGET_BUTTON_EMOTION_ALLOW,

def OnWhisper(self):
if None != self.eventWhisper:
self.eventWhisper(self.nameString)

def OnExchange(self):
net.SendExchangeStartPacket(self.vid)

def OnPVP(self):
net.SendChatPacket("/pvp %d" % (self.vid))

def OnAppendToMessenger(self):
net.SendMessengerAddByVIDPacket(self.vid)

def OnPartyInvite(self):
net.SendPartyInvitePacket(self.vid)

def OnPartyExit(self):
net.SendPartyExitPacket()

def OnPartyRemove(self):
net.SendPartyRemovePacket(self.vid)

def __OnGuildAddMember(self):
net.SendGuildAddMemberPacket(self.vid)

def __OnDismount(self):
net.SendChatPacket("/unmount")

def __OnExitObserver(self):
net.SendChatPacket("/observer_exit")

def __OnViewEquipment(self):
net.SendChatPacket("/view_equip " + str(self.vid))

def __OnRequestParty(self):
net.SendChatPacket("/party_request " + str(self.vid))

def __OnDestroyBuilding(self):
net.SendChatPacket("/build d %d" % (self.vid))

def __OnEmotionAllow(self):
net.SendChatPacket("/emotion_allow %d" % (self.vid))

def __OnVoteBlockChat(self):
cmd = "/vote_block_chat %s" % (self.nameString)
net.SendChatPacket(cmd)

uioption
self.fogModeButtonList[0].SAFE_SetEvent(self.__OnClickFogModeLevel0Button)
self.fogModeButtonList[1].SAFE_SetEvent(self.__OnClickFogModeLevel1Button)
self.fogModeButtonList[2].SAFE_SetEvent(self.__OnClickFogModeLevel2Button)

self.blockButtonList[0].SetToggleUpEvent(self.__OnClickBlockExchangeButton)
self.blockButtonList[1].SetToggleUpEvent(self.__OnClickBlockPartyButton)
self.blockButtonList[2].SetToggleUpEvent(self.__OnClickBlockGuildButton)
self.blockButtonList[3].SetToggleUpEvent(self.__OnClickBlockWhisperButton)
self.blockButtonList[4].SetToggleUpEvent(self.__OnClickBlockFriendButton)
self.blockButtonList[5].SetToggleDownEvent(self.__OnClickBlockViewEquipmentButton)
self.blockButtonList[0].SetToggleDownEvent(self.__OnClickBlockExchangeButton)
self.blockButtonList[1].SetToggleDownEvent(self.__OnClickBlockPartyButton)
self.blockButtonList[2].SetToggleDownEvent(self.__OnClickBlockGuildButton)
self.blockButtonList[3].SetToggleDownEvent(self.__OnClickBlockWhisperButton)
self.blockButtonList[4].SetToggleDownEvent(self.__OnClickBlockFriendButton)
self.blockButtonList[5].SetToggleDownEvent(self.__OnClickBlockViewEquipmentButton)

except:
import exception
exception.Abort("OptionDialog.__LoadDialog.LoadObject")

try:
GetObject = self.GetChild
self.titleBar = GetObject("titlebar")
self.ctrlMusicVolume = GetObject("music_volume_controller")
self.ctrlSoundVolume = GetObject("sound_volume_controller")
self.nameColorModeButtonList.append(GetObject("name_color_normal"))
self.nameColorModeButtonList.append(GetObject("name_color_empire"))
self.viewTargetBoardButtonList.append(GetObject("target_board_no_view"))
self.viewTargetBoardButtonList.append(GetObject("target_board_view"))
self.cameraModeButtonList.append(GetObject("camera_short"))
self.cameraModeButtonList.append(GetObject("camera_long"))
self.fogModeButtonList.append(GetObject("fog_level0"))
self.fogModeButtonList.append(GetObject("fog_level1"))
self.fogModeButtonList.append(GetObject("fog_level2"))
self.pvpModeButtonDict[player.PK_MODE_PEACE] = GetObject("pvp_peace")
self.pvpModeButtonDict[player.PK_MODE_REVENGE] = GetObject("pvp_revenge")
self.pvpModeButtonDict[player.PK_MODE_GUILD] = GetObject("pvp_guild")
self.pvpModeButtonDict[player.PK_MODE_FREE] = GetObject("pvp_free")
self.blockButtonList.append(GetObject("block_exchange_button"))
self.blockButtonList.append(GetObject("block_party_button"))
self.blockButtonList.append(GetObject("block_guild_button"))
self.blockButtonList.append(GetObject("block_whisper_button"))
self.blockButtonList.append(GetObject("block_friend_button"))
self.blockButtonList.append(GetObject("block_view_equipment_button"))

def __OnClickBlockExchangeButton(self):
self.RefreshBlock()
global blockMode
net.SendChatPacket("/setblockmode " + str(blockMode ^ player.BLOCK_EXCHANGE))
def __OnClickBlockPartyButton(self):
self.RefreshBlock()
global blockMode
net.SendChatPacket("/setblockmode " + str(blockMode ^ player.BLOCK_PARTY))
def __OnClickBlockGuildButton(self):
self.RefreshBlock()
global blockMode
net.SendChatPacket("/setblockmode " + str(blockMode ^ player.BLOCK_GUILD))
def __OnClickBlockWhisperButton(self):
self.RefreshBlock()
global blockMode
net.SendChatPacket("/setblockmode " + str(blockMode ^ player.BLOCK_WHISPER))
def __OnClickBlockFriendButton(self):
self.RefreshBlock()
global blockMode
net.SendChatPacket("/setblockmode " + str(blockMode ^ player.BLOCK_FRIEND))
def __OnClickBlockViewEquipmentButton(self):
self.RefreshBlock()
global blockMode
net.SendChatPacket("/setblockmode " + str(blockMode ^ player.BLOCK_VIEW_EQUIPMENT))

uigameoption
def __OnClickBlockExchangeButton(self):
self.RefreshBlock()
global blockMode
net.SendChatPacket("/setblockmode " + str(blockMode ^ player.BLOCK_EXCHANGE))
def __OnClickBlockPartyButton(self):
self.RefreshBlock()
global blockMode
net.SendChatPacket("/setblockmode " + str(blockMode ^ player.BLOCK_PARTY))
def __OnClickBlockGuildButton(self):
self.RefreshBlock()
global blockMode
net.SendChatPacket("/setblockmode " + str(blockMode ^ player.BLOCK_GUILD))
def __OnClickBlockWhisperButton(self):
self.RefreshBlock()
global blockMode
net.SendChatPacket("/setblockmode " + str(blockMode ^ player.BLOCK_WHISPER))
def __OnClickBlockFriendButton(self):
self.RefreshBlock()
global blockMode
net.SendChatPacket("/setblockmode " + str(blockMode ^ player.BLOCK_FRIEND))
def __OnClickBlockPartyRequest(self):
self.RefreshBlock()
global blockMode
net.SendChatPacket("/setblockmode " + str(blockMode ^ player.BLOCK_PARTY_REQUEST))
def __OnClickBlockViewEquipmentButton(self):
self.RefreshBlock()
global blockMode
net.SendChatPacket("/setblockmode " + str(blockMode ^ player.BLOCK_VIEW_EQUIPMENT))

self.blockButtonList[0].SetToggleUpEvent(self.__OnClickBlockExchangeButton)
self.blockButtonList[1].SetToggleUpEvent(self.__OnClickBlockPartyButton)
self.blockButtonList[2].SetToggleUpEvent(self.__OnClickBlockGuildButton)
self.blockButtonList[3].SetToggleUpEvent(self.__OnClickBlockWhisperButton)
self.blockButtonList[4].SetToggleUpEvent(self.__OnClickBlockFriendButton)
self.blockButtonList[5].SetToggleUpEvent(self.__OnClickBlockPartyRequest)
self.blockButtonList[6].SetToggleUpEvent(self.__OnClickBlockViewEquipmentButton)


self.blockButtonList[0].SetToggleDownEvent(self.__OnClickBlockExchangeButton)
self.blockButtonList[1].SetToggleDownEvent(self.__OnClickBlockPartyButton)
self.blockButtonList[2].SetToggleDownEvent(self.__OnClickBlockGuildButton)
self.blockButtonList[3].SetToggleDownEvent(self.__OnClickBlockWhisperButton)
self.blockButtonList[4].SetToggleDownEvent(self.__OnClickBlockFriendButton)
self.blockButtonList[5].SetToggleDownEvent(self.__OnClickBlockPartyRequest)
self.blockButtonList[6].SetToggleDownEvent(self.__OnClickBlockViewEquipmentButton)

def __Load_BindObject(self):
try:
GetObject = self.GetChild
self.titleBar = GetObject("titlebar")
self.nameColorModeButtonList.append(GetObject("name_color_normal"))
self.nameColorModeButtonList.append(GetObject("name_color_empire"))
self.viewTargetBoardButtonList.append(GetObject("target_board_no_view"))
self.viewTargetBoardButtonList.append(GetObject("target_board_view"))
self.pvpModeButtonDict[player.PK_MODE_PEACE] = GetObject("pvp_peace")
self.pvpModeButtonDict[player.PK_MODE_REVENGE] = GetObject("pvp_revenge")
self.pvpModeButtonDict[player.PK_MODE_GUILD] = GetObject("pvp_guild")
self.pvpModeButtonDict[player.PK_MODE_FREE] = GetObject("pvp_free")
self.blockButtonList.append(GetObject("block_exchange_button"))
self.blockButtonList.append(GetObject("block_party_button"))
self.blockButtonList.append(GetObject("block_guild_button"))
self.blockButtonList.append(GetObject("block_whisper_button"))
self.blockButtonList.append(GetObject("block_friend_button"))
self.blockButtonList.append(GetObject("block_party_request_button"))
self.blockButtonList.append(GetObject("block_view_equipment_button"))
self.viewChatButtonList.append(GetObject("view_chat_on_button"))
self.viewChatButtonList.append(GetObject("view_chat_off_button"))
self.alwaysShowNameButtonList.append(GetObject("always_show_name_on_button"))
self.alwaysShowNameButtonList.append(GetObject("always_show_name_off_button"))
self.showDamageButtonList.append(GetObject("show_damage_on_button"))
self.showDamageButtonList.append(GetObject("show_damage_off_button"))
self.showsalesTextButtonList.append(GetObject("salestext_on_button"))
self.showsalesTextButtonList.append(GetObject("salestext_off_button"))

gameoptiondialog
{
"name" : "block_view_equipment_button",
"type" : "toggle_button",

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

"text" : uiScriptLocale.OPTION_BLOCK_VIEW_EQUIPMENT,

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

Ha valakinek esetleg van tippje, hogy lehetne megoldani egyáltalán megoldható?

2015-05-15, 21:44:45 #1 Utolsó szerkesztés: 2015-05-15, 21:46:45 Szerző: AngelOfGod
Indítóba is be kéne rakni szerintem, ha nem tetted volna meg. Szerintem ez a baj. Nem igazán értek az inditókhoz de úgy vélem hogy egy másik gomb alapján próbáltad betenni, és rákerestem erre: "BLOCK_PARTY_REQUEST" és inditóba benne van, "'module' object has no attribute 'BLOCK_VIEW_EQUIPMENT'" Illetve ez arra utal hogy nincs ez a funkció vagy ilyasmi.

Köszönöm AngelOfGod , a syserr megszünt. Két helyen találtam az inditóba és beleraktam:
packet.h
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),
};

pythonplayermodul
// Block Mode
PyModule_AddIntConstant(poModule, "BLOCK_EXCHANGE", BLOCK_EXCHANGE);
PyModule_AddIntConstant(poModule, "BLOCK_PARTY", BLOCK_PARTY_INVITE);
PyModule_AddIntConstant(poModule, "BLOCK_GUILD", BLOCK_GUILD_INVITE);
PyModule_AddIntConstant(poModule, "BLOCK_WHISPER", BLOCK_WHISPER);
PyModule_AddIntConstant(poModule, "BLOCK_FRIEND", BLOCK_MESSENGER_INVITE);
PyModule_AddIntConstant(poModule, "BLOCK_PARTY_REQUEST", BLOCK_PARTY_REQUEST);
PyModule_AddIntConstant(poModule, "BLOCK_VIEW_EQUIPMENT", BLOCK_VIEW_EQUIPMENT);

De sajnos nem funkcionál, nem tíltja le...
Még merre lehet?

Tulajdonképpen mit is szeretnél elérni pontosan?
Azt hogy mások ne tudják megnézni a felszerelésed?

2015-05-16, 09:05:18 #4 Utolsó szerkesztés: 2015-05-16, 09:16:59 Szerző: TheProneOne
Én ara kovetkeztetek hogy neki bent ban viewer, és szeretne egy oljan gombot hogy a jatekos le tudja tilteni amedig akarja hogy a masik nem tudja meg nezni a cucait.
Ami ma meggyötör,holnap gyÅ'zni segít.

Ahhoz nem elég kliens oldalon szerkeszteni, szerver oldalt is ki kell egészíteni.

2015-05-16, 22:27:10 #6 Utolsó szerkesztés: 2015-05-16, 22:45:42 Szerző: Noisa
Igen azt szeretném elérni ,hogy mint pl. a pm-et le lehessen tiltani .Tehát ki be lehessen kapcsolni. Most értem haza reggel még meló előtt rákerestem és találtam game-fileban is oda vonatkozó részt ,lefordítottam és mindjárt meglátom jó lett e. :-\

Üzenet összefésülés: 2015-05-16, 22:45:42

Nos most sem üzemel még...
server oldalon következőket találtam és modosítottam:
char.h:
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),
};

char.cpp:
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);
}

Mást nem találtam :-\

Elméletileg már csak a megnyitást kell letiltanod, hiszen a tiltás már él.
De ne feledd a "game_option" questet se kiegészíteni vele.

cmd_general.cpp:
ACMD(do_view_equip)

if (!tch->IsPC())
return;

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


[spoiler]Itt vaciláltam 5 percig, hogy "target's" vagy "of the target"  a helyes, úgyhogy hagyjatok az angollal, remélem jól írtam ;D. Ha nem, írd helyesen, vagy ahogy akarod, csak a locale_string.txt fájlban egyezzen vele.[/spoiler]

2015-05-17, 23:05:52 #8 Utolsó szerkesztés: 2015-05-17, 23:47:01 Szerző: Noisa
Köszi P3NG3R!
Ennyit modosítani kellett mert nem fordult le:
ChatPacket
ch->ChatPacket
De..... Game_options quest? Sosem láttam, sosem hallottam róla  :o
Illetve google:
quest game_option begin
state start begin
when login begin
local val=0
local msg = "Blocked function: "
 
if pc.getqf("block_exchange") == 1 then
msg = msg.."Trade "
val = val + 1
end
 
if pc.getqf("block_guild_invite") == 1 then
val = val + 4
msg = msg.."Guild "
end
 
if pc.getqf("block_messenger_invite") == 1 then
msg = msg.."Messenger "
val = val + 16
end
 
if pc.getqf("block_party_invite") == 1 then
msg = msg.."Party invitation "
val = val + 2
end
 
if pc.getqf("block_party_request") == 1 then
msg = msg.."Party Joining "
val = val + 32
end
 
if pc.getqf("block_whisper") == 1 then
msg = msg.."Short message "
val = val + 8
end
 
if val != 0 then
syschat(msg)
end
 
pc.send_block_mode(val)
end
end
end
Ezt találtam...de nekem ilyen nincs...

Már van.... :)

Üzenet összefésülés: 2015-05-17, 23:47:01

Köszönöm mindenkinek az útmutatást működik!
Lehet az egész menetet ki kellene írni a szerverkészítés topikba, de szerintem elég ha archívba tesszük hátha másnak is jól jön.