Hallo,
Ich habe gesehen, dass viele diese Funktion schon haben und diese für Geld verkaufen und ich finde es ist nicht viel Arbeit und
genau aus diesem Grund habe ich es mal gecodet.
Der Code mag vielleicht nicht der schönste sein, aber er funktioniert
Das ganze wird dann so aussehen:
Die Einstellungen werden jedesmal in einer externen Datei geladen und beim Clientstart mitgeladen.
Nun zum Tutorial:
in game.py:
Such nach :
Code:
self.__ProcessPreservedServerCommand()
Darunter folgendes einfügen:
Code:
from uigameoption import OptionDialog
if os.path.exists("lib/shoprange.lib"):
try:
f = open("lib/shoprange.lib","rb")
self.ShopRange = f.read().strip()
constInfo.MAX_SHOP_DISTANCE = float(self.ShopRange)
except :
pass
OptionDialog().ctrlShopNames.SetSliderPos(constInfo.MAX_SHOP_DISTANCE / 10000.0)
self.ShopUpdater = ui.Window()
self.ShopUpdater.SetParentProxy(self)
self.ShopUpdater.OnUpdate = self.__OnShopUpdate
self.ShopUpdater.Show()
Such außerdem in game.py noch nach:
Code:
def OnUpdate(self):
Darüber folgendes einfügen:
Code:
def __OnShopUpdate(self):
uiPrivateShopBuilder.UpdateADBoard()
constinfo.py:
Einfach oben folgendes einfügen:
Code:
MAX_SHOP_DISTANCE = 10000.0
uigameoption.py:
Suchen nach:
Code:
self.showsalesTextButtonList.append(GetObject("salestext_on_button"))
self.showsalesTextButtonList.append(GetObject("salestext_off_button"))
Diesen beiden Zeilen löschen (da wir die Buttons nicht mehr brauchen) und folgendes einfügen:
Code:
self.ctrlShopNames = GetObject("sales_name_controller")
self.ctrlShopNames.SetSliderPos(constInfo.MAX_SHOP_DISTANCE / 1000.0)
self.ctrlShopNames.SetEvent(ui.__mem_func__(self.__OnChangeShopRange))
self.ctrlShopNames.Show()
Suchen nach
Code:
def __CheckPvPProtectedLevelPlayer(self):
Darüber folgendes einfügen:
Code:
def OnUpdate(self):
self.ctrlShopNames.SetSliderPos(constInfo.MAX_SHOP_DISTANCE/10000)
def __OnChangeShopRange(self):
constInfo.MAX_SHOP_DISTANCE = (self.ctrlShopNames.GetSliderPos()*10000)
f = open("lib/shoprange.lib","w+")
f.write(str(constInfo.MAX_SHOP_DISTANCE))
f.close()
Da wir die alten Buttons entfernen wollen nach folgendem suchen:
(wird 3x gefunden und 3x auskommentieren oder löschen)
Code:
self.RefreshShowSalesText()
Folgende Sachen auch entfernen oder auskommentieren (
WIRD AUCH MEHRFACH VORHANDEN SEIN):
Code:
self.showsalesTextButtonList
Nun in folgender Datei: uiscript/gameoptiondialog.py
suchen nach und löschen (oder auskommentieren):
Code:
{
"name" : "salestext_on_button",
"type" : "radio_button",
"x" : LINE_DATA_X,
"y" : 240,
"text" : uiScriptLocale.OPTION_SALESTEXT_VIEW_ON,
"default_image" : ROOT_PATH + "middle_button_01.sub",
"over_image" : ROOT_PATH + "middle_button_02.sub",
"down_image" : ROOT_PATH + "middle_button_03.sub",
},
{
"name" : "salestext_off_button",
"type" : "radio_button",
"x" : LINE_DATA_X+MIDDLE_BUTTON_WIDTH,
"y" : 240,
"text" : uiScriptLocale.OPTION_SALESTEXT_VIEW_OFF,
"default_image" : ROOT_PATH + "middle_button_01.sub",
"over_image" : ROOT_PATH + "middle_button_02.sub",
"down_image" : ROOT_PATH + "middle_button_03.sub",
},
und foldendes davor einfügen:
Code:
{
"name" : "sales_name_controller",
"type" : "sliderbar",
"x" : LINE_DATA_X,
"y" : 240,
},
Nun öffnet ihr uiprivateshopbuilder.py
und such nach der Funktion
Code:
def UpdateADBoard():
for key in g_privateShopAdvertisementBoardDict.keys():
g_privateShopAdvertisementBoardDict[key].Show()
Und ersetzt diese mit dieser Funktion:
Code:
def UpdateADBoard():
for key in g_privateShopAdvertisementBoardDict.keys():
distance = player.GetCharacterDistance(key)
if distance <= constInfo.MAX_SHOP_DISTANCE:
g_privateShopAdvertisementBoardDict[key].Show()
else:
g_privateShopAdvertisementBoardDict[key].Hide()
Das sollte nun alles sein oder ich habe etwas vergessen^^
Falls dies der Fall ist schreibt mich bitte mal an.