Dankoo
Active Member
- Joined
- Sep 4, 2010
- Messages
- 1,007
- Reaction score
- 27
It would be awesome if we could modify sources so quests.xml work like this?
Fromid, toid... like actions.xml, know?
Here's the source code for Quests.xml:
[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 here are some examples of script that uses fromid toid script:
actions.xml
[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]
movements.xml
[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.xml
[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]
Can someone merge some of the functions of these scripts so quests.xml works with fromid toid?
Thanks in advance. ^_^
Lua:
<mission name="Paw and Fur: Hydras" storageid="14021" startvalue="0" endvalue="2000">
<missionstate fromid="0" toid "1999" description="You already hunted |STORAGE:14021|/2000 hydras."/>
<missionstate id="2000" description="You killed 2000 hydras. Report back to Grizzly Adams."/>
<missionstate id="2001" description="You killed 2000 hydras. You can restart that task."/>
</mission>
Fromid, toid... like actions.xml, know?
Here's the source code for Quests.xml:
[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 here are some examples of script that uses fromid toid script:
actions.xml
[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]
movements.xml
[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.xml
[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]
Can someone merge some of the functions of these scripts so quests.xml works with fromid toid?
Thanks in advance. ^_^