Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

[Guide] Make STRS from Header

Joined
Apr 9, 2012
Messages
2,359
Reaction score
442
i have question here >.<

It Possible To Read Total Blocks, in another offset ?

Ex : I Want To Read Total Blocks From Offset 7414819, so The Structure read from that offset, not first line of files

how to like coding that ?..
i'm confused because this >,< Already try, and still READ From First Line / Byte Of Files

*Working For NDItem (Item Description)

it's possible,
it used something like this :
Code:
[filemask="*.nes"]
struct System
{
child "keeper" [[COLOR="#FF0000"]offset[/COLOR]=0x0001e188, group="Keeper",[COLOR="#FF0000"]count[/COLOR]=32];
}
you should determine the offset and how much total block you want to view in "count"
umm, just a suggestion, you can learn it from zoneserver.strs

oh and of course you need to create :
Code:
struct "keeper" [preload=1, tableview=1]
{
i16 gut;
u8 pass;
u8 catch;
u8 Punch;
}

so it will load struct "keeper" in your offset from how much you want it in my example it's 30 count, so it will open 30 block,

(my example is not something in RF, it's something from another game, but i used dat editor :p:)
 
Last edited:
Skilled Illusionist
Joined
Feb 17, 2012
Messages
392
Reaction score
22
it's possible,
it used something like this :
Code:
[filemask="*.nes"]
struct System
{
child "keeper" [[COLOR="#FF0000"]offset[/COLOR]=0x0001e188, group="Keeper",[COLOR="#FF0000"]count[/COLOR]=32];
}
you should determine the offset and how much total block you want to view in "count"
umm, just a suggestion, you can learn it from zoneserver.strs

oh and of course you need to create :
Code:
struct "keeper" [preload=1, tableview=1]
{
i16 gut;
u8 pass;
u8 catch;
u8 Punch;
}

so it will load struct "keeper" in your offset from how much you want it in my example it's 30 count, so it will open 30 block,

(my example is not something in RF, it's something from another game, but i used dat editor :p:)

no no, i mean not like that,
i mean "Read Auto Count" Like another strs, automatic read total count
 
Joined
Apr 9, 2012
Messages
2,359
Reaction score
442
no no, i mean not like that,
i mean "Read Auto Count" Like another strs, automatic read total count

i see,
you mean the block count is in another offset?
it's still possible
Code:
[filemask="*.nes"]
struct System
{
child "keeper" [offset=0x0001e188, group="Keeper"];
}

struct keeper
{
u32 [COLOR="#FF0000"]StorelistBlocks[/COLOR];
Child Storelist [count=[COLOR="#FF0000"]StorelistBlocks[/COLOR]];
}

maybe that will do (not tested), but it will create so much child, if it fail, it mean you should add offset into
Code:
Child Storelist [count=StorelistBlocks];
-_-"
 
Last edited:
Skilled Illusionist
Joined
Feb 17, 2012
Messages
392
Reaction score
22
i see,
you mean the block count is in another offset?
it's still possible
Code:
[filemask="*.nes"]
struct System
{
child "keeper" [offset=0x0001e188, group="Keeper"];
}

struct keeper
{
u32 [COLOR="#FF0000"]StorelistBlocks[/COLOR];
Child Storelist [count=[COLOR="#FF0000"]StorelistBlocks[/COLOR]];
}

maybe that will do (not tested), but it will create so much child, if it fail, it mean you should add offset into
Code:
Child Storelist [count=StorelistBlocks];
-_-"

fck yeah man ~
Thanks alot bro :thumbup1:, its work >.<
 
Junior Spellweaver
Joined
Feb 16, 2012
Messages
119
Reaction score
21
dont forget for this code guru ~_~

int = i32
unsignet int = U32
float = float
double = double
char = I8
unsigned char = U8
Short = i16
unsigned Short = u16

char *** 91; *** 93; ( array of spells ) - CSTR + optional parameter len = x ( where x - the number of bytes ) =
example: cstr [len=64];

sir would u more explain about this
char *** 91; *** 93; ( array of spells ) - CSTR + optional parameter len = x ( where x - the number of bytes ) =
example: cstr [len=64
1 week work with making all STRS dor all .dat server
and many got error with some function



[QUOTE="meylan, post: 0"]sir would u more explain about this
char *** 91; *** 93; ( array of spells ) - CSTR + optional parameter len = x ( where x - the number of bytes ) =
example: cstr [len=64
1 week work with making all STRS dor all .dat server
and many got error with some function[/QUOTE]


any idea with other function sir ?
 
Junior Spellweaver
Joined
Feb 16, 2012
Messages
119
Reaction score
21
sir help me about this plis
here strs my edit for skill_fld for script ( gu version )
Skill.dat
ClassSkill.dat
PotionItemEffect.dat
BulletItemEffect.dat

before
Code:
[filemask="Skill.dat"]
struct SkillFile
{
u32 SkillBlocks;
u32 SkillColumns;
u32 SkillBlockSize;
Child Skill [count=SkillBlocks];
}

struct Skill [preload=1]
{
  _base_fld baseclass_0;
  int m_nClass;
  int m_nIconIDX;
  int m_nMastIndex;
  char m_strMastKorName[64];
  char m_strMastEngName[64];
  char m_strKorName[64];
  char m_strEngName[64];
  int m_nLv;
  int m_bActivate;
  int m_bEnable;
  char m_strUsableRace[64];
  char m_strActableDst[64];
  char m_strGradeLimit[64];
  int m_nNeedMastIndex;
  char m_strFixWeapon[64];
  int m_bFixshield;
  int m_nSpecialType;
  int m_nNeedSpecialType;
  int m_nNeedHP;
  int m_nNeedFP;
  int m_nNeedSP;
  _consume_item_list m_ConsumeItemList[3];
  float m_fActDelay;
  int m_bCumulType;
  int m_nCumulCounter;
  int m_nNewEffCount;
  char m_strEffectCode[64];
  int m_nAttackable;
  int m_nAttType[7];
  int m_nAttConstant[7];
  float m_fAttFormulaConstant;
  int m_nAttNeedBt;
  int m_nBonusDistance;
  char m_strRangeEffCode[64];
  int m_nTempEffectType;
  int m_nTempParamCode;
  float m_fTempValue[7];
  int m_nContEffectType;
  int m_nEffLimType;
  int m_nEffLimType2;
  int m_nContAreaType;
  _cont_param_list m_ContParamList[5];
  int m_nContEffectSec[7];
  int m_nEtc;
  float m_f1_2speed;
  float m_f1_2distance;
  float m_f2_3speed;
  float m_f2_3distance;
  int m_nEffectClass;
};


after edit
Code:
[filemask="Skill.dat"]
struct SkillFile
{
u32 SkillBlocks;
u32 SkillColumns;
u32 SkillBlockSize;
Child Skill [count=SkillBlocks];
}

struct Skill [preload=1]
{
U32 m_dwIndex;
cstr [len=64] m_strCode;
i32 m_nClass;
i32 m_nIconIDX;
i32 m_nMastIndex;
cstr [len=64] m_strMastKorName;
cstr [len=64] m_strMastEngName;
cstr [len=64] m_strKorName;
cstr [len=64] m_strEngName;
i32 m_nLv;
i32 m_bActivate;
i32 m_bEnable;
cstr [len=64] m_strUsableRace;
cstr [len=64] m_strActableDst;
cstr [len=64] m_strGradeLimit;
i32 m_nNeedMastIndex;
cstr [len=64] m_strFixWeapon;
i32 m_bFixshield;
i32 m_nSpecialType;
i32 m_nNeedSpecialType;
i32 m_nNeedHP;
i32 m_nNeedFP;
i32 m_nNeedSP;
cstr [len=8] m_itmNeedItemCode;
i32 m_nNeedItemCount;
float m_fActDelay;
i32 m_bCumulType;
i32 m_nCumulCounter;
i32 m_nNewEffCount;
cstr [len=64] m_strEffectCode;
i32 m_nAttackable;
repeat 7
{
i32 m_nAttType;
i32 m_nAttConstant;
}
float m_fAttFormulaConstant;
i32 m_nAttNeedBt;
i32 m_nBonusDistance;
cstr [len=64] m_strRangeEffCode;
i32 m_nTempEffectType;
i32 m_nTempParamCode;
repeat 7
{
float m_fTempValue;
}
i32 m_nContEffectType;
i32 m_nEffLimType;
i32 m_nEffLimType2;
i32 m_nContAreaType;
i32 m_nContParamCode;
i32 m_nContParamIndex;
repeat 7
{
float m_fContValue;
i32 m_nContEffectSec;
}
i32 m_nEtc;
float m_f1_2speed;
float m_f1_2distance;
float m_f2_3speed;
float m_f2_3distance;
i32 m_nEffectClass;
};

this all my result make me cry
Skill.dat
ClassSkill.dat
PotionItemEffect.dat
BulletItemEffect.dat
all result like this
novanakal - [Guide] Make STRS from Header - RaGEZONE Forums
 
Last edited:
Joined
Dec 30, 2012
Messages
1,758
Reaction score
180
you need little modified again

like this

Code:
  i32 NeedHP;
  i32 NeedFP;
  i32 NeedSP;
repeat 3
{
  cstr [len=8] NeedItemCode;
  i32 NeedItemCount;
}
  float fActDelay;
  i32 CumulType;
  i32 CumulCounter;
  i32 NewEffCount;
  cstr [len=64] EffectCode;
  i32 Attackable;
repeat 7
{
i32 AttType;
}
repeat 7
{
i32 AttConstant;
}
float AttFormulaConstant;
i32 AttNeedBt;
i32 BonusDistance;
cstr [len=64] RangeEffCode;
i32 TempEffectType;
i32 TempParamCode;
repeat 7
{
float TempValue;
}
i32 ContEffectType;
i32 EffLimType;
i32 EffLimType2;
i32 ContAreaType;
repeat 5
{
i32 ContParamCode;
i32 ContParamIndex;
repeat 7
{
float ContValue;
}
}
repeat 7
{
i32 ContEffectSec;
}
i32 Etc;
float f1_2speed;
float f1_2distance;
float f2_3speed;
float f2_3distance;
i32 EffectClass;
}
 
Joined
Nov 1, 2009
Messages
842
Reaction score
276
sir help me about this plis
here strs my edit for skill_fld for script ( gu version )
Skill.dat
ClassSkill.dat
PotionItemEffect.dat
BulletItemEffect.dat

this all my result make me cry
Skill.dat
ClassSkill.dat
PotionItemEffect.dat
BulletItemEffect.dat
all result like this
novanakal - [Guide] Make STRS from Header - RaGEZONE Forums

your prob is there

_cont_param_list m_ContParamList[5];



first...
- Search _cont_param_list, and found like this
Code:
struct _cont_param_list
{
  int m_nContParamCode;
  int m_nContParamIndex;
  float m_fContValue[7];
};

and edit like this..
Code:
// [B][COLOR="#008000"]_cont_param_list m_ContParamList[5];[/COLOR][/B]
repeat 5
{
i32 m_nContParamCode;
i32 m_nContParamIndex;
repeat 7
 {
 float m_fContValue ;
 } 
}
 
Junior Spellweaver
Joined
Feb 16, 2012
Messages
119
Reaction score
21
ok ty sir not watch in there repeat 5 cont_param

your great one mr novan may please share hot to make strs client ^^

so many big thanks for u
 
Newbie Spellweaver
Joined
Feb 13, 2014
Messages
34
Reaction score
1
Can you please explain me how you know when u need to use the
[preload=1,tableview=1] and when just [preload=1]


Also
can u help me with the HecateCharacter.strs for 2.2.3.2 version?

Code:
[filemask="HecateCharacter.dat"]

struct HecateCharacterFile
{
    u32 HecateCharacterBlock;
    u32 HecateCharacterColumns;
    u32 HecateCharacterSize;
    Child HecateCharacter [count=HecateCharacterBlock];
}
struct HecateCharacter [preload=1,tableview=1]
{


  u32 m_dwIndex;
  cstr[len=64] m_strCode;


  i32 m_nLevel;
  u32 m_nForLvUpExp;
  i32 m_nUseFP;
  float m_fPenalty;
  float m_fAttGap;
  i32 m_nAttack_DP;
  i32 m_nAttFcStd;
  i32 m_nMinAFSelProb;
  i32 m_nMaxAFSelProb;
  i32 m_nAttSklUnit;
  i32 m_nDefSklUnit;
  float m_fWeakPart;
  i32 m_nStdDefFc;
  float m_fDefGap;
  float m_fDefFacing;
  i32 m_nFireTol;
  i32 m_nWaterTol;
  i32 m_nSoilTol;
  i32 m_nWindTol;
  i32 m_nForceLevel;
  i32 m_nForceMastery;
  i32 m_nForceAttStd;
  cstr[len=64] m_strAttTechID1;
  i32 m_nAttTech1UseProb;
  i32 m_nAttTechID1MotionTime;
  cstr[len=64] m_strPSecTechID;
  i32 m_nPSecTechIDMotionTime;
  cstr[len=64] m_strMSecTechID;
  i32 m_nMSecTechIDMotionTime;
  i32 m_nMaxHP;
  i32 m_nHPRecDelay;
  i32 m_nHPRecUnit;
  i32 m_nMaxFP;
  i32 m_nFPRecDelay;
  i32 m_nFPRecUnit;
  i32 m_nAttSpd;
  i32 m_nAttMoTime1;
  i32 m_nAttMoTime2;
  i32 m_nCrtMoTime;
  i32 m_nViewExt;
  i32 m_nRefExt;
  i32 m_nAttExt;
  i32 m_nMovSpd;
  i32 m_nScaleRate;
  i32 m_nWidth;
  i32 m_nAttEffType;
  i32 m_nDefEffType;
}

It aint giving me any error it just looks haotic in Datedit!

novanakal - [Guide] Make STRS from Header - RaGEZONE Forums


Thanks!:rolleyes::thumbup:
 
Last edited:
Joined
Nov 1, 2009
Messages
842
Reaction score
276
repeat your u32 m_nForLvUpExp;
and to be like this


i32 m_nLevel;
u32 m_nForLvUpExp;
u32 m_nForLvUpExp;
i32 m_nUseFP;
float m_fPenalty;



[preload=1] just for load the table, its ok if you make strs without that

you can see all the function for all attributes structorian in this log

 
Newbie Spellweaver
Joined
Feb 13, 2014
Messages
34
Reaction score
1
Thanks novanakal! Now its working corectly :thumbup:


Thank you for this great guide!!
Made all and tested all, and they work very well!

So now i am curious... is there any guide for client side structure creating? Because i couldn't find any!

One more question! Is it's possible to create like all in on structure file so i would not need so many files, but just one for all of them?


 
Last edited:
Initiate Mage
Joined
Apr 21, 2014
Messages
2
Reaction score
0
how about this sir.

[filemask="Item.dat"]
struct Weaponitem
{
u32 WeaponitemBlocks;
u32 WeaponitemColumns;
u32 WeaponitemBlockSize;
Child WeaponItem [count=WeaponitemBlocks];
}


struct WeaponItemBlock [preload=1]
{
u32 m_dwIndex;
cstr[len=64] m_strCode;
float;


i32 m_bExist;
cstr[len=64] m_strModel;
i32 m_nIconIDX;
cstr[len=64] m_strName;
i32 m_nKindClt;
i32 m_nItemGrade;
i32 m_nActiveType;
cstr[len=64] m_strActiveCode_key;
i32 m_nActiveEffLvl;
float m_fActiveProba;
i32 m_nFixPart;
cstr[len=64] m_StrBulletType;
cstr[len=64] m_strEffBulletType;
i32 m_nType;
i32 m_nSubType;
cstr[len=64] m_strCivil;
cstr[len=64] m_strClassLim;
i32 m_nLevelLim;
i32 m_nUpLevelLim;
i32 m_nClassGradeLim;
i32 m_nExpertID1;
i32 m_nExpertLim1;
i32 m_nExpertID2;
i32 m_nExpertLim2;
i32 m_nMoney;
i32 m_nStdPrice;
i32 m_nStdPoi32;
i32 m_nGoldPoi32;
i32 m_nKillPoi32;
i32 m_nProcPoi32;
i32 m_nStoragePrice;
i32 m_bAbr;
i32 m_nDurUnit;
float m_fEquipSpeed;
i32 m_bRepair;
i32 m_nRepPrice;
i32 m_nEffState;
i32 m_nProperty;
float m_fFireTol;
float m_fWaterTol;
float m_fSoilTol;
float m_fWindTol;
float m_fAttGap;
i32 m_nAttack_DP;
float m_fGADst;
i32 m_nGASpd;
i32 m_nGAMinSelProb;
float m_fGAMinAF;
i32 m_nGAMaxSelProb;
float m_fGAMaxAF;
i32 m_nMADst;
i32 m_nMASpd;
i32 m_nMAMinSelProb;
float m_fMAMinAF;
i32 m_nMAMaxSelProb;
float m_fMAMaxAF;
i32 m_nEff1Code;
float m_fEff1Unit;
i32 m_nEff2Code;
float m_fEff2Unit;
i32 m_nEff3Code;
float m_fEff3Unit;
i32 m_nEff4Code;
float m_fEff4Unit;
i32 m_nDuration;
i32 m_bSell;
i32 m_bExchange;
i32 m_bGround;
i32 m_bStoragePossible;
i32 m_bUseableNormalAcc;
i32 m_nUpgrade;
cstr[len=64] m_strTooltipIndex;
i32 m_nAttEffType;
i32 m_bIsTime;
}




i want to edit Item.dat, but in zoneserver didnt have item_fld, so i use weaponitem_fld and item.edf. sorry my english not good.
 
Last edited:
Initiate Mage
Joined
Apr 21, 2014
Messages
2
Reaction score
0
ohh okay sir. and how the technique if i want to change damage in my rf ? edit item.dat in serverside? and how about item_strs.dat ? sorry my english not good :(
 
Joined
Nov 1, 2009
Messages
842
Reaction score
276
mapdata.dat not have a header in zone.
that have write self in zone without header
Code:
MapNumber
ListSize
MapNameSize
MapName
AList
AData
AreaName
szBuf

same like mapdata.dat in clientside, if you see on rfonline source, you can find it.
but all mapdata.dat in serverside, came from map.edf. not from mapdata.dat in clientside.
 
Back
Top