From: <wel...@us...> - 2009-03-31 10:14:44
|
Revision: 3364 http://planeshift.svn.sourceforge.net/planeshift/?rev=3364&view=rev Author: weltall2 Date: 2009-03-31 10:14:40 +0000 (Tue, 31 Mar 2009) Log Message: ----------- partial fix to support new changes in the run op Modified Paths: -------------- trunk/src/server/questmanager.cpp Modified: trunk/src/server/questmanager.cpp =================================================================== --- trunk/src/server/questmanager.cpp 2009-03-31 10:04:57 UTC (rev 3363) +++ trunk/src/server/questmanager.cpp 2009-03-31 10:14:40 UTC (rev 3364) @@ -353,7 +353,7 @@ } else if (words.GetInt(1) != 0 && words.Get(2).CompareNoCase("exp")) // give experience points { - op.Format("<run scr=\"give_exp\" param0=\"%d\" />",words.GetInt(1) ); + op.Format("<run script=\"give_exp\" with=\"Param0 = %d;\" />",words.GetInt(1) ); } else if (words.GetInt(1) != 0 && words.Get(2).CompareNoCase("faction") && words.GetCount() > 3) // give faction points { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2009-03-31 10:16:40
|
Revision: 3365 http://planeshift.svn.sourceforge.net/planeshift/?rev=3365&view=rev Author: weltall2 Date: 2009-03-31 10:16:34 +0000 (Tue, 31 Mar 2009) Log Message: ----------- partial fix to support new changes in the run op/2 Modified Paths: -------------- trunk/src/server/questmanager.cpp Modified: trunk/src/server/questmanager.cpp =================================================================== --- trunk/src/server/questmanager.cpp 2009-03-31 10:14:40 UTC (rev 3364) +++ trunk/src/server/questmanager.cpp 2009-03-31 10:16:34 UTC (rev 3365) @@ -437,12 +437,12 @@ } // Build the op - op.Format("<run scr=\"%s\"",script.GetDataSafe()); + op.Format("<run script=\"%s\" with=\"",script.GetDataSafe()); for (int i = 0; i < p; i++) { - op.AppendFmt(" param%d=\"%s\"",i,param[i].GetDataSafe()); + op.AppendFmt("Param%d=%s; ",i,param[i].GetDataSafe()); } - op.Append("/>"); + op.Append("\"/>"); } else if (!strncasecmp(block,"DoAdminCmd",10)) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2009-03-31 10:30:17
|
Revision: 3366 http://planeshift.svn.sourceforge.net/planeshift/?rev=3366&view=rev Author: weltall2 Date: 2009-03-31 10:30:11 +0000 (Tue, 31 Mar 2009) Log Message: ----------- correctly fixed give exp in quests Modified Paths: -------------- trunk/src/server/questmanager.cpp Modified: trunk/src/server/questmanager.cpp =================================================================== --- trunk/src/server/questmanager.cpp 2009-03-31 10:16:34 UTC (rev 3365) +++ trunk/src/server/questmanager.cpp 2009-03-31 10:30:11 UTC (rev 3366) @@ -353,7 +353,7 @@ } else if (words.GetInt(1) != 0 && words.Get(2).CompareNoCase("exp")) // give experience points { - op.Format("<run script=\"give_exp\" with=\"Param0 = %d;\" />",words.GetInt(1) ); + op.Format("<run script=\"give_exp\" with=\"Exp = %d;\" />",words.GetInt(1) ); } else if (words.GetInt(1) != 0 && words.Get(2).CompareNoCase("faction") && words.GetCount() > 3) // give faction points { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2009-03-31 12:23:50
|
Revision: 3369 http://planeshift.svn.sourceforge.net/planeshift/?rev=3369&view=rev Author: weltall2 Date: 2009-03-31 12:23:40 +0000 (Tue, 31 Mar 2009) Log Message: ----------- Completed the fixes removed useless spaces and made the amount of params for the Run script questscript statement dynamic: note that it still makes Param0 Param1 Param2 Param3... Modified Paths: -------------- trunk/src/server/questmanager.cpp Modified: trunk/src/server/questmanager.cpp =================================================================== --- trunk/src/server/questmanager.cpp 2009-03-31 11:17:32 UTC (rev 3368) +++ trunk/src/server/questmanager.cpp 2009-03-31 12:23:40 UTC (rev 3369) @@ -353,7 +353,7 @@ } else if (words.GetInt(1) != 0 && words.Get(2).CompareNoCase("exp")) // give experience points { - op.Format("<run script=\"give_exp\" with=\"Exp = %d;\" />",words.GetInt(1) ); + op.Format("<run script=\"give_exp\" with=\"Exp=%d;\" />",words.GetInt(1) ); } else if (words.GetInt(1) != 0 && words.Get(2).CompareNoCase("faction") && words.GetCount() > 3) // give faction points { @@ -408,9 +408,8 @@ { csString script = block.Slice(10,block.Length()-1).Trim(); - // Find params if any, up to 3 - csString param[3]; - int p = 0; + // Find params if any + csArray<csString> param; size_t start = script.FindStr("("); size_t end = script.FindStr(")"); if (start != SIZET_NOT_FOUND && end != SIZET_NOT_FOUND && @@ -424,23 +423,22 @@ next = params.FindStr(","); if (next == SIZET_NOT_FOUND) { - param[p] = params.Trim(); + param.Push(params.Trim()); } else { - param[p] = params.Slice(0,next).Trim(); + param.Push(params.Slice(0,next).Trim()); params.DeleteAt(0,next+1); } - p++; - } while (next != SIZET_NOT_FOUND && p < 3); + } while (next != SIZET_NOT_FOUND); } // Build the op op.Format("<run script=\"%s\" with=\"",script.GetDataSafe()); - for (int i = 0; i < p; i++) + for (int i = 0; i < param.GetSize(); i++) { - op.AppendFmt("Param%d=%s; ",i,param[i].GetDataSafe()); + op.AppendFmt("Param%d=%s;",i,param[i].GetDataSafe()); } op.Append("\"/>"); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ko...@us...> - 2009-04-07 03:23:31
|
Revision: 3411 http://planeshift.svn.sourceforge.net/planeshift/?rev=3411&view=rev Author: kougaro Date: 2009-04-07 03:23:29 +0000 (Tue, 07 Apr 2009) Log Message: ----------- Fixing two compilation warnings in questmanager.cpp Modified Paths: -------------- trunk/src/server/questmanager.cpp Modified: trunk/src/server/questmanager.cpp =================================================================== --- trunk/src/server/questmanager.cpp 2009-04-06 23:09:48 UTC (rev 3410) +++ trunk/src/server/questmanager.cpp 2009-04-07 03:23:29 UTC (rev 3411) @@ -436,7 +436,7 @@ // Build the op op.Format("<run script=\"%s\" with=\"",script.GetDataSafe()); - for (int i = 0; i < param.GetSize(); i++) + for (unsigned int i = 0; i < param.GetSize(); i++) { op.AppendFmt("Param%d=%s;",i,param[i].GetDataSafe()); } @@ -581,7 +581,7 @@ int step_count=1; // Main quest is step 1 csString current_npc; csString response_text,file_path; - NpcResponse *last_response=NULL,*error_response=NULL; + NpcResponse *last_response=NULL; bool quest_assigned_already = false; csString response_requireop; // Accumulate prerequisites for next response csString substep_requireop; // Accumulate prerequisites for current substep This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2009-04-20 18:14:52
|
Revision: 3514 http://planeshift.svn.sourceforge.net/planeshift/?rev=3514&view=rev Author: weltall2 Date: 2009-04-20 18:14:42 +0000 (Mon, 20 Apr 2009) Log Message: ----------- missing parentheses . dunno how did this happen. thanks to thomphoenix for finding it out Modified Paths: -------------- trunk/src/server/questmanager.cpp Modified: trunk/src/server/questmanager.cpp =================================================================== --- trunk/src/server/questmanager.cpp 2009-04-20 13:59:29 UTC (rev 3513) +++ trunk/src/server/questmanager.cpp 2009-04-20 18:14:42 UTC (rev 3514) @@ -538,7 +538,7 @@ { csString itemName = block.Slice(17,block.Length()).Trim(); //this manages the category argument Require equipped category xxxx - if(itemName.StartsWith("category") + if(itemName.StartsWith("category")) { csString categoryName = itemName.Slice(9, itemName.Length()); //no need to trim done above response_requireop.AppendFmt("<item inventory=\"false\" category=\"%s\" />", categoryName.GetData()); @@ -552,7 +552,7 @@ { csString itemName = block.Slice(21,block.Length()).Trim(); //this manages the category argument Require equipped category xxxx - if(itemName.StartsWith("category") + if(itemName.StartsWith("category")) { csString categoryName = itemName.Slice(9, itemName.Length()); //no need to trim done above response_requireop.AppendFmt("<not><item inventory=\"false\" category=\"%s\" /></not>", categoryName.GetData()); @@ -566,7 +566,7 @@ { csString itemName = block.Slice(18,block.Length()).Trim(); //this manages the category argument Require equipped category xxxx - if(itemName.StartsWith("category") + if(itemName.StartsWith("category")) { csString categoryName = itemName.Slice(9, itemName.Length()); //no need to trim done above response_requireop.AppendFmt("<item inventory=\"true\" category=\"%s\" />", categoryName.GetData()); @@ -580,7 +580,7 @@ { csString itemName = block.Slice(22,block.Length()).Trim(); //this manages the category argument Require equipped category xxxx - if(itemName.StartsWith("category") + if(itemName.StartsWith("category")) { csString categoryName = itemName.Slice(9, itemName.Length()); //no need to trim done above response_requireop.AppendFmt("<not><item inventory=\"true\" category=\"%s\" /></not>", categoryName.GetData()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2009-07-01 07:57:27
|
Revision: 3882 http://planeshift.svn.sourceforge.net/planeshift/?rev=3882&view=rev Author: weltall2 Date: 2009-07-01 07:57:19 +0000 (Wed, 01 Jul 2009) Log Message: ----------- allowed to use the trait prerequisite in quest scripts Modified Paths: -------------- trunk/src/server/questmanager.cpp Modified: trunk/src/server/questmanager.cpp =================================================================== --- trunk/src/server/questmanager.cpp 2009-06-30 20:01:13 UTC (rev 3881) +++ trunk/src/server/questmanager.cpp 2009-07-01 07:57:19 UTC (rev 3882) @@ -466,6 +466,22 @@ response_requireop.AppendFmt("<not><timeofday min=\"%s\" max=\"%s\" /></not>", timeinfo[0].GetData(), timeinfo[1].GetData() ); } } + else if (!strncasecmp(block,"Require trait",13)) + { + csString arguments = block.Slice(14,block.Length()).Trim(); + size_t delimiter = arguments.FindFirst(" in",0); + csString name = arguments.Slice(0,delimiter).Trim(); + csString location = arguments.Slice(delimiter+4, block.Length()).Trim(); + response_requireop.AppendFmt("<trait name=\"%s\" location=\"%s\" />", name.GetData(), location.GetData()); + } + else if (!strncasecmp(block,"Require not trait",17)) + { + csString arguments = block.Slice(18,block.Length()).Trim(); + size_t delimiter = arguments.FindFirst(" in",0); + csString name = arguments.Slice(0,delimiter).Trim(); + csString location = arguments.Slice(delimiter+4, block.Length()).Trim(); + response_requireop.AppendFmt("<not><trait name=\"%s\" location=\"%s\" /></not>", name.GetData(), location.GetData()); + } else if (!strncasecmp(block,"Require guild",13)) //NOTE: the both argument is implictly defined { csString type = block.Slice(14,block.Length()).Trim(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2009-07-16 06:56:09
|
Revision: 4024 http://planeshift.svn.sourceforge.net/planeshift/?rev=4024&view=rev Author: weltall2 Date: 2009-07-16 06:55:37 +0000 (Thu, 16 Jul 2009) Log Message: ----------- Fixed PS#2347 - Xargon reward has no message Modified Paths: -------------- trunk/src/server/questmanager.cpp Modified: trunk/src/server/questmanager.cpp =================================================================== --- trunk/src/server/questmanager.cpp 2009-07-15 19:51:02 UTC (rev 4023) +++ trunk/src/server/questmanager.cpp 2009-07-16 06:55:37 UTC (rev 4024) @@ -1300,16 +1300,27 @@ return false; // create the item - psItem *item = itemstat->InstantiateBasicItem(); - if (item==NULL) + psItem *item = itemstat->InstantiateBasicItem(false); // Not a transient item + if (!item) + { + Error3("Couldn't give item %u to player %s!\n",itemstat->GetUID(), who->GetName()); return false; + } item->SetLoaded(); // Item is fully created csString itemName = item->GetName(); - psSystemMessage given(who->GetClientNum(),MSG_INFO,"%s has received a %s!",who->GetName(),itemName.GetData()); - chardata->Inventory().AddOrDrop(item); + if (!chardata->Inventory().AddOrDrop(item)) + { + psSystemMessage given(who->GetClientNum(),MSG_ERROR,"You received %s, but dropped it because you can't carry any more.", itemName.GetData()); + given.SendMessage(); + } + else + { + psSystemMessage given(who->GetClientNum(),MSG_INFO,"You have received %s.", itemName.GetData()); + given.SendMessage(); + } // player got his reward return true; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2009-07-24 13:00:54
|
Revision: 4119 http://planeshift.svn.sourceforge.net/planeshift/?rev=4119&view=rev Author: weltall2 Date: 2009-07-24 13:00:39 +0000 (Fri, 24 Jul 2009) Log Message: ----------- made a printf a Debug2 so it shows only if quest logging is enabled Modified Paths: -------------- trunk/src/server/questmanager.cpp Modified: trunk/src/server/questmanager.cpp =================================================================== --- trunk/src/server/questmanager.cpp 2009-07-24 12:52:25 UTC (rev 4118) +++ trunk/src/server/questmanager.cpp 2009-07-24 13:00:39 UTC (rev 4119) @@ -261,7 +261,7 @@ { pending_triggers.Empty(); pending_triggers.Push(itemlist); // next response will use this itemlist - printf("Got player action of: %s\n", itemlist.GetDataSafe() ); + Debug2( LOG_QUESTS, 0, "Got player action of: %s\n", itemlist.GetDataSafe() ); } else return false; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2009-09-23 15:34:08
|
Revision: 4504 http://planeshift.svn.sourceforge.net/planeshift/?rev=4504&view=rev Author: weltall2 Date: 2009-09-23 15:34:01 +0000 (Wed, 23 Sep 2009) Log Message: ----------- additional debug output Modified Paths: -------------- trunk/src/server/questmanager.cpp Modified: trunk/src/server/questmanager.cpp =================================================================== --- trunk/src/server/questmanager.cpp 2009-09-23 15:14:24 UTC (rev 4503) +++ trunk/src/server/questmanager.cpp 2009-09-23 15:34:01 UTC (rev 4504) @@ -676,6 +676,9 @@ { GetNextScriptLine(scr,block,start,line_number); + Debug2(LOG_QUESTS, 0, "Parsing line %s", block.GetData()); + + // now we have the block to do something with if (!strncasecmp(block,"#",1)) // comment, skip it continue; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2010-02-10 11:18:19
|
Revision: 5511 http://planeshift.svn.sourceforge.net/planeshift/?rev=5511&view=rev Author: weltall2 Date: 2010-02-10 11:18:12 +0000 (Wed, 10 Feb 2010) Log Message: ----------- forgot this Modified Paths: -------------- trunk/src/server/questmanager.cpp Modified: trunk/src/server/questmanager.cpp =================================================================== --- trunk/src/server/questmanager.cpp 2010-02-10 11:16:37 UTC (rev 5510) +++ trunk/src/server/questmanager.cpp 2010-02-10 11:18:12 UTC (rev 5511) @@ -399,8 +399,7 @@ { //we remove the leading require and let another function do the parsing of this csString requireBlock = block.Slice(7).Trim(); - if(!HandleRequireCommand(requireBlock,response_requireop,substep_requireop,last_response,mainQuest, - quest_assigned_already,quest)) + if(!HandleRequireCommand(requireBlock,response_requireop)) { //we got a false from handlerequirecommand: it means it wasn't able to parse the require command. Error2("Unknown require command '%s' !",block.GetData()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2010-02-10 11:20:26
|
Revision: 5512 http://planeshift.svn.sourceforge.net/planeshift/?rev=5512&view=rev Author: weltall2 Date: 2010-02-10 11:20:20 +0000 (Wed, 10 Feb 2010) Log Message: ----------- removed unedded spaces in xml Modified Paths: -------------- trunk/src/server/questmanager.cpp Modified: trunk/src/server/questmanager.cpp =================================================================== --- trunk/src/server/questmanager.cpp 2010-02-10 11:18:12 UTC (rev 5511) +++ trunk/src/server/questmanager.cpp 2010-02-10 11:20:20 UTC (rev 5512) @@ -318,7 +318,7 @@ if (!strncasecmp(block,"Assign Quest",12)) { - op.Format("<assign q1=\"%s\" />",mainQuest->GetName()); + op.Format("<assign q1=\"%s\"/>",mainQuest->GetName()); quest_assigned_already = true; } @@ -331,34 +331,34 @@ else if (!strncasecmp(block,"Complete",8)) { csString questname = block.Slice(8,block.Length()-1).Trim(); - op.Format("<complete quest_id=\"%s\" />",questname.GetData()); + op.Format("<complete quest_id=\"%s\"/>",questname.GetData()); } else if (!strncasecmp(block,"Give",4)) { WordArray words(block); if (words.GetInt(1) != 0 && words.Get(2).CompareNoCase("tria")) // give tria money { - op.Format("<money value=\"0,0,0,%d\" />",words.GetInt(1) ); + op.Format("<money value=\"0,0,0,%d\"/>",words.GetInt(1) ); } else if (words.GetInt(1) != 0 && words.Get(2).CompareNoCase("hexa")) // give hexa money { - op.Format("<money value=\"0,0,%d,0\" />",words.GetInt(1) ); + op.Format("<money value=\"0,0,%d,0\"/>",words.GetInt(1) ); } else if (words.GetInt(1) != 0 && words.Get(2).CompareNoCase("octa")) // give octa money { - op.Format("<money value=\"0,%d,0,0\" />",words.GetInt(1) ); + op.Format("<money value=\"0,%d,0,0\"/>",words.GetInt(1) ); } else if (words.GetInt(1) != 0 && words.Get(2).CompareNoCase("circle")) // give circle money { - op.Format("<money value=\"%d,0,0,0\" />",words.GetInt(1) ); + op.Format("<money value=\"%d,0,0,0\"/>",words.GetInt(1) ); } else if (words.GetInt(1) != 0 && words.Get(2).CompareNoCase("exp")) // give experience points { - op.Format("<run script=\"give_exp\" with=\"Exp=%d;\" />",words.GetInt(1) ); + op.Format("<run script=\"give_exp\" with=\"Exp=%d;\"/>",words.GetInt(1) ); } else if (words.GetInt(1) != 0 && words.Get(2).CompareNoCase("faction") && words.GetCount() > 3) // give faction points { - op.Format("<faction name=\"%s\" value=\"%d\" />", words.GetTail(3).GetDataSafe(), words.GetInt(1) ); + op.Format("<faction name=\"%s\" value=\"%d\"/>", words.GetTail(3).GetDataSafe(), words.GetInt(1) ); } else { @@ -372,7 +372,7 @@ if (end == SIZET_NOT_FOUND) end = words.GetCount(); csString item = words.GetWords(start,end); - op.AppendFmt("<item name=\"%s\" />",item.GetData() ); + op.AppendFmt("<item name=\"%s\"/>",item.GetData() ); start = end+1; } op.Append("</offer>"); @@ -393,7 +393,7 @@ } else if (!strncasecmp(block,"NoRepeat",8)) { - substep_requireop.AppendFmt("<not><completed quest=\"%s\" /></not>", quest->GetName() ); + substep_requireop.AppendFmt("<not><completed quest=\"%s\"/></not>", quest->GetName() ); } else if (!strncasecmp(block,"Require",7)) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2010-02-10 12:47:53
|
Revision: 5513 http://planeshift.svn.sourceforge.net/planeshift/?rev=5513&view=rev Author: weltall2 Date: 2010-02-10 12:47:46 +0000 (Wed, 10 Feb 2010) Log Message: ----------- implemented OR 1337 support in quest scripts!!! so today the fake step die forever. condolences. Modified Paths: -------------- trunk/src/server/questmanager.cpp Modified: trunk/src/server/questmanager.cpp =================================================================== --- trunk/src/server/questmanager.cpp 2010-02-10 11:20:20 UTC (rev 5512) +++ trunk/src/server/questmanager.cpp 2010-02-10 12:47:46 UTC (rev 5513) @@ -579,27 +579,43 @@ bool QuestManager::HandleRequireCommand(csString& block, csString& response_requireop) { + csStringArray blockList; + blockList.SplitString(block, "|"); + csString commandList; //stores the entire parsed chunk of prerequisites. bool result = true; //by default the result is positive, if it becomes false it means failure in parsing - if(!strncasecmp(block, "not", 3)) //compatibility block this or the next should be removed and quest fixed. + + if(blockList.GetSize() > 1) //if it's bigger than 1 we have *OR* so we prepend <or> + commandList = "<or>"; + + for(size_t i = 0; i < blockList.GetSize(); i++) { - //we remove the leading not and parse as if there was no not - //then we put the result inside two <not></not> - csString innerBlock = block.Slice(3, block.Length()-1).Trim(); - commandList.Format("<not>%s</not>", ParseRequireCommand(innerBlock, result).GetData()); - } - else if(!strncasecmp(block, "no", 2)) - { - //we remove the leading no and parse as if there was no no - //then we put the result inside two <not></not> - csString innerBlock = block.Slice(2, block.Length()-1).Trim(); - commandList.Format("<not>%s</not>", ParseRequireCommand(innerBlock, result).GetData()); - } - else - { - //this has no not or no then we just pass the string as it is. - commandList = ParseRequireCommand(block, result); - } + csString currentBlock = blockList.Get(i); + currentBlock.Trim(); + if(!strncasecmp(currentBlock, "not", 3)) //compatibility block this or the next should be removed and quest fixed. + { + //we remove the leading not and parse as if there was no not + //then we put the result inside two <not></not> + csString innerBlock = currentBlock.Slice(3, currentBlock.Length()-1).Trim(); + commandList.AppendFmt("<not>%s</not>", ParseRequireCommand(innerBlock, result).GetData()); + } + else if(!strncasecmp(currentBlock, "no", 2)) + { + //we remove the leading no and parse as if there was no no + //then we put the result inside two <not></not> + csString innerBlock = currentBlock.Slice(2, currentBlock.Length()-1).Trim(); + commandList.AppendFmt("<not>%s</not>", ParseRequireCommand(innerBlock, result).GetData()); + } + else + { + //this has no not or no then we just pass the string as it is. + commandList.Append(ParseRequireCommand(currentBlock, result)); + } + } + + if(blockList.GetSize() > 1) //if it's bigger than 1 we have *OR* so we append </or> + commandList.Append("</or>"); + //append the result to the prerequisites response_requireop.Append(commandList); //return the result of the operation This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2010-02-13 19:32:13
|
Revision: 5539 http://planeshift.svn.sourceforge.net/planeshift/?rev=5539&view=rev Author: weltall2 Date: 2010-02-13 19:32:06 +0000 (Sat, 13 Feb 2010) Log Message: ----------- made additional commands case insensitive Modified Paths: -------------- trunk/src/server/questmanager.cpp Modified: trunk/src/server/questmanager.cpp =================================================================== --- trunk/src/server/questmanager.cpp 2010-02-13 19:29:27 UTC (rev 5538) +++ trunk/src/server/questmanager.cpp 2010-02-13 19:32:06 UTC (rev 5539) @@ -531,9 +531,9 @@ else if (!strncasecmp(block,"gender",6)) { csString gender = block.Slice(7,block.Length()).Trim(); - if(gender == "male") gender = "M"; - else if(gender == "female") gender = "F"; - else if(gender == "neutral") gender = "N"; + if(gender.CompareNoCase("male")) gender = "M"; + else if(gender.CompareNoCase("female")) gender = "F"; + else if(gender.CompareNoCase("neutral")) gender = "N"; command.Format("<gender type=\"%s\"/>", gender.GetData() ); } else if (!strncasecmp(block,"married",7)) @@ -544,7 +544,7 @@ { csString itemName = block.Slice(9,block.Length()).Trim(); //this manages the category argument Require equipped category xxxx - if(itemName.StartsWith("category")) + if(itemName.StartsWith("category",true)) { csString categoryName = itemName.Slice(9, itemName.Length()); //no need to trim done above command.Format("<item inventory=\"false\" category=\"%s\"/>", categoryName.GetData()); @@ -558,7 +558,7 @@ { csString itemName = block.Slice(10,block.Length()).Trim(); //this manages the category argument Require equipped category xxxx - if(itemName.StartsWith("category")) + if(itemName.StartsWith("category",true)) { csString categoryName = itemName.Slice(9, itemName.Length()); //no need to trim done above command.Format("<item inventory=\"true\" category=\"%s\"/>", categoryName.GetData()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2010-02-15 18:42:11
|
Revision: 5562 http://planeshift.svn.sourceforge.net/planeshift/?rev=5562&view=rev Author: weltall2 Date: 2010-02-15 18:42:00 +0000 (Mon, 15 Feb 2010) Log Message: ----------- fixed PS#4093 - Multiple quest assignment in the first step: only the first working. Now not only assign quest doesn't need to be last anymore but also there can be multiple assign quest in the first step (eg different responses but same result). Modified Paths: -------------- trunk/src/server/questmanager.cpp Modified: trunk/src/server/questmanager.cpp =================================================================== --- trunk/src/server/questmanager.cpp 2010-02-15 17:33:44 UTC (rev 5561) +++ trunk/src/server/questmanager.cpp 2010-02-15 18:42:00 UTC (rev 5562) @@ -761,7 +761,7 @@ if (mainQuest) // Prerequisites only apply to quest scripts, not KA scripts. { - if (!PrependPrerequisites(substep_requireop, response_requireop, quest_assigned_already,last_response,mainQuest)) + if (!PrependPrerequisites(substep_requireop, response_requireop, quest_assigned_already && step_count > 1,last_response,mainQuest)) { lastError.Format("PrependPrerequistes failed on line %d", line_number); return line_number; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2010-02-16 08:10:25
|
Revision: 5564 http://planeshift.svn.sourceforge.net/planeshift/?rev=5564&view=rev Author: weltall2 Date: 2010-02-16 08:10:17 +0000 (Tue, 16 Feb 2010) Log Message: ----------- added require statement "<no/not> assignment of" to quest scripts Modified Paths: -------------- trunk/src/server/questmanager.cpp Modified: trunk/src/server/questmanager.cpp =================================================================== --- trunk/src/server/questmanager.cpp 2010-02-15 20:27:44 UTC (rev 5563) +++ trunk/src/server/questmanager.cpp 2010-02-16 08:10:17 UTC (rev 5564) @@ -568,6 +568,11 @@ command.Format("<item inventory=\"true\" name=\"%s\"/>",itemName.GetData()); } } + else if (!strncasecmp(block,"assignment of", 13)) + { + csString questname = block.Slice(13,block.Length()-1).Trim(); + command.Format("<assigned quest=\"%s\"/>", questname.GetData()); + } else { //it seems the require op we have found isn't This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2010-02-18 19:33:37
|
Revision: 5579 http://planeshift.svn.sourceforge.net/planeshift/?rev=5579&view=rev Author: weltall2 Date: 2010-02-18 19:33:31 +0000 (Thu, 18 Feb 2010) Log Message: ----------- added an optimized version of the preparser Modified Paths: -------------- trunk/src/server/questmanager.cpp Modified: trunk/src/server/questmanager.cpp =================================================================== --- trunk/src/server/questmanager.cpp 2010-02-18 19:07:26 UTC (rev 5578) +++ trunk/src/server/questmanager.cpp 2010-02-18 19:33:31 UTC (rev 5579) @@ -627,12 +627,15 @@ return result; } +#define OPTIMIZEPREPARSER 1 + int QuestManager::PreParseQuestScript(psQuest *mainQuest, const char *script) { + int step_count=1; // Main quest is step 1 +#ifndef OPTIMIZEPREPARSER psString scr(script); size_t start = 0; int line_number = 0; - int step_count=1; // Main quest is step 1 csString block; while (start < scr.Length()) { @@ -655,6 +658,19 @@ CacheManager::GetSingleton().AddDynamicQuest(newquestname, mainQuest, step_count); } } +#else + csString scr(script); + size_t lastpos = scr.Find("\n..."); + while (lastpos != (size_t) -1) + { + step_count++; + csString newquestname; + newquestname.Format("%s Step %d",mainQuest->GetName(),step_count); + Debug2( LOG_QUESTS, 0,"Quest <%s> is getting added dynamically.",newquestname.GetData()); + CacheManager::GetSingleton().AddDynamicQuest(newquestname, mainQuest, step_count); + lastpos = scr.Find("\n...", lastpos+1); + } +#endif return 0; } @@ -859,6 +875,7 @@ newquestname.Format("%s Step %d",mainQuest->GetName(),step_count); Debug2( LOG_QUESTS, 0,"New step for Quest <%s>.",newquestname.GetData()); quest = CacheManager::GetSingleton().GetQuestByName(newquestname); + //quest can't be null or it would have been stopped before. quest_id = quest->GetID(); // Check if this is a non repeatable substep. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2010-02-18 19:35:47
|
Revision: 5580 http://planeshift.svn.sourceforge.net/planeshift/?rev=5580&view=rev Author: weltall2 Date: 2010-02-18 19:35:24 +0000 (Thu, 18 Feb 2010) Log Message: ----------- fixed comment Modified Paths: -------------- trunk/src/server/questmanager.cpp Modified: trunk/src/server/questmanager.cpp =================================================================== --- trunk/src/server/questmanager.cpp 2010-02-18 19:33:31 UTC (rev 5579) +++ trunk/src/server/questmanager.cpp 2010-02-18 19:35:24 UTC (rev 5580) @@ -53,8 +53,11 @@ #include "entitymanager.h" #include "globals.h" +//uses the experimental optimized preparser +#define OPTIMIZEPREPARSER 1 + QuestManager::QuestManager() { psserver->GetEventManager()->Subscribe(this,new NetMessageCallback<QuestManager>(this,&QuestManager::HandleQuestInfo), MSGTYPE_QUESTINFO,REQUIRE_READY_CLIENT); @@ -627,8 +630,6 @@ return result; } -#define OPTIMIZEPREPARSER 1 - int QuestManager::PreParseQuestScript(psQuest *mainQuest, const char *script) { int step_count=1; // Main quest is step 1 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2010-03-13 20:56:52
|
Revision: 5684 http://planeshift.svn.sourceforge.net/planeshift/?rev=5684&view=rev Author: weltall2 Date: 2010-03-13 20:56:46 +0000 (Sat, 13 Mar 2010) Log Message: ----------- improved comments Modified Paths: -------------- trunk/src/server/questmanager.cpp Modified: trunk/src/server/questmanager.cpp =================================================================== --- trunk/src/server/questmanager.cpp 2010-03-13 20:53:27 UTC (rev 5683) +++ trunk/src/server/questmanager.cpp 2010-03-13 20:56:46 UTC (rev 5684) @@ -630,6 +630,10 @@ return result; } +//NOTE: we have two parsers there one is the same as the one used in the main parsing, so proven to be safe. +// the second is a more lightweight and faster one which is not tested a lot but seems to work well +// so for now it's the default. + int QuestManager::PreParseQuestScript(psQuest *mainQuest, const char *script) { int step_count=1; // Main quest is step 1 @@ -661,15 +665,17 @@ } #else csString scr(script); - size_t lastpos = scr.Find("\n..."); - while (lastpos != (size_t) -1) + size_t lastpos = scr.Find("\n..."); //searches the first occurence of ... in the script + while (lastpos != (size_t) -1) //if we found any continue adding substeps { step_count++; csString newquestname; + //prepare the name of the step and add it to the quest. we will populate this later on the real + //parsing newquestname.Format("%s Step %d",mainQuest->GetName(),step_count); Debug2( LOG_QUESTS, 0,"Quest <%s> is getting added dynamically.",newquestname.GetData()); CacheManager::GetSingleton().AddDynamicQuest(newquestname, mainQuest, step_count); - lastpos = scr.Find("\n...", lastpos+1); + lastpos = scr.Find("\n...", lastpos+1); //searches for the successive ... if any } #endif return 0; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2010-05-05 13:15:35
|
Revision: 5867 http://planeshift.svn.sourceforge.net/planeshift/?rev=5867&view=rev Author: weltall2 Date: 2010-05-05 13:15:29 +0000 (Wed, 05 May 2010) Log Message: ----------- readded support for multitrigger (which essentially allows to access the old way of questing while retaining the new way). Saved also some ram as the riddles aren't loaded entirely in menus anymore. Modified Paths: -------------- trunk/src/server/questmanager.cpp Modified: trunk/src/server/questmanager.cpp =================================================================== --- trunk/src/server/questmanager.cpp 2010-05-03 21:33:05 UTC (rev 5866) +++ trunk/src/server/questmanager.cpp 2010-05-05 13:15:29 UTC (rev 5867) @@ -1104,8 +1104,17 @@ block.SubString(response,start,end-start); response.Trim(); - menu->AddTrigger( response, list[ counter++ ], quest ); + //We have to cut out all the triggers outside the first one so + //the menu doesn't get "other versions" of text triggers + csString trigger = list[ counter++ ]; + //search the first dot + size_t cutDotPos = trigger.FindFirst("."); + //we check if it was found to avoid creating too many csString + if(cutDotPos != (size_t) -1) + trigger.Truncate(cutDotPos); //cut the string at the dot, excluding it. + menu->AddTrigger( response, trigger, quest ); + start = end; // Start at next Menu: or exit loop } return true; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2010-09-08 20:31:55
|
Revision: 6186 http://planeshift.svn.sourceforge.net/planeshift/?rev=6186&view=rev Author: weltall2 Date: 2010-09-08 20:31:49 +0000 (Wed, 08 Sep 2010) Log Message: ----------- fixed script arguments parsing. Modified Paths: -------------- trunk/src/server/questmanager.cpp Modified: trunk/src/server/questmanager.cpp =================================================================== --- trunk/src/server/questmanager.cpp 2010-09-08 18:03:51 UTC (rev 6185) +++ trunk/src/server/questmanager.cpp 2010-09-08 20:31:49 UTC (rev 6186) @@ -419,10 +419,10 @@ size_t start = script.FindStr("<<"); size_t end = script.FindStr(">>"); if (start != SIZET_NOT_FOUND && end != SIZET_NOT_FOUND && - start == 0 && end > start) + start != 0 && end > start) { - csString params = script.Slice(start+1,end-start-1).Trim(); - script.DeleteAt(start,end-start+1).Trim(); + csString params = script.Slice(start+2,end-start-2).Trim(); + script.DeleteAt(start,end-start+2).Trim(); size_t next; do { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2010-09-12 16:27:51
|
Revision: 6189 http://planeshift.svn.sourceforge.net/planeshift/?rev=6189&view=rev Author: weltall2 Date: 2010-09-12 16:27:46 +0000 (Sun, 12 Sep 2010) Log Message: ----------- check if the autocompleted quest name exists before attempting it, else keep the old one even if not found (avoids weird errors and let's the same code handle error in scripts). Fixed missing space. Modified Paths: -------------- trunk/src/server/questmanager.cpp Modified: trunk/src/server/questmanager.cpp =================================================================== --- trunk/src/server/questmanager.cpp 2010-09-12 16:16:16 UTC (rev 6188) +++ trunk/src/server/questmanager.cpp 2010-09-12 16:27:46 UTC (rev 6189) @@ -335,11 +335,18 @@ else if (!strncasecmp(block,"Complete",8)) { csString questname = block.Slice(8,block.Length()-1).Trim(); - //attempt to consider it as a step of this quest if not found. if(!cacheManager->GetQuestByName(questname)) { - Debug2( LOG_QUESTS, 0, "Autocompleting quest name for complete: %s\n", questname.GetData()); - questname.Insert(0, mainQuest->GetName()); + csString tmpQuestName; + //create the autocompleted questname + tmpQuestName.Format("%s %s", mainQuest->GetName(), questname.GetData()); + //check if the autocompleted name exists to avoid funny errors + //when doing typo + if(cacheManager->GetQuestByName(tmpQuestName)) + { + Debug2( LOG_QUESTS, 0, "Autocompleting quest name for complete: %s\n", questname.GetData()); + questname = tmpQuestName; + } } op.Format("<complete quest_id=\"%s\"/>",questname.GetData()); } @@ -504,8 +511,16 @@ //attempt to consider it as a step of this quest if not found. if(!cacheManager->GetQuestByName(questname)) { - Debug2( LOG_QUESTS, 0, "Autocompleting quest name for require completion: %s\n", questname.GetData()); - questname.Insert(0, mainQuest->GetName()); + csString tmpQuestName; + //create the autocompleted questname + tmpQuestName.Format("%s %s", mainQuest->GetName(), questname.GetData()); + //check if the autocompleted name exists to avoid funny errors + //when doing typo + if(cacheManager->GetQuestByName(tmpQuestName)) + { + Debug2( LOG_QUESTS, 0, "Autocompleting quest name for require completion: %s\n", questname.GetData()); + questname = tmpQuestName; + } } command.Format("<completed quest=\"%s\"/>", questname.GetData()); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2011-11-27 07:37:00
|
Revision: 7764 http://planeshift.svn.sourceforge.net/planeshift/?rev=7764&view=rev Author: weltall2 Date: 2011-11-27 07:36:54 +0000 (Sun, 27 Nov 2011) Log Message: ----------- show "with the voice file" part only if there is a voice file Modified Paths: -------------- trunk/src/server/questmanager.cpp Modified: trunk/src/server/questmanager.cpp =================================================================== --- trunk/src/server/questmanager.cpp 2011-11-26 23:27:57 UTC (rev 7763) +++ trunk/src/server/questmanager.cpp 2011-11-27 07:36:54 UTC (rev 7764) @@ -846,8 +846,9 @@ return line_number; } - Debug4( LOG_QUESTS, 0,"NPC %s responds with '%s', with the voice file '%s'", current_npc.GetData(), - response_text.GetData(), file_path.GetDataSafe() ); + Debug6( LOG_QUESTS, 0,"NPC %s responds with '%s'%s%s%s", current_npc.GetData(), + response_text.GetData(), file_path.IsEmpty()? "" : ", with the voice file '", + file_path.GetDataSafe(), file_path.IsEmpty()? "" : "'" ); // Now add this response to the npc dialog dict if (which_trigger == 0) // new sequence This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wo...@us...> - 2012-04-08 23:38:27
|
Revision: 8198 http://planeshift.svn.sourceforge.net/planeshift/?rev=8198&view=rev Author: woden_ Date: 2012-04-08 23:38:21 +0000 (Sun, 08 Apr 2012) Log Message: ----------- PS#5418 - Added check for empty script in parsing. Modified Paths: -------------- trunk/src/server/questmanager.cpp Modified: trunk/src/server/questmanager.cpp =================================================================== --- trunk/src/server/questmanager.cpp 2012-04-08 23:17:13 UTC (rev 8197) +++ trunk/src/server/questmanager.cpp 2012-04-08 23:38:21 UTC (rev 8198) @@ -755,6 +755,8 @@ return errorline; } + if(scr.Length() == 0) + return 1; while (start < scr.Length()) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2012-04-09 20:22:17
|
Revision: 8199 http://planeshift.svn.sourceforge.net/planeshift/?rev=8199&view=rev Author: weltall2 Date: 2012-04-09 20:22:11 +0000 (Mon, 09 Apr 2012) Log Message: ----------- reverted previous commit Modified Paths: -------------- trunk/src/server/questmanager.cpp Modified: trunk/src/server/questmanager.cpp =================================================================== --- trunk/src/server/questmanager.cpp 2012-04-08 23:38:21 UTC (rev 8198) +++ trunk/src/server/questmanager.cpp 2012-04-09 20:22:11 UTC (rev 8199) @@ -755,9 +755,6 @@ return errorline; } - if(scr.Length() == 0) - return 1; - while (start < scr.Length()) { GetNextScriptLine(scr,block,start,line_number); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |