[Release]"Normales-Lager" Button im Inventar

10/15/2013 22:49 .Onlyx3#1
Hey ho E*pvp!
Da ich derzeit den Client modde für mein neues großes Projekt "Ayumi3", teile ich euch hier mal ein Feature. Es gibt es bisher nicht!

Was wird gebraucht?
-Euren Client
-Brain.exe
-Bisschen Zeit!

Fangen wir an.

Entpackt die locale_de und geht zu source\locale\de\ui.
Öffnet die inventorywindow.py und sucht nach
PHP Code:
"name" "MallButton"
Unter diesem Button fügt ihr einfach
PHP Code:
{
                            
"name" "LagerButton",
                            
"type" "button",

                            
"x" 80,
                            
"y" 150,

                            
"tooltip_text" uiScriptLocale.LAGER_TITLE,

                            
"default_image" "d:/ymir work/ui/game/TaskBar/Mall_Button_01.tga",
                            
"over_image" "d:/ymir work/ui/game/TaskBar/Mall_Button_02.tga",
                            
"down_image" "d:/ymir work/ui/game/TaskBar/Mall_Button_03.tga",
                        }, 
ein

[Only registered and activated users can see links. Click Here To Register...]

Speichern,schließen.

Sucht die locale_interface im Ordner source\locale\de

Sucht nach
PHP Code:
MALL_TITLE    Itemshop-Lager 
Und fügt darunter
PHP Code:
LAGER_TITLE    Normales-Lager 
ein
[Only registered and activated users can see links. Click Here To Register...]

Speichern,schließen.

Weiter gehts in der root. Entpackt euer root.epk/eix Archiv und öffnet die uiinventory.py

