Register for your free account! | Forgot your password?

You last visited: Today at 05:35

  • Please register to post and access all features, it's quick, easy and FREE!


[HowTo+Tutorial]Advanced Exp Spendebot

Reply
 
Old   #1
 
elite*gold: 6
Join Date: May 2010
Posts: 1,227
Received Thanks: 1,624
[HowTo+Tutorial]Advanced Exp Spendebot

Hatte es ja schon eine Weile versprochen, jedoch immer aufgeschoben, naja jetzt hab ich mich mal rangesetzt und das Tutorial dazu geschrieben^^
Das Grüne ist btw die Erklärung, damit ihr das alles auch versteht, was ich da schreibe^^

root.epk:
constinfo.py
Haut dort einfach das hier noch rein:
Code:
DONATE_GUILD = 0
Weiter geht es mit der
uiguild.py
Zuerstmal ein wichtiger import:
Fügt ganz oben hinzu:
Code:
import chat
Dort müsst ihr in folgenden functions das hier ergänzen:

in
Code:
def __Initialize(self):
Code:
		self.spendebotDialog = None
Erstmals definieren, dass es am Anfang nicht direkt auftaucht^^
Wär ja auch net so praktisch, wenn sich jedes Mal der spendebotDialog öffnet wenn man das Gildenfenster öffnet


in
Code:
def Close(self):
Code:
		self.spendebotDialog.Close()
Diese Func ist 2x vorhanden, bei beiden den Vorgang durchführen
Joa, die Function Close bedeutet auf deutsch, dass es geschlossen wird, da soll auch unser Dialog geschlossen werden^^
Einfach um mühsames Zuklicken zu vermeiden xD


in
Code:
def Destroy(self):
das hier einfügen:
Code:
		if self.spendebotDialog:
			self.spendebotDialog.Destroy()
			self.spendebotDialog = None
Diese Func ist ebenfalls 2x vorhanden, wieder bei beiden den Vorgang wiederholen
So ziemlich diesselbe Wirkung wie schon bei def Close(self):, schließt den spendebotDialog, wenn das Gildenfenster geschlossen wird

in
Code:
def __LoadWindow(self):
unter:
Code:
self.offerDialog.SetAcceptEvent(ui.__mem_func__(self.OnOffer))
einfach das hier setzen:
Code:
		self.spendebotDialog = uiPickMoney.PickMoneyDialog()
		self.spendebotDialog.LoadDialog()
		self.spendebotDialog.SetMax(2)
		self.spendebotDialog.SetTitleName("Einstellung Exp-Spendebot  ")
		self.spendebotDialog.SetAcceptEvent(ui.__mem_func__(self.botconfig))
Da ich für den Spendebot keine Extra Gui machen wollte, habe ich eine bereits vorhandene Gui aufgerufen(in diesem Fall uiPickMoney, welches auch in den imports zu finden ist)
So als Standart noch das Aufrufen von Dateien(fehlt ja bei Cranks Tutorial):

in
Code:
def __MakeInfoPage(self):
Code:
			page.GetChild("SpendeBotButtonOn").SetEvent(ui.__mem_func__(self.__OnClickSpendeBotButton))
			page.GetChild("SpendeBotButtonOff").SetEvent(ui.__mem_func__(self.__OffClickSpendeBotButton))
			page.GetChild("SpendeBotButtonConfig").SetEvent(ui.__mem_func__(self.__OnClickSpendeBotButtonConfig))
Hier werden lediglich die neuen Functions ausgerufen, wenn der neue Button gedrückt wird(ja so weißt man Functions zu xD)

Kommen wir zu den neuen Funcs, die ihr selbst einfügen müsst(einfach vor den Anfang von anderne klatschen reicht aus^^):
Code:
	def __OnClickSpendeBotButtonConfig(self):
		self.spendebotDialog.Open("Exp-Grenze", 0)
		self.spendebotDialog.pickValueEditLine.SetText("")
