Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- api_version = "1.9.0.0"
- AI_ACTORS_TABLE_POINTER = nil
- AI_ENCOUNTERS_TABLE_POINTER = nil
- AI_ENCOUNTERS = {}
- function OnScriptLoad()
- AI_ACTORS_TABLE_POINTER = read_dword(sig_scan("8B0D??????0056034134578BF033C0B917") + 2)
- AI_ENCOUNTERS_TABLE_POINTER = read_dword(sig_scan("578B3D??????008B7F3466") + 3)
- register_callback(cb['EVENT_GAME_START'], "OnGameStart")
- register_callback(cb['EVENT_COMMAND'], "OnCommand")
- end
- function OnGameStart()
- local scenario_metaid = read_dword(0x40440004)
- local scenario_tag = lookup_tag(scenario_metaid)
- local scenario_data = read_dword(scenario_tag + 0x14)
- local ai_encounters_count = read_dword(scenario_data + 0x42C)
- local ai_encounters_data = read_dword(scenario_data + 0x430)
- AI_ENCOUNTERS = {}
- for i=0,ai_encounters_count-1 do
- AI_ENCOUNTERS[read_string(ai_encounters_data + i*176)] = i
- end
- end
- function OnCommand(PlayerIndex, Command)
- Command = Command:lower()
- if(Command == "test") then
- set_encounter_team("huntermajor", 13)
- return false
- end
- end
- function set_encounter_team(EncounterName, TeamIndex)
- local encounter_index = AI_ENCOUNTERS[EncounterName]
- if(encounter_index == nil) then
- cprint("Could not find encounter: " .. EncounterName)
- return
- end
- local ai_encounter_table = read_dword(AI_ENCOUNTERS_TABLE_POINTER)
- local ai_encounter_table_data = read_dword(ai_encounter_table + 0x34)
- local encounter_data = ai_encounter_table_data + encounter_index*108
- write_word(encounter_data + 0x2, TeamIndex)
- local ai_actors_table = read_dword(AI_ACTORS_TABLE_POINTER)
- local ai_actors_count = read_word(ai_actors_table + 0x2C)
- local ai_actors_data = read_dword(ai_actors_table + 0x34)
- for i=0,ai_actors_count-1 do
- local actor_encounter = read_word(ai_actors_data + i*1828 + 0x34)
- if(actor_encounter == encounter_index) then
- local object_id = read_dword(ai_actors_data + i*1828 + 0x18)
- local object = get_object_memory(object_id)
- if(object ~= 0 and object ~= 0xFFFFFFFF) then
- write_word(object + 0xB8, TeamIndex)
- end
- end
- end
- end
- function OnScriptUnload() end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement