Raktam ki egy pár képet ide oda korábban is megkerestek küldjem át és segítsek most mivel így is úgy is kint van legyen megosztom remélem páran hasznát veszitek.
Berakása:
Bonsd ki a root.eix epk és kövesd a következő lépeket:
A rarban lévő 3 filet másold be a kibontott root-ba:
generateinterface
constinfo2
uipet
Ezután nyisd meg a game.py-
Az importok közé írd bea következőt:
import constInfo2
Keress rá erre:
cameraHeight = 100.0
Alá ileszd be ezt:
pet_gui_activado = 0
Keress rá erre:
self.playerGauge = None
Alá ileszd be ezt:
self.petInventoryWnd = None
Keress rá erre:
if self.interface:
self.interface.HideAllWindows()
self.interface.Close()
self.interface=None
Alá illeszd be:
if self.petInventoryWnd:
self.petInventoryWnd.Destroy()
self.petInventoryWnd = None
Keress rá erre:
def __ServerCommand_Build(self):
Add hozzá a következőket:
# PET_ RENDSZER
"PetIsMine" : self.__PetIsMineByVid,
"ActivarGui" : self.__ActivarGui,
"SetPetClearItemSlotButtonIndex" : self.__PetSetClearItemSlotButtonIndex,
"SetPetIncreaseBoniButtonIndex" : self.__PetSetIncreaseBoniButtonIndex,
"SetPetSendAwayButtonIndex" : self.__PetSetSendAwayButtonIndex,
"ShowPet" : self.__PetShow,
"HidePet" : self.__PetHide,
"GetPetClearSlot" : self.__PetGetClearSlot,
"GetPetIncreaseBoni" : self.__PetGetIncreaseBoni,
"SetPet" : self.__PetSet,
"SetPetHead" : self.__PetSetHead,
"SetPetNeck" : self.__PetSetNeck,
"SetPetFoot" : self.__PetSetFoot,
"SetPetAttackValue" : self.__PetSetAttackValue,
"SetPetMagicAttackValue" : self.__PetSetMagicAttackValue,
"SetPetArmorValue" : self.__PetSetArmorValue,
"SetPetName" : self.__PetSetName,
"SetPetLevel" : self.__PetSetLevel,
"SetPetExp" : self.__PetSetExp,
"SetPetMaxExp" : self.__PetSetMaxExp,
"SetPetSkillPoints" : self.__PetSetSkillPoints,
# PET RENDSZER VÉGE
A következőket pedig másold be a game.py végére:
# PET_INVENTORY
def __PetIsMineByVid(self, vid):
targetName = chr.GetNameByVID(int(vid))
charName = player.GetName() or chr.GetMainCharacterName()
if targetName[0:len(charName)] == charName:
localeInfo.SEND_BACK = "true"
else:
localeInfo.SEND_BACK = "false"
self.__SendTextPacketToQuest()
localeInfo.SEND_BACK = ""
def __SendTextPacketToQuest(self):
net.SendQuestInputStringPacket(localeInfo.SEND_BACK)
def __PressXKey(self):
import event
#self.__DeactivarGui()
self.__PetHide()
event.QuestButtonClick(constInfo2.PET_SEND_AWAY_BUTTON_INDEX)
def GetInputStringStart(self):
constInfo.INPUT_IGNORE = 1
def GetInputStringEnd(self):
constInfo.INPUT_IGNORE = 0
def __PetSetClearItemSlotButtonIndex(self, index):
constInfo2.PET_CLEAR_ITEM_SLOT_BUTTON_INDEX = int(index)
def __PetSetIncreaseBoniButtonIndex(self, index):
constInfo2.PET_INCREASE_BONI_BUTTON_INDEX = int(index)
def __PetSetSendAwayButtonIndex(self, index):
constInfo2.PET_SEND_AWAY_BUTTON_INDEX = int(index)
def __ActivarGui(self):
global pet_gui_activado
pet_gui_activado = 1
def __DeactivarGui(self):
global pet_gui_activado
pet_gui_activado = 0
def __PetShow(self):
if not self.petInventoryWnd:
import uiPet
self.petInventoryWnd = uiPet.PetInventoryDialog()
self.petInventoryWnd.Show()
def __PetHide(self):
if self.petInventoryWnd:
self.petInventoryWnd.Hide()
def __PetGetClearSlot(self):
net.SendQuestInputStringPacket(str(self.petInventoryWnd.GetClearSlot()))
def __PetGetIncreaseBoni(self):
net.SendQuestInputStringPacket(str(self.petInventoryWnd.GetIncreaseBoni()))
def __PetSet(self, itemVnum):
if not self.petInventoryWnd:
import uiPet
self.petInventoryWnd = uiPet.PetInventoryDialog()
self.petInventoryWnd.SetPet(itemVnum)
def __PetSetHead(self, itemVnum):
if not self.petInventoryWnd:
import uiPet
self.petInventoryWnd = uiPet.PetInventoryDialog()
if int(itemVnum) > 0:
self.petInventoryWnd.SetHeadItem(itemVnum)
else:
self.petInventoryWnd.ClearHeadItem()
def __PetSetNeck(self, itemVnum):
if not self.petInventoryWnd:
import uiPet
self.petInventoryWnd = uiPet.PetInventoryDialog()
if int(itemVnum) > 0:
self.petInventoryWnd.SetNeckItem(itemVnum)
else:
self.petInventoryWnd.ClearNeckItem()
def __PetSetFoot(self, itemVnum):
if not self.petInventoryWnd:
import uiPet
self.petInventoryWnd = uiPet.PetInventoryDialog()
if int(itemVnum) > 0:
self.petInventoryWnd.SetFootItem(itemVnum)
else:
self.petInventoryWnd.ClearFootItem()
def __PetSetAttackValue(self, value):
if not self.petInventoryWnd:
import uiPet
self.petInventoryWnd = uiPet.PetInventoryDialog()
self.petInventoryWnd.SetAttackValue(value)
def __PetSetMagicAttackValue(self, value):
if not self.petInventoryWnd:
import uiPet
self.petInventoryWnd = uiPet.PetInventoryDialog()
self.petInventoryWnd.SetMagicAttackValue(value)
def __PetSetArmorValue(self, value):
if not self.petInventoryWnd:
import uiPet
self.petInventoryWnd = uiPet.PetInventoryDialog()
self.petInventoryWnd.SetArmorValue(value)
def __PetSetName(self, name):
if not self.petInventoryWnd:
import uiPet
self.petInventoryWnd = uiPet.PetInventoryDialog()
self.petInventoryWnd.SetName(name.replace("[_]", " "))
def __PetSetLevel(self, level):
if not self.petInventoryWnd:
import uiPet
self.petInventoryWnd = uiPet.PetInventoryDialog()
self.petInventoryWnd.SetLevel(level)
def __PetSetExp(self, exp):
if not self.petInventoryWnd:
import uiPet
self.petInventoryWnd = uiPet.PetInventoryDialog()
self.petInventoryWnd.SetExp(exp)
self.petInventoryWnd.UpdateExpBar()
def __PetSetMaxExp(self, maxexp):
if not self.petInventoryWnd:
import uiPet
self.petInventoryWnd = uiPet.PetInventoryDialog()
self.petInventoryWnd.SetMaxExp(maxexp)
self.petInventoryWnd.UpdateExpBar()
def __PetSetSkillPoints(self, points):
if not self.petInventoryWnd:
import uiPet
self.petInventoryWnd = uiPet.PetInventoryDialog()
self.petInventoryWnd.SetSkillPoints(points)
# Pet invertory vége
Ezzel megvagyunk a root.eix-vel vissza csomagolhatod.
A továbbiakban a rarban lévő két file-t indexbe írd be és másold be a pack mappába.
Kilehet őket bontani a megfelelő filokat a helyükre másolni aki nem szereti a sok külön álló patchet. Természetesen azoknak akik nem ismerik a kliens szerkezetét azoknak tettem így fel. Ha valaki kéri szívesen át küldöm majd mit hova kell mert vannak a patch fileba olyanok amelyek feleslegesk.
Maradt még továbbá a szerver oldal:
A magyar questeket sajnos nem tudom oda adni mivel én már eléggé bele nyúltam saját magamra testre szabtam:
A rarban lévő quest mappában lévő filokat másoljátok fel a :
usr/game/share/locale/xy/quest mappába.
Természetesen akinek van home annak ez az elérés a megfelelő:
usr/home/game/share/locale/xy/quest.
Nyissuk meg a questlib.lua filet és a következőket írjuk bele:
dofile(get_locale_base_path().."/quest/pet_settings.lua")
dofile(get_locale_base_path().."/quest/pet_system.so")
Mentsük zárjuk be a pet_system.quest és a pet_system_send_back.questet qc le és írjátok be a locale_list/quest_listbe. qc után az ismeretlen funkciókat írjátok bele a questfunctionsba.
Ha ezekkel megvagytok egy sh make.sh parancsot is adjatok ki, hogy az alap pet_system quest kikerüljön a object részből.
A pet_settings.lua-ban lehet megadni hogy milyen bonuszokat adjanak és milyen ékszereket lehessen használni petnél.
A petékszerek itemproto type ja 18 legyen aki txt használ annak ITEM_QUEST
A bónuszokat nem az itemprotoban kell beállítani hanem a lua fileban, ha nem így teszed sose fogja normálisan megadni illetve ingame-be jelezni.
Lépjetek a usr/game/share mappába és hozzátok létre a következő két mappát 777 joggal:
pet_names
logs
Letöltés:
https://mega.nz/#!MQRSXRib!_Mvqzb4uwSQxZPmzpaRvH4c5zm3QMukRv_mXBR3ZFuk (https://mega.nz/#!MQRSXRib!_Mvqzb4uwSQxZPmzpaRvH4c5zm3QMukRv_mXBR3ZFuk)
Remélem nem felejtettem el semmit ha mégis pm-be keresetek meg.
Sok sikert hozzá
Mikee
Egy kis apróság kimaradt hogy szépen fusson le a quest
def __ServerCommand_Build(self):
Többi alá valahová illeszük be
# Fix input quest Start
"GetInputStringStart" : self.GetInputStringStart,
"GetInputStringEnd" : self.GetInputStringEnd,
# Fix input quest End
Illetve még ezt a game.py aljára valahová másoljuk be:
def GetInputStringStart(self):
constInfo.INPUT_IGNORE = 1
def GetInputStringEnd(self):
constInfo.INPUT_IGNORE = 0
Valamint a napokban megkaptam az alap metin2-es design-ra átírva tehát a megjelenés sima gf-es kinézethez a következő letöltésnél található meg nem én készítettem Pisti95 érdeme:
https://mega.nz/#!xYBR1JSB!J9Y2bChne1EsVmSE1YNpwA7R1iYMTIhZavdZvqJOBnc (https://mega.nz/#!xYBR1JSB!J9Y2bChne1EsVmSE1YNpwA7R1iYMTIhZavdZvqJOBnc)