Hier wird die Config(unsere übernommene Gui) geöffnet und das Textfeld von uiPickMoney(welcher das aktuelle Yang anzeigt bisher) leert
Code:
	def __OnClickSpendeBotButton(self):
		if constInfo.DONATE_GUILD == 0 and guild.GetGuildLevel() < 20:
			constInfo.DONATE_GUILD = 1
			chat.AppendChat(chat.CHAT_TYPE_INFO, "Automatische EXP Spende eingeschaltet!")
			chat.AppendChat(chat.CHAT_TYPE_INFO, "Falls die Spendenachricht stören, deaktiviere die Chatzeile in den Spieloptionen!")
			#global viewChatMode
			#viewChatMode = 0
			#systemSetting.SetViewChatFlag(viewChatMode)
			#self.RefreshViewChat()
			return
		if constInfo.DONATE_GUILD == 0 and guild.GetGuildLevel() == 20:
			chat.AppendChat(chat.CHAT_TYPE_INFO, "Die Gilde hat bereits das maximale Level erreicht!")			
			return
		if constInfo.DONATE_GUILD == 1 and guild.GetGuildLevel() < 20:
			chat.AppendChat(chat.CHAT_TYPE_INFO, "Automatische EXP Spende ist bereits angeschaltet!")
			return
Code:
	def __OffClickSpendeBotButton(self):

		if constInfo.DONATE_GUILD == 1:
			constInfo.DONATE_GUILD = 0
			chat.AppendChat(chat.CHAT_TYPE_INFO, "Automatische EXP Spende ausgeschaltet!")
			#global viewChatMode
			#viewChatMode = 1
			#systemSetting.SetViewChatFlag(viewChatMode)
			#self.RefreshViewChat()
			return
		else:
			chat.AppendChat(chat.CHAT_TYPE_INFO, "Automatische EXP Spende ist bereits ausgeschaltet!")
			return
