Hallöle Epvp wie der Titel schon sagt release ich mal meinen Switcher+
hier mal zwei Screens dazu :
[CENTER]


für die die den Switcher+ nicht kennen einfach die Beschreibung des Items am Screen lesen dann wisst ihr schon was er macht
genug gelabert zum einfügen:
in der Constinfo irgendwo das hier einfügen:
Code:
NEWSWITCHER = {"qid":0, "questCMD":"","attr_number":0,"old_attr_type":[],"new_attr_type":[],"old_attr_value":[],"new_attr_value":[],"itemVnum":0,"open":0,"actual_slot":0}
am anfang der game.py
Code:
import uinewsitcher
nach def __init__(self, stream): suchen und das hinzufügen
Code:
self.NewSwitcher = uinewsitcher.NewSwitcher()
in der game.py nach __ServerCommand_Build suchen und das hinzufügen:
Code:
"NEWSWITCHER" :self._NewSwitcherCMD,
Code:
def _NewSwitcherCMD(self, command):
cmd = command.split("/")
if cmd[0] == "QID":
constInfo.NEWSWITCHER["qid"] = int(cmd[1])
elif cmd[0] == "QUESTCMD":
net.SendQuestInputStringPacket(str(constInfo.NEWSWITCHER["questCMD"]))
elif cmd[0] == "OLD_ATTR":
constInfo.NEWSWITCHER["itemVnum"] = 0
constInfo.NEWSWITCHER["itemVnum"] = int(cmd[1])
constInfo.NEWSWITCHER["old_attr_type"].append(int(cmd[2]))
constInfo.NEWSWITCHER["old_attr_value"].append(int(cmd[3]))
self.NewSwitcher.BoniAnzahl = 0
self.NewSwitcher.BoniAnzahl = len(constInfo.NEWSWITCHER["old_attr_type"])
elif cmd[0] == "CLEAR_BONUS":
bonis = ["new_attr_type","new_attr_value","old_attr_type","old_attr_value"]
for i in range(len(bonis)):
constInfo.NEWSWITCHER[bonis[i]] = []
elif cmd[0] == "NEW_ATTR":
constInfo.NEWSWITCHER["new_attr_type"].append(int(cmd[1]))
constInfo.NEWSWITCHER["new_attr_value"].append(int(cmd[2]))
elif cmd[0] == "OPEN":
self.NewSwitcher.Open()
so game ist fertig als nächstes ist die uiinventory dran
nach def __init__(self): in der Class inventorywindow suchen und folgendes hinzufügen:
Code:
self.itemVnum = 0
nach def SelectItemSlot suchen und unter
Code:
self.__DropSrcItemToDestItemInInventory(attachedItemVID, attachedSlotPos, itemSlotIndex)
Code:
self.itemVnum = attachedItemVID
hinzufügen
nach __SendUseItemToItemPacket suchen und durch meine funktion ersetzen:
Code:
def __SendUseItemToItemPacket(self, srcSlotPos, dstSlotPos): # °³ÀλóÁ¡ ¿*°í ÀÖ´Â µ¿¾È ¾ÆÀÌÅÛ »ç¿ë ¹æÁö dstItemVNum = player.GetItemIndex(dstSlotPos) if uiPrivateShopBuilder.IsBuildingPrivateShop(): chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.USE_ITEM_FAILURE_PRIVATE_SHOP) return if self.itemVnum == 76026: if constInfo.NEWSWITCHER["open"] == 1: return wearfleg = self.GetWearfleg(dstItemVNum) self.itemVnum = 0 if wearfleg: constInfo.NEWSWITCHER["questCMD"] = "USE_SWITCHER#76026#"+str(dstSlotPos)+"#"+str(srcSlotPos)+"#"+str(wearfleg) event.QuestButtonClick(int(constInfo.NEWSWITCHER["qid"])) constInfo.NEWSWITCHER["actual_slot"] = int(dstSlotPos) return net.SendItemUseToItemPacket(srcSlotPos, dstSlotPos)
darunter die neue Funktion einfügen:
Code:
def GetWearfleg(self,itemVnum):
item.SelectItem(itemVnum)
wearflags = {item.WEARABLE_BODY:1,item.WEARABLE_HEAD:2,item.WEARABLE_FOOTS:4,item.WEARABLE_WRIST:8,item.WEARABLE_WEAPON:16,item.WEARABLE_NECK:32,item.WEARABLE_EAR:64,item.WEARABLE_SHIELD:256}
wears = [item.WEARABLE_BODY,item.WEARABLE_HEAD,item.WEARABLE_FOOTS,item.WEARABLE_WRIST,item.WEARABLE_WEAPON,item.WEARABLE_NECK,item.WEARABLE_EAR,item.WEARABLE_SHIELD]
try:
for i in range(len(wears)):
if item.IsWearableFlag(wears[i]):
return int(wearflags[wears[i]])
except KeyError:
return None
so uiinventory ist auch fertig
so nun müsst ihr in navicat gehen auf die tabelle item_attr und export wizard klicken und eine txt file dumpen, und in diesem txt file alle leerzeichen mit # ersetzen damit die quest eure bonis auslesen kann.
Diese Datei kommt in euren Quest Ordner
so und zu guter letzt fügt ihr die sachen ein selectattrdialog.py nach uiscript quest sollte bekannt sein und die uinewswitcher nach root
Code:
INSERT INTO `item_proto` VALUES ('76026', 0xB8AEB9D9C0CCC0C720B9DDC1F6, 0x476567656E7374616E64207665727A61756265726E2B, '18', '0', '0', '1', '0', '0', '0', '', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '-1', '-1', '-1', '-1', '-1', '-1', '0', '0', '0', '0');
<ItemDef Vnum="76026" Name="└τ░µ║±╝¡" LocalizedName[CENTER]
hier der stuff zum item einfügen:
="Gegenstand verzaubern+" Type="3" SubType="18" Weight="0" Size="1" AntiFlags="65920" Flags="8196" WearFlags="0" ImmuneFlags="0" Gold="0" ShopBuyPrice="0" LimitType0="0" LimitValue0="0" LimitType1="0" LimitValue1="0" ApplyType0="0" ApplyValue0="0" ApplyType1="0" ApplyValue1="0" ApplyType2="0" ApplyValue2="0" Value0="0" Value1="0" Value2="0" Value3="0" Value4="0" Value5="0" Socket0="0" Socket1="0" Socket2="0" RefinedVnum="0" RefineSet="0" AlterToMagicItemPercent="0" Specular="0" GainSocketPercent="0" AddonType="0" />
76026 Gegenstand verzaubern+ Entfernt die Boni eines deiner Gegenstände und fügt neue hinzu. Die neuen Boni werden dir vorher angezeigt. Du kannst dann wählen, ob du die angezeigten Boni möchtest.
76026 ETC icon/item/new_switcher.tga
icon ist im anhang
- Ich hoffe ich hab jetzt nicht irgendwas vergessen hab das Release gerade richtig schnell geschriben
- Wer Probleme beim einfügen hat sollte sich schämen kann hier aber dennoch seine Probleme posten
- so weit ich es getestet habe funtzt der Switcher einwandfrei sollten bugs auftreten dann meldet euch hier im Thread ich werde sie beheben, den ich hab ihn jetzt erst fertig gestellt und nicht auf Herz und Nieren getestet.
- Gegebenfalls die item.set_attribute und item.get_attribute funktion anpassen an eure Files.
- viel Spaß damit
Mfg Gerald
--------------------UPDATE----------------------
hab mal die quest editiert und neu hochgeladen hab unter anderem alles was sensi gesagt hat gefixxt und noch mehr abfragen hinzugefügt somit sollte das system nun sicher sein.
und ihr solltet in uiinventory nach __SendMoveItemPacket suchen und folgendes darunter einmal eingerückt schreiben:
hab mal die quest editiert und neu hochgeladen hab unter anderem alles was sensi gesagt hat gefixxt und noch mehr abfragen hinzugefügt somit sollte das system nun sicher sein.
und ihr solltet in uiinventory nach __SendMoveItemPacket suchen und folgendes darunter einmal eingerückt schreiben:
Code:
if constInfo.NEWSWITCHER["open"] == 1: return
Code:
def __SendMoveItemPacket(self, srcSlotPos, dstSlotPos, srcItemCount): # °³ÀλóÁ¡ ¿*°í ÀÖ´Â µ¿¾È ¾ÆÀÌÅÛ »ç¿ë ¹æÁö if uiPrivateShopBuilder.IsBuildingPrivateShop(): chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.MOVE_ITEM_FAILURE_PRIVATE_SHOP) return if constInfo.NEWSWITCHER["open"] == 1: return net.SendItemMovePacket(srcSlotPos, dstSlotPos, srcItemCount)







