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!

[Releases]QuestData.shn Structure

Newbie Spellweaver
Joined
Dec 23, 2009
Messages
11
Reaction score
3
Hello Guys,

Here is the structure for a questdata.shn can use make QuestEditors and more :)

Shn version 4

Code:
using(ScriptAPI)
{
count = AddUShort("QuestCount");
for(i=0; i<count; i++)
{
QuestLenght = AddUShort("QuestLenght");
	
StartNode("QuestInfo");
AddShort("unk");
AddShort("QuestID");
AddShort("TitleID");
AddShort("DecryptionID");
AddField("unk",7);	
AddByte("MinLevel");
AddByte("MaxLevel");
AddByte("unk");
AddShort("StartingNPC");
AddField("unk",24);
AddShort("PreQuest");
AddField("unk",2);
AddByte("MultiQuest");
AddByte("NeedClass");
AddField("unk",15);
AddByte("NeedLevel");
AddField("unk",6);
EndNode(0);
		

StartNode("MobInfo");
for (inxMob = 0; inxMob < 5; inxMob++)
{
StartNode("mob"+inxMob);
AddByte("IsEnable");
AddByte("IsNpc");
AddUShort("MobID");
AddByte("IsToKill");
AddByte("Amount");
EndNode(0);
}
EndNode(0);
StartNode("ItemInfo");
for (inxItem = 0; inxItem < 10; inxItem++)
{
StartNode("Item"+inxItem);
AddByte("IsEnabled");
AddByte("ItemType");
AddUShort("ItemID");
AddUShort("Ammount");
EndNode(0);
	}
	AddField("ItemData",284);	
EndNode(0);
StartNode("RewardInfo");
rewardlenght = 0;
for (inxReward = 0; inxReward < 12; inxReward++)
{
StartNode("Reward"+inxReward);
AddByte("RewardMethod");
RewardType = AddByte("RewardType");
if(RewardType == 2)
{
AddUShort("ItemID");
AddUShort("Amount");
AddField("unk",4);
}
else
{
AddLong("Exp/Fame");
}
	
EndNode(0);      
}  
AddField("RewardData",24);
EndNode(0);
EndNode(0);			
	
StartScriptLenght = AddShort("StartScpLenght");
FinishScriptLenght = AddShort("FinishScriptLenght");
ActionLenght = AddShort("ActionLenght");
	AddField("StartScriptLenght",StartScriptLenght);
	AddField("FinishScriptLenght",FinishScriptLenght);
	AddField("ActionLenght",ActionLenght);
	}
}

Actualy version 6 is now unfinished anlysed
Code:
using(ScriptAPI)
{
count = AddUShort("QuestCount");
for(i=0; i< count; i++)
{
QuestLenght = AddUInt("QuestLenght");
	
StartNode("QuestInfo");
AddInt("QuestID");
AddInt("TitleID");
AddInt("DecryptionID");
AddField("unk",10);
AddByte("IsLevelBase");
AddByte("MinLevel");
AddByte("MaxLevel");
AddByte("IsEnable");
AddShort("StartNPC");
AddField("QuestData",26);
AddShort("PreQuest");
AddField("unk",2);
AddByte("IsMulti");
AddByte("CLass");
AddField("QuestData",22);

EndNode(0);
		

StartNode("MobInfo");
for (inxMob = 0; inxMob < 5; inxMob++)
{
StartNode("mob"+inxMob);
AddByte("IsEnable");
AddByte("IsNpc");
AddUShort("MobID");
AddByte("IsToKill");
AddByte("Amount");
EndNode(0);
}
EndNode(0);
StartNode("ItemInfo");
for (inxItem = 0; inxItem < 10; inxItem++)
{
StartNode("Item"+inxItem);
AddByte("Itemype");
AddByte("IsEnabled");
AddUShort("ItemID");
AddUShort("Ammount");			
EndNode(0);
	}
	AddField("ItemData",284);	
EndNode(0);
StartNode("RewardInfo");
rewardlenght = 0;
for (inxReward = 0; inxReward < 12; inxReward++)
{
StartNode("Reward"+inxReward);
AddByte("RewardMethod");
RewardType = AddByte("RewardType");
AddUShort("Unk2");
if(RewardType == 2)
{
AddUShort("ItemID");
AddUShort("Amount");
AddField("unk",4);
}
else
{
AddLong("Exp/Fame");
}
	
EndNode(0);      
}  
AddField("RewardData",76);
EndNode(0);
EndNode(0);			
	

StartScriptLenght = AddShort("StartScpLenght");
FinishScriptLenght = AddShort("FinishScriptLenght");
ActionLenght = AddShort("ActionLenght");
	AddNulledString("StartScrript");
	AddNulledString("FinishScript");
	AddNulledString("ActionKrebs");
	
	}
}

i haved using my QuestData Analyser tool from my svn

have fun :)

Mathias1000
 
Experienced Elementalist
Joined
Oct 31, 2010
Messages
202
Reaction score
36
It is an honor to see that the Quest editor I have developed is part of your DragonFiesta_Tools repository. But also that it is being taken advantage of and further developed and improved. Very nice
 
Skilled Illusionist
Joined
Jan 24, 2012
Messages
364
Reaction score
169
Similar to mine:

Code:
header 	= r.ReadUInt16();
count 	= r.ReadUInt16();

for (uint i = 0; i < count; i++)
{
	length 	= r.ReadInt32();
	data 	= r.ReadBytes(length - 4);
}
 
Back
Top