|
You last visited: Today at 10:25
Advertisement
shay data edit (0-1b)
Discussion on shay data edit (0-1b) within the Shaiya PServer Development forum part of the Shaiya Private Server category.
08/30/2015, 12:45
|
#151
|
elite*gold: 0
Join Date: Apr 2011
Posts: 156
Received Thanks: 42
|
And you can have a version for editing of the episode .sdata 6.3 ??
|
|
|
11/18/2016, 17:05
|
#152
|
elite*gold: 0
Join Date: May 2012
Posts: 35
Received Thanks: 11
|
Quote:
Originally Posted by [Alcatraz]
if your only using ep4.5 you want to leave the 3s to 3s if ep5 change the 3s listed below to 9s
first you need to open the skills.py file what is in your python27 folder and then src folder open this file with notepad or notepad++ and it will look something like this
'''
This file is part of Shay_data_edit.
Shay_data_edit is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Shay_data_edit is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Shay_data_edit. If not, see <http://www.gnu.org/licenses/>.
Copyright ZeroSignal 2009, 2010
'''
from Utils import *
skill_types = [
['SkillName', 'string'],
['SkillDesc', 'string'],
['SkillLevel', 'tinyint'],
['SkillID', 'short'],
['SkillAnim', 'tinyint'],
['SkillIcon', 'int'],
['ReqLevel', 'short'],
['Country', 'tinyint'],
['AttackFighter', 'tinyint'],
['DefenseFighter', 'tinyint'],
['Patrolrogue', 'tinyint'],
['Shootrogue', 'tinyint'],
['AttackMage', 'tinyint'],
['DefenseMage', 'tinyint'],
['Grow', 'tinyint'],
['SkillPoint', 'tinyint'],
['TypeShow', 'tinyint'],
['TypeAttack', 'tinyint'],
['TypeEffect', 'tinyint'],
['TypeDetail', 'short'],
['NeedWeapon1', 'tinyint'],
['NeedWeapon2', 'tinyint'],
['NeedWeapon3', 'tinyint'],
['NeedWeapon4', 'tinyint'],
['NeedWeapon5', 'tinyint'],
['NeedWeapon6', 'tinyint'],
['NeedWeapon7', 'tinyint'],
['NeedWeapon8', 'tinyint'],
['NeedWeapon9', 'tinyint'],
['NeedWeapon10', 'tinyint'],
['NeedWeapon11', 'tinyint'],
['NeedWeapon12', 'tinyint'],
['NeedWeapon13', 'tinyint'],
['NeedWeapon14', 'tinyint'],
['NeedWeapon15', 'tinyint'],
['Shield', 'tinyint'],
['SP', 'short'],
['MP', 'short'],
['ReadyTime', 'tinyint'],
['ResetTime', 'short'],
['AttackRange', 'tinyint'],
['StateType', 'tinyint'],
['AttrType', 'tinyint'],
['Disable', 'short'],
['PrevSkillID', 'short'],
['SuccessType', 'tinyint'],
['SuccessValue', 'tinyint'],
['TargetType', 'tinyint'],
['ApplyRange', 'tinyint'],
['MultiAttack', 'tinyint'],
['KeepTime', 'short'],
['Weapon1', 'tinyint'],
['Weapon2', 'tinyint'],
['Weaponvalue', 'tinyint'],
['Bag', 'tinyint'],
['Arrow', 'short'],
['DamageType', 'tinyint'],
['DamageHP', 'short'],
['DamageSP', 'short'],
['DamageMP', 'short'],
['TimeDamageType', 'tinyint'],
['TimeDamageHP', 'short'],
['TimeDamageSP', 'short'],
['TimeDamageMP', 'short'],
['AddDamageHP', 'short'],
['AddDamageSP', 'short'],
['AddDamageMP', 'short'],
['AbilityType1', 'tinyint'],
['AbilityValue1', 'short'],
['AbilityType2', 'tinyint'],
['AbilityValue2', 'short'],
['AbilityType3', 'tinyint'],
['AbilityValue3', 'short'],
['HealHP', 'short'],
['HealSP', 'short'],
['HealMP', 'short'],
['TimeHealHP', 'short'],
['TimeHealSP', 'short'],
['TimeHealMP', 'short'],
['DefenseType', 'tinyint'],
['DefenseValue', 'tinyint'],
['LimitHP', 'tinyint'],
['FixRange', 'tinyint'],
['ChangeType', 'short'],
['ChangeLevel', 'short'],
]
def MainSkill(outFmt):
if (outFmt.export_complete):
return CombineSkill("Skill")
if (outFmt.csv_import or outFmt.csv_complete):
return ExtractSkill("Skill", outFmt)
def MainNPCSkill(outFmt):
if (outFmt.export_complete):
return CombineSkill("NpcSkill")
if (outFmt.csv_import or outFmt.csv_complete):
return ExtractSkill("NpcSkill", outFmt)
def CombineSkill(type):
csvIn = work_dir + type + ".complete.csv"
try:
csvf = csv.DictReader(open(csvIn))
except IOError:
sys.exit(MsgFileReadError % csvIn)
foutName = work_dir + type + ".SData"
try:
fout = open(foutName, mode='wb')
except IOError:
sys.exit(MsgFileWriteError % foutName)
recs = []
for row in csvf:
recs.append(row)
print "skill_rows: " + str(len(recs))
# Write Total.
record_total = struct.pack('I', (len(recs) / 3))
fout.write(record_total)
for i in recs:
pack_fields(fout, skill_types, i)
return True
def ExtractSkill(type, outFmt):
# Open SData File.
skillSData = feed_dir + type + ".SData"
try:
input = open(skillSData, mode='rb')
except IOError:
sys.exit(MsgFileReadError % skillSData)
header = get_data_headers(skill_types)
if (outFmt.csv_import):
filename = work_dir + type + ".import.csv"
header.pop(1) # Remove SkillDesc
header.pop(3) # Remove SkillAnim
header.pop(3) # Remove SkillIcon
if (outFmt.csv_complete):
filename = work_dir + type + ".complete.csv"
print("Creating " + filename)
# Open File for output.
try:
fout = open(filename, mode='wb')
except IOError:
sys.exit(MsgFileWriteError % filename)
fout_csv = csv.writer(fout)
fout_csv.writerow(header)
fout_csv = csv.DictWriter(fout, header)
record_total = unpack_field(input, 'int')
i = 0
j = 0
while True:
rec = unpack_fields(input, skill_types, {})
if (rec["SkillLevel"] == 1):
i += 1
j = 0
j += 1
if (outFmt.csv_import):
rec["SkillID"] = i
cs_rec = copyKeys(rec, header)
fout_csv.writerow(cs_rec)
if (i == record_total and j == 3):
break
return True
now what you need to do to fix it you will need to change 2 numbers in this file from 3 to 9
first edit
Code:
# Write Total.
record_total = struct.pack('I', (len(recs) / 3))
fout.write(record_total)
second edit
Code:
cs_rec = copyKeys(rec, header)
fout_csv.writerow(cs_rec)
if (i == record_total and j == 3):
break
return True
when done correctly it will look like this
Code:
'''
This file is part of Shay_data_edit.
Shay_data_edit is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Shay_data_edit is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Shay_data_edit. If not, see <http://www.gnu.org/licenses/>.
Copyright ZeroSignal 2009, 2010
'''
from Utils import *
skill_types = [
['SkillName', 'string'],
['SkillDesc', 'string'],
['SkillLevel', 'tinyint'],
['SkillID', 'short'],
['SkillAnim', 'tinyint'],
['SkillIcon', 'int'],
['ReqLevel', 'short'],
['Country', 'tinyint'],
['AttackFighter', 'tinyint'],
['DefenseFighter', 'tinyint'],
['Patrolrogue', 'tinyint'],
['Shootrogue', 'tinyint'],
['AttackMage', 'tinyint'],
['DefenseMage', 'tinyint'],
['Grow', 'tinyint'],
['SkillPoint', 'tinyint'],
['TypeShow', 'tinyint'],
['TypeAttack', 'tinyint'],
['TypeEffect', 'tinyint'],
['TypeDetail', 'short'],
['NeedWeapon1', 'tinyint'],
['NeedWeapon2', 'tinyint'],
['NeedWeapon3', 'tinyint'],
['NeedWeapon4', 'tinyint'],
['NeedWeapon5', 'tinyint'],
['NeedWeapon6', 'tinyint'],
['NeedWeapon7', 'tinyint'],
['NeedWeapon8', 'tinyint'],
['NeedWeapon9', 'tinyint'],
['NeedWeapon10', 'tinyint'],
['NeedWeapon11', 'tinyint'],
['NeedWeapon12', 'tinyint'],
['NeedWeapon13', 'tinyint'],
['NeedWeapon14', 'tinyint'],
['NeedWeapon15', 'tinyint'],
['Shield', 'tinyint'],
['SP', 'short'],
['MP', 'short'],
['ReadyTime', 'tinyint'],
['ResetTime', 'short'],
['AttackRange', 'tinyint'],
['StateType', 'tinyint'],
['AttrType', 'tinyint'],
['Disable', 'short'],
['PrevSkillID', 'short'],
['SuccessType', 'tinyint'],
['SuccessValue', 'tinyint'],
['TargetType', 'tinyint'],
['ApplyRange', 'tinyint'],
['MultiAttack', 'tinyint'],
['KeepTime', 'short'],
['Weapon1', 'tinyint'],
['Weapon2', 'tinyint'],
['Weaponvalue', 'tinyint'],
['Bag', 'tinyint'],
['Arrow', 'short'],
['DamageType', 'tinyint'],
['DamageHP', 'short'],
['DamageSP', 'short'],
['DamageMP', 'short'],
['TimeDamageType', 'tinyint'],
['TimeDamageHP', 'short'],
['TimeDamageSP', 'short'],
['TimeDamageMP', 'short'],
['AddDamageHP', 'short'],
['AddDamageSP', 'short'],
['AddDamageMP', 'short'],
['AbilityType1', 'tinyint'],
['AbilityValue1', 'short'],
['AbilityType2', 'tinyint'],
['AbilityValue2', 'short'],
['AbilityType3', 'tinyint'],
['AbilityValue3', 'short'],
['HealHP', 'short'],
['HealSP', 'short'],
['HealMP', 'short'],
['TimeHealHP', 'short'],
['TimeHealSP', 'short'],
['TimeHealMP', 'short'],
['DefenseType', 'tinyint'],
['DefenseValue', 'tinyint'],
['LimitHP', 'tinyint'],
['FixRange', 'tinyint'],
['ChangeType', 'short'],
['ChangeLevel', 'short'],
]
def MainSkill(outFmt):
if (outFmt.export_complete):
return CombineSkill("Skill")
if (outFmt.csv_import or outFmt.csv_complete):
return ExtractSkill("Skill", outFmt)
def MainNPCSkill(outFmt):
if (outFmt.export_complete):
return CombineSkill("NpcSkill")
if (outFmt.csv_import or outFmt.csv_complete):
return ExtractSkill("NpcSkill", outFmt)
def CombineSkill(type):
csvIn = work_dir + type + ".complete.csv"
try:
csvf = csv.DictReader(open(csvIn))
except IOError:
sys.exit(MsgFileReadError % csvIn)
foutName = work_dir + type + ".SData"
try:
fout = open(foutName, mode='wb')
except IOError:
sys.exit(MsgFileWriteError % foutName)
recs = []
for row in csvf:
recs.append(row)
print "skill_rows: " + str(len(recs))
# Write Total.
record_total = struct.pack('I', (len(recs) / 9))
fout.write(record_total)
for i in recs:
pack_fields(fout, skill_types, i)
return True
def ExtractSkill(type, outFmt):
# Open SData File.
skillSData = feed_dir + type + ".SData"
try:
input = open(skillSData, mode='rb')
except IOError:
sys.exit(MsgFileReadError % skillSData)
header = get_data_headers(skill_types)
if (outFmt.csv_import):
filename = work_dir + type + ".import.csv"
header.pop(1) # Remove SkillDesc
header.pop(3) # Remove SkillAnim
header.pop(3) # Remove SkillIcon
if (outFmt.csv_complete):
filename = work_dir + type + ".complete.csv"
print("Creating " + filename)
# Open File for output.
try:
fout = open(filename, mode='wb')
except IOError:
sys.exit(MsgFileWriteError % filename)
fout_csv = csv.writer(fout)
fout_csv.writerow(header)
fout_csv = csv.DictWriter(fout, header)
record_total = unpack_field(input, 'int')
i = 0
j = 0
while True:
rec = unpack_fields(input, skill_types, {})
if (rec["SkillLevel"] == 1):
i += 1
j = 0
j += 1
if (outFmt.csv_import):
rec["SkillID"] = i
cs_rec = copyKeys(rec, header)
fout_csv.writerow(cs_rec)
if (i == record_total and j == 9):
break
return True
once completed save your changes and do your skills to cvs process and your done.
note: this will not work for ep6 with 15 skill levels im not very good with python but my best guess as to why is the file is formatted differently or the coding of the file isn't the same as ep5 or lower
|
Brother, y to EP 6.3 where 15 level per 11 ablities?
I am edit python, to bug 7 skillID = 0 not 15
from Utils import *
skill_types = [
['SkillName', 'string'],
['SkillDesc', 'string'],
['SkillLevel', 'tinyint'],
['SkillID', 'short'],
['SkillAnim', 'tinyint'],
['SkillIcon', 'int'],
['ReqLevel', 'short'],
['Country', 'tinyint'],
['AttackFighter', 'tinyint'],
['DefenseFighter', 'tinyint'],
['Patrolrogue', 'tinyint'],
['Shootrogue', 'tinyint'],
['AttackMage', 'tinyint'],
['DefenseMage', 'tinyint'],
['Grow', 'tinyint'],
['SkillPoint', 'tinyint'],
['TypeShow', 'tinyint'],
['TypeAttack', 'tinyint'],
['TypeEffect', 'tinyint'],
['TypeDetail', 'short'],
['NeedWeapon1', 'tinyint'],
['NeedWeapon2', 'tinyint'],
['NeedWeapon3', 'tinyint'],
['NeedWeapon4', 'tinyint'],
['NeedWeapon5', 'tinyint'],
['NeedWeapon6', 'tinyint'],
['NeedWeapon7', 'tinyint'],
['NeedWeapon8', 'tinyint'],
['NeedWeapon9', 'tinyint'],
['NeedWeapon10', 'tinyint'],
['NeedWeapon11', 'tinyint'],
['NeedWeapon12', 'tinyint'],
['NeedWeapon13', 'tinyint'],
['NeedWeapon14', 'tinyint'],
['NeedWeapon15', 'tinyint'],
['Shield', 'tinyint'],
['SP', 'short'],
['MP', 'short'],
['ReadyTime', 'tinyint'],
['ResetTime', 'short'],
['AttackRange', 'tinyint'],
['StateType', 'tinyint'],
['AttrType', 'tinyint'],
['Disable', 'short'],
['PrevSkillID', 'short'],
['SuccessType', 'tinyint'],
['SuccessValue', 'tinyint'],
['TargetType', 'tinyint'],
['ApplyRange', 'tinyint'],
['MultiAttack', 'tinyint'],
['KeepTime', 'short'],
['Weapon1', 'tinyint'],
['Weapon2', 'tinyint'],
['Weaponvalue', 'tinyint'],
['Bag', 'tinyint'],
['Arrow', 'short'],
['DamageType', 'tinyint'],
['DamageHP', 'short'],
['DamageSP', 'short'],
['DamageMP', 'short'],
['TimeDamageType', 'tinyint'],
['TimeDamageHP', 'short'],
['TimeDamageSP', 'short'],
['TimeDamageMP', 'short'],
['AddDamageHP', 'short'],
['AddDamageSP', 'short'],
['AddDamageMP', 'short'],
['AbilityType1', 'tinyint'],
['AbilityValue1', 'short'],
['AbilityType2', 'tinyint'],
['AbilityValue2', 'short'],
['AbilityType3', 'tinyint'],
['AbilityValue3', 'short'],
# ['AbilityType4', 'tinyint'],
# ['AbilityValue4', 'short'],
# ['AbilityType5', 'tinyint'],
# ['AbilityValue5', 'short'],
# ['AbilityType6', 'tinyint'],
# ['AbilityValue6', 'short'],
# ['AbilityType7', 'tinyint'],
# ['AbilityValue7', 'short'],
# ['AbilityType8', 'tinyint'],
# ['AbilityValue8', 'short'],
# ['AbilityType9', 'tinyint'],
# ['AbilityValue9', 'short'],
['HealHP', 'short'],
['HealSP', 'short'],
['HealMP', 'short'],
['TimeHealHP', 'short'],
['TimeHealSP', 'short'],
['TimeHealMP', 'short'],
['DefenseType', 'tinyint'],
['DefenseValue', 'tinyint'],
['LimitHP', 'tinyint'],
['FixRange', 'tinyint'],
['ChangeType', 'short'],
['ChangeLevel', 'short'],
]
def MainSkill(outFmt):
if (outFmt.export_complete):
return CombineSkill("Skill")
if (outFmt.csv_import or outFmt.csv_complete):
return ExtractSkill("Skill", outFmt)
def MainNPCSkill(outFmt):
if (outFmt.export_complete):
return CombineSkill("NpcSkill")
if (outFmt.csv_import or outFmt.csv_complete):
return ExtractSkill("NpcSkill", outFmt)
def CombineSkill(type):
csvIn = work_dir + type + ".complete.csv"
try:
csvf = csv.DictReader(open(csvIn))
except IOError:
sys.exit(MsgFileReadError % csvIn)
foutName = work_dir + type + ".SData"
try:
fout = open(foutName, mode='wb')
except IOError:
sys.exit(MsgFileWriteError % foutName)
recs = []
for row in csvf:
recs.append(row)
print "skill_rows: " + str(len(recs))
# Write Total.
record_total = struct.pack('I', (len(recs) / 15))
fout.write(record_total)
for i in recs:
pack_fields(fout, skill_types, i)
return True
def ExtractSkill(type, outFmt):
# Open SData File.
skillSData = feed_dir + type + ".SData"
try:
input = open(skillSData, mode='rb')
except IOError:
sys.exit(MsgFileReadError % skillSData)
header = get_data_headers(skill_types)
if (outFmt.csv_import):
filename = work_dir + type + ".import.csv"
# header.pop(1) # Remove SkillDesc
# header.pop(3) # Remove SkillAnim
# header.pop(3) # Remove SkillIcon
if (outFmt.csv_complete):
filename = work_dir + type + ".complete.csv"
print("Creating " + filename)
# Open File for output.
try:
fout = open(filename, mode='wb')
except IOError:
sys.exit(MsgFileWriteError % filename)
fout_csv = csv.writer(fout)
fout_csv.writerow(header)
fout_csv = csv.DictWriter(fout, header)
record_total = unpack_field(input, 'int')
i = 0
j = 0
while True:
rec = unpack_fields(input, skill_types, {})
if (rec["SkillLevel"] == 1):
i += 1
j = 0
j += 1
if (outFmt.csv_import):
rec["SkillID"] = i
cs_rec = copyKeys(rec, header)
fout_csv.writerow(cs_rec)
if (i == record_total and j == 15):
break
return True
|
|
|
12/16/2016, 05:41
|
#153
|
elite*gold: 0
Join Date: Jan 2012
Posts: 106
Received Thanks: 47
|
Quote:
Originally Posted by PeQoo
Vendo vps con las data de shaiya ep 7.0 intaladas + web seguridad todo listo mas de 6 meses abierto el servidor El cifrador XOR,Las DB,Los Files interesados Imbox dejen su mensaje por privado
|
Que falta de respeto a este tipo de personas deberķan banear su cuenta y no por que publiques en cada pos que vende tu su puesto vps eso no garantiza
que a ras una venta y estas en la seccion equivocada
solo bastaba que publicaras en ventas y todo mundo lo bera este sitio es para aprende si quieres vender tu servidor usa el sitio correcto ya que en estos solo estamos los que queremos explotar nuestro limite en aprendizaje no a que nos aguan el trabajo
|
|
|
 |