Sucht nach
PHP Code:
self.mallButton self.GetChild2("MallButton"
Und fügt darunter
PHP Code:
self.LagerButton self.GetChild2("LagerButton"
ein
[Only registered and activated users can see links. Click Here To Register...]

Dann sucht ihr nach
PHP Code:
if self.mallButton:
            
self.mallButton.SetEvent(ui.__mem_func__(self.ClickMallButton)) 
und fügt darunter
PHP Code:
if self.LagerButton:
            
self.LagerButton.SetEvent(ui.__mem_func__(self.ClickLagerButton)) 
ein
[Only registered and activated users can see links. Click Here To Register...]

Sucht nach
PHP Code:
def ClickMallButton(self):
        print 
"click_mall_button"
        
net.SendChatPacket("/click_mall"
und fügt darunter
PHP Code:
def ClickLagerButton(self):
        
import event
        event
.QuestButtonClick(67
ein
[Only registered and activated users can see links. Click Here To Register...]

ACHTUNG: DIE 67 STEHT FÜR QUESTINDEX DAZU NUN MEHR.

Fügt eine neue Quest auf eurem Server ein.
PHP Code:
quest lagerbutton begin
    state start begin
        when button 
or info begin
            game
.open_safebox()
        
end
    end
end 
Schreibt die Quest wie immer in die quest_list (oder auch locale_list)
[Only registered and activated users can see links. Click Here To Register...]

Bei mir liegt die Quest in Zeile 67. Deswegen habe ich in der uiinventory.py bei event.QuestButtonClick(67) 67 in der Klammer stehen. Liegt eure Quest ZUM BEISPIEL in Zeile 199 schreibt ihr event.QuestButtonClick(199) in die uiinventory.py

Speichert alles ab, Ladet eure Questen und Rebootet.
Habt ihr alles richtig gemacht siet es bei euch nun so aus

[Only registered and activated users can see links. Click Here To Register...]

Es funktioniert zu 100% wenn ihr es so einfügt wie es hier im Thread steht.
Achtet auf TABs!

PS: Auf diese Methode, lässt sich jeder Button mit einer Quest verbinden. Beachtet in der Quest when button or info begin zu benutzen!

MFG

Special-Thanks
-[Only registered and activated users can see links. Click Here To Register...] der Beste Quester und meiner! :D

Quote:
Originally Posted by K0tn4scher View Post
Kleiner Tipp um sich das elendige Questindex gesuche zu sparen.

Schreib die Quest so:

PHP Code:
quest lagerbutton begin
    state start begin
        when letter begin
            cmdchat
("normal_mall "..q.getcurrentquestindex())
        
end
        when button 
or info begin
            game
.open_safebox()
        
end
    end
end 
Dann gehst du in die game.py bei den Servercommands und fügst das hinzu
PHP Code:
"normal_mall"            self.__Opennormalmall
Ganz unten in der Game dann folgende funktion.
PHP Code:
def __Opennormalmall(selfqid):
    
constInfo.mallqinint(qid
Gehe in deine constinfo.py und schreibe
PHP Code:
mallqin 

und aus deiner def ClickLagerButton machst du folgendes
PHP Code:
def ClickLagerButton(self):
    
import event
    qid 
constInfo.mallqin
    event
.QuestButtonClick(qid
Denn jedesmal wenn du neue Quests hinzufügst ändert sich der Questindex. Somit hast du es immer automatisch belegt.

PS: Sollte das so nicht funktionieren hab ich ein Tippfehler. Es ist 2 Uhr und ich bin müde :D

Mfg Blaze
10/15/2013 22:54 [ViP]Nereus#2
Danke ich habe den schon gesucht :D
10/15/2013 22:55 .Onlyx3#3
Ich denke so lässt es sich mega einfach einbauen ;)
10/15/2013 22:56 Mr|NFNx#4
Danke habe denn gesucht :D
10/15/2013 22:57 .Kibito#5
Könntest den Index der Quest beim Login übergeben damit es dynamischer ist und nicht jeder die Zahl anpassen muss.
10/15/2013 22:59 .Onlyx3#6
Quote:
Originally Posted by .Kibito View Post
Könntest den Index der Quest beim Login übergeben damit es dynamischer ist und nicht jeder die Zahl anpassen muss.
Richtig.
Siehe [Only registered and activated users can see links. Click Here To Register...]

Habe es so auf die schnelle geschrieben.
10/15/2013 23:08 Shodans#7
Gut gemacht Only, danke dir.
10/15/2013 23:24 ☆NaYoN☆#8
Thx; schon auf der Suche mind. 2 jahre xD
10/15/2013 23:27 .Onlyx3#9
Quote:
Originally Posted by ☆NaYoN☆ View Post
Thx; schon auf der Suche mind. 2 jahre xD
Da es das auch noch nich gibt release ich es auch^^
10/15/2013 23:40 Aze /..#10
Monate gesucht, nie gefunden, du released es. Besser kanns net sein yy
10/16/2013 01:17 Da' Real Pαιη#11
Nice Danke dir :D
10/16/2013 01:30 [iSeven]#12
Eigentlich ganz simple, danke trotzdem, für die Arbeit, die du dir mit dem Release gemacht hast.
10/16/2013 01:41 SilversRay#13
InventoryWindow' object has no attribute 'LagerButton' <- Sagt meine Sysrr :/
10/16/2013 02:01 K0tn4scher#14
Kleiner Tipp um sich das elendige Questindex gesuche zu sparen.

Schreib die Quest so:

PHP Code:
quest lagerbutton begin
    state start begin
        when letter begin
            cmdchat
("normal_mall "..q.getcurrentquestindex())
        
end
        when button 
or info begin
            game
.open_safebox()
        
end
    end
end 
Dann gehst du in die game.py bei den Servercommands und fügst das hinzu
PHP Code:
"normal_mall"            self.__Opennormalmall
Ganz unten in der Game dann folgende funktion.
PHP Code:
def __Opennormalmall(selfqid)
    
constInfo.mallqinint(qid
Gehe in deine constinfo.py und schreibe
PHP Code:
mallqin 

und aus deiner def ClickLagerButton machst du folgendes
PHP Code:
def Clicklagerbutton
    import event
    qid 
constInfo.mallqin
    event
.QuestButtonClick(qid
Denn jedesmal wenn du neue Quests hinzufügst ändert sich der Questindex. Somit hast du es immer automatisch belegt.

PS: Sollte das so nicht funktionieren hab ich ein Tippfehler. Es ist 2 Uhr und ich bin müde :D

Mfg Blaze
10/16/2013 09:08 .ProjektX²#15
Wenn wir schon beim vereinfachen sind, es reicht auch wenn du nur:

PHP Code:
when button begin 
machst. Ohne info :p