public Int32 ScriptMain([In] object[] ScriptParameters, [In] Int32 DefaultReturnCode)
{
Int32 ReturnCode;
int RequestType = (int)ScriptParameters[0];
int P0 = (int)ScriptParameters[1];
int P2 = (int)ScriptParameters[2];
string P3 = (string)ScriptParameters[3];
string P4 = (string)ScriptParameters[4];
string P5 = (string)ScriptParameters[5];
uint P6 = (uint)ScriptParameters[6];
switch ((REQUEST_TYPE)RequestType)
{
case REQUEST_TYPE.EXECUTE_UPDATER_SCRIPT:
{
ReturnCode = ExecuteUpdaterScript() ? TRUE : FALSE;
}
break;
case REQUEST_TYPE.CREATE_AREA_INSTANCE:
{
uint ReturnArea = CreateAreaInstance(P6);
if (ReturnArea == OBJECT_INVALID)
{
ReturnCode = FALSE;
}
else
{
ReturnCode = TRUE;
SetLocalObject(GetModule(), "ACR_SERVER_MISC_RETURN_OBJECT", ReturnArea);
}
}
break;
case REQUEST_TYPE.RELEASE_AREA_INSTANCE:
{
ReleaseInstancedArea(P6);
ReturnCode = TRUE;
}
break;
case REQUEST_TYPE.SET_DICTIONARY_VALUE:
{
DictionarySetString(P3, P4, P5);
ReturnCode = TRUE;
}
break;
case REQUEST_TYPE.GET_DICTIONARY_VALUE:
{
string ReturnValue;
bool CompletedOk = DictionaryGetString(P3, P4, out ReturnValue);
if (!CompletedOk)
{
ReturnCode = FALSE;
}
else
{
SetLocalString(GetModule(), "ACR_SERVER_MISC_RETURN_STRING", ReturnValue);
ReturnCode = TRUE;
}
}
break;
case REQUEST_TYPE.FIRST_ITERATE_DICTIONARY:
{
string ReturnKey;
bool CompletedOk = DictionaryIterateFirst(P3, out ReturnKey);
if (!CompletedOk)
{
ReturnCode = FALSE;
}
else
{
SetLocalString(GetModule(), "ACR_SERVER_MISC_RETURN_STRING", ReturnKey);
ReturnCode = TRUE;
}
}
break;
case REQUEST_TYPE.NEXT_ITERATE_DICTIONARY:
{
string ReturnKey;
bool CompletedOk = DictionaryIterateNext(P3, out ReturnKey);
if (!CompletedOk)
{
ReturnCode = FALSE;
}
else
{
SetLocalString(GetModule(), "ACR_SERVER_MISC_RETURN_STRING", ReturnKey);
ReturnCode = TRUE;
}
}
break;
case REQUEST_TYPE.DELETE_DICTIONARY_KEY:
{
DictionaryDeleteKey(P3, P4);
ReturnCode = TRUE;
}
break;
case REQUEST_TYPE.CLEAR_DICTIONARY:
{
DictionaryClear(P3);
ReturnCode = TRUE;
}
break;
case REQUEST_TYPE.RUN_POWERSHELL_SCRIPTLET:
{
ReturnCode = RunPowerShellScriptlet(P3, P6) ? TRUE : FALSE;
}
break;
case REQUEST_TYPE.CREATE_DATABASE_CONNECTION:
{
ReturnCode = ScriptDatabaseConnection.CreateScriptDatabaseConnection(P3, (ScriptDatabaseConnectionFlags)P0);
}
break;
case REQUEST_TYPE.DESTROY_DATABASE_CONNECTION:
{
ReturnCode = ScriptDatabaseConnection.DestroyDatabaseConnection(P0) ? TRUE : FALSE;
}
break;
case REQUEST_TYPE.QUERY_DATABASE_CONNECTION:
{
ReturnCode = ScriptDatabaseConnection.QueryDatabaseConnection(P0, P3, this) ? TRUE : FALSE;
}
break;
case REQUEST_TYPE.FETCH_DATABASE_CONNECTION:
{
ReturnCode = ScriptDatabaseConnection.FetchDatabaseConnection(P0, this) ? TRUE : FALSE;
}
break;
case REQUEST_TYPE.GET_COLUMN_DATABASE_CONNECTION:
{
string Data = ScriptDatabaseConnection.GetColumnDatabaseConnection(P0, P2, this);
if (Data == null)
{
ReturnCode = FALSE;
}
else
{
SetLocalString(GetModule(), "ACR_SERVER_MISC_RETURN_STRING", Data);
ReturnCode = TRUE;
}
}
break;
case REQUEST_TYPE.GET_AFFECTED_ROW_COUNT_DATABASE_CONNECTION:
{
ReturnCode = ScriptDatabaseConnection.GetAffectedRowCountDatabaseConnection(P0, this);
}
break;
case REQUEST_TYPE.ESCAPE_STRING_DATABASE_CONNECTION:
{
string Data = ScriptDatabaseConnection.EscapeStringDatabaseConnection(P0, P3, this);
if (Data == null)
{
ReturnCode = FALSE;
}
else
{
SetLocalString(GetModule(), "ACR_SERVER_MISC_RETURN_STRING", Data);
ReturnCode = TRUE;
}
}
break;
case REQUEST_TYPE.GET_STACK_TRACE:
{
StackTrace Trace = new StackTrace(true);
SetLocalString(GetModule(), "ACR_SERVER_MISC_RETURN_STRING", Trace.ToString());
ReturnCode = TRUE;
}
break;
case REQUEST_TYPE.GET_SALTED_MD5:
{
string SaltedMD5 = GetSaltedMD5(P3);
SetLocalString(GetModule(), "ACR_SERVER_MISC_RETURN_STRING", SaltedMD5);
ReturnCode = TRUE;
}
break;
case REQUEST_TYPE.GET_HAS_DATABASE_STORE:
{
string Campaign = P3;
ReturnCode = CampaignObjectFileStore.GetHasDatabaseStore(Campaign) ? TRUE : FALSE;
}
break;
case REQUEST_TYPE.DELETE_DATABASE_STORE:
{
string Campaign = P3;
ReturnCode = CampaignObjectFileStore.DeleteDatabaseStore(Campaign) ? TRUE : FALSE;
}
break;
case REQUEST_TYPE.DELETE_DATABASE_STORE_AT_INDEX:
{
string Campaign = P3;
int Index = P0;
ReturnCode = CampaignObjectFileStore.DeleteDatabaseStoreAtIndex(Campaign, Index) ? TRUE : FALSE;
}
break;
case REQUEST_TYPE.SHOW_COMPILER_LOG:
{
string FileName = String.Format("{0}{1}ALFAModuleRecompile.log", Path.GetTempPath(), Path.DirectorySeparatorChar);
SendMessageToPC(OBJECT_SELF, "Last module recompilation log:");
try
{
SendMessageToPC(OBJECT_SELF, File.ReadAllText(FileName));
}
catch (Exception)
{
SendMessageToPC(OBJECT_SELF, "<no log file exists>");
}
ReturnCode = TRUE;
}
break;
case REQUEST_TYPE.RESTART_SERVER:
{
ALFA.SystemInfo.ShutdownGameServer(this);
ReturnCode = TRUE;
}
break;
default:
throw new ApplicationException("Invalid server misc command " + RequestType.ToString());
}
return(ReturnCode);
}