1293 lines
No EOL
78 KiB
C#
1293 lines
No EOL
78 KiB
C#
using System;
|
|
using System.Data;
|
|
using System.IO;
|
|
using System.Text;
|
|
using System.Text.RegularExpressions;
|
|
using System.Collections.Generic;
|
|
using System.Windows.Forms;
|
|
|
|
namespace DNQuest
|
|
{
|
|
public class SaveLua
|
|
{
|
|
private int m_nHuntCount = 0;
|
|
private string m_strRemoteStartData = "";
|
|
private DataSet m_savingDataSet = null;
|
|
private string m_strFilename = "";
|
|
private string m_strQuestType = ""; // 서버에서 사용하지 않는 값
|
|
private int m_nCompleteType = 0;
|
|
|
|
public SaveLua()
|
|
{
|
|
}
|
|
|
|
public void Clear()
|
|
{
|
|
m_nHuntCount = 0;
|
|
m_strRemoteStartData = "";
|
|
m_savingDataSet = null;
|
|
m_strFilename = "";
|
|
m_nCompleteType = 0;
|
|
m_strQuestType = "";
|
|
}
|
|
|
|
public void Execute(DataSet savingDataSet, string strFilename, int nQuestType, int nCompleteType)
|
|
{
|
|
m_nHuntCount = 0;
|
|
m_strRemoteStartData = "";
|
|
m_savingDataSet = savingDataSet;
|
|
m_strFilename = strFilename;
|
|
m_nCompleteType = nCompleteType;
|
|
if (nQuestType == 0) //main Quest
|
|
m_strQuestType = "2";
|
|
else //Sub Quest, 모험자 퀘스트, 일일 Quest
|
|
m_strQuestType = "1";
|
|
|
|
string qename = m_savingDataSet.Tables["quest_desc"].Rows[0]["qename"].ToString(); // 퀘스트 영문이름
|
|
string qid = m_savingDataSet.Tables["quest_desc"].Rows[0]["qid"].ToString(); // 퀘스트 아이디
|
|
string next_qename = m_savingDataSet.Tables["quest_desc"].Rows[0]["nextqname"].ToString(); // 다음 퀘스트 이름
|
|
string next_qid = m_savingDataSet.Tables["quest_desc"].Rows[0]["nextqid"].ToString(); // 다음 퀘스트 아이디
|
|
string next_qnpc = m_savingDataSet.Tables["quest_desc"].Rows[0]["nextqnpc"].ToString(); // 다음 퀘스트 NPC 이름
|
|
string str = "";
|
|
string str2 = "";
|
|
string data = "";
|
|
string oncount = "\r\nfunction " + qename + "_OnCounting( userObjID, CountingType, CountIndex, Count, TargetCount, questID )\r\n\tlocal qstep=api_quest_GetQuestStep(userObjID, " + qid + ");\r\n";
|
|
string oncomplete = "\r\nfunction " + qename + "_OnCompleteCounting( userObjID, CountingType, CountIndex, Count, TargetCount, questID )\r\n\tlocal qstep=api_quest_GetQuestStep(userObjID, " + qid + ");\r\n";
|
|
string onall = "\r\nfunction " + qename + "_OnCompleteAllCounting( userObjID, questID )\r\n\tlocal qstep=api_quest_GetQuestStep(userObjID, " + qid + ");\r\n\tlocal questID=" + qid + ";\r\n";
|
|
|
|
data += "function " + qename + "_OnTalk(userObjID, npcObjID, npc_talk_index, npc_talk_target, questID)";
|
|
data += "\r\n-----------------------------------------------------------------------------------------------";
|
|
data += "\r\n\r\n\tlocal npcID = api_npc_GetNpcIndex(userObjID, npcObjID);\r\n";
|
|
|
|
DataRowCollection rows_npc = m_savingDataSet.Tables["qnpc"].Rows;
|
|
|
|
foreach (DataRow row_npc in rows_npc)
|
|
{
|
|
data += "\r\n\tif npcID == " + row_npc["npcid"].ToString() + " then";
|
|
data += "\r\n\t\t" + qename + "_OnTalk_" + row_npc["npcename"].ToString() + "(userObjID, npcObjID, npc_talk_index, npc_talk_target, questID);";
|
|
data += "\r\n\t\treturn;";
|
|
data += "\r\n\tend\r\n";
|
|
}
|
|
|
|
data += "\r\nend\r\n------------------------------------------------------------------------------------------------\r\n\r\n";
|
|
|
|
foreach (DataRow row_npc in rows_npc)
|
|
{
|
|
str += "--" + row_npc["npcename"].ToString() + "--------------------------------------------------------------------------------";
|
|
str += "\r\nfunction " + qename + "_OnTalk_" + row_npc["npcename"].ToString() + "(userObjID, npcObjID, npc_talk_index, npc_talk_target, questID)";
|
|
str += "\r\n------------------------------------------------------------------------------------------";
|
|
str += "\r\n\r\n\tif npc_talk_index == \"!quit\" then";
|
|
str += "\r\n\t\treturn;";
|
|
str += "\r\n\tend\r\n\tlocal queststep = api_quest_GetQuestStep(userObjID, questID);";
|
|
str += "\r\n\r\n\tif npc_talk_index == \"q_enter\" then\r\n";
|
|
str2 = "\r\n\t---------------------------------\r\n\telse\r\n\r\n";
|
|
|
|
#region 퀘스트 없을 단계
|
|
|
|
DataRow[] rows_noquest = m_savingDataSet.Tables["talk_paragraph"].Select("index = '" + row_npc["npcename"].ToString() + "-noquest'");
|
|
|
|
if (rows_noquest.Length > 0)
|
|
{
|
|
DataRow row_noquest = rows_noquest[0];
|
|
str += "\r\n\t\t if api_quest_UserHasQuest(userObjID, questID) <= 0 then";
|
|
str += "\r\n\t\t\t npc_talk_index = \"" + row_noquest["index"].ToString() + "\";";
|
|
str += "\r\n\t\t\t if api_quest_IsPlayingQuestMaximum(userObjID) == 1 then ";
|
|
str += "\r\n\t\t\t\t npc_talk_index = \"_full_quest\";";
|
|
str += "\r\n\t\t\t end ";
|
|
str += "\r\n\t\t\t\t api_npc_NextTalk(userObjID, npcObjID, npc_talk_index, npc_talk_target);";
|
|
str += "\r\n\t\t end";
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 퀘스트 받는 단계
|
|
|
|
DataRow[] rows_accept = m_savingDataSet.Tables["talk_paragraph"].Select("index = '" + row_npc["npcename"].ToString() + "-accepting'");
|
|
|
|
if (rows_accept.Length > 0)
|
|
{
|
|
int talk_Count = 0;
|
|
|
|
DataRow row_accept = rows_accept[0];
|
|
|
|
string[] index = row_accept["index"].ToString().Split('-');
|
|
|
|
str += "\r\n\t\t if api_quest_UserHasQuest(userObjID, questID) <= 0 then";
|
|
|
|
DataRow[] rows_exelink = m_savingDataSet.Tables["exelink"].Select("qstep = 'accepting' and npc = '" + index[0] + "'");
|
|
|
|
string str_sub = "";
|
|
|
|
foreach (DataRow row_exelink in rows_exelink)
|
|
{
|
|
if (row_exelink["sub"].ToString() == "")
|
|
{
|
|
str += "\r\n\t\t" + _writeExeBlock(row_exelink, "accepting", "exelink_Text", ref talk_Count, next_qid, next_qnpc, next_qename, false);
|
|
}
|
|
else
|
|
{
|
|
if (str_sub.IndexOf(row_exelink["sub"].ToString() + ":" + row_exelink["exelink_Text"].ToString()) < 0)
|
|
{
|
|
string sub = row_exelink["sub"].ToString().Replace("accepting", "");
|
|
|
|
if (sub == "")
|
|
{
|
|
str2 += "\tif npc_talk_index == \"" + index[0] + "-accepting\" then\r\n";
|
|
str2 += _writeExeBlock(row_exelink, "accepting", "exelink_Text", ref talk_Count, next_qid, next_qnpc, next_qename, false) + "\r\n";
|
|
str2 += "\tend\r\n";
|
|
}
|
|
else
|
|
{
|
|
str2 += "\tif npc_talk_index == \"" + index[0] + "-accepting-" + row_exelink["sub"].ToString() + "\" then\r\n";
|
|
str2 += _writeExeBlock(row_exelink, "accepting", "exelink_Text", ref talk_Count, next_qid, next_qnpc, next_qename, false) + "\r\n";
|
|
str2 += "\tend\r\n";
|
|
}
|
|
|
|
str_sub += row_exelink["sub"].ToString() + ":" + row_exelink["exelink_Text"].ToString() + ";";
|
|
}
|
|
}
|
|
}
|
|
|
|
str += "\r\n\t\t\t if api_quest_IsPlayingQuestMaximum(userObjID) == 1 then ";
|
|
str += "\r\n\t\t\t\t npc_talk_index = \"_full_quest\";";
|
|
str += "\r\n\t\t\t\t api_npc_NextTalk(userObjID, npcObjID, npc_talk_index, npc_talk_target);";
|
|
str += "\r\n\t\t\t\t return; ";
|
|
str += "\r\n\t\t\t end ";
|
|
if (rows_exelink.Length > 0)
|
|
{
|
|
str += "\r\n\t\t\tapi_npc_NextTalk(userObjID, npcObjID, \"" + index[0] + "-accepting\", npc_talk_target);";
|
|
}
|
|
|
|
str += "\r\n\t\tend";
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 퀘스트 일반 단계
|
|
|
|
str += "\r\n\t\twhile queststep > -1 do \r\n\t\t---------------------------------\r\n";
|
|
|
|
DataRow[] rows_general = m_savingDataSet.Tables["talk_paragraph"].Select("index like '" + row_npc["npcename"].ToString() + "-%' and index not like'%noquest%' and index not like '%accepting%' and index <> '!quit' and index <> 'q_enter' and index <> '_no_quest' and index <> '_full_quest' and index <> '_full_inventory'");
|
|
|
|
string flag = "";
|
|
|
|
foreach (DataRow row_general in rows_general)
|
|
{
|
|
string[] index = row_general["index"].ToString().Split('-');
|
|
|
|
if (index.Length == 2)
|
|
{
|
|
str += "\r\n\t\t\tif api_quest_UserHasQuest(userObjID, questID) > 0 and queststep == " + index[1] + " then\r\n";
|
|
str += "\t\t\t\tnpc_talk_index = \"" + row_general["index"].ToString() + "\";\r\n";
|
|
|
|
DataRow[] rows_exelink = m_savingDataSet.Tables["exelink"].Select("qstep = '" + index[1] + "' and npc = '" + index[0] + "'");
|
|
|
|
int talk_count = 0;
|
|
|
|
foreach (DataRow row_exelink in rows_exelink)
|
|
{
|
|
if (row_exelink["sub"].ToString() == "")
|
|
{
|
|
str += _writeExeBlock(row_exelink, index[1], "exelink_Text", ref talk_count, next_qid, next_qnpc, next_qename, false);
|
|
}
|
|
else
|
|
{
|
|
if (row_exelink["sub"].ToString() != "!next")
|
|
{
|
|
int i;
|
|
if (Int32.TryParse(row_exelink["sub"].ToString(), out i))
|
|
str2 += "\tif npc_talk_index == \"" + index[0] + "-" + row_exelink["sub"].ToString() + "\" then \r\n";
|
|
else
|
|
str2 += "\tif npc_talk_index == \"" + index[0] + "-" + index[1] + "-" + row_exelink["sub"].ToString() + "\" then \r\n";
|
|
|
|
str2 += _writeExeBlock(row_exelink, index[1], "exelink_Text", ref talk_count, next_qid, next_qnpc, next_qename, false);
|
|
str2 += "\tend\r\n";
|
|
}
|
|
else
|
|
{
|
|
if (flag != index[0] + "-" + index[1] + "-" + row_exelink["sub"].ToString())
|
|
{
|
|
flag = index[0] + "-" + index[1] + "-" + row_exelink["sub"].ToString();
|
|
str2 += "\tif npc_talk_index == \"" + index[0] + "-" + index[1] + "-" + row_exelink["sub"].ToString() + "\" then \r\n";
|
|
str2 += "\t\tlocal cqresult = 1\r\n";
|
|
str2 += _writeExeBlock(row_exelink, index[1], "exelink_Text", ref talk_count, next_qid, next_qnpc, next_qename, false);
|
|
str2 += "\r\n\t\tif cqresult == 1 then\r\n";
|
|
str2 += "\t\t\tapi_npc_NextScript(userObjID, npcObjID, \"" + next_qnpc + "-1\", \"" + next_qename + ".xml\");\r\n";
|
|
str2 += "\t\t\treturn;\r\n";
|
|
str2 += "\t\tend\r\n";
|
|
str2 += "\tend\r\n";
|
|
}
|
|
}
|
|
}
|
|
|
|
if (talk_count == 1)
|
|
str2 += "\treturn;\r\n";
|
|
}
|
|
|
|
|
|
str += "\t\t\t\tapi_npc_NextTalk(userObjID, npcObjID, npc_talk_index, npc_talk_target);";
|
|
str += "\r\n\t\t\t\tbreak;\r\n";
|
|
str += "\t\t\tend\r\n";
|
|
}
|
|
else
|
|
{
|
|
DataRow[] rows_answer = m_savingDataSet.Tables["talk_answer"].Select("talk_paragraph_Id = '" + row_general["talk_paragraph_Id"] + "'");
|
|
|
|
foreach (DataRow row_answer in rows_answer)
|
|
{
|
|
if (row_answer["link_index"].ToString().IndexOf("!next") > -1)
|
|
{
|
|
if (flag != row_answer["link_index"].ToString())
|
|
{
|
|
flag = row_answer["link_index"].ToString();
|
|
|
|
str2 += "\tif npc_talk_index == \"" + row_answer["link_index"].ToString() + "\" then \r\n";
|
|
|
|
DataRow[] rows_exelink = m_savingDataSet.Tables["exelink"].Select("qstep = '" + index[1] + "' and npc = '" + index[0] + "'");
|
|
|
|
int talk_count = 0;
|
|
|
|
foreach (DataRow row_exelink in rows_exelink)
|
|
{
|
|
if (row_exelink["sub"].ToString() == "!next")
|
|
{
|
|
str2 += "\r\n\t\tlocal cqresult = 1";
|
|
str2 += _writeExeBlock(row_exelink, index[1], "exelink_Text", ref talk_count, next_qid, next_qnpc, next_qename, false);
|
|
str2 += "\r\n\t\tif cqresult == 1 then\r\n";
|
|
str2 += "\t\t\tapi_npc_NextScript(userObjID, npcObjID, \"" + next_qnpc + "-1\", \"" + next_qename + ".xml\");\r\n";
|
|
str2 += "\t\t\treturn;\r\n";
|
|
str2 += "\t\tend\r\n";
|
|
}
|
|
else
|
|
{
|
|
//str2 += WriteExeBlock(row_exelink, index[1], ref talk_count, next_qid, next_qnpc, next_qename);
|
|
}
|
|
}
|
|
|
|
if (talk_count == 1)
|
|
str2 += "\treturn;\r\n";
|
|
|
|
str2 += "\tend\r\n";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
str += "\r\n\t\t\tqueststep = queststep -1;\r\n\t\tend\r\n\r\n";
|
|
str2 += "\r\n\t---------------------------------\r\n";
|
|
str2 += "\t api_npc_NextTalk(userObjID, npcObjID, npc_talk_index, npc_talk_target);\r\n";
|
|
str2 += "\t end\r\n";
|
|
#endregion
|
|
|
|
str += str2;
|
|
str += "------------------------------------------------------------------------------------------------\r\nend\r\n";
|
|
}
|
|
|
|
data += str;
|
|
|
|
#region 사냥 처리 루틴
|
|
DataRow[] rows_exe = m_savingDataSet.Tables["exe"].Select("type='huntmon' or type='huntitem' or type='huntsymbol' or type='huntall' or type='checkStageClearRank' ");
|
|
|
|
int talk_count_blank = 0;
|
|
|
|
foreach (DataRow row_exe in rows_exe)
|
|
{
|
|
DataRow[] executions = m_savingDataSet.Tables["executions"].Select("executions_Id = '" + row_exe["executions_Id"].ToString() + "'");
|
|
DataRow[] qstep_change = m_savingDataSet.Tables["qstep_change"].Select("qstep_change_Id = '" + executions[0]["qstep_change_Id"].ToString() + "'");
|
|
switch (row_exe["type"].ToString())
|
|
{
|
|
case "checkStageClearRank":
|
|
{
|
|
oncount += "\t local qstep= " + qstep_change[0]["qstep"].ToString() + "; \r\n";
|
|
oncount += "\t if qstep == " + qstep_change[0]["qstep"].ToString() + " then \r\n";
|
|
oncount += "\t\t if api_user_GetLastStageClearRank( userObjID ) " + row_exe["true"].ToString().Replace("[", "<").Replace("]", ">") + " " + row_exe["rand"].ToString() + " then \r\n";
|
|
oncount += _writeExeBlock(row_exe, qstep_change[0]["qstep"].ToString(), "onexe", ref talk_count_blank, next_qid, next_qnpc, next_qename, true);
|
|
oncount += "\t\t end \r\n";
|
|
oncount += "\t end \r\n";
|
|
break;
|
|
}
|
|
case "huntmon":
|
|
case "huntitem":
|
|
case "huntsymbol":
|
|
{
|
|
string[] string_monster = row_exe["exe_Text"].ToString().Split(',');
|
|
int monsterCount = row_exe["num"] != null ? Convert.ToInt32(row_exe["num"].ToString()) : 0;
|
|
|
|
foreach (string monster in string_monster)
|
|
{
|
|
int temp = 0;
|
|
|
|
if (Int32.TryParse(qstep_change[0]["qstep"].ToString(), out temp))
|
|
{
|
|
oncount += "\tif qstep == " + (temp + 1).ToString() + " and CountIndex == " + monster;
|
|
oncount += " then\r\n";
|
|
}
|
|
else
|
|
{
|
|
if (qstep_change[0]["qstep"].ToString() == "accepting")
|
|
oncount += "\tif qstep == 1 and CountIndex == " + monster + " then\r\n";
|
|
else
|
|
oncount += "\tif qstep == " + qstep_change[0]["qstep"].ToString() + " and CountIndex == " + monster + " then\r\n";
|
|
}
|
|
|
|
if (row_exe["onexe"].ToString() != "")
|
|
{
|
|
oncount += _writeExeBlock(row_exe, qstep_change[0]["qstep"].ToString(), "onexe", ref talk_count_blank, next_qid, next_qnpc, next_qename, true);
|
|
}
|
|
|
|
oncount += "\r\n\tend\r\n";
|
|
|
|
if (Int32.TryParse(qstep_change[0]["qstep"].ToString(), out temp))
|
|
{
|
|
oncomplete += "\tif qstep == " + (temp + 1).ToString() + " and CountIndex == " + monster;
|
|
if (row_exe["num"].ToString().Trim().Length > 0)
|
|
oncomplete += " and Count >= TargetCount ";
|
|
|
|
oncomplete += " then\r\n";
|
|
}
|
|
else
|
|
{
|
|
if (qstep_change[0]["qstep"].ToString() == "accepting")
|
|
{
|
|
oncomplete += "\tif qstep == 1 and CountIndex == " + monster;
|
|
if (row_exe["num"].ToString().Trim().Length > 0)
|
|
oncomplete += " and Count >= TargetCount ";
|
|
|
|
oncomplete += " then\r\n";
|
|
}
|
|
else
|
|
{
|
|
oncomplete += "\tif qstep == " + qstep_change[0]["qstep"].ToString() + " and CountIndex == " + monster;
|
|
if (row_exe["num"].ToString().Trim().Length > 0)
|
|
oncomplete += " and Count >= TargetCount ";
|
|
|
|
oncomplete += " then\r\n";
|
|
}
|
|
}
|
|
|
|
if (row_exe["exe"].ToString() != "")
|
|
oncomplete += _writeExeBlock(row_exe, qstep_change[0]["qstep"].ToString(), "exe", ref talk_count_blank, next_qid, next_qnpc, next_qename, true);
|
|
|
|
oncomplete += "\r\n\tend\r\n";
|
|
}
|
|
}
|
|
break;
|
|
case "huntall":
|
|
onall += "\tif qstep == " + (Convert.ToInt16(qstep_change[0]["qstep"].ToString()) + 1).ToString() + " then\r\n";
|
|
onall += _writeExeBlock(row_exe, qstep_change[0]["qstep"].ToString(), "all", ref talk_count_blank, next_qid, next_qnpc, next_qename, true);
|
|
onall += "\tend\r\n";
|
|
break;
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
oncount = oncount + "end\r\n";
|
|
oncomplete = oncomplete + "end\r\n";
|
|
onall = onall + "end\r\n";
|
|
|
|
data += oncount + oncomplete + onall;
|
|
|
|
#region 원격 시작 루틴
|
|
string onremotestart = "\r\nfunction " + qename + "_OnRemoteStart( userObjID, questID )\r\n";
|
|
onremotestart += m_strRemoteStartData;
|
|
onremotestart += "end\r\n";
|
|
data += onremotestart;
|
|
#endregion
|
|
|
|
DataRow[] rows_remotecomplete = m_savingDataSet.Tables["remotecomplete"].Select();
|
|
if (0 < rows_remotecomplete.Length)
|
|
{
|
|
int qstep = Convert.ToInt32(rows_remotecomplete[0]["qstep"].ToString());
|
|
|
|
#region 원격 완료 루틴
|
|
string onremotecomplete = "\r\nfunction " + qename + "_OnRemoteComplete( userObjID, questID )\r\n\tlocal qstep=api_quest_GetQuestStep(userObjID, questID);\r\n";
|
|
onremotecomplete += "\tif qstep == " + qstep.ToString() + " then\r\n";
|
|
onremotecomplete += _writeExeBlock(rows_remotecomplete[0], qstep.ToString(), "rc_Text", ref talk_count_blank, next_qid, next_qnpc, next_qename, false);
|
|
onremotecomplete += "\tend\r\nend\r\n";
|
|
data += onremotecomplete;
|
|
#endregion
|
|
|
|
#region 원격 완료 체크 루틴
|
|
string canremotecompletestep = "\r\nfunction " + qename + "_CanRemoteCompleteStep( userObjID, questID, questStep )\r\n" + "\tif questStep == " + qstep.ToString() + " then\r\n\t\treturn true;\r\n\tend\r\n\r\n\treturn false;\r\nend\r\n";
|
|
data += canremotecompletestep;
|
|
#endregion
|
|
}
|
|
else
|
|
{
|
|
// 원격으로 시작 하지만 완료는 하지 않는 퀘스트를 위해서 추가한다.
|
|
|
|
#region 원격 완료 체크 루틴
|
|
string canremotecompletestep = "\r\nfunction " + qename + "_CanRemoteCompleteStep( userObjID, questID, questStep )\r\n\treturn false;\r\nend\r\n";
|
|
data += canremotecompletestep;
|
|
#endregion
|
|
}
|
|
|
|
using (FileStream fs = new FileStream(m_strFilename, FileMode.Create))
|
|
{
|
|
byte[] data_byte = Encoding.UTF8.GetBytes(_replaceScript(ref data));
|
|
fs.Write(data_byte, 0, data_byte.Length);
|
|
}
|
|
}
|
|
|
|
private string _replaceScript(ref string str)
|
|
{
|
|
const string VillageServerTag_Start = "<VillageServer>";
|
|
const string VillageServerTag_End = "</VillageServer>";
|
|
|
|
const string GameServerTag_Start = "<GameServer>";
|
|
const string GameServerTag_End = "</GameServer>";
|
|
|
|
//VillageServerTag 추가
|
|
StringBuilder sbVillageServer = new StringBuilder();
|
|
sbVillageServer.AppendLine(VillageServerTag_Start);
|
|
sbVillageServer.AppendLine("");
|
|
sbVillageServer.Append(str);
|
|
sbVillageServer.AppendLine("");
|
|
sbVillageServer.AppendLine(VillageServerTag_End);
|
|
|
|
/**
|
|
* function, api 마다 "pRoom," 추가
|
|
* function pattern (function)\s\w+\s?\(
|
|
* api_ pattern (api_)\w+\s?\(
|
|
* 함수 명에 onTalk 포함 .*_OnTalk_.*\s?\
|
|
*/
|
|
Regex pattern = new Regex(@"(function)\s\w+\s?\(|(api_)\w+\s?\(|.*_OnTalk_.*\s?\(", RegexOptions.IgnoreCase);
|
|
Match m;
|
|
string gameServerParameter = " pRoom, ";
|
|
|
|
List<string> regiList = new List<string>();
|
|
|
|
for (m = pattern.Match(str); m.Success; m = m.NextMatch())
|
|
{
|
|
if (!regiList.Contains(m.Groups[0].Value))
|
|
{
|
|
regiList.Add(m.Groups[0].Value);
|
|
str = str.Replace(m.Groups[0].Value, m.Groups[0].Value + gameServerParameter);
|
|
}
|
|
}
|
|
|
|
//Game Server Tag 추가
|
|
sbVillageServer.AppendLine("");
|
|
sbVillageServer.Append(GameServerTag_Start);
|
|
sbVillageServer.AppendLine("");
|
|
sbVillageServer.Append(str);
|
|
sbVillageServer.AppendLine("");
|
|
sbVillageServer.Append(GameServerTag_End);
|
|
|
|
return sbVillageServer.ToString();
|
|
}
|
|
|
|
private string _writeExeBlock(DataRow p_exe, string p_step, string p_type, ref int p_talk, string p_next_qid, string p_next_npc, string p_next_qename, bool b_condition)
|
|
{
|
|
if (p_exe == null)
|
|
return "";
|
|
|
|
string qstep = p_step;
|
|
string linkdata = "";
|
|
bool remotecomplete = false;
|
|
|
|
switch (p_type)
|
|
{
|
|
case "onexe":
|
|
linkdata = p_exe["onexe"].ToString();
|
|
break;
|
|
case "exe":
|
|
linkdata = p_exe["exe"].ToString();
|
|
break;
|
|
case "all":
|
|
linkdata = p_exe["exe_Text"].ToString();
|
|
break;
|
|
case "rc_Text":
|
|
{
|
|
linkdata = p_exe["rc_Text"].ToString();
|
|
remotecomplete = true;
|
|
}
|
|
break;
|
|
case "exelink_Text":
|
|
{
|
|
if (p_exe["qstep"].ToString() == "complete")
|
|
return "";
|
|
|
|
linkdata = p_exe["exelink_Text"].ToString();
|
|
qstep = p_exe["qstep"].ToString();
|
|
}
|
|
break;
|
|
default:
|
|
linkdata = p_exe["exe_Text"].ToString();
|
|
break;
|
|
}
|
|
|
|
DataRow[] rows_qstep = m_savingDataSet.Tables["qstep_change"].Select("qstep = '" + qstep + "'");
|
|
DataRow row_qstep = rows_qstep[0];
|
|
DataRow[] rows_executions = m_savingDataSet.Tables["executions"].Select("qstep_change_Id = '" + row_qstep["qstep_change_Id"].ToString() + "'");
|
|
DataRow row_executions = rows_executions[0];
|
|
DataRow[] rows_exe = m_savingDataSet.Tables["exe"].Select("executions_Id = '" + row_executions["executions_Id"].ToString() + "'");
|
|
|
|
return _writeExeBlock_Detail(rows_exe, p_step, linkdata, ref p_talk, p_next_qid, p_next_npc, p_next_qename, b_condition, remotecomplete);
|
|
}
|
|
|
|
private string _writeExeBlock_Detail(DataRow[] p_exelink, string p_step, string p_count, ref int p_talk, string p_next_qid, string p_next_npc, string p_next_qename, bool b_condition, bool b_remotecomplete)
|
|
{
|
|
string ret_str = "";
|
|
|
|
if (p_exelink == null)
|
|
{
|
|
return "";
|
|
}
|
|
|
|
string[] arr_index = p_count.Split(',');
|
|
|
|
foreach (string index in arr_index)
|
|
{
|
|
if (index == "")
|
|
continue;
|
|
|
|
if (Convert.ToInt16(index) >= p_exelink.Length)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
DataRow row_exe = p_exelink[Convert.ToInt16(index)];
|
|
|
|
int rcstep = 0;
|
|
DataRow[] rows_remotecomplete = m_savingDataSet.Tables["remotecomplete"].Select();
|
|
if (0 < rows_remotecomplete.Length)
|
|
{
|
|
rcstep = Convert.ToInt32(rows_remotecomplete[0]["qstep"].ToString());
|
|
}
|
|
|
|
switch (row_exe["type"].ToString())
|
|
{
|
|
case "setstep":
|
|
ret_str += "\t\t\t\tapi_quest_SetQuestStep(userObjID, questID," + row_exe["exe_Text"].ToString() + ");\r\n";
|
|
|
|
if (null != row_exe["executions_id"] && "accepting" == row_exe["executions_id"].ToString() && false == b_condition)
|
|
{
|
|
m_strRemoteStartData += "\t\t\t\tapi_quest_SetQuestStep(userObjID, questID," + row_exe["exe_Text"].ToString() + ");\r\n";
|
|
}
|
|
break;
|
|
case "setjornal":
|
|
ret_str += "\t\t\t\tapi_quest_SetJournalStep(userObjID, questID, " + row_exe["exe_Text"].ToString() + ");\r\n";
|
|
break;
|
|
case "delitem":
|
|
if (row_exe["num"].ToString() == "-1")
|
|
{
|
|
ret_str += "\r\n";
|
|
ret_str += "\t\t\t\tif api_user_HasItem(userObjID, " + row_exe["exe_Text"].ToString() + ", 1) > 0 then \r\n";
|
|
ret_str += "\t\t\t\t\tapi_user_DelItem(userObjID, " + row_exe["exe_Text"].ToString() + ", api_user_HasItem(userObjID, " + row_exe["exe_Text"].ToString() + ", 1, questID));\r\n";
|
|
ret_str += "\t\t\t\tend\r\n";
|
|
}
|
|
else
|
|
{
|
|
ret_str += "\t\t\t\tapi_user_DelItem(userObjID, " + row_exe["exe_Text"].ToString() + ", " + row_exe["num"].ToString() + ", questID);\r\n";
|
|
}
|
|
break;
|
|
case "delsymbol":
|
|
if (row_exe["num"].ToString() == "-1")
|
|
{
|
|
if( m_nCompleteType == 0)
|
|
{
|
|
ret_str += "\r\n";
|
|
ret_str += "\t\t\t\tif api_quest_HasQuestItem(userObjID, " + row_exe["exe_Text"].ToString() + ", 1) > 0 then \r\n";
|
|
ret_str += "\t\t\t\t\tapi_quest_DelQuestItem(userObjID, " + row_exe["exe_Text"].ToString() + ", api_quest_HasQuestItem(userObjID, " + row_exe["exe_Text"].ToString() + ", 1));\r\n";
|
|
ret_str += "\t\t\t\tend\r\n";
|
|
}
|
|
else
|
|
{
|
|
ret_str += "\r\n";
|
|
ret_str += "\t\t\t\tif api_user_HasItem(userObjID, " + row_exe["exe_Text"].ToString() + ", 1) > 0 then \r\n";
|
|
ret_str += "\t\t\t\t\tapi_user_DelItem(userObjID, " + row_exe["exe_Text"].ToString() + ", api_user_HasItem(userObjID, " + row_exe["exe_Text"].ToString() + ", 1));\r\n";
|
|
ret_str += "\t\t\t\tend\r\n";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (m_nCompleteType == 0)
|
|
{
|
|
ret_str += "\t\t\t\tapi_quest_DelQuestItem(userObjID, " + row_exe["exe_Text"].ToString() + ", " + row_exe["num"].ToString() + ");\r\n";
|
|
}
|
|
else
|
|
{
|
|
ret_str += "\t\t\t\tapi_user_DelItem(userObjID, " + row_exe["exe_Text"].ToString() + ", " + row_exe["num"].ToString() + ");\r\n";
|
|
}
|
|
}
|
|
break;
|
|
case "delquestitem":
|
|
if (row_exe["num"].ToString() == "-1")
|
|
{
|
|
ret_str += "\r\n";
|
|
ret_str += "\t\t\t\tif api_quest_HasQuestItem(userObjID, " + row_exe["exe_Text"].ToString() + ", 1) > 0 then \r\n";
|
|
ret_str += "\t\t\t\t\tapi_quest_DelQuestItem(userObjID, " + row_exe["exe_Text"].ToString() + ", api_quest_HasQuestItem(userObjID, " + row_exe["exe_Text"].ToString() + ", 1));\r\n";
|
|
ret_str += "\t\t\t\tend\r\n";
|
|
}
|
|
else
|
|
{
|
|
ret_str += "\t\t\t\tapi_quest_DelQuestItem(userObjID, " + row_exe["exe_Text"].ToString() + ", " + row_exe["num"].ToString() + ");\r\n";
|
|
}
|
|
break;
|
|
case "additem":
|
|
{
|
|
string sExe_Text = row_exe["exe_Text"].ToString();
|
|
string sNum = row_exe["num"].ToString();
|
|
char splitChar = ',';
|
|
if (sExe_Text.IndexOf(splitChar) > 0)
|
|
{
|
|
string[] sSplitItem = sExe_Text.Split(splitChar);
|
|
string[] sSplitNum = sNum.Split(splitChar);
|
|
if (sSplitItem.Length != sSplitNum.Length)
|
|
{
|
|
MessageBox.Show("아이템 인덱스 개수와 아이템 개수의 수가 일치하지 않습니다.\n 콤마(,)를 확인해 주세요.");
|
|
return "";
|
|
}
|
|
|
|
ret_str += "\t\t\t\t local TableItem = { ";
|
|
for (int i = 0; i < sSplitItem.Length; i++)
|
|
{
|
|
|
|
ret_str += "\t\t\t\t { " + sSplitItem[i] + ", " + sSplitNum[i] + " } ";
|
|
ret_str += (sSplitItem.Length - 1 > i) ? " , \r\n" : " \r\n";
|
|
}
|
|
|
|
ret_str += " \t\t\t\t} \r\n";
|
|
|
|
ret_str += "\t\t\t\tif api_user_CheckInvenForAddItemList(userObjID, TableItem) == 1 then\r\n";
|
|
for (int i = 0; i < sSplitItem.Length; i++)
|
|
{
|
|
ret_str += "\t\t\t\t\tapi_user_AddItem(userObjID, " + sSplitItem[i] + ", " + sSplitNum[i] + ", questID);\r\n";
|
|
}
|
|
ret_str += "\t\t\t\telse\r\n";
|
|
ret_str += "\t\t\t\t\tlocal Ts = {};\r\n";
|
|
ret_str += "\t\t\t\t\tapi_user_UserMessage(userObjID,6,1200101, Ts);\r\n";
|
|
ret_str += "\t\t\t\t\treturn;\r\n";
|
|
ret_str += "\t\t\t\tend\r\n";
|
|
}
|
|
else
|
|
{
|
|
ret_str += "\t\t\t\tif api_user_CheckInvenForAddItem(userObjID, " + row_exe["exe_Text"].ToString() + ", " + row_exe["num"].ToString() + ") == 1 then\r\n";
|
|
ret_str += "\t\t\t\t\tapi_user_AddItem(userObjID, " + row_exe["exe_Text"].ToString() + ", " + row_exe["num"].ToString() + ", questID);\r\n";
|
|
ret_str += "\t\t\t\telse\r\n";
|
|
ret_str += "\t\t\t\t\tlocal Ts = {};\r\n";
|
|
ret_str += "\t\t\t\t\tapi_user_UserMessage(userObjID,6,1200101, Ts);\r\n";
|
|
ret_str += "\t\t\t\t\treturn;\r\n";
|
|
ret_str += "\t\t\t\tend\r\n";
|
|
}
|
|
}
|
|
break;
|
|
case "addsymbol":
|
|
if (m_nCompleteType == 0)
|
|
{
|
|
ret_str += "\t\t\t\tif api_quest_CheckQuestInvenForAddItem(userObjID, " + row_exe["exe_Text"].ToString() + ", " + row_exe["num"].ToString() + ") == 1 then \r\n";
|
|
ret_str += "\t\t\t\t\tapi_quest_AddQuestItem(userObjID, " + row_exe["exe_Text"].ToString() + ", " + row_exe["num"].ToString() + ", questID);\r\n";
|
|
ret_str += "\t\t\t\telse\r\n";
|
|
ret_str += "\t\t\t\t\tlocal Ts = {};\r\n";
|
|
ret_str += "\t\t\t\t\tapi_user_UserMessage(userObjID,6,1200101, Ts);\r\n";
|
|
ret_str += "\t\t\t\t\treturn;\r\n";
|
|
ret_str += "\t\t\t\tend\r\n";
|
|
}
|
|
else
|
|
{
|
|
ret_str += "\t\t\t\tif api_user_CheckInvenForAddItem(userObjID, " + row_exe["exe_Text"].ToString() + ", " + row_exe["num"].ToString() + ") == 1 then \r\n";
|
|
ret_str += "\t\t\t\tapi_user_AddItem(userObjID, " + row_exe["exe_Text"].ToString() + ", " + row_exe["num"].ToString() + ", questID);\r\n";
|
|
ret_str += "\t\t\t\telse\r\n";
|
|
ret_str += "\t\t\t\t\tlocal Ts = {};\r\n";
|
|
ret_str += "\t\t\t\t\tapi_user_UserMessage(userObjID,6,1200101, Ts);\r\n";
|
|
ret_str += "\t\t\t\t\treturn;\r\n";
|
|
ret_str += "\t\t\t\tend\r\n";
|
|
}
|
|
break;
|
|
case "addquestitem":
|
|
{
|
|
string sExe_Text = row_exe["exe_Text"].ToString();
|
|
string sNum = row_exe["num"].ToString();
|
|
char splitChar = ',';
|
|
if (sExe_Text.IndexOf(splitChar) > 0)
|
|
{
|
|
string[] sSplitItem = sExe_Text.Split(splitChar);
|
|
string[] sSplitNum = sNum.Split(splitChar);
|
|
if (sSplitItem.Length != sSplitNum.Length)
|
|
{
|
|
MessageBox.Show("아이템 인덱스 개수와 아이템 개수의 수가 일치하지 않습니다.\n 콤마(,)를 확인해 주세요.");
|
|
return "";
|
|
}
|
|
|
|
ret_str += "\t\t\t\t local TableItem = { \r\n";
|
|
for (int i = 0; i < sSplitItem.Length; i++)
|
|
{
|
|
ret_str += "\t\t\t\t { " + sSplitItem[i].Trim() + ", " + sSplitNum[i].Trim() + " } ";
|
|
ret_str += (sSplitItem.Length - 1 > i) ? " , \r\n" : " \r\n";
|
|
}
|
|
|
|
ret_str += " \t\t\t\t} \r\n";
|
|
|
|
ret_str += "\t\t\t\tif api_quest_CheckQuestInvenForAddItemList(userObjID, TableItem) == 1 then\r\n";
|
|
for (int i = 0; i < sSplitItem.Length; i++)
|
|
{
|
|
ret_str += "\t\t\t\t\t\tapi_quest_AddQuestItem(userObjID, " + sSplitItem[i] + ", " + sSplitNum[i] + ", questID);\r\n";
|
|
}
|
|
ret_str += "\t\t\t\telse\r\n";
|
|
ret_str += "\t\t\t\t\tlocal Ts = {};\r\n";
|
|
ret_str += "\t\t\t\t\tapi_user_UserMessage(userObjID,6,1200101, Ts);\r\n";
|
|
ret_str += "\t\t\t\t\treturn;\r\n";
|
|
ret_str += "\t\t\t\tend\r\n";
|
|
}
|
|
else
|
|
{
|
|
ret_str += "\t\t\t\tif api_quest_CheckQuestInvenForAddItem(userObjID, " + row_exe["exe_Text"].ToString() + ", " + row_exe["num"].ToString() + ") == 1 then \r\n";
|
|
ret_str += "\t\t\t\t\tapi_quest_AddQuestItem(userObjID, " + row_exe["exe_Text"].ToString() + ", " + row_exe["num"].ToString() + ", questID);\r\n";
|
|
ret_str += "\t\t\t\telse\r\n";
|
|
ret_str += "\t\t\t\t\tlocal Ts = {};\r\n";
|
|
ret_str += "\t\t\t\t\tapi_user_UserMessage(userObjID,6,1200101, Ts);\r\n";
|
|
ret_str += "\t\t\t\t\treturn;\r\n";
|
|
ret_str += "\t\t\t\tend\r\n";
|
|
}
|
|
}
|
|
break;
|
|
case "checkStageClearRank":
|
|
ret_str += "\t\t\t\tapi_quest_SetCountingInfo(userObjID, questID, " + (m_nHuntCount % 30).ToString() + ", 5, " + row_exe["num"].ToString() + ", 1 );\r\n";
|
|
|
|
if (null != row_exe["executions_id"] && "accepting" == row_exe["executions_id"].ToString())
|
|
{
|
|
m_strRemoteStartData += "\t\t\t\tapi_quest_SetCountingInfo(userObjID, questID, " + (m_nHuntCount % 30).ToString() + ", 5, " + row_exe["num"].ToString() + ", 1 );\r\n";
|
|
}
|
|
|
|
++m_nHuntCount;
|
|
break;
|
|
case "huntmon":
|
|
string[] array_monster = row_exe["exe_Text"].ToString().Split(',');
|
|
|
|
foreach (string monster in array_monster)
|
|
{
|
|
ret_str += "\t\t\t\tapi_quest_SetCountingInfo(userObjID, questID, " + (m_nHuntCount % 30).ToString() + ", " + (Convert.ToInt16(row_exe["party"].ToString()) + 1).ToString() + ", " + monster + ", " + row_exe["num"].ToString() + ");\r\n";
|
|
|
|
if (null != row_exe["executions_id"] && "accepting" == row_exe["executions_id"].ToString())
|
|
{
|
|
m_strRemoteStartData += "\t\t\t\tapi_quest_SetCountingInfo(userObjID, questID, " + (m_nHuntCount % 30).ToString() + ", " + (Convert.ToInt16(row_exe["party"].ToString()) + 1).ToString() + ", " + monster + ", " + row_exe["num"].ToString() + ");\r\n";
|
|
}
|
|
|
|
++m_nHuntCount;
|
|
}
|
|
break;
|
|
case "huntitem":
|
|
ret_str += "\t\t\t\tapi_quest_SetCountingInfo(userObjID, questID, " + (m_nHuntCount % 30).ToString() + ", 3, " + row_exe["exe_Text"].ToString() + ", " + row_exe["num"].ToString() + ");\r\n";
|
|
|
|
if (null != row_exe["executions_id"] && "accepting" == row_exe["executions_id"].ToString())
|
|
{
|
|
m_strRemoteStartData += "\t\t\t\tapi_quest_SetCountingInfo(userObjID, questID, " + (m_nHuntCount % 30).ToString() + ", 3, " + row_exe["exe_Text"].ToString() + ", " + row_exe["num"].ToString() + ");\r\n";
|
|
}
|
|
|
|
++m_nHuntCount;
|
|
break;
|
|
case "huntsymbol":
|
|
ret_str += "\t\t\t\tapi_quest_SetCountingInfo(userObjID, questID, " + (m_nHuntCount % 30).ToString() + ", 3, " + row_exe["exe_Text"].ToString() + ", " + row_exe["num"].ToString() + ");\r\n";
|
|
++m_nHuntCount;
|
|
break;
|
|
case "huntall":
|
|
break;
|
|
case "setDailyQuest":
|
|
ret_str += "\t\t\t\t if api_quest_AddDailyQuest(userObjID," + row_exe["exe_Text"].ToString() + ", " + m_strQuestType + ") == 1 then \r\n";
|
|
ret_str += "\t\t\t\t\t api_quest_SetJournalStep(userObjID," + row_exe["exe_Text"].ToString() + ", 1);\r\n";
|
|
ret_str += "\t\t\t\t\t api_quest_SetQuestStep(userObjID," + row_exe["exe_Text"].ToString() + ", 1);\r\n";
|
|
ret_str += "\t" + _writeExeBlock_Detail(p_exelink, p_step, row_exe["true"].ToString(), ref p_talk, p_next_qid, p_next_npc, p_next_qename, b_condition, false);
|
|
ret_str += "\t\t\t\t else \r\n";
|
|
if (row_exe["false"] == null || string.IsNullOrEmpty(row_exe["false"].ToString()))
|
|
ret_str += "\t\t\t\tnpc_talk_index = \"_daily_quest_fail\";";
|
|
else
|
|
ret_str += "\t" + _writeExeBlock_Detail(p_exelink, p_step, row_exe["false"].ToString(), ref p_talk, p_next_qid, p_next_npc, p_next_qename, b_condition, false);
|
|
|
|
ret_str += "\t\t\t\t end \r\n";
|
|
break;
|
|
case "setquest":
|
|
ret_str += "\t\t\t\tapi_quest_AddQuest(userObjID," + row_exe["exe_Text"].ToString() + ", " + m_strQuestType + ");\r\n";
|
|
ret_str += "\t\t\t\tapi_quest_SetJournalStep(userObjID," + row_exe["exe_Text"].ToString() + ", 1);\r\n";
|
|
ret_str += "\t\t\t\tapi_quest_SetQuestStep(userObjID," + row_exe["exe_Text"].ToString() + ", 1);\r\n";
|
|
break;
|
|
case "msg":
|
|
ret_str += "\n\t\t\t\tlocal " + "TP_" + p_step + "_" + p_count.Replace(',', '_') + " = {};\n\t\t\t\tapi_user_UserMessage(userObjID," + row_exe["msg_type"].ToString() + ", " + row_exe["exe_Text"].ToString() + ", " + "TP_" + p_step + "_" + p_count.Replace(',', '_') + ");\r\n";
|
|
break;
|
|
case "talk":
|
|
int p_temp = 0;
|
|
|
|
if (Int32.TryParse(row_exe["exe_Text"].ToString(), out p_temp))
|
|
{
|
|
ret_str += "\t\t\t\tnpc_talk_index = \"" + row_exe["npc"].ToString() + "-" + row_exe["exe_Text"].ToString() + "\";";
|
|
p_talk = 1;
|
|
}
|
|
else
|
|
{
|
|
ret_str += "\t\t\t\tnpc_talk_index = \"" + row_exe["npc"].ToString() + "-" + p_step.ToString() + "-" + row_exe["exe_Text"].ToString() + "\";";
|
|
p_talk = 1;
|
|
}
|
|
|
|
++p_talk;
|
|
break;
|
|
case "random_coice":
|
|
|
|
string[] temp = row_exe["rand"].ToString().Split(',');
|
|
string[] exe = row_exe["exe_Text"].ToString().Split(',');
|
|
int sum = 0;
|
|
|
|
foreach (string value in temp)
|
|
{
|
|
sum += Convert.ToInt16(value);
|
|
}
|
|
|
|
ret_str += "\t\t\t\tlocal rcval_" + p_step + "_" + index + " = math.random(1," + sum.ToString() + ");\r\n";
|
|
|
|
int value_prev = 1;
|
|
|
|
for (int i = 0; i < temp.Length; ++i)
|
|
{
|
|
int value = 0;
|
|
|
|
if (i > 0)
|
|
{
|
|
for (int j = 0; j <= i; ++j)
|
|
{
|
|
value += Convert.ToInt32(temp[j]);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
value = Convert.ToInt32(temp[i]);
|
|
}
|
|
|
|
ret_str += "\t\t\t\tif rcval_" + p_step + "_" + index + " >= " + value_prev.ToString() + " and rcval_" + p_step + "_" + index + " < " + value.ToString() + " then\r\n";
|
|
|
|
DataRow[] row_tempqstepchange = m_savingDataSet.Tables["qstep_change"].Select("qstep = '" + p_step + "'");
|
|
DataRow[] row_tempexecution = m_savingDataSet.Tables["executions"].Select("qstep_change_Id = '" + row_tempqstepchange[0]["qstep_change_Id"].ToString() + "'");
|
|
DataRow[] row_tempexe = m_savingDataSet.Tables["exe"].Select("executions_Id = '" + row_tempexecution[0]["executions_Id"].ToString() + "'");
|
|
|
|
ret_str += "\t" + _writeExeBlock_Detail(row_tempexe, p_step, exe[i], ref p_talk, p_next_qid, p_next_npc, p_next_qename, b_condition, false);
|
|
|
|
ret_str += "\t\t\t\tend\r\n";
|
|
|
|
value_prev = value;
|
|
}
|
|
|
|
break;
|
|
case "conexe":
|
|
ret_str += "\t\t\t\tif " + _writeChkBlock(p_step, row_exe["exe_Text"].ToString()) + "then\r\n";
|
|
|
|
if (row_exe["true"].ToString() != "")
|
|
ret_str += "\t\t\t\t\t" + _writeExeBlock_Detail(p_exelink, p_step, row_exe["true"].ToString(), ref p_talk, p_next_qid, p_next_npc, p_next_qename, b_condition, false) + "\r\n";
|
|
|
|
ret_str += "\t\t\t\telse" + "\r\n";
|
|
|
|
if (row_exe["false"].ToString() != "")
|
|
ret_str += "\t\t\t\t\t" + _writeExeBlock_Detail(p_exelink, p_step, row_exe["false"].ToString(), ref p_talk, p_next_qid, p_next_npc, p_next_qename, b_condition, false) + "\r\n";
|
|
|
|
ret_str += "\t\t\t\tend\r\n";
|
|
break;
|
|
case "exp":
|
|
ret_str += "\t\t\t\tapi_user_AddExp(userObjID, questID, " + row_exe["exe_Text"].ToString() + ");\r\n";
|
|
break;
|
|
case "money":
|
|
ret_str += "\t\t\t\tapi_user_AddCoin(userObjID, " + row_exe["exe_Text"].ToString() + ", questID );\r\n";
|
|
break;
|
|
case "moneyDelete":
|
|
ret_str += "\t\t\t\t if api_user_GetCoin( userObjID ) > " + row_exe["num"].ToString() + " then \r\n";
|
|
ret_str += "\t\t\t\t\t api_user_DelCoin( userObjID, " + row_exe["num"].ToString() + ", questID ); \r\n";
|
|
ret_str += "\t\t\t\t\t" + _writeExeBlock_Detail(p_exelink, p_step, row_exe["onexe"].ToString(), ref p_talk, p_next_qid, p_next_npc, p_next_qename, b_condition, false) + "\r\n";
|
|
ret_str += "\t\t\t\t else \r\n";
|
|
ret_str += "\t\t\t\t\t" + _writeExeBlock_Detail(p_exelink, p_step, row_exe["exe_Text"].ToString(), ref p_talk, p_next_qid, p_next_npc, p_next_qename, b_condition, false) + "\r\n";
|
|
ret_str += "\t\t\t\t end \r\n";
|
|
break;
|
|
case "complete":
|
|
// 반복성일 경우 - true, 일회성일 경우 - false
|
|
// comboBox_CompleteType[0] - 1회성, comboBox_CompleteType[1] - 반복성
|
|
if (m_nCompleteType == 0)
|
|
ret_str += "\r\n\t\t\t\tcqresult = api_quest_CompleteQuest(userObjID, questID, true, false);";
|
|
else
|
|
ret_str += "\r\n\t\t\t\tcqresult = api_quest_CompleteQuest(userObjID, questID, true, true);";
|
|
|
|
ret_str += "\r\n\t\t\t\tif cqresult == 1 then";
|
|
|
|
if (p_next_qid != "")
|
|
{
|
|
ret_str += "\r\n\t\t\t\t\tapi_quest_AddQuest(userObjID, " + p_next_qid + ", " + m_strQuestType + ");";
|
|
ret_str += "\r\n\t\t\t\t\tapi_quest_SetQuestStep(userObjID, " + p_next_qid + ", 1);";
|
|
ret_str += "\r\n\t\t\t\t\tapi_quest_SetJournalStep(userObjID, " + p_next_qid + ", 1);\r\n";
|
|
}
|
|
|
|
if ("" != row_exe["true"].ToString())
|
|
{
|
|
if (row_exe["type"].ToString() != "complete" || row_exe["true"].ToString() != index) // 무한루프 제거
|
|
{
|
|
ret_str += "\r\n\t\t\t\t\t" + _writeExeBlock_Detail(p_exelink, p_step, row_exe["true"].ToString(), ref p_talk, p_next_qid, p_next_npc, p_next_qename, b_condition, false) + "\r\n";
|
|
}
|
|
}
|
|
|
|
ret_str += "\r\n\t\t\t\telse";
|
|
ret_str += "\r\n\t\t\t\t\tnpc_talk_index = \"_full_inventory\";\r\n";
|
|
ret_str += "\r\n\t\t\t\tend\r\n";
|
|
break;
|
|
case "movie":
|
|
ret_str += "\t\t\t\tapi_user_PlayCutScene(userObjID, " + row_exe["exe_Text"].ToString() + ");\r\n";
|
|
break;
|
|
case "delcount":
|
|
ret_str += "\t\t\t\tapi_quest_ClearCountingInfo(userObjID, questID);\r\n";
|
|
break;
|
|
case "custom":
|
|
//커스텀 코드로 api_quest_RewardQuestUser를 넣었고 questID가 없을 경우 questID를 넣어준다.
|
|
if (row_exe["exe_Text"].ToString().IndexOf("api_quest_RewardQuestUser") >= 0 && row_exe["exe_Text"].ToString().IndexOf("questID") < 0)
|
|
{
|
|
string temp_str = row_exe["exe_Text"].ToString();
|
|
temp_str = temp_str.Insert(temp_str.LastIndexOf(')'), ", questID");
|
|
ret_str += "\t\t\t\t" + temp_str + "\r\n";
|
|
}
|
|
else
|
|
{
|
|
ret_str += "\t\t\t\t" + row_exe["exe_Text"].ToString() + "\r\n";
|
|
}
|
|
break;
|
|
case "return":
|
|
ret_str += "\t\t\t\treturn;\r\n";
|
|
break;
|
|
case "fullinven":
|
|
ret_str += "\t\t\t\tnpc_talk_index = \"_full_inventory\";\r\n";
|
|
break;
|
|
case "fullquest":
|
|
ret_str += "\t\t\t\tnpc_talk_index = \"_full_quest\";\r\n";
|
|
break;
|
|
case "recompense_view":
|
|
{
|
|
//Class 별 보상창 출력 구현 20091030
|
|
string exe_Text = row_exe["exe_Text"].ToString();
|
|
if (exe_Text.IndexOf(',') > -1)
|
|
{
|
|
string[] classesReward = exe_Text.Split(',');
|
|
for (int i = 0; i < classesReward.Length; i++)
|
|
{
|
|
if (classesReward[i].Trim().Length < 1)
|
|
classesReward[i] = classesReward[0];
|
|
}
|
|
|
|
ret_str += "\t\t\t if api_user_GetUserClassID(userObjID) == 1 then \r\n";
|
|
ret_str += "\t\t\t\t api_ui_OpenQuestReward(userObjID, " + classesReward[1] + ", false);\r\n";
|
|
ret_str += "\t\t\t elseif api_user_GetUserClassID(userObjID) == 2 then \r\n";
|
|
ret_str += "\t\t\t\t api_ui_OpenQuestReward(userObjID, " + classesReward[2] + ", false);\r\n";
|
|
ret_str += "\t\t\t elseif api_user_GetUserClassID(userObjID) == 3 then \r\n";
|
|
ret_str += "\t\t\t\t api_ui_OpenQuestReward(userObjID, " + classesReward[3] + ", false);\r\n";
|
|
ret_str += "\t\t\t elseif api_user_GetUserClassID(userObjID) == 4 then \r\n";
|
|
ret_str += "\t\t\t\t api_ui_OpenQuestReward(userObjID, " + classesReward[4] + ", false);\r\n";
|
|
if (classesReward.Length > 5)
|
|
{
|
|
ret_str += "\t\t\t elseif api_user_GetUserClassID(userObjID) == 5 then \r\n";
|
|
ret_str += "\t\t\t\t api_ui_OpenQuestReward(userObjID, " + classesReward[5] + ", false);\r\n";
|
|
}
|
|
if (classesReward.Length > 6)
|
|
{
|
|
ret_str += "\t\t\t elseif api_user_GetUserClassID(userObjID) == 6 then \r\n";
|
|
ret_str += "\t\t\t\t api_ui_OpenQuestReward(userObjID, " + classesReward[6] + ", false);\r\n";
|
|
}
|
|
if (classesReward.Length > 7)
|
|
{
|
|
ret_str += "\t\t\t elseif api_user_GetUserClassID(userObjID) == 7 then \r\n";
|
|
ret_str += "\t\t\t\t api_ui_OpenQuestReward(userObjID, " + classesReward[7] + ", false);\r\n";
|
|
}
|
|
ret_str += "\t\t\t end \r\n";
|
|
}
|
|
else
|
|
{
|
|
ret_str += "\t\t\t\tapi_ui_OpenQuestReward(userObjID, " + row_exe["exe_Text"].ToString() + ", false);\r\n";
|
|
}
|
|
}
|
|
break;
|
|
case "recompense":
|
|
{
|
|
string exe_Text = row_exe["exe_Text"].ToString();
|
|
if (exe_Text.IndexOf(',') > -1)
|
|
{
|
|
string[] classesReward = exe_Text.Split(',');
|
|
for (int i = 0; i < classesReward.Length; i++)
|
|
{
|
|
if (classesReward[i].Trim().Length < 1)
|
|
{
|
|
classesReward[i] = classesReward[0];
|
|
}
|
|
}
|
|
|
|
ret_str += "\t\t\t if api_user_GetUserClassID(userObjID) == 1 then \r\n";
|
|
if (false == b_remotecomplete)
|
|
{
|
|
ret_str += "\t\t\t\t api_ui_OpenQuestReward(userObjID, " + classesReward[1] + ", true);\r\n";
|
|
}
|
|
ret_str += "\t\t\t\t api_quest_RewardQuestUser(userObjID, " + classesReward[1] + ", questID, 1);\r\n";
|
|
ret_str += "\t\t\t elseif api_user_GetUserClassID(userObjID) == 2 then \r\n";
|
|
if (false == b_remotecomplete)
|
|
{
|
|
ret_str += "\t\t\t\t api_ui_OpenQuestReward(userObjID, " + classesReward[2] + ", true);\r\n";
|
|
}
|
|
ret_str += "\t\t\t\t api_quest_RewardQuestUser(userObjID, " + classesReward[2] + ", questID, 1);\r\n";
|
|
ret_str += "\t\t\t elseif api_user_GetUserClassID(userObjID) == 3 then \r\n";
|
|
if (false == b_remotecomplete)
|
|
{
|
|
ret_str += "\t\t\t\t api_ui_OpenQuestReward(userObjID, " + classesReward[3] + ", true);\r\n";
|
|
}
|
|
ret_str += "\t\t\t\t api_quest_RewardQuestUser(userObjID, " + classesReward[3] + ", questID, 1);\r\n";
|
|
ret_str += "\t\t\t elseif api_user_GetUserClassID(userObjID) == 4 then \r\n";
|
|
if (false == b_remotecomplete)
|
|
{
|
|
ret_str += "\t\t\t\t api_ui_OpenQuestReward(userObjID, " + classesReward[4] + ", true);\r\n";
|
|
}
|
|
ret_str += "\t\t\t\t api_quest_RewardQuestUser(userObjID, " + classesReward[4] + ", questID, 1);\r\n";
|
|
if (classesReward.Length > 5)
|
|
{
|
|
ret_str += "\t\t\t elseif api_user_GetUserClassID(userObjID) == 5 then \r\n";
|
|
if (false == b_remotecomplete)
|
|
{
|
|
ret_str += "\t\t\t\t api_ui_OpenQuestReward(userObjID, " + classesReward[5] + ", true);\r\n";
|
|
}
|
|
ret_str += "\t\t\t\t api_quest_RewardQuestUser(userObjID, " + classesReward[5] + ", questID, 1);\r\n";
|
|
}
|
|
if (classesReward.Length > 6)
|
|
{
|
|
ret_str += "\t\t\t elseif api_user_GetUserClassID(userObjID) == 6 then \r\n";
|
|
if (false == b_remotecomplete)
|
|
{
|
|
ret_str += "\t\t\t\t api_ui_OpenQuestReward(userObjID, " + classesReward[6] + ", true);\r\n";
|
|
}
|
|
ret_str += "\t\t\t\t api_quest_RewardQuestUser(userObjID, " + classesReward[6] + ", questID, 1);\r\n";
|
|
}
|
|
if (classesReward.Length > 7)
|
|
{
|
|
ret_str += "\t\t\t elseif api_user_GetUserClassID(userObjID) == 7 then \r\n";
|
|
if (false == b_remotecomplete)
|
|
{
|
|
ret_str += "\t\t\t\t api_ui_OpenQuestReward(userObjID, " + classesReward[7] + ", true);\r\n";
|
|
}
|
|
ret_str += "\t\t\t\t api_quest_RewardQuestUser(userObjID, " + classesReward[7] + ", questID, 1);\r\n";
|
|
}
|
|
|
|
ret_str += "\t\t\t end \r\n";
|
|
}
|
|
else
|
|
{
|
|
if (false == b_remotecomplete)
|
|
{
|
|
ret_str += "\t\t\t\t api_ui_OpenQuestReward(userObjID, " + row_exe["exe_Text"].ToString() + ", true);\r\n";
|
|
}
|
|
ret_str += "\t\t\t\t api_quest_RewardQuestUser(userObjID, " + row_exe["exe_Text"].ToString() + ", questID, 1);\r\n";
|
|
}
|
|
}
|
|
break;
|
|
case "addItemAndQuestItem":
|
|
{
|
|
string sExe_Text = row_exe["exe_Text"].ToString();
|
|
string sNum = row_exe["num"].ToString();
|
|
char charSplitForQuestItemORItem = '|';
|
|
char splitChar = ',';
|
|
|
|
string[] sQuestItemsOrItems = null;
|
|
string[] sQuestItemsNumOrItemsNum = null;
|
|
|
|
if (sExe_Text.IndexOf(charSplitForQuestItemORItem) > 0 && sNum.IndexOf(charSplitForQuestItemORItem) > 0)
|
|
{
|
|
sQuestItemsOrItems = sExe_Text.Split(charSplitForQuestItemORItem);
|
|
sQuestItemsNumOrItemsNum = sNum.Split(charSplitForQuestItemORItem);
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show("Quest Item과 일반 아이템이 꼭 존재해야 합니다. "
|
|
+ "\n값이 존재하는지 확인하여주십시오."
|
|
+ "\nXML내에 문자(|)을 확인하여 주십시오.");
|
|
return "";
|
|
}
|
|
|
|
if (sExe_Text.IndexOf(splitChar) > 0)
|
|
{
|
|
string[] sSplitItem = sQuestItemsOrItems[0].Split(splitChar);
|
|
string[] sSplitNum = sQuestItemsNumOrItemsNum[0].Split(splitChar);
|
|
string[] sSplitQuestItem = sQuestItemsOrItems[1].Split(splitChar);
|
|
string[] sSplitQuestNum = sQuestItemsNumOrItemsNum[1].Split(splitChar);
|
|
|
|
if (sSplitItem.Length != sSplitNum.Length || sSplitQuestItem.Length != sSplitQuestNum.Length)
|
|
{
|
|
MessageBox.Show("아이템 인덱스 개수와 아이템 개수의 수가 일치하지 않습니다.\n 콤마(,)를 확인해 주세요.");
|
|
return "";
|
|
}
|
|
|
|
ret_str += "\t\t\t\t local TableItem = { ";
|
|
for (int i = 0; i < sSplitItem.Length; i++)
|
|
{
|
|
ret_str += "\t\t\t\t { " + sSplitItem[i] + ", " + sSplitNum[i] + " } ";
|
|
ret_str += (sSplitItem.Length - 1 > i) ? " , \r\n" : " \r\n";
|
|
}
|
|
ret_str += " \t\t\t\t} \r\n";
|
|
|
|
ret_str += "\t\t\t\t local TableItem2 = { ";
|
|
for (int i = 0; i < sSplitQuestItem.Length; i++)
|
|
{
|
|
ret_str += "\t\t\t\t { " + sSplitQuestItem[i] + ", " + sSplitQuestNum[i] + " } ";
|
|
ret_str += (sSplitQuestItem.Length - 1 > i) ? " , \r\n" : " \r\n";
|
|
}
|
|
ret_str += " \t\t\t\t} \r\n";
|
|
|
|
ret_str += "\t\t\t\tif api_user_CheckInvenForAddItemList(userObjID, TableItem) == 1 and api_quest_CheckQuestInvenForAddItemList(userObjID, TableItem2) == 1 then\r\n";
|
|
for (int i = 0; i < sSplitItem.Length; i++)
|
|
{
|
|
ret_str += "\t\t\t\t\tapi_user_AddItem(userObjID, " + sSplitItem[i] + ", " + sSplitNum[i] + ", questID);\r\n";
|
|
}
|
|
for (int i = 0; i < sSplitQuestItem.Length; i++)
|
|
{
|
|
ret_str += "\t\t\t\t\tapi_quest_AddQuestItem(userObjID, " + sSplitQuestItem[i] + ", " + sSplitQuestNum[i] + ", questID);\r\n";
|
|
}
|
|
ret_str += "\t\t\t\telse\r\n";
|
|
ret_str += "\t\t\t\t\tlocal Ts = {};\r\n";
|
|
ret_str += "\t\t\t\t\tapi_user_UserMessage(userObjID,6,1200101, Ts);\r\n";
|
|
ret_str += "\t\t\t\t\treturn;\r\n";
|
|
ret_str += "\t\t\t\tend\r\n";
|
|
}
|
|
else
|
|
{
|
|
ret_str += "\t\t\t\tif api_user_CheckInvenForAddItem(userObjID, " + sQuestItemsOrItems[0] + ", " + sQuestItemsNumOrItemsNum[0] + ") == 1 and api_quest_CheckQuestInvenForAddItem( userObjID, " + sQuestItemsOrItems[1] + ", " + sQuestItemsNumOrItemsNum[1] + ") == 1 then\r\n";
|
|
ret_str += "\t\t\t\t\tapi_user_AddItem(userObjID, " + sQuestItemsOrItems[0] + ", " + sQuestItemsNumOrItemsNum[0] + ", questID);\r\n";
|
|
ret_str += "\t\t\t\t\tapi_quest_AddQuestItem(userObjID, " + sQuestItemsOrItems[1] + ", " + sQuestItemsNumOrItemsNum[1] + ", questID);\r\n";
|
|
ret_str += "\t\t\t\telse\r\n";
|
|
ret_str += "\t\t\t\t\tlocal Ts = {};\r\n";
|
|
ret_str += "\t\t\t\t\tapi_user_UserMessage(userObjID,6,1200101, Ts);\r\n";
|
|
ret_str += "\t\t\t\t\treturn;\r\n";
|
|
ret_str += "\t\t\t\tend\r\n";
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
return ret_str;
|
|
}
|
|
|
|
private string _writeChkBlock(string p_step, string p_condition)
|
|
{
|
|
DataRow[] rows_conditions = m_savingDataSet.Tables["conditions"].Select("qstep_change_Id = '" + p_step + "'");
|
|
DataRow[] rows_chk = m_savingDataSet.Tables["chk"].Select("conditions_Id = '" + rows_conditions[0]["conditions_Id"].ToString() + "'");
|
|
|
|
string ret_string = "";
|
|
|
|
string[] condition = p_condition.Split(' ');
|
|
|
|
foreach (string str in condition)
|
|
{
|
|
int temp = 0;
|
|
|
|
if (!int.TryParse(str, out temp))
|
|
{
|
|
ret_string += " " + str.ToLower() + " ";
|
|
}
|
|
else
|
|
{
|
|
switch (rows_chk[temp]["type"].ToString())
|
|
{
|
|
case "lvl":
|
|
ret_string += "api_user_GetUserLevel(userObjID) " + rows_chk[temp]["op"].ToString().Replace('[', '<').Replace(']', '>') + " " + rows_chk[temp]["chk_Text"].ToString() + " ";
|
|
break;
|
|
case "item":
|
|
if (rows_chk[temp]["op"].ToString() == "[")
|
|
ret_string += "api_user_HasItem(userObjID, " + rows_chk[temp]["chk_Text"].ToString() + ", " + rows_chk[temp]["num"].ToString() + ") == -3 ";
|
|
else if (rows_chk[temp]["op"].ToString() == "[=")
|
|
ret_string += "( api_user_HasItem(userObjID, " + rows_chk[temp]["chk_Text"].ToString() + ", " + rows_chk[temp]["num"].ToString() + ") == -3 or api_user_HasItem(userObjID, " + rows_chk[temp]["chk_Text"].ToString() + ", " + rows_chk[temp]["num"].ToString() + ")== " + rows_chk[temp]["num"].ToString() + " )";
|
|
else if (rows_chk[temp]["op"].ToString() == "[]")
|
|
ret_string += "api_user_HasItem(userObjID, " + rows_chk[temp]["chk_Text"].ToString() + ", " + rows_chk[temp]["num"].ToString() + ") ~= " + rows_chk[temp]["num"].ToString() + " ";
|
|
else if (rows_chk[temp]["op"].ToString() == "=")
|
|
ret_string += "api_user_HasItem(userObjID, " + rows_chk[temp]["chk_Text"].ToString() + ", " + rows_chk[temp]["num"].ToString() + ") == " + rows_chk[temp]["num"].ToString() + " ";
|
|
else
|
|
ret_string += "api_user_HasItem(userObjID, " + rows_chk[temp]["chk_Text"].ToString() + ", " + rows_chk[temp]["num"].ToString() + ") " + rows_chk[temp]["op"].ToString().Replace('[', '<').Replace(']', '>') + " " + rows_chk[temp]["num"].ToString() + " ";
|
|
|
|
break;
|
|
case "symbol":
|
|
if (rows_chk[temp]["op"].ToString() == "[")
|
|
{
|
|
if (m_nCompleteType == 0)
|
|
ret_string += "api_quest_HasQuestItem(userObjID, " + rows_chk[temp]["chk_Text"].ToString() + ", " + rows_chk[temp]["num"].ToString() + ") == -3 ";
|
|
else
|
|
ret_string += "api_user_HasItem(userObjID, " + rows_chk[temp]["chk_Text"].ToString() + ", " + rows_chk[temp]["num"].ToString() + ") == -3 ";
|
|
}
|
|
else if (rows_chk[temp]["op"].ToString() == "[=")
|
|
{
|
|
if (m_nCompleteType == 0)
|
|
ret_string += "( api_quest_HasQuestItem(userObjID, " + rows_chk[temp]["chk_Text"].ToString() + ", " + rows_chk[temp]["num"].ToString() + ") == -3 or api_quest_HasQuestItem(userObjID, " + rows_chk[temp]["chk_Text"].ToString() + ", " + rows_chk[temp]["num"].ToString() + ")== " + rows_chk[temp]["num"].ToString() + " )";
|
|
else
|
|
ret_string += "( api_user_HasItem(userObjID, " + rows_chk[temp]["chk_Text"].ToString() + ", " + rows_chk[temp]["num"].ToString() + ") == -3 or api_user_HasItem(userObjID, " + rows_chk[temp]["chk_Text"].ToString() + ", " + rows_chk[temp]["num"].ToString() + ")== " + rows_chk[temp]["num"].ToString() + " )";
|
|
}
|
|
else if (rows_chk[temp]["op"].ToString() == "[]")
|
|
{
|
|
if (m_nCompleteType == 0)
|
|
ret_string += "api_quest_HasQuestItem(userObjID, " + rows_chk[temp]["chk_Text"].ToString() + ", " + rows_chk[temp]["num"].ToString() + ") ~= " + rows_chk[temp]["num"].ToString() + " ";
|
|
else
|
|
ret_string += "api_user_HasItem(userObjID, " + rows_chk[temp]["chk_Text"].ToString() + ", " + rows_chk[temp]["num"].ToString() + ") ~= " + rows_chk[temp]["num"].ToString() + " ";
|
|
}
|
|
else if (rows_chk[temp]["op"].ToString() == "=")
|
|
{
|
|
if (m_nCompleteType == 0)
|
|
ret_string += "api_quest_HasQuestItem(userObjID, " + rows_chk[temp]["chk_Text"].ToString() + ", " + rows_chk[temp]["num"].ToString() + ") == " + rows_chk[temp]["num"].ToString() + " ";
|
|
else
|
|
ret_string += "api_user_HasItem(userObjID, " + rows_chk[temp]["chk_Text"].ToString() + ", " + rows_chk[temp]["num"].ToString() + ") == " + rows_chk[temp]["num"].ToString() + " ";
|
|
}
|
|
else
|
|
{
|
|
if (m_nCompleteType == 0)
|
|
ret_string += "api_quest_HasQuestItem(userObjID, " + rows_chk[temp]["chk_Text"].ToString() + ", " + rows_chk[temp]["num"].ToString() + ") " + rows_chk[temp]["op"].ToString().Replace('[', '<').Replace(']', '>') + " " + rows_chk[temp]["num"].ToString() + " ";
|
|
else
|
|
ret_string += "api_user_HasItem(userObjID, " + rows_chk[temp]["chk_Text"].ToString() + ", " + rows_chk[temp]["num"].ToString() + ") " + rows_chk[temp]["op"].ToString().Replace('[', '<').Replace(']', '>') + " " + rows_chk[temp]["num"].ToString() + " ";
|
|
}
|
|
break;
|
|
case "questitem":
|
|
if (rows_chk[temp]["op"].ToString() == "[")
|
|
ret_string += "api_quest_HasQuestItem(userObjID, " + rows_chk[temp]["chk_Text"].ToString() + ", " + rows_chk[temp]["num"].ToString() + ") == -3 ";
|
|
else if (rows_chk[temp]["op"].ToString() == "[=")
|
|
ret_string += "( api_quest_HasQuestItem(userObjID, " + rows_chk[temp]["chk_Text"].ToString() + ", " + rows_chk[temp]["num"].ToString() + ") == -3 or api_quest_HasQuestItem(userObjID, " + rows_chk[temp]["chk_Text"].ToString() + ", " + rows_chk[temp]["num"].ToString() + ")== " + rows_chk[temp]["num"].ToString() + " )";
|
|
else if (rows_chk[temp]["op"].ToString() == "[]")
|
|
ret_string += "api_quest_HasQuestItem(userObjID, " + rows_chk[temp]["chk_Text"].ToString() + ", " + rows_chk[temp]["num"].ToString() + ") ~= " + rows_chk[temp]["num"].ToString() + " ";
|
|
else if (rows_chk[temp]["op"].ToString() == "=")
|
|
ret_string += "api_quest_HasQuestItem(userObjID, " + rows_chk[temp]["chk_Text"].ToString() + ", " + rows_chk[temp]["num"].ToString() + ") == " + rows_chk[temp]["num"].ToString() + " ";
|
|
else
|
|
ret_string += "api_quest_HasQuestItem(userObjID, " + rows_chk[temp]["chk_Text"].ToString() + ", " + rows_chk[temp]["num"].ToString() + ") " + rows_chk[temp]["op"].ToString().Replace('[', '<').Replace(']', '>') + " " + rows_chk[temp]["num"].ToString() + " ";
|
|
|
|
break;
|
|
|
|
case "class":
|
|
if (rows_chk[temp]["op"].ToString() == "=")
|
|
ret_string += "api_user_GetUserClassID(userObjID) == " + rows_chk[temp]["chk_Text"].ToString() + " ";
|
|
else if (rows_chk[temp]["op"].ToString() == "[")
|
|
ret_string += "api_user_GetUserClassID(userObjID) " + rows_chk[temp]["op"].ToString().Replace('[', '<') + " " + rows_chk[temp]["chk_Text"].ToString() + " ";
|
|
else if (rows_chk[temp]["op"].ToString() == "]")
|
|
ret_string += "api_user_GetUserClassID(userObjID) " + rows_chk[temp]["op"].ToString().Replace(']', '>') + " " + rows_chk[temp]["chk_Text"].ToString() + " ";
|
|
|
|
break;
|
|
|
|
case "prob":
|
|
ret_string += "math.random(1,1000) <= " + rows_chk[temp]["chk_Text"].ToString() + " ";
|
|
break;
|
|
case "hasquest":
|
|
ret_string += "api_quest_UserHasQuest(userObjID," + rows_chk[temp]["chk_Text"].ToString() + ") > -1 ";
|
|
break;
|
|
case "hascomq":
|
|
ret_string += "api_quest_IsMarkingCompleteQuest(userObjID, " + rows_chk[temp]["chk_Text"].ToString() + ") == 1 ";
|
|
break;
|
|
case "inven_eslot":
|
|
ret_string += "api_user_GetUserInvenBlankCount(userObjID) " + rows_chk[temp]["op"].ToString().Replace('[', '<').Replace(']', '>') + " " + rows_chk[temp]["chk_Text"].ToString() + " ";
|
|
break;
|
|
case "custom":
|
|
ret_string += rows_chk[temp]["chk_Text"].ToString() + " ";
|
|
break;
|
|
case "qcount":
|
|
ret_string += " api_quest_GetPlayingQuestCnt(userObjID) >= g_maxquest ";
|
|
break;
|
|
case "stageConstructionLevel":
|
|
ret_string += " api_user_GetStageConstructionLevel( userObjID ) ";
|
|
if (rows_chk[temp]["op"].ToString() == "=")
|
|
ret_string += rows_chk[temp]["op"].ToString().Replace("=", "==");
|
|
else
|
|
ret_string += rows_chk[temp]["op"].ToString().Replace('[', '<').Replace(']', '>');
|
|
|
|
ret_string += " " + rows_chk[temp]["chk_Text"].ToString() + " ";
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
return ret_string;
|
|
}
|
|
}
|
|
} |