Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 20:07

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

Advertisement



Read Coordinates from Config into Array

Discussion on Read Coordinates from Config into Array within the AutoIt forum part of the Coders Den category.

Reply
 
Old   #1
 
D2_sid's Avatar
 
elite*gold: 0
Join Date: May 2009
Posts: 329
Received Thanks: 91
Read Coordinates from Config into Array

Hallo, ich hab ein kleines Programm geschrieben und versuche es gerade etwas Benutzerfreundlicher zu machen. Ich lese aus einer config.ini Koordinaten und speichere sie einzeln in Variablen. Das sieht so aus:

In der config.ini
Code:
[Koordinaten]
TopX=100
TopY=115
Im Script
Code:
 Global $x1 = IniRead("config.ini", "Koordinaten", "TopX", "0")
 Global $x2 = IniRead("config.ini", "Koordinaten", "TopY", "0")
Dann verwende ich sie im Code an mehreren Stellen etwa so
Code:
 $pos = PixelSearch ( $x1, $x2, $y1, $y2, $a, $b)
Wobei y1 und y2 weitere Koordinaten sind.

Um die config.ini nicht mit den ganzen Koordinaten zu überfluten würde ich sie lieber gleich paarweise einlesen und in arrays abspeichern.

In der config.ini
Code:
[Koordinaten]
Top=100, 115
Und im Script dementsprechend

Dann verwende ich sie im Code an mehreren Stellen etwa so
Code:
 $pos = PixelSearch ( $x[0], $x[1], $y[0], $y[1], $a, $b)
Wobei y1 und y2 weitere Koordinaten sind.

Meine Frage ist: Wie kann ich die Koordinaten aus der config.ini in einem array abspeichern?
D2_sid is offline  
Old 06/08/2015, 13:08   #2
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
Mit einer ini könntest das ganze so lösen:
Code:
IniWrite('config.ini', 'Koordinaten', 'Top', '100, 115')
$split = StringSplit(IniRead('config.ini', 'Koordinaten', 'Top', ''), ', ', 3)
For $x In $split
   ConsoleWrite($x & @CRLF)
Next
Besser wäre es aber komplett auf inis zu verzichten, da diese ineffizient sind.
Am Besten alles über einfache FileRead/Write Operationen handhaben und im Script mit einem kompletten "Config-Array" alles abdecken.

Beispiel:
Code:
Dim $config[10]=['Wert1','Wert2','Wert3','Wert4','Wert5','Wert6','Wert7','Wert8','Wert9','Wert10']

SaveConfig('config')
GetConfig('config')

Func SaveConfig($configName)
   Local $data, $fileHandle = FileOpen($configName,2)
   For $value In $config
	  $data &= $value&'|'
   Next
   FileWrite($fileHandle,StringTrimRight($data,1))
   FileClose($fileHandle)
EndFunc

Func GetConfig($configName)
   $config = StringSplit(FileRead($configName),'|',2)
EndFunc
lolkop is offline  
Thanks
1 User
Old 06/08/2015, 15:03   #3
 
D2_sid's Avatar
 
elite*gold: 0
Join Date: May 2009
Posts: 329
Received Thanks: 91
Also ich bin mit der config.ini eigentlich ganz zufrieden. Allerdings sieht meine config zur Zeit so aus

Code:
[AUTOPOT]
LifeX=193
LifeY=72
ManaX=187
ManaY=83

[AUTOBATTLE]
TopX=100
TopY=115
BotX=1815
BotY=955
CharX=960
CharY=537
MobX=909
MobY=69
Color1=0xE004E0
Tolerance=10
Vermutlich kommen auch noch weitere Koordinaten dazu, und es werden mehr und mehr Einträge und Variablen. Deshalb wollte ich sie übersichtlicher gestalten, nämlich so:

Code:
[AUTOPOT]
Life=193, 72
Mana=187, 83

[AUTOBATTLE]
Top=100, 115
Bot=1815, 955
Char=960, 537
Mob=909, 69
Color=0xE004E0
Tolerance=10
Und wenn ich die Einträge jeweils in arrays einlese, dann bräuchte ich auch nur die Hälfte der Variablen. Nur ich weiß nicht wie ich diese comma-seperated values in einem array speichere.
D2_sid is offline  
Old 06/08/2015, 15:46   #4

 
BladeTiger12's Avatar
 
elite*gold: 64
Join Date: May 2011
Posts: 1,228
Received Thanks: 847
Ganz einfach:

