Hmm... Is there a way to modify sources to work as actions.xml? Like 0-1999 or fromid="0" toid="1999"?
'cause if not, everybodys Killing in the name of... Quest log will have like 27k lines... Like cykotitan's one o.o
and this code won't be useful =/
http://otland.net/f35/parsing-storage-values-inside-quest-xml-89354/
I think this is the code that have to be modified
[cpp]bool Quests:

arseQuestNode(xmlNodePtr p, bool checkDuplicate)
{
if(xmlStrcmp(p->name, (const xmlChar*)"quest"))
return false;
int32_t intValue;
std::string strValue;
uint32_t id = m_lastId;
if(readXMLInteger(p, "id", intValue) && id > 0)
{
id = intValue;
if(id > m_lastId)
m_lastId = id;
}[/cpp]
And this is actions.xml fromid and toid code:
[cpp]else if(readXMLString(p, "fromid", strValue) && readXMLString(p, "toid", endValue))
{
IntegerVec intVector = vectorAtoi(explodeString(strValue, ";")), endVector = vectorAtoi(explodeString(endValue, ";"));
if(intVector[0] && endVector[0] && intVector.size() == endVector.size())
{
int32_t tmp = 0;
for(size_t i = 0, size = intVector.size(); i < size; ++i)
{
tmp = intVector
;
while(intVector <= endVector)
{
if(useItemMap.find(intVector) != useItemMap.end())
{
if(!override)
{
std::clog << "[Warning - Actions::registerEvent] Duplicate registered item with id: " << intVector <<
", in fromid: " << tmp << " and toid: " << endVector << std::endl;
intVector++;
continue;
}
else
delete useItemMap[intVector];
}
useItemMap[intVector++] = new Action(action);
}
}
}
else
std::clog << "[Warning - Actions::registerEvent] Malformed entry (from item: \"" << strValue <<
"\", to item: \"" << endValue << "\")" << std::endl;
}[/cpp]
Some more examples of fromid toid functions
Movements
[cpp]if(readXMLString(p, "fromid", strValue) && readXMLString(p, "toid", endStrValue))
{
intVector = vectorAtoi(explodeString(strValue, ";"));
endIntVector = vectorAtoi(explodeString(endStrValue, ";"));
if(intVector[0] && endIntVector[0] && intVector.size() == endIntVector.size())
{
for(size_t i = 0, size = intVector.size(); i < size; ++i)
{
bool equip = moveEvent->getEventType() == MOVE_EVENT_EQUIP;
addEvent(moveEvent, intVector, m_itemIdMap, override);
if(equip)
{
ItemType& it = Item::items.getItemType(intVector);
it.wieldInfo = moveEvent->getWieldInfo();
it.minReqLevel = moveEvent->getReqLevel();
it.minReqMagicLevel = moveEvent->getReqMagLv();
it.vocationString = moveEvent->getVocationString();
}
while(intVector < endIntVector)
{
addEvent(new MoveEvent(moveEvent), ++intVector, m_itemIdMap, override);
if(equip)
{
ItemType& tit = Item::items.getItemType(intVector);
tit.wieldInfo = moveEvent->getWieldInfo();
tit.minReqLevel = moveEvent->getReqLevel();
tit.minReqMagicLevel = moveEvent->getReqMagLv();
tit.vocationString = moveEvent->getVocationString();
}
}
}
}
else
std::clog << "[Warning - MoveEvents::registerEvent] Malformed entry (from item: \"" << strValue << "\", to item: \"" << endStrValue << "\")" << std::endl;
}[/cpp]
Items
[cpp]if(readXMLInteger(itemNode, "id", intValue))
parseItemNode(itemNode, intValue);
else if(readXMLString(itemNode, "fromid", strValue) && readXMLString(itemNode, "toid", endValue))
{
intVector = vectorAtoi(explodeString(strValue, ";"));
endVector = vectorAtoi(explodeString(endValue, ";"));
if(intVector[0] && endVector[0] && intVector.size() == endVector.size())
{
size_t size = intVector.size();
for(size_t i = 0; i < size; ++i)
{
parseItemNode(itemNode, intVector);
while(intVector < endVector)
parseItemNode(itemNode, ++intVector);
}
}
else
std::clog << "[Warning - Items::loadFromXml] Malformed entry (from: \"" << strValue << "\", to: \"" << endValue << "\")" << std::endl;
}
else
std::clog << "[Warning - Items::loadFromXml] No itemid found" << std::endl;
}[/cpp]