|
Similar Threads
|
[PK2] Skill edit data.pk2
11/15/2012 - Silkroad Online - 2 Replies
looking for a professional who knows
how to edit/add skills in the data.pk2 (.ban files)
if you can help me please write here or pm me.
thanks!!
|
how do i edit data.pk2 skills
02/08/2010 - Silkroad Online - 1 Replies
Hey guys im wondering how i pk2 edit my skills in silkroad. i have the pk2 codes but i dont get how to change it.. it always says string not found.
can anyone help me plz?
|
[PK]All Servers+Data.pk2 Edit.
11/17/2009 - SRO PServer Guides & Releases - 12 Replies
This is my new edit :)Thx for all will using player
Log-in screen Edit
140lw Skill Edit
140lw Skill İcon Edit
9D items changed to 10D items
85Lw Weapons changed SUN.
Loading Screen Edit
Launcher Edit
Horse edit
|
How to edit Data.pk2?
04/06/2009 - Silkroad Online - 14 Replies
Could anyone tell whats the best program to do it? I want to edit Data.pk2, not Media.pk2 Thnx :)
|
Is it possible to edit data for Dekaron ?
01/28/2008 - Dekaron - 0 Replies
I've tried editing with winhex, but not working. = (
Any idea anyone ?
|
All times are GMT +1. The time now is 10:26.
|
|