const int DM_ACTION_MESSAGE_TYPE = 1, DM_ACTION_GIVE_XP = 2, DM_ACTION_GIVE_LEVEL = 3, DM_ACTION_GIVE_GOLD = 4, DM_ACTION_CREATE_ITEM_ON_OBJECT = 5, DM_ACTION_CREATE_ITEM_ON_AREA = 6, DM_ACTION_HEAL_CREATURE = 7; // Set script name called on specified action void SetDMActionScript(int nAction, string sScript); // Get ID of DM Action int nGetDMActionID(); // Get int param of DM Action int nGetDMAction_Param(int bSecond=FALSE); // Get target object of DM Action object oGetDMAction_Target(int bSecond=FALSE); // Get target position of DM Action vector vGetDMAction_Position(); void SetDMActionScript(int nAction, string sScript) { SetLocalString(OBJECT_SELF, "NWNX!DMACTIONS!SET_ACTION_SCRIPT", IntToString(nAction)+":"+sScript); DeleteLocalString(OBJECT_SELF, "NWNX!DMACTIONS!SET_ACTION_SCRIPT"); } int nGetDMActionID() { SetLocalString(OBJECT_SELF, "NWNX!DMACTIONS!GETACTIONID", " "); string sAction = GetLocalString(OBJECT_SELF, "NWNX!DMACTIONS!GETACTIONID"); DeleteLocalString(OBJECT_SELF, "NWNX!DMACTIONS!GETACTIONID"); return StringToInt(sAction); } void PreventDMAction() { SetLocalString(OBJECT_SELF, "NWNX!DMACTIONS!PREVENT", "1"); DeleteLocalString(OBJECT_SELF, "NWNX!DMACTIONS!PREVENT"); } int nGetDMAction_Param(int bSecond=FALSE) { string sNth = bSecond?"2":"1"; SetLocalString(OBJECT_SELF, "NWNX!DMACTIONS!GETPARAM_"+sNth, " "); string sVal = GetLocalString(OBJECT_SELF, "NWNX!DMACTIONS!GETPARAM_"+sNth); DeleteLocalString(OBJECT_SELF, "NWNX!DMACTIONS!GETPARAM_"+sNth); return StringToInt(sVal); } object oGetDMAction_Target(int bSecond=FALSE) { string sNth = bSecond?"2":"1"; return GetLocalObject(OBJECT_SELF, "NWNX!DMACTIONS!TARGET_"+sNth); } vector vGetDMAction_Position() { SetLocalString(OBJECT_SELF, "NWNX!DMACTIONS!GETPOS", " "); string sVector = GetLocalString(OBJECT_SELF, "NWNX!DMACTIONS!GETPOS"); DeleteLocalString(OBJECT_SELF, "NWNX!DMACTIONS!GETPOS"); float x, y, z; //Get X int nPos = FindSubString(sVector, "¬"); if(nPos == -1) return Vector(); x = StringToFloat(GetStringLeft(sVector, nPos)); sVector = GetStringRight(sVector, GetStringLength(sVector) - nPos - 1); //Get Y nPos = FindSubString(sVector, "¬"); if(nPos == -1) return Vector(); y = StringToFloat(GetStringLeft(sVector, nPos)); sVector = GetStringRight(sVector, GetStringLength(sVector) - nPos - 1); //Get Z nPos = FindSubString(sVector, "¬"); if(nPos == -1) { z = StringToFloat(sVector); } else return Vector(); return Vector(x, y, z); }