Was hier stattfindet könnt ihr euch denke ich dank den Texten erdenken^^
Das deaktivierte(das mit dem # davor) versteckt die Chatnachrichten(Einstellung in Spieloptionen)
Hatte ich genutzt als ich das noch mit einer festen Variablen definiert hatte, da die Nachrichten zu häufig kamen und gestört haben


Code:
	def botconfig(self, exp):
		fail0r = self.spendebotDialog.pickValueEditLine.GetText()
		f = open("lib/expspendebot.cfg", "w")
		f.write (fail0r)
		f.close()
		chat.AppendChat(chat.CHAT_TYPE_INFO, "<Konfiguration> Automatisch Erfahrung Spenden ab "+fail0r+"%.")
Hier wird der eingetragene Prozentwert in der Datei expspendebot.cfg, welche bei mir im lib Ordner liegt eingetragen^^
Die Chatnachricht gibt an, welcher Wert eingetragen wurde.

Das ganze muss natürlich auch wieder aufgerufen werden, deswegen braucht ihr hierzu die
game.py:
Dort sucht ihr nach der Func
Code:
	def OnUpdate(self):
und jetzt das Kernstück des Bots(selbe Func, einfach unter den Variablen einfügen):
Code:
		if constInfo.DONATE_GUILD and (float(exp) / (float(nextEXP)) * 100) >= abdannspendendeexp:
			net.SendGuildOfferPacket(exp)
Hier findet die Prozentberechnung statt(bereits erhaltene Exp geteilt durch die noch nötigen Exp in Prozent).
Falls diese größer ist, als der eingetragene Wert, spendet es alle Exp, die man hat^^

Dazu wird hier noch die Datei, die ausgelesen wird erstellt, falls noch nicht vorhanden mit diesem Abschnitt hier:
Das muss über die bereits eingetragene Rechnung eingetragen werden, sonst wollt ihr zuerst spenden und dann den Wert auslesen(Logik nicht vorhanden xD)
Code:
		if os.path.exists('lib/expspendebot.cfg'):
			fail = open('lib/expspendebot.cfg', 'r')
			exp = player.GetStatus(player.EXP)
			nextEXP = player.GetStatus(player.NEXT_EXP)
			abdannspendendeexp = int(fail.readline())
		else:
			file = open("lib/expspendebot.cfg", "w")
			file.write("200")
			file.close()
Ebenfalls noch in der game.py unter den Variablen

Zum Schluss noch die letzten Schritte in der root.epk, die dazu dienen um Exp Verluste zu verhindern, falls jemand vergisst, dass der Exp Spendebot noch an ist und z.B. auf den Maincharakter wechselt.
Das findet ihr in der intrologin.py:
Code:
	def __OpenLoginBoard(self):
und fügt einfach
Code:
		constInfo.DONATE_GUILD = 0
direkt unten dran

Dies dient lediglich dazu, dass falls jemand Kicks bekommt und dann wieder einloggt(egal welcher Char) und die Exp gespendet werden. Sowas ist ärgerlich und sollte vermieden werden
Dasselbe gilt auch für die uisystem.py
Dort fügen wir dasselbe nochmals unter der
Code:
	def __ClickChangeCharacterButton(self):
ein.
Zur Sicherheit genau dasselbe nochmal unter dem hier:
Code:
	def __ClickLogOutButton(self):
Was die Buttons bewirken und warum wir das dort brauchen sollte selbsterklärend sein


uiscript.epk:
Die benötigte Datei dafür ist die
guildwindow_guildinfopage_eu.py.py:
Dort fügt ihr einfach das hier ein:
Code:
		## Exp Spendebot
		{
			"name" : "ExpSpendeBot", 
			"type" : "text", 
			"x" : 3, 
			"y" : 274, 
			"text" : "Exp-Spendebot",
		},
		
		## SpendebotbuttonOn
		{
			"name" : "SpendeBotButtonOn",
			"type" : "button",
			"x" : 75,
			"y" : 270,
			"text" : "Anschalten",
			"default_image" : "d:/ymir work/ui/public/middle_button_01.sub",
			"over_image" : "d:/ymir work/ui/public/middle_button_02.sub",
			"down_image" : "d:/ymir work/ui/public/middle_button_03.sub",
		},
		
		## SpendebotbuttonOff
		{
			"name" : "SpendeBotButtonOff",
			"type" : "button",
			"x" : 136,
			"y" : 270,
			"text" : "Ausschalten",
			"default_image" : "d:/ymir work/ui/public/middle_button_01.sub",
			"over_image" : "d:/ymir work/ui/public/middle_button_02.sub",
			"down_image" : "d:/ymir work/ui/public/middle_button_03.sub",
		},
		## SpendebotbuttonConfig
		{
			"name" : "SpendeBotButtonConfig",
			"type" : "button",
			"x" : 197,
			"y" : 270,
			"text" : "Konfiguration",
			"default_image" : "d:/ymir work/ui/public/middle_button_01.sub",
			"over_image" : "d:/ymir work/ui/public/middle_button_02.sub",
			"down_image" : "d:/ymir work/ui/public/middle_button_03.sub",
		},
Das müsst ihr irgendwo da einfügen, wo es reinpasst von den Umsprüngen her oder wie mans nennt(die tab Sprünge)


Joa das wars auch schon wieder von mir, das Script ist inzwischen doch recht alt, deswegen mach ich es einfach mal public(war ja eh für den 1.000 Post geplant gewesen xD)
Es ist vor allem auf Oldschool Servern, wo man auch richtig farmen muss, sehr gut zu gebrauchen, man will ja nicht jedes Mal das Gildenfenster aufmachen, Exp Anzahl eingeben und dann auf Spenden drücken.
Vollautomatisch macht das schon mehr Sinn :P
Falls alles geklappt hat sieht euer Gildenfenster nun so aus:


Credits:
: hat meinen Fehler gefunden, wo ich ein integrer vergessen habe^^
: Kp nochmal bei was, dazu ist das Script zu lange her, hat auf jeden Fall geholfen(glaub beim Auslesen irgendwas)

Im Anhang sind die Scripts für den aktuellen Metin2 De Clienten.
Der Rest muss wohl das Tutorial machen und was lernen

Wer Ideen für ein paar Clientmods hat, einfach mal PN schreiben, vielleicht werde ich ein paar Ideen auch umsetzen und dann auch, wenn es Metin nicht weiter zerstört pub machn^^

MfG RealFreak
Attached Files
File Type: rar exp-spendebot.rar (41.5 KB, 136 views)



RealFreak is offline  
Thanks
37 Users
Old 05/23/2011, 00:04   #2
 
elite*gold: 120
Join Date: Jul 2008
Posts: 2,403
Received Thanks: 1,593
Nice..
Thx.


anil the alpacino is offline  
Thanks
1 User
Old 05/23/2011, 00:07   #3
 
elite*gold: 30
Join Date: Jul 2010
Posts: 1,627
Received Thanks: 1,439
Hast mir bereits ICQ davon erzählt.
Ich brauchs nicht, aber nice Release

Gute Arbeit!!
.Risan. is offline  
Old 05/23/2011, 00:16   #4
 
elite*gold: 35
Join Date: Jun 2009
Posts: 2,187
Received Thanks: 6,903
Naja ich finds schade das du es pub machst.
Hast ziemlich lange dran gesessen.

P.S.:
Ich hab auch mit geholfen gehabt ...

€:
Quote:
[19:27:21] *** Crank hat das Thema geändert in "Kriege liebt Olli, Olli liebt Olli" ***
Das stimmt nicht so ganz!
Da hat wohl jemand was editiert


CranK™ is offline  
Thanks
2 Users
Old 05/23/2011, 00:17   #5
 
elite*gold: 600
Join Date: Dec 2010
Posts: 1,625
Received Thanks: 1,865
sehr nice wieder mal aber der switchbot ist noch nicer also der ist hammer
Bataleon is offline  
Old 05/23/2011, 14:48   #6
 
elite*gold: 6
Join Date: May 2010
Posts: 1,227
Received Thanks: 1,624
Quote:
Originally Posted by CranK™ View Post
Naja ich finds schade das du es pub machst.
Hast ziemlich lange dran gesessen.

P.S.:
Ich hab auch mit geholfen gehabt ...

€:


Das stimmt nicht so ganz!
Da hat wohl jemand was editiert
Wollte halt net unbedingt bei so etwas erwähnt werden xD
Stimmt da hattest du noch beim auslesen geholfen(btw meine Überprüfung ob die Datei vorhanden ist hat auch geklappt, hatte es aber nur in das 1.Open geklatscht, muss in das 2. rein.
Naja onUpdate klappt auch so gut^^

Und hatte ja gesagt, dass ich es bei meinem 1.000 Post ma pubben werde^^
Gibt noch paar feinere Wege, aber nja zu faul das noch hinzuschreiben xD

Quote:
Originally Posted by .яρу View Post
sehr nice wieder mal aber der switchbot ist noch nicer also der ist hammer
Joa am Switchbot saß ich relativ lange, 4-5 Tage hatte ich dafür gebraucht.
Aber dadurch dass man den nur OpenSource pub machen könnte werde ich ihn nicht public machen, da man damit zuviel Unsinn bauen könnte.
Client erkennt innerhalb von etwa 225 ms alle Bonis aller Eq Teile, deswegen kann man auf allen Slotplätzen im Inventar ansich gleichzeitig switchen lassen, dazu ist er recht schnell und joa, für diese Community eigentlich nicht so wirklich geeignet, wenn ich mir mal teilweise das Niveau der Sektion anschaue^^

MfG RealFreak
RealFreak is offline  
Thanks
1 User
Old 05/23/2011, 15:20   #7


 
elite*gold: 83
Join Date: Apr 2010
Posts: 1,663
Received Thanks: 685
Wow, sieht sehr nice aus.
ZyoX is offline  
Old 05/23/2011, 15:21   #8
 
elite*gold: 60
Join Date: May 2010
Posts: 766
Received Thanks: 1,024
just have a problem by me the exp options come on the top of the yang options

.Rebel is offline  
Old 05/23/2011, 15:39   #9
 
elite*gold: 6
Join Date: May 2010
Posts: 1,227
Received Thanks: 1,624
Quote:
Originally Posted by Lexico View Post
just have a problem by me the exp options come on the top of the yang options

yeah the yang options are normally only for mt2 japan
Just change this:
PHP Code:
        ## Exp Spendebot
        
{
            
"name" "ExpSpendeBot"
            
"type" "text"
            
"x" 3
            
"y" 274
            
"text" "Exp-Spendebot",
        },
        
        
## SpendebotbuttonOn
        
{
            
"name" "SpendeBotButtonOn",
            
"type" "button",
            
"x" 75,
            
"y" 270,
            
"text" "Anschalten",
            
"default_image" "d:/ymir work/ui/public/middle_button_01.sub",
            
"over_image" "d:/ymir work/ui/public/middle_button_02.sub",
            
"down_image" "d:/ymir work/ui/public/middle_button_03.sub",
        },
        
        
## SpendebotbuttonOff
        
{
            
"name" "SpendeBotButtonOff",
            
"type" "button",
            
"x" 136,
            
"y" 270,
            
"text" "Ausschalten",
            
"default_image" "d:/ymir work/ui/public/middle_button_01.sub",
            
"over_image" "d:/ymir work/ui/public/middle_button_02.sub",
            
"down_image" "d:/ymir work/ui/public/middle_button_03.sub",
        },
        
## SpendebotbuttonConfig
        
{
            
"name" "SpendeBotButtonConfig",
            
"type" "button",
            
"x" 197,
            
"y" 270,
            
"text" "Konfiguration",
            
"default_image" "d:/ymir work/ui/public/middle_button_01.sub",
            
"over_image" "d:/ymir work/ui/public/middle_button_02.sub",
            
"down_image" "d:/ymir work/ui/public/middle_button_03.sub",
        }, 
x and y are the koordinates, so you can move them.
Or just come on in skype, I also have the yang options, so I changed the yang options^^

My script is like this:

kind regards RealFreak
RealFreak is offline  
Thanks
1 User
Old 05/23/2011, 15:50   #10
 
elite*gold: 60
Join Date: May 2010
Posts: 766
Received Thanks: 1,024
yeps just change some cordenates on your have you the yang options working 100%?
.Rebel is offline  
Old 05/23/2011, 16:14   #11
 
elite*gold: 6
Join Date: May 2010
Posts: 1,227
Received Thanks: 1,624
Quote:
Originally Posted by Lexico View Post
yeps just change some cordenates on your have you the yang options working 100%?
the yang options are working clientside^^
serverside you have to change the locale to japan, because like i said:
Quote:
Originally Posted by RealFreak
yeah the yang options are normally only for mt2 japan
Metin2 germany also had them 2007 in their game core but yeah these times are over-.-
If you change them your change_name.quest won't work anymore^^
And only the guild leader can manage the yang, so you have to decide^^

kind regards RealFreak
RealFreak is offline  
Thanks
1 User
Old 05/23/2011, 16:45   #12
 
elite*gold: 60
Join Date: May 2010
Posts: 766
Received Thanks: 1,024
Quote:
Originally Posted by RealFreak View Post
the yang options are working clientside^^
serverside you have to change the locale to japan, because like i said:

Metin2 germany also had them 2007 in their game core but yeah these times are over-.-
If you change them your change_name.quest won't work anymore^^
And only the guild leader can manage the yang, so you have to decide^^

kind regards RealFreak
in the day i have explain on epvp the change_name.quest with the source .Flame dont work on european locale people have make the dif with that option be avaliable for the european locale with the yang options can be also that we speack and some expert on mod the game core can do the dif for enable that options for the yang :P on european locale
.Rebel is offline  
Old 05/23/2011, 17:04   #13
 
elite*gold: 0
Join Date: Apr 2010
Posts: 1,712
Received Thanks: 1,075
Nice!! Deine Arbeit ist immer zu gebrauchen. =)

Sieht nach verdammt viel Arbeit aus

#Deine Turorials sind immer so lang *seufzend schau*
.Hiяo is offline  
Old 05/23/2011, 17:44   #14
 
elite*gold: 0
Join Date: Apr 2010
Posts: 1,264
Received Thanks: 484
Direkt Thanks usw.
Almari is offline  
Old 05/23/2011, 21:04   #15



 
elite*gold: 28
The Black Market: 343/0/0
Join Date: Mar 2009
Posts: 4,496
Received Thanks: 4,563
Gefällt mir, ist sehr gut zu gebrauchen.


CHXMVN is offline  
Reply



« Paar Quests | [Release]Homepagedesign by YaKuZo inc. Script »

Similar Threads
Signature Tutorial [Advanced]
09/28/2010 - Grand Chase - 23 Replies
Hey guys I made a new tutorial.. http://img842.imageshack.us/img842/8991/signaturetutorial.png
[AutoEXP] Spendebot
09/23/2010 - Metin2 PServer - Discussions / Questions - 2 Replies
Leute? Da zurzeit sich sehr viele sich mit Packets auskennen, kann da nicht jemand so einen Bot basteln? (Meine jetz nich so einen Autoit, mit dem geklicke...)
[HowTo]Eigenen EXP-Spendebot "bauen"
05/28/2010 - Metin2 Guides & Templates - 13 Replies
Vorwort: Hallo Elite. Es wird oft nachgefragt , wo wer wann wie ein neuer EXP-Spendebot kommt ? Da dachte ich mir Release ich mal meine Guide wie man sich ihn Selber bauen kann. Was wird Benötigt: Ghost Mouse
Combat Arms MHS Adresses advanced tutorial!
02/12/2010 - Combat Arms - 8 Replies
einfach ca starten dann die Firefox.exe öffnen dann Bei process Open Engine.exe und fertig dann load cheat table dann auf psp1s0.lssave falls ihr beim öffnen von engine.exe nen bug kriegt kann ich nichts machen Firefox.exe als Administator starten bei dieser cheattable hab ich die Complexe mal vorher eingetragen falls viele damit ned klarkommen



All times are GMT +1. The time now is 05:35.


Powered by vBulletin®
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Abuse
Copyright ©2018 elitepvpers All Rights Reserved.