Pacifidor petrendszere :D

Indította mikee0121, 2016-11-04, 08:47:16

2016-11-04, 08:47:16 Utolsó szerkesztés: 2016-11-27, 13:34:20 Szerző: mikee0121
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


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