Nur PseudoCode & was lolkop sagte stimmt 100%. Würde ich dir auch raten.
Code:
$life = IniRead("...ini", "AUTOPOT", "Life")
$split = StringSplit($life, ",", 2)

$curhp = int($split[0])
$maxHP = int($split[1])
BladeTiger12 is offline  
Thanks
1 User
Old 06/08/2015, 16:58   #5
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
Quote:
Originally Posted by D2_sid View Post
Code:
[AUTOPOT]
LifeX=193
LifeY=72
ManaX=187
ManaY=83

[AUTOBATTLE]
TopX=100
TopY=115
BotX=1815
BotY=955
CharX=960
CharY=537
MobX=909
MobY=69
Color1=0xE004E0
Tolerance=10
Die Aufteilung sieht doch schon ganz gut aus. Was spricht denn dagegen das einfach alles in eine Variable zu lesen?

willst du kompfortabel auf die Werte zugreifen können, bietet sich in dem Fall eine einfache Enum Funktion an.

Beispiel:
Code:
Dim Enum $LifeX, $LifeY, $ManaX, $ManaY, $TopX, $TopY, $BotX, $BotY, $CharX, $CharY, $MobX, $MobY, $Color1, $Tollerance
Dim $config[14]
Mit $config[$LifeX] könnte dann z.B. der Wert von LifeX einfach angesprochen werden, mit $config[$ManaX] der entsprechende Wert von ManaX.
Das Prinzip ist, so hoffe ich, denkbar einfach verständlich.

Quote:
Originally Posted by D2_sid View Post
Code:
[AUTOPOT]
Life=193, 72
Mana=187, 83

[AUTOBATTLE]
Top=100, 115
Bot=1815, 955
Char=960, 537
Mob=909, 69
Color=0xE004E0
Tolerance=10
Hiervon kann man dir nur arg abraten, da du die ohnehin schon ineffiziente und unkompfortable Ini Variante damit noch unübersichtlicher und ineffizienter machen würdest.

Einen minimalen Aufwand bekommst du natürlich wie bereits erwähnt nur mit direkten File-Operatonen hin.

Der von mir vorher gepostete Beispielcode würde sowohl für 10 Werte, als auch für 10000 Werte exakt gleich aussehen (zum Speichern 6 Zeilen, zum Lesen 1 Zeile), während du bei Nutzung der Ini Funktionen für jeden Wert zum lesen und auch schreiben jeweils eine Zeile bräuchtest.
Entsprechend wächst die Komplexität des Codes mit der Ini-Variante Linear um den Faktor 2, während sie mit File-Operationen statisch (unverändert) bliebe.
lolkop is offline  
Thanks
1 User
Reply


Similar Threads Similar Threads
[FIX] If your Services at Server Patch Config Stay at Pause Read This.
09/05/2012 - Shaiya Private Server - 4 Replies
Im sick of seeing posts about this,Ive spent like 3 hours trying to figure out the issue and this is what i did to fix the problem. Go to your managment studio and connect to the database useing SQL authotication in the server name put "127.0.0.1" (without quote marks) after that use the Username Shaiya and the password Shaiya123 if all connects and everything is fine right click on the server and select "New Query" a new window will open inside the managment studio insert there the...
DB BOT not display skills, not read coordinates
02/16/2011 - SRO Private Server - 4 Replies
I use the DB BOT 0.8.he doesn't show my skills, also don't read coordinates, and against monsters, For such or 1.3a, I found that many people were such circumstance, who can tell me how to solve, thX! :rtfm:
Array & IniWrite/Read
11/13/2010 - AutoIt - 6 Replies
Hallo alle zusammen, ehm mein Problem ist ich will in einem Spiel die Abgelaufenen Koordinaten abspeichern. Also wenn ich laufe soll angefangen werden die x&y Koordinaten abspeichern und dann diese immer in eine IniDatei speichern... Wichtig ist auch noch das diese Ini Datei später ausgelesen wird und in Zwei ListViews gezeigt wird. Aber es soll kein mindest laufen sein oder ein höchst laufen.... Damit meine ich das es egal ist wie viel ich laufe... Danke...
config.pk read & editing HELP PLS
07/31/2008 - Kal Online - 5 Replies
Hey guys im new here, i wanna ask u how can i read the config.pk and how to change something in it without seeing any sym. pls tell me i wanna make a cd for Darkness v3. Thanks at all dear patrick



All times are GMT +2. The time now is 20:07.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.