This page is located on the SimsWiki. To view it in it's original form, click here.
This article is imported from the old MTS2 wiki. You can help Sims2Wiki by cleaning it up. It's original page with comments can be found at http://old_wiki.modthesims2.com/LUAAdvice
Advice LUA's are the second type of important LUA. They are composed of 4 blocks total. Spec follows
Start block
Dofile("filename.lua") -- load this file before parsing and executing

Helper block
--This block contains helper functions
function create_advice_transportation_with_base(guid_string, base_advice)
   local a =  advices : create_advice(tonumber(guid_string, 16), base_advice)
   a.type   = advice_types . TRANSPORTATION
   return a
end
-- Helper functions do things based on LUA system script and constands from advices such as a.type

Advices Block -- any of the following neccessary things may be used.
a = create_advice_transportation('2a355b3b') -- Advice ID to create
a.trigger  = "game.g_month > 3" -- Triggers for this advice. IE game months over 3
a.once = 1 -- Execute this advice only once per game
a.timeout = tuning_constants.ADVICE_TIMEOUT_MEDIUM -- How long the advice takes to timeout
a.title   = [[text@ea50e830  Celebrate City Birth--Roads Make Perfect Gift
]] -- Text reference for locale.dat. Otherwise show this title.
a.message   = [[text @aa50e837  Greetings, Mayor. I'm Glint Wheels, your transit man, here to give you the skinny on moving in the city. You can really put a shine on #city# by placing some roads in good spots. And think of the city's zones--the exchange of goods and services can't go anywhere unless they're connected by roads. You could even zip a road 'round each zone--touring your great city will be easier than ever, and your Sims will be singing with the tops down.
]] -- Text reference to locale.dat. Otherwise show this message
a.priority  =tuning_constants.ADVICE_PRIORITY_MEDIUM -- Advice priority on the list
a.mood = advice_moods.GREAT_JOB -- Advisor s3d model mood
a.type = advice_types.TRANSPORTATION -- Advice type.
a.frequency = tuning_constants.ADVICE_FREQUENCY_MEDIUM -- frequency to show advice
a.news_only = 1 -- show in news ticker only. not with advisors
a.event = game_events.NEW_CITY -- Execute on this event

End block
-- This will try to execute triggers for all registerd advices 
-- to make sure they don't have any syntactic errors.

if (_sys.config_run == 0) -- if the config option is set to 0 in the _sys.lua, then
then
   advices : run_triggers() -- Activate all triggers
end

Here's the section declaration table for all advice

base_advice = 
{
   _base=nil, -- no base advice for itself
   guid = 0, -- this will be persisted in saved games and will have to be set to each advice by hand. 
   class_id = hex2dec("8a09f5f4"), -- C++ advice class ID (cSC4Advice class by default) 
   type = advice_types . NULL, -- NULL types never get triggered 
   mood = advice_moods . NEUTRAL,
   priority = 100, --0 to 100 scale, 100 = highest
   title     = "",
   message = "",
   frequency   = 720, -- in days, 30 days min
   timeout   = 36000, -- in days, dissappear msg
   trigger   = "0", -- never trigger this one
   once   = 0, -- show this advice only once
   news_only = 0, -- set to 1 for news-flipper messages only 
   event = 0, -- this has to be a valid event ID (see const file for the event table.)
   command = 0, -- game command to trigger along with the advice message
   persist = 0, -- if 1, message will remain visible once triggered whether or not trigger condition remains true (useful for random triggers)
   effects = {} -- Here is the format : a.effects = {effects.POOR_FIRE_COVERAGE, effects.UNHAPPY_SIMS}
}

These are the things that can be called during an advice. You've seen an actual advice sample above so this should be easy enough to understand :)