[How-To]Szerver és kliens fejlesztés/szerkesztés

Indította MagicBoss, 2013-08-08, 12:54:21

Sziasztok! Ebbe a témába lehetőleg csak saját leírást rakok ki! Kérésre rakok ki olyan dolgokat is, amelyek nincsenek még fórumon, illetve sehol sincs leírás hozzá! PM-ben várom a kéréseiteket.

Kezdeném is egy olyan dologgal, melyet sehol nem láttam. Ebből a leírásból megtudhatjátok, hogyan védekezzünk a rosszakaró GM-ektől. Bővebben:
letilthatjátok számukra a következő dolgokat:

- Hívásban való írás
- Az összes GM kód letiltása és egyben chatbe való írás
- Kereskedés bármilyen formában
- Tárgyak eldobása
- Raktár és itemshop raktár megnyitása


Ezek a letiltások csak kliensben érvényesek, így ha más klienssel lép fel az illető, ezek a tiltások elvésznek!

A tiltásokhoz a root fájl kibontására lesz szükségünk.

Hívásban való írás letiltása a GM-eknek:

Nyissuk meg az uichat.py fájlt.

Keressük meg ezt a részt:

def __SendChatPacket(self, text, type):

Másoljuk be alá a következőket figyelve a tabokra:


name = player.GetName()
if name.find("[")!=-1 and type == chat.CHAT_TYPE_SHOUT:
chat.AppendChat(chat.CHAT_TYPE_INFO, "Nem használhatod ezt a funkciót!")
return
else:
net.SendChatPacket(text, type)


Ezzel meg is volnánk.

Az összes GM kód letiltása és egyben chatbe való írás:

Nyissuk meg az uichat.py fájlt.

Keressük meg ezt a részt:

def __SendChatPacket(self, text, type):

Másoljuk be alá a következőket figyelve a tabokra:


name = player.GetName()
if name.find("[")!=-1 and type == chat.CHAT_TYPE_TALKING:
chat.AppendChat(chat.CHAT_TYPE_INFO, "Nem használhatod ezt a funkciót!")
return
else:
net.SendChatPacket(text, type)


Ezzel meg is volnánk.

Kereskedés bármilyen formában:


Nyissuk meg az uiexchange.py fájlt.

Keressük meg ezt a részt:

def OpenDialog(self):

Másoljuk be alá a következőket figyelve a tabokra:


name = player.GetName()
if name.find("[")!=-1:
return


Így kell kinéznie:

name = player.GetName()
if name.find("[")!=-1:
chat.AppendChat(chat.CHAT_TYPE_INFO, "Nem használhatod ezt a funkciót!")
return
else:
self.TitleName.SetText(locale.EXCHANGE_TITLE % (exchange.GetNameFromTarget()))
self.AcceptButton.Enable()
self.AcceptButton.SetUp()
self.Show()

(self.xStart, self.yStart, z) = player.GetMainCharacterPosition()


Ezzel meg is volnánk.

Tárgyak eldobása:

Nyissuk meg a game.py fájlt.

Keressük meg ezt a részt:

def RequestDropItem(self, answer):

Ezen belül ezt:

if answer:

Másoljuk be alá a következőket figyelve a tabokra:

name = player.GetName()
if name.find("[")!=-1:
return


Így kell kinéznie:

if answer:
name = player.GetName()
if name.find("[")!=-1:
return
chat.AppendChat(chat.CHAT_TYPE_INFO, "Nem dobhatsz el tárgyat!")
else:
dropType = self.itemDropQuestionDialog.dropType
dropCount = self.itemDropQuestionDialog.dropCount
dropNumber = self.itemDropQuestionDialog.dropNumber


Ezzel meg is volnánk.

Raktár és itemshop raktár megnyitása:

Nyissuk meg a game.py fájlt.

Keressük meg ezt a részt:

def OpenSafeboxWindow(self, size):

Másoljuk be alá a következőket figyelve a tabokra:

name = player.GetName()
if name.find("[")!=-1:
return


Így kell kinéznie:

def OpenSafeboxWindow(self, size):
if name.find("[")!=-1:
return
else:
self.interface.OpenSafeboxWindow(size)


Keressük meg ezt a részt:

def OpenMallWindow(self, size):

Másoljuk be alá a következőket figyelve a tabokra:

name = player.GetName()
if name.find("[")!=-1:
return


Így kell kinéznie:

def OpenMallWindow(self, size):
if name.find("[")!=-1:
return
else:
self.interface.OpenMallWindow(size)


Ezzel meg is volnánk.

Arra figyeljünk, hogy ha a fájlok elején nincs importálva a player, akkor nem működnek a tiltások.
Így importálhatjuk a playert:


import player


Köszönöm a figyelmet, remélem hasznotokra válik ez a kis leírás. Ha bármi jellegű probléma adódna, nyugodtan keressetek fel PM-ben, és segítek, illetve javítom a hibát. A kéréseket ne felejtsétek el ;)
Ha tetszett ha téma, nyomj egy "+"-t.

Üdv, ~ MagicBoss
HTML5,CSS3,PHP,C#,C++,JS,Java,Python,LUA