Before I start typing out this guide, I will admit that I’m no expert on SAI and that some of this information may be incorrect. If you know of any additional information, notice an error, etc.. just comment and I’ll do my best to keep this post updated.
There are a few things that you’ll need before creating and editing your smart scripts. I’ve seen a handful of different programs for editing smart scripts, but only one of them seems to be updated and does everything that I require. I’ll only be recommending the programs that work for me. So, before you continue reading, please download this and this; the first link contains the majority of programs which I most commonly use, and the second is the latest version of the SAI editor which I’ve found to work best. These programs will only work on Windows as far as I know.
Just in case anyone wants to know what I’m running:
- Windows 8, x64 — Home
- Debian 7, x64 — Server
- TrinityCore — Latest version as of 20/June/2015
- WoTLK 3.3.5a
In this tutorial I will assume that you have knowledge of how to view the contents of both the Emotes.dbc and EmotesText.dbc files which we will be using. If you do not know how to do this you may view these converted files. The Emotes.dbc file contains all of the emotes for player characters and the EmotesText.dbc file contains all of the emotes for non-player characters, keep this in mind when working with emotes and SAI!
Assuming that you have opened up SAI-Editor, logged in, and are ready to edit a human NPC, using the id 80000, which you have already created, lets begin.
Valkryst’s SAI-Editor Preferences:
- Lock smart_scripts.id — CHECKED
- List actionlists too — CHECKED
- Use phase colors — CHECKED
- Show basic information — CHECKED
- Allow changing static info — UN-CHECKED
- Use permanent tooltips — CHECKED
The first thing you should do is set the Source type: to SCRIPT_TYPE_CREATURE and then type in the ID of the NPC we’re working with, which is 80000, into the Entry or guid: field. This tells the program and script that this script should apply to all creatures that have the ID 80000. The next step is to set the event, action, and target, but before you do this you need to click the New Line button to create a new script piece. In the case of this tutorial we will be using EVENT_RECEIVE_EMOTE, ACTION_PLAY_EMOTE, and TARGET_SELF. These are all fairly obviouss, but I will note that the third one tells the NPC to do the action, ACTION_PLAY_EMOTE, on itself.
Now that we have our Dynamic script information: set, we can move onto the script Parameters. As you can see there are three tabs under the parameters section and each handles a separate piece of the script. In the Event tab you will set the Emote id to whatever emote you want the NPC to respond to. The ID for this emote can be found in the EmotesText.dbc file, but for this tutorial just put in 5 for the Emote id. The next two fields, RepeatMin & RepeatMax, can be set to 5000. I haven’t fiddled around too much with the repeat fields, but my best guess is that they control the amount of time, in milliseconds, until the NPC will respond to the emote again. If my guess it true, then setting this too low and having a lot of players interacting with the NPC through emotes may cause some lag on your server. Now switch to the Action tab and enter 66 for the Emote id. You can find the proper IDs for the Emote id field of the Action tab in the Emotes.dbc file. Because the target is set to TARGET_SELF, we don’t need to worry about the Target tab.
One last thing to note before we finish up this SAI entry… If you use the Generate comments button with an emote script such as this, it will only comment something along the lines of “Receive emote 5 – Play emote 66”. Because of this I strongly recommend using your own comment writing convention. For this sort of SAI entry I would write “NPC NAME – Received Emote APPLAUD – Play Emote SALUTE”. After you write up your comment just click the Generate SQL button, then Execute script, and finally click Ok and exit the program.
When creating a new SAI entry, I believe you need to restart world for it to be used. After that you can edit the entry all you like and then use the .reload smart_scripts command to test your edits. If something doesn’t seem to work after using the .reload command, just to a server restart and it may begin working again.
If you wish to add another emote response just follow the tutorial, but remember to leave the Link to: and Link from: fields of the Dynamic script information section as it’s default value and None respectively. This just says that each SAI entry can be triggered without requiring the previous SAI entry being executed.
Before I end this tutorial I feel it best to mention that any complex questions you have should be asked in this thread on the official Trinity forums. I also suggest that you always use this page as a reference when creating any and all of your SAI scripts.