can any one add here registration web site? :/
Printable View
can any one add here registration web site? :/
Does this work with 64 bit windows, because my server will start and be like > then after 10 secs it will stop.
and when I try to update the cmd with vhckoff i cant go to the cmd screen, it keeps saying "disable update.Please restart psmAgenr"(Im using teh english version of psm server agent) its same with the chinese version.
I managed to do the Monster Name translation on the Database, by extracting the name from the Monster.SData file.
Note that this will also need to be adapted for the Cash.SData, Skill.SData, and Item.SData binary files.
This was coded in Python:
Main.py
Code:import struct
import re
# Open SData File.
input = open("Monster.SData", mode='rb')
# Open SQL File for writing.
output = open("Monster.SData.txt.sql", mode='w')
# Unpack binary into 4-byte integer.
file_header = struct.unpack('i', input.read(4))
# The total amount of records.
record_total = file_header[0]
print 'Monster records: ' + str(record_total)
monster = []
for i in range(record_total):
monster.append({})
# Length of monster name string.
data = struct.unpack('i', input.read(4))
name_len = data[0]
# Read Monster name string, stripping NULL Terminator.
monster[i]['name'] = input.read(name_len)[:-1]
# Other Data we don't need.
input.read(31)
# Sanitize string by adding escape char quotes.
sanitize_name = monster[i]['name'].replace('\'', '\'\'')
# Generate update SQL String.
sql = "UPDATE Mobs SET MobName = '" + sanitize_name + "' WHERE MobID = " + str(i) +";\n"
# Write the SQL to a file.
output.write(sql)
Hey HASKOMAN
YEY -- that worked :thumbup: thanx man!
after 2 nights i was at same spot as u that it had to do with markettime^^
but im sure u mean
SQL Database - PS_GameData - CHARItem - design table and change Maketime in varchar
after all it works now fine :thumbup1:
have fun!
The Goals Are as Follows:
- To be able to get all the SData binary files (including English names) reflected in the Server Database. I think it's best to create Comma Separated Extracts as they produce best results and can easily be imported.
- To add re-combine functionality to the DATA.SAF Extractor. This is actually a fairly big task and not trivial at all.
- To make programs to convert the SData files to CSV Files that can be edited, and be re-combined back into the SAF format. Pretty Easy as partly demonstrated below.
- Make the DATA.SAF Extractor be able to create Update Patch Files. Fairly Difficult as it will need to compare DIFF changes.
I'm currently as Goal 1:
I have created a program to create a Cash.SData CSV (Comma Separated) Input File, which then can be used to Import into the Database.
A few issues, appending records to the existing ProductList (from RowID == 92) causes the Game Server to not start. Not sure why.
Removing the existing records, and importing the new data launches the Game Server.
However actually purchasing the Items causes a disconnect. Could this be because of the name differences in the Items Table?
Anyway here is the script for you to have a play with:
Code: Python
File: Cash.py
Code:import struct
import re
startRowID = 0
# Open SData File.
input = open("Cash.SData", mode='rb')
# Open File for output.
output = open("ProductList.csv", mode='w')
# Unpack binary into 4-byte integer.
file_header = struct.unpack('i', input.read(4))
# The total amount of records.
record_total = file_header[0]
print 'Total records: ' + str(record_total)
# Create CSV Header
csv = "RowID,ProductName,ProductCode,BuyCost"
for j in range(1,25):
csv = csv + ",ItemID"+str(j)+",ItemCount"+str(j)
output.write(csv)
record = []
for i in range(record_total):
record.append({})
data = struct.unpack('iiii', input.read(0x10))
record[i]['RowID'] = data[0]
record[i]['na1'] = data[1]
record[i]['na2'] = data[2]
record[i]['cost'] = data[3]
for j in range(1,25):
data = struct.unpack('iB', input.read(0x5))
record[i][('ItemID'+str(j))] = data[0]
record[i][('ItemCount'+str(j))] = data[1]
# Length of name string.
data = struct.unpack('i', input.read(4))
name_len = data[0]
# Read name string, stripping NULL Terminator.
record[i]['name'] = input.read(name_len)[:-2]
print("name: " + record[i]['name'])
data = struct.unpack('i', input.read(4))
type_len = data[0]
record[i]['code'] = input.read(type_len)[:-2]
data = struct.unpack('i', input.read(4))
desc_len = data[0]
input.read(desc_len)[:-2]
# Sanitize string by adding escape char quotes.
sz_name = record[i]['name'].replace('\'', '\'\'')
sz_code = record[i]['code'].replace('\'', '\'\'')
# Create CSV Records.
csv = "\n" + str((startRowID + record[i]['RowID'])) + ",\"" + sz_name + "\",\"" + sz_code + "\"," + str(record[i]['cost'])
for j in range(1,25):
csv = csv + "," + str(record[i][('ItemID'+str(j))]) + "," + str(record[i][('ItemCount'+str(j))])
#csv = csv + ",\n"
output.write(csv)
You need to remove the existing ones (1-92). This will result in conflict in some of the product names. I'm only missing the extraction hammer ID and the29/249 package, if you have them I will post the completed table of ProductList.
Thanks.
Did you try purchasing the items in-game? When I removed all the existing ones, and imported the new data in, purchasing them in-game disconnected me. Perhaps I am using broken stored procedures or something?
And just run the source I provided and it will give you those records. If there on the client, they will be in the Item.SData file. ;)
OTHER STUFF:
I have been able to reverse engineer _MOST_ of the Item.SData File. There are 19 (0x13) Bytes, that still need figuring out. Anyone up for the challenge? Here is my source as it stands:
Source Code Provided & in Python.
Item.py
I was able to purchase the items in-game including the packaged ones. Please note that the names are case sensitive.
so does this work with x64 windows? becasue mine keeps crashing.
Help Sommons use.
Unavailable clan
Cannot equip Red Lion Sommons Stone
http://img361.imageshack.us/img361/6374/sommmm.jpg
There are many kinds of summon stones in-game, party, guild, warehouse just to name a few. Check what is it for. And also check your current mode, some items requires specific mode.
Sometimes the jumbo box from item shop fail. I don't know if it's normal or a bug.
Have anyone have same problem?
In picture you can see Jumbo Box give a link hammer lvl 2 as a drop but Mini Mystery just fail. Both box fail sometimes...
http://img301.imageshack.us/img301/4254/shaiya.th.jpg
Btw, I dit not added any item in product, just rewrite the old ones :)