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ó?
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?
É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.
Ahhoz nem elég kliens oldalon szerkeszteni, szerver oldalt is ki kell egészíteni.
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]
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.