Community Forums > Voobly Community > Age of Empires II: The Conquerors > Custom Scenario > Scenario Design > Guides > Taunt/Ai signal detect by triggers
[1]
从 1 2中展现2 - 0
1用户正在阅读这个话题 (在过去的30分钟)
0成员1游客
0成员1游客
Lo más popular ahora:
Word Association (62 usuarios)
CBA PathBlood 1.8.0 (55 usuarios)
1.6 reward campaing (52 usuarios)
AoKTS updates (34 usuarios)
Photos of Voobly Players (20 usuarios)
Voobly Balance Patch 6.0 for Age... (19 usuarios)
New CBA Hero now supports HD / D... (16 usuarios)
Temas más activos de la semana:
1.6 not working with me anymore... (9 mensajes)
New CS EVENT (7 mensajes)
Setting up port forwarding in ro... (7 mensajes)
Error al lanzar la partida (5 mensajes)
i can't play in new player (3 mensajes)
1.6 EASY SYNC ERROR (3 mensajes)
Idle TC and quick classical vs E... (3 mensajes)
The AI Signal and AI Script Goal triggers read/write from/to some buffers in the game memory, but the game developers forgot to add a basic check to make sure the value is not < 0 or > 255 which allows a buffer overflow
so basically, you can read or write '01 00 00 00' anywhere in the game memory (must be a multiplier of 4). and using invert condition trick you can check if a value is different than '01 00 00 00'
you only need some tool or a modified aokts that allows to specify any amount < 0 or > 255
Condition 'AI Signal' (set with: set-signal) reads from 0x006B45B8
Effect 'AI Script Goal' (check with: event-detected; reset with: acknowledge-event) writes to 0x006B39A0
# examples:
1. if you want to write to address 0x0066B000: (66B000 - 6B39A0) / 4 = FFFEDD98 (-74344 in decimal) so you just need to type: AI Script Goal '-74344'
2. here is an useful example to detect if the map is being played in singleplayer or in multiplayer:
[You must login to view link]
3. detecting player 1 taunts (1 to 44):
[You must login to view link]
# known values for condition AI Signal:
- detect AI Script Goal: -774 + ID
- detect single-player game: -1034
- detect taunts: -518 + ((PLAYER - 1) * 64) + (TAUNT - 1) / 4
- detect Starting Resources - Standard: -1036
# known values for effect AI Script Goal:
- set AI Signal: 774 + ID
- set AI Shared Goal: -258 + ID
added example for detecting taunts. sadly taunts are stored in 1 byte and this reads 4 bytes, so its only possible to detect groups of 4 taunts. eg you can detect if sent any taunt betwen 1 - 4, but not exactly 1, 2, 3 or 4. also once the taunt is typed, it wont get reset (condition will always be met)
you can detect up to 256 taunts per player that are in 64 groups of 4:
GROUP 1: taunts 1 to 4
GROUP 2: taunts 5 to 8
GROUP 3: taunts 9 to 12
...
GROUP 64: taunts 253 to 256
taunts GROUP can be calculated with the formula:
GROUP = (TAUNT - 1) / 4 + 1
the base to detect taunts is -518:
VALUE = -518
so the complete formula is:
AI Signal = VALUE + ([PLAYER - 1] * 64) + GROUP - 1
eg, to detect if player 4 type some taunt betwen 13 and 16 (GROUP 4):
AI Signal = -518 + ((4 - 1) * 64) + 4 - 1 = -323