[Guide] Make STRS from Header

iam still Noob
Decennium
Joined
Nov 1, 2009
Messages
838
Reaction score
287
how to create Structure form header file :

in case, we want to create Storelist.strs
open zoneserver.h ( GU Version )

Find = struct _StoreList_fld

and we will see like this
struct _StoreList_fld
{
_base_fld baseclass_0;
char m_strBinding_DummyName[64];
char m_strStore_NPCcode[64];
char m_strStore_NPCname[64];
char m_strStore_MAPcode[64];
int m_nStore_trade;
int m_bSet_NPCangle;
int m_nStore_NPCangle;
int m_nNpc_Class[10];
int m_nStore_LISTcount;
int m_nLimit_Listcount;
int m_nLimitItem_InitTime;
int m_nPriceSet;
int m_nItemUpCode;
char m_strItemlist[200][64];
sell_info m_sellLimitList[16];
};



if you have an open struct _StoreList_fld, maen is Storelist.dat from Zoneserver/RF_Bin/Script/

Ok, lets begin "How to make STRS"



1. Create new Document with .strs extention file like Storelist.strs

now, Open Storelist.strs with notepad.
and we make string file for strs to Storelist.dat

[filemask="StoreList.dat"]
struct StorelistFile
{
u32 StorelistBlocks;
u32 StorelistColumns;
u32 StorelistBlockSize;
Child Storelist [count=StorelistBlocks];
}




2. oke next,..
see struct _StoreList_fld again,..
look at _base_fld baseclass_0;
and find struct _base_fld in zoneserver header.

struct _base_fld
{
unsigned int m_dwIndex;
char m_strCode[64];
};
its mean
unsigned int = u32 m_dwIndex;
char m_strCode[64] = cstr[len=64] m_strCode;

now you have 2 line for your strs file and input that to your strs document like this

[filemask="StoreList.dat"]
struct StorelistFile
{
u32 StorelistBlocks;
u32 StorelistColumns;
u32 StorelistBlockSize;
Child Storelist [count=StorelistBlocks];
}

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




3. after that, you can add more line to strs document
char m_strBinding_DummyName[64];
char m_strStore_NPCcode[64];
char m_strStore_NPCname[64];
char m_strStore_MAPcode[64];
int m_nStore_trade;
int m_bSet_NPCangle;
int m_nStore_NPCangle;
int m_nNpc_Class[10];
int m_nStore_LISTcount;
int m_nLimit_Listcount;
int m_nLimitItem_InitTime;
int m_nPriceSet;
int m_nItemUpCode;
char m_strItemlist[200][64];
sell_info m_sellLimitList[16];


just follow the line in header file

[filemask="StoreList.dat"]
struct StorelistFile
{
u32 StorelistBlocks;
u32 StorelistColumns;
u32 StorelistBlockSize;
Child Storelist [count=StorelistBlocks];
}

struct Storelist [preload=1]
{
u32 m_dwIndex;
cstr[len=64] m_strCode;
cstr[len=64]m_strBinding_DummyName;
cstr [len=64] m_strStore_NPCcode;
cstr [len=64] m_strStore_NPCname;
cstr [len=64] m_strStore_MAPcode;
i32 m_nStore_trade;
i32 m_bSet_NPCangle;
i32 m_nStore_NPCangle;

repeat 10
{ i32 m_nNpc_Class; }

i32 m_nStore_LISTcount;
i32 m_nLimit_Listcount;
i32 m_nLimitItem_InitTime;
i32 m_nPriceSet;
i32 m_nItemUpCode;

repeat 200
{ cstr[len=64] m_strItemlist; }



4. and now we have 1 line again to input your strs document
sell_info m_sellLimitList[16];

you can find struct sell_info in your header,
and you'll see like this
struct sell_info
{
char m_strItemCode[64];
int m_nMaxCount;
};


now, put that line to your strs
[filemask="StoreList.dat"]
struct StorelistFile
{
u32 StorelistBlocks;
u32 StorelistColumns;
u32 StorelistBlockSize;
Child Storelist [count=StorelistBlocks];
}

struct Storelist [preload=1]
{
u32 m_dwIndex;
cstr[len=64] m_strCode;
cstr[len=64]m_strBinding_DummyName;
cstr [len=64] m_strStore_NPCcode;
cstr [len=64] m_strStore_NPCname;
cstr [len=64] m_strStore_MAPcode;
i32 m_nStore_trade;
i32 m_bSet_NPCangle;
i32 m_nStore_NPCangle;

repeat 10
{ i32 m_nNpc_Class; }

i32 m_nStore_LISTcount;
i32 m_nLimit_Listcount;
i32 m_nLimitItem_InitTime;
i32 m_nPriceSet;
i32 m_nItemUpCode;

repeat 200
{ cstr[len=64] m_strItemlist; }

repeat 16
{
cstr[len=64] m_strItemCode;
i32 m_nMaxCount;
}

}


You have finish your strs file..
now you can use it with DATEDITOR for open your Storelist.dat

here i attach 3 header from 2.1.5, 2.1.6, 2.2.3 and GU
View attachment ZoneServerGiga4.7z
View attachment ZoneServer_215.rar
View attachment ZoneServer_216.rar
Zoneserver_221
View attachment ZoneServer_223.rar
View attachment ZoneServer-GU.rar
RF Online v2.3 | Caravans Time and Space Version
RF Online v4.5 | Age of Patron Version



Header Line for Structure file

Header StructureFolderFile Structure
_monster_sp_fldScript/MonsterCharacterAI.dat
_skill_fldScript/Skill.dat
ClassSkill.dat
PotionItemEffect.dat
BulletItemEffect.dat
_force_fldScript/Force.dat
_portal_fldScript/
Map/
[NameMap]-portal.dat
[NameMap]-[portal].dat
_PotionItem_fldScript/PotionItem.dat
_monster_fldScript/MonsterCharacter.dat
_class_fldScript/Class.dat



_animus_fld




Script/
HecateCharacter.dat
HecateCharacter_S.dat
InannaCharacter.dat
InannaCharacter_S.dat
IsisCharacter.dat
IsisCharacter_S.dat
PaimonCharacter.dat
PaimonCharacter_S.dat
_CheckPotion_fldScript/CheckPotionEffect.dat
_ItemLooting_fldScript/ItemLooting.dat
_PcRoom_fldScript/PcRoom.dat
_Quest_fldScript/Quest.dat
HolyStoneKeepperQuest.dat
_SetItemEff_fldScript/SetItemEff.dat
_UnitKeyItem_fldScript/UnitKeyItem.dat
_AnimusItem_fldScript/AnimusItem.dat
_CashShop_fldScript/CashShop.dat
_WeaponItem_fldScript/WeaponItem.dat
_TimeItem_fldScript/TimerItem.dat
_npc_fldScript/NpCharacter.dat
_TrapItem_fldScript/TrapItem.dat
_StoreList_fldScript/StoreList.dat
_NameTxt_fldScript/_str.dat
_CashShop_str_fldScript/CashShop_str.dat




_QuestHappenEvent_fld





Script/
QuestDummyEvent.dat
QuestGainItemEvent.dat
QuestGradeEvent.dat
QuestKillOtherRaceEvent.dat
QuestLvLimitEvent.dat
QuestLvUpEvent.dat
QuestMasteryEvent.dat
QuestNPCEvent.dat
QuestPromoteEvent.dat
_mobmsg_fldScript/MobMessage_str.dat
_ItemCombine_exp_fldScript/CombineTable.dat
CombineTable2.dat
_ItemExchange_fldScript/BoxItemOut.dat
_ResourceItem_fldScript/ResourceItem.dat
_BulletItem_fldScript/BulletItem.dat



_UnitPart_fld



Script/
UnitArms.dat
UnitBack.dat
UnitHead.dat
UnitLower.dat
UnitShoulder.dat
UnitUpper.dat
_UnitBullet_fldScript/UnitBullet.dat
_ItemUpgrade_fldScript/ItemUpgrade.dat
_RadarItem_fldScript/RadarItem.dat
_GuardTowerItem_fldScript/GuardTowerItem.dat
_player_fldScript/PlayerCharacter.dat
_OreCutting_fldScript/OreCutting.dat
_OreItem_fldScript/OreItem.dat
_WorldSchedule_fldScript/Schedule.dat
_TicketItem_fldScript/TicketItem.dat
_CouponItem_fldScript/CouponItem.dat
_UNmannedminer_fldScript/UNmannedminer.dat
_BatteryItem_fldScript/BatteryItem.dat
_LinkItem_Result_fldScript/LinkedResult.dat
_LinkItem_Stuff_fldScript/LinkedStuff.dat
_BattleDungeonItem_fldScript/BattleDungeonItem.dat
_MakeToolItem_fldScript/MakeToolItem.dat


_DfnEquipItem_fld



Script/
GauntletItem.dat
HelmetItem.dat
LowerItem.dat
ShieldItem.dat
ShoeItem.dat
UpperItem.dat
_BagItem_fldScript/BagItem.dat
_CloakItem_fldScript/CloakItem.dat
_RingItem_fldScript/RingItem.dat
_AmuletItem_fldScript/AmuletItem.dat
_ForceItem_fldScript/ForceItem.dat
_BootyItem_fldScript/BootyItem.dat
_MapItem_fldScript/MapItem.dat
_TOWNItem_fldScript/TownItem.dat
_SiegeKitItem_fldScript/SiegeKitItem.dat
_EventItem_fldScript/EventItem.dat
_RecoveryItem_fldScript/RecoveryItem.dat
_BoxItem_fldScript/BoxItem.dat
_FIRECRACKER_fldScript/FIRECRACKER.dat
_NPCLink_fldScript/NpcLinkItem.dat
_UnitFrame_fldScript/UnitFrame.dat
_ItemMakeData_fldScript/ItemMakeData.dat
_EditData_fldScript/EditData.dat
_ItemCombine_fldScript/ItemCombine.dat
_exp_fldScript/Exp.dat
_grade_fldScript/Grade.dat


_MasteryLimit_fld


Script/
RangerMasteryLimit.dat
SpecialistMasteryLimit.dat
SpiritualistMasteryLimit.dat
WarriorMasteryLimit.dat
_mon_active_fldMap/<MonsterFiles>.dat
_mon_block_fldMap/<MapBlockFile>-[block].dat


Hope this Tutorial, can be use it for everyone.
 
Last edited:
i'm kinda new at this but it looks interessting.

Questions:
int = i32
string = cstr [len=XX] (XX=64 the most time)
float = ?

if i load some strs there is an Type=message Name=Unknown Value=Error loading
what does it mean did i something wrong?



i got error line 11 character 1 { wrong token
Edit: Solved with baItemBlock [preload=1]

PHP:
[filemask="bagItem.dat"]
struct StorelistFile
{
u32 bagItemBlocks;
u32 bagItemColumns;
u32 bagItemBlockSize;
Child bagItem [count=bagItemBlocks];
}

struct baItemBlock [preload=1]
{
u32 m_dwIndex;
cstr[len=64] m_strCode;
i32 m_bExist;
cstr [len=64] m_strModel;
i32 m_nIconIDX;
cstr [len=64] m_strName;
i32 m_nKindClt;
i32 m_nFixPart;
cstr [len=64] m_strCivil;
i32 m_nMoney; 
i32 m_nStdPrice;
i32 m_nStdPoint;
i32 m_nGoldPoint;
i32 m_nKillPoint;
i32 m_nProcPoint;
i32 m_nStoragePrice;
i32 m_bSell;
i32 m_bExchange;
i32 m_bGround;
i32 m_bStoragePossible;
i32 m_bUseableNormalAcc;
cstr [len=64] m_strTooltipIndex;
i32 m_bIsTime;
}
 
Last edited:
i have say before i make the tutorial

in case, we want to create Storelist.strs
open zoneserver.h ( GU Version )

int = i32
string = cstr [len=XX] (XX=64 the most time)
float = ?

float is float
double is double
unsigned int is u32
int is i32

please, dont edit your post..

just use quote and replay my post
 
well i just wont to spam thats why i edit my post.
thanks for the informations now i just need to know how i can solve this problem:

if i load some strs there is an Type=message Name=Unknown Value=Error loading

and btw the resault of your guide don't work for me i still get error if i try it with structorian.

error:
error line 11 character 1 { wrong token

i could solve this problem on a other .dat but not on StoreList

please tell me if it is right. that i know that i understand the syntex. thanks

ItemMakeData:

struct _ItemMakeData_fld::_output_list
{
char m_itmPdOutput[8];
unsigned int m_dwPdProp;
};


struct _ItemMakeData_fld
{
_base_fld baseclass_0;
int m_nMakeMastery;
char m_strCivil[64];
_ItemMakeData_fld::_material_list m_listMaterial[5];
_ItemMakeData_fld::_output_list m_listOutput[30];
};


resault:

[filemask="ItemMakeData.dat"]
struct ItemMakeDataFile
{
u32 ItemMakeDataBlocks;
u32 ItemMakeDataColumns;
u32 ItemMakeDataBlockSize;
Child ItemMakeData [count=ItemMakeDataBlocks];
}

struct ItemMakeDataBlock [preload=1]
{
u32 m_dwIndex;
cstr[len=64] m_strCode;
i32 m_nMakeMastery;
cstr[len=64] m_strCivil;

repeat 5
{
repeat 8
{
cstr[len=64] m_itmPdMat;
}
i32 m_nPdMatNum;
}

repeat 30
{
repeat 8
{
cstr[len=64] m_itmPdOutput;
}
u32 m_dwPdProp;
}
}
 
You Wrong at

_ItemMakeData_fld::_material_list m_listMaterial[5];
_ItemMakeData_fld::_output_list m_listOutput[30];

just make like this

repeat 5
{
cstr [len=8] m_itmPdMat;
i32 m_nPdMatNum;
}

repeat 30
{
cstr [len=8] m_itmPdOutput;
u32 m_dwPdProp;
}
 
nova ur storelist.strs is incorrect

here is the fixed version


Code:
[filemask="StoreList.dat"]
struct StorelistFile
{
u32 StorelistBlocks;
u32 StorelistColumns;
u32 StorelistBlockSize;
Child Storelist [count=StorelistBlocks];
}

struct Storelist [preload=1]
{

u32 m_dwIndex;
cstr[len=64] m_strCode;
cstr[len=64] m_strBinding_DummyName;
cstr [len=64] m_strStore_NPCcode;
cstr [len=64] m_strStore_NPCname;
cstr [len=64] m_strStore_MAPcode;
i32 m_nStore_trade;
i32 m_bSet_NPCangle;
i32 m_nStore_NPCangle;

repeat 10
{ i32 m_nNpc_Class; }

i32 m_nStore_LISTcount;
i32 m_nLimit_Listcount;
i32 m_nLimitItem_InitTime;
i32 m_nPriceSet;
i32 m_nItemUpCode;

repeat 200
{ cstr[len=64] m_strItemlist; }

repeat 16
{ 
cstr[len=64] m_strItemCode;
i32 m_nMaxCount;
}

}
 
nova do u have any client side strs? and if not does anyone here have them or at least a header file from the client
 
for those wondering the client side header isnt in the bin file its in one of the dlls but im not gonnna say which one u have to figure that one out :)
 
how about this
{
_base_fld baseclass_0;
int m_nRaceCode;
int m_nClass;
int m_nIconIDX;
int m_nGrade;
int m_nUpGradeLv;
char m_strCh_Class[8][64];
char m_strTemp[64];
char m_strKorName[64];
char m_strEngName[64];
int m_nConLim;
char m_strLinkClassSkill[10][64];
int m_bUnitUsable;
int m_bAnimusUsable;
int m_bLauncherUsable;
int m_bWMKToolUsable;
int m_bDMKToolUnitUsable;
int m_bBMKToolUnitUsable;
int m_nMakeTrapMaxNum;
int m_nBnsForHP;
int m_nBnsForFP;
int m_nBnsForSP;
int m_nUpValueDefMastery;
_mastery_lim_data m_MasteryLim;
int m_bSelectRewardItem;
_class_fld::_bns_item m_DefaultItem[9];
};
? please ...i can ´t make work class.strs for 2.1.6 :/
 
Last edited:
how about this

? please ...i can ´t make work class.strs for 2.1.6 :/

find this, and you'll fix it your self



/* 1451 */
struct _mastery_lim_data
{
int m_nBnsMMastery[2];
int m_nBnsSMastery;
int m_nBnsDefMastery;
int m_nBnsPryMastery;
int m_nBnsMakeMastery[3];
int m_nBnsSkillMastery[8];
int m_nBnsForceMastery[24];
};

just read the instruction,.. becarefully
 
nova if i feel like fixing that strs for him then i can do so honestly stop QQ because i feel like doing the strs for ppl

and nova can u release the client side header or a few of the client side strs to me i need them asap
 
its your own, you can share everything if you want to release it.

and sory, for client..
i can't...

start from here, and trying to learn something
 
been learning the client side is way different. i mean its possible to use the 223 strs u just need to add colums either cstr[len=64] dword; or i32 dword;

but i cant figure out how many it needs or the ncount
 
i have a full strs for client with description and include config file, not dword or ncount...


you can see my map223.2.edf.strs sample here
novanakal - [Guide] Make STRS from Header - RaGEZONE Forums



use your a little brain
 

Attachments

  • Untitled-1 - [Guide] Make STRS from Header - RaGEZONE Forums
    Untitled-1.webp
    125.5 KB · Views: 1,931
Back