Oke so i have been trying to figure this out, I want to get all the icons and save them as separate image by ID. This because elements.data links items with icon ids. i know the icons are saved in surfaces/iconset folder and getting the images is not the problem. reading the txt file isnt the problem either. my problem is how can i link the Chinese name (or whatever those strings are XD) in the txt file with a item id so i can connect the dots.
where would i have to look to find out out this 2 dots.
btw this is for ESO and i know nobody gives a **** about eso here but this should work the same as in PW
I have some tools somewhere in my archives that might be able to help. Not sure which hard drive they're on or where they are but I'll try to find them later this evening (got a lot to do today :P).
I'm not familiar with ESO though... Is it similar to PW whereby there is a large .dds file and a text file with a massive list of chinese stuff?
I've got a tool which extracts all the images and a separate tool which is sort of a C# implementation of sELedit that extracts elements.data to a local .sdf database. This database then contains all the item info such as ID, surface file name etc.
However, it relies on the config file used for sELedit being up to date... I haven't checked in a while so I'm not sure if the author of sELedit is still maintaining that.
I'll take a better look at everything later :P
Edit:
About 10 minutes after my previous post, I realised the obvious flaw in my suggestion about the elements.data extractor... That's only ever going to work for the PWI elements.data file, not ESO.
I know that in PWI, in an item struct there is value which gives the positional offset of the icon in the big .dds icon list (or is that only in inventory slots? I can't remember right now). It would possibly make sense that there is perhaps a massive list of all in-game items in memory, however, I don't know where that is in PW, let alone ESO. That might be a path worth investigating though.
I have some tools somewhere in my archives that might be able to help. Not sure which hard drive they're on or where they are but I'll try to find them later this evening (got a lot to do today :P).
I'm not familiar with ESO though... Is it similar to PW whereby there is a large .dds file and a text file with a massive list of chinese stuff?
I've got a tool which extracts all the images and a separate tool which is sort of a C# implementation of sELedit that extracts elements.data to a local .sdf database. This database then contains all the item info such as ID, surface file name etc.
However, it relies on the config file used for sELedit being up to date... I haven't checked in a while so I'm not sure if the author of sELedit is still maintaining that.
I'll take a better look at everything later :P
Edit:
About 10 minutes after my previous post, I realised the obvious flaw in my suggestion about the elements.data extractor... That's only ever going to work for the PWI elements.data file, not ESO.
I know that in PWI, in an item struct there is value which gives the positional offset of the icon in the big .dds icon list (or is that only in inventory slots? I can't remember right now). It would possibly make sense that there is perhaps a massive list of all in-game items in memory, however, I don't know where that is in PW, let alone ESO. That might be a path worth investigating though.
i still hafta go look into the suggestions but yes the similar to pw, if not the same except the iconset file ending ends the same ("iconlist_" still there) + text file ofc. I have got the Items + image id from elements.data saved on a mysql database.
The item struct u mean in memory when the game is loaded or a file, and is it based on item id or the name in the txt file? and isnt the dds file just from left to right with the names from txt file? Writing the script to convert the big file in smaller files isnt going to be the problem. I just can't seem to figure out how to connect the surface file to the id.
and just to be clear, afaik the file structure ect is all the same as on PW yes
Yes, the dds file is just a left to right, top down scan which reflects the (psuedo) surface file names that the client uses. However, I expect for simplicity, the client stores the positional index of each icon when it's loaded into memory so it doesn't have to go into elements.data again to get the surface name or whatever / however it works... sort of like a cache index I suppose. I remember discussing this with Interest07 a while ago and I think we both agreed that this offset is definitely what I suspected it was.
And yes, I mean the item struct in memory when the game is loaded.
However, I just looked in PWI and it doesn't seem that there's a magical huge array of item structs just sitting there unfortunately.
So, this leaves two options that I can think of...
First option would be pretty tough - Figure out the elements.data file structure. I have no idea how the hell Ronny figured that out in sELedit for PWI - all I can think is that it must have taken a **** long time!
Second option... At some point, the client obviously accesses the elements.data file when it loads a new instance of an item. I would guess there's probably a nice function in the client that extracts all the info for a given item, possibly by it's ID or something. It therefore would feasibly be possible to try to track this down, figure out how it works, then write a function injector to recurse the function call with every possible item ID.
Maybe :P
Or... Maybe Interest or Swoosh have a nice little trick up their sleeve :P
I'll have a quick look in PWI to see if I can find such a function as this has peaked my curiosity now and I think it would be a pretty handy little function lol.
oke so... it seems i might have fcked up the first time i wrote a script to test this file.... cause i was like screw it ima try again and right now "think" i managed to get most the icons (~30 missing each file but they might not be ingame since there are some icons i have never seen in there) but in the data folder there is a file called path.data. containing info. (ID, string lenght, string) reading the iconset txt file line by line and checking if the path.data contains the string it return true for more then 99% of the icons
I still have to check if this is correct but this is what i just got as result
dont know if this helps, i wrote a quick tool to got all images from pwdatabase and save them on my harddrive.
later you have a database.db file and all item images, u can get then name by id from database.db and item image name is item id.
;################################################# ######################
; Perfect World Database Extractor v.3
; quick typed by Soulpatrol
;
; How to use:
; 0. there must be a folder named IMG inside the tool folder, for the images
; 1. enter URL from your PW Database (pwi, my, ru) in the gui
; 2. set amount of scanned ID´s , eg. 1000 for ID0 up to ID1000 ID
; 3. press START and go shopping or drink a lot coke while scanning.
;
; when finish scanning, look in Tool Folder for: database.db
; u can open this file with any texteditor, images are stored in IMG folder
;
; entrys looks like:
;[ID][@][NAME]
;6@*Steel Falchion
; u can split Item ID and Item Name with @
;
; have fun
;################################################# ####################
#include <INet.au3>
#include <String.au3>
#include <array.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Global $counter,$Start_Stop="stop",$ExitLoop=False,$Split count,$SpanStyle,$NameBuff,$ItemColor
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Label4 = GUICtrlCreateLabel('Perfect World Database Extractor by Soulpatrol', 10, 8, 309, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
While 1
$GUIMsg = GUIGetMsg()
switch $GUIMsg
Case $GUI_EVENT_CLOSE
_exit()
Case $Button_Exit
_exit()
Case $Button_Start
if $ExitLoop=False then
Opt("GUIOnEventMode", 1)
GUISetOnEvent($GUI_EVENT_CLOSE, "_exit")
GUICtrlSetOnEvent($Button_Exit, "_exit")
GUICtrlSetOnEvent($Button_Stop, "_stop")
_start()
endif
Endswitch
WEnd
Func _stop()
GUICtrlSetState($Button_Start,$GUI_ENABLE)
GUICtrlSetState($Button_Stop,$GUI_DISABLE)
$ExitLoop=True
EndFunc
;################################################# ############
FUNC _start()
if $ExitLoop=False then
GUICtrlSetState($Button_Start,$GUI_DISABLE)
GUICtrlSetState($Button_Stop,$GUI_ENABLE)
;GUICtrlSetData($Button_Start, "Stop Scan")
GetDatabaseIDs(GUICtrlRead($MaxITEMS)) ; amount to search
GUICtrlSetData($STATUS, "Finish scanning and new Database saved...")
GUICtrlSetState($Button_Start,$GUI_ENABLE)
GUICtrlSetState($Button_Stop,$GUI_DISABLE)
Opt("GUIOnEventMode", 0)
endif
EndFunc
;################################################# ############
FUNC _exit()
$ExitLoop=True
Exit
EndFunc
;################################################# ############
FUNC GetDatabaseIDs($items)
$Button_Start = False
;open database as unicode
$hDatabase = FileOpen("database.db",34)
;start the loop
$counter=0
For $x=0 To $items-1
$ItemID = $x
;get website content
$sfileHtml = _INetGetSource("http://www.pwdatabase.com/" & GUICtrlRead($URL) & "/items/" & $ItemID)
;remove tab from html text...
$sfileHtml = StringRegExpReplace($sfileHtml , @CRLF, "@")
; get item name
$ItemName=_StringBetween($sfileHtml,'<th class="itemHeader" colspan="2">','@') ; Item Name
IF not @Error=1 then
$Chinese = StringInStr($ItemName[0], "N/") ; chinese string, not ingame item
IF $Chinese = 0 then ;if not found...
formatName($ItemName[0]) ;format the html stuff and split string...
if not $NameBuff="" Then ; if name not empty
FileWriteLine($hDatabase, $ItemID & "@" & $ItemColor & "@" & $NameBuff & @CRLF); save to database
;if dl image checked
if GUICtrlRead($CHK_DL )=1 then
InetGet("http://www.pwdatabase.com/images/icons/generalm/" & $ItemID & ".gif", "img\" & $ItemID & ".gif", 1)
endif
endif
ENDIF
$counter += 1
ENDIF
;set status counter
GUICtrlSetData($ITEMCount, $counter)
GUICtrlSetData($STATUS, "Scanning Item ID: " & $ItemID & "/" & $items)
If $ExitLoop=True Then ExitLoop
next
FileClose($hDatabase)
EndFunc
;################################################# ####################
FUNC formatName($NameTMP)
;look for spanclass
$SpanStyle = StringInStr($NameTMP, "item_color")
IF $SpanStyle > 0 then
;get item color
$ItemColor=_StringBetween($NameTMP,"'","'>")
;format item color
$ColorNum = StringTrimLeft($ItemColor[0], 10)
$ItemColor=$item_color[$ColorNum]
;remove span
$SpecialChar=_StringBetween($NameTMP,'>','<')
$NameBuff=$SpecialChar[0]
Else
$ItemColor= $item_color[0]
$NameBuff=$NameTMP
endif
$NameBuff = StringRegExpReplace($NameBuff ,"â—�", "•") ; is •
$NameBuff = StringRegExpReplace($NameBuff ,"â—‹", "ο") ; is ο
;look for special html chars...
$pathsplit = StringSplit($NameBuff, ';')
For $Splitcount=1 To $pathsplit[0]-1 ;if found change to unicode...
$SpecialChar=_StringBetween($pathsplit[$Splitcount]&";",'&#',';')
; change special html char to unicode char
$SpecialChar = ChrW($SpecialChar[0])
$NameBuff = StringRegExpReplace($NameBuff, $pathsplit[$Splitcount]&";", $SpecialChar)
next
@amineurin this would work if only ether saga had a updated database XD but since there are only 2 database websites out there one very nice one but outdated so it doesnt have all the newer items. other one has most of the important items but is missing a lot of info
The path.data was the answer and idk what i messed up the first time i tested this file, but i guess i made a typo somewhere in the script back then. Thnxs for the help anyway
brauche hilfe beim packen der icon.eix & icon.epk 04/26/2012 - Metin2 Private Server - 7 Replies brauche hilfe beim packen der icon.eix & icon.epk
Hey Leute,
wie oben im Titel schon steht brauch ich eure Hilfe, da mein endpacker es aus einen mir unbekannten grund nicht schafft die icon.eix_icon.epk zu packen =(
Beim entpacken läuft alles super und klappt ohne irgendwelche probleme.
(Benutze den endpacker von xdarki)
Komisch ist nur das bei item.eix und item epk oder pc eix und epk läuft es auch super er entpackt und packt die datein ausser ebend bei dem ICON nicht.
habe mal...
icon.epk/icon.eix lassen sich nicht packen 03/24/2012 - Metin2 Private Server - 5 Replies Hey,
Ich hab alles wie in diesem Tutorial gemacht: http://www.elitepvpers.com/forum/metin2-pserver-gu ides-strategies/455903-vtut-how-epk-dateien-entpac ken-wieder-zu-epk-machen.html
Alles funktioniert ausser das packen -.- Also ich habs schon auf 2 methoden probiert.
1. icon.xml auf die m2.exe ziehen FAIL
2. mit cmd: cd C:\ExtractionHelper
m2.exe icon.xml FAIL
HABE WINDOWS7 64-bit.
brauche hilfe beim packen der icon.eix & icon.epk 02/04/2012 - Metin2 PServer Guides & Strategies - 4 Replies Hey Leute,
wie oben im Titel schon steht brauch ich eure Hilfe, da mein endpacker es aus einen mir unbekannten grund nicht schafft die icon.eix_icon.epk zu packen =(
Beim entpacken läuft alles super und klappt ohne irgendwelche probleme.
(Benutze den endpacker von xdarki)
Komisch ist nur das bei item.eix und item epk oder pc eix und epk läuft es auch super er entpackt und packt die datein ausser ebend bei dem ICON nicht.
habe mal 2 screens hochgeladen damit ihr vlt den fehler erkennt ich...
[S]Administrator Icon & User Icon 04/30/2011 - elite*gold Trading - 9 Replies Hallo Leute,
Ich suche ein Icon für Administrator und User!
Für mein Forum!
Hier so ungefähr sollte es aussehen!
http://booktastic.org/forums/images/icon/crystal_ red/moderator.png