Detecting If Player Clicked Inside An Area
- Step 1: In Hammer, create a brush with the brush tool (⇧ Shift+B). Make sure you have the "toolstrigger.vmat" material selected. It should cover the area you want to be tested.
- Step 2: Select the brush you just and go to Tools > Tie To Entity (Ctrl+T). This will create a trigger entity that is tied to your box.
- Step 3: Select the trigger and change its class to "trigger_multiple".
- Step 4: Give the trigger a targetname, for the sake of this example, let's call it "trigger_no_ward".
Now in npc_items_custom.txt:
"item_custom_ward"
{
"BaseClass" "item_datadriven"
"AbilityTextureName" "item_ward_sentry"
"AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT"
"OnSpellStart"
{
"RunScript"
{
"ScriptFile" "scripts/vscripts/custom_ward.lua"
"Function" "spawn"
"Target" "POINT"
}
}
}
And in custom_ward.lua:
function spawn(keys)
local inTrigger = false
local CHECKINGRADIUS = 10
for _,thing in pairs(Entities:FindAllInSphere(GetGroundPosition(keys.target_points[1], nil), CHECKINGRADIUS) ) do
if (thing:GetName() == "trigger_no_ward") then
--In no_ward trigger. Set flag.
inTrigger = true
end
end
if (inTrigger == True)
--Used onto specified area. Do stuff...
end
end