Difference between revisions of "Global Command Checker (CMS)"
(13 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | {| class=" | + | {| class="ts" style="width:100%" |
|- | |- | ||
! style="text-align:left" | Name !! style="text-align:left" | Type !! style="text-align:left" | By | ! style="text-align:left" | Name !! style="text-align:left" | Type !! style="text-align:left" | By | ||
|- | |- | ||
− | | Global Command Checker || Definition || AFRLme | + | | Global Command Checker || Definition || [https://www.patreon.com/AFRLme AFRLme] |
|} | |} | ||
− | This script allows you to check which commands can be executed on each object, item or character. | + | This script allows you to check which commands can be executed on each object, item or character. This script was made with the coin interface in mind. |
− | |||
− | |||
== Instructions == | == Instructions == | ||
− | 1. Add the [[#Main_Script|main script]] to the Visionaire Studio Script Editor & set the script as a definition script.<br/> | + | 1. Add the [[#Main_Script|main script]] to the Visionaire Studio Script Editor & set the script as a definition script.<br /> |
− | 2. | + | 2. Replace the strings inside of the '''t''' table with the name of your commands; the order is not important, but the names are case sensitive. |
− | + | <syntaxhighlight lang="lua"> | |
− | <syntaxhighlight | + | local t = {"close", "examine", "give", "open", "pick_up", "pull", "push", "talk", "use"} |
− | + | </syntaxhighlight> | |
− | + | 3a. Inside of the '''condition''' tab of your your command interface, create a condition for each command you have created; the names should reflect the names given to the interface buttons & those of the '''t''' table.<br /> | |
− | + | 3b. Add "_cond" prefix to the end of each of the conditions you just created; like so... | |
− | + | <pre>use_cond | |
− | + | talk_cond | |
+ | etc...</pre> | ||
+ | 4. On mouse over for each object, item & character, create an ''execute a script'' action containing... | ||
+ | <syntaxhighlight lang="lua"> | ||
+ | checkObjCmd() | ||
+ | </syntaxhighlight> | ||
+ | 5. On mouse out for each object, character & item, create an ''execute a script'' action containing... | ||
+ | <syntaxhighlight lang="lua"> | ||
+ | resetCmdCond() | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Main Script == | == Main Script == | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang="lua"> |
--[[ | --[[ | ||
Global Command Checker [v6] (17/03/2014) | Global Command Checker [v6] (17/03/2014) | ||
Written by AFRLme [Lee Clarke] | Written by AFRLme [Lee Clarke] | ||
-- + -- | -- + -- | ||
− | + | email: afrlme@outlook.com | |
+ | paypal: afrlme@zoho.com | ||
+ | patreon: https://www.patreon.com/AFRLme | ||
+ | portfolio: https://afrl.me | ||
-- + -- | -- + -- | ||
This script is donation optional. In game credit is non-negotiable. | This script is donation optional. In game credit is non-negotiable. | ||
Line 53: | Line 52: | ||
-- * let's create the function which will determine what type of object is currently underneath the mouse cursor * -- | -- * let's create the function which will determine what type of object is currently underneath the mouse cursor * -- | ||
function checkObjCmd() | function checkObjCmd() | ||
− | cmd = game:getLink( | + | cmd = game:getLink(VGameCurrentObject) -- store the object underneath the cursor |
-- * -- | -- * -- | ||
− | if cmd:getId().tableId == eCharacters then cmd = cmd:getLinks(VCharacterActions) else cmd = cmd:getLinks(VObjectActions) end | + | if not cmd:isEmpty() then |
− | + | if cmd:getId().tableId == eCharacters then cmd = cmd:getLinks(VCharacterActions) else cmd = cmd:getLinks(VObjectActions) end | |
+ | for i=1, table.maxn(cmd) do getCmdCond(i) end -- for each command listed in the table check if condition exists... | ||
+ | end | ||
end | end | ||
Line 72: | Line 73: | ||
end | end | ||
end | end | ||
− | </syntaxhighlight> | + | </syntaxhighlight>{{toc}} |
− | {{ |
Latest revision as of 13:04, 15 September 2022
Name | Type | By |
---|---|---|
Global Command Checker | Definition | AFRLme |
This script allows you to check which commands can be executed on each object, item or character. This script was made with the coin interface in mind.
Instructions
1. Add the main script to the Visionaire Studio Script Editor & set the script as a definition script.
2. Replace the strings inside of the t table with the name of your commands; the order is not important, but the names are case sensitive.
local t = {"close", "examine", "give", "open", "pick_up", "pull", "push", "talk", "use"}
3a. Inside of the condition tab of your your command interface, create a condition for each command you have created; the names should reflect the names given to the interface buttons & those of the t table.
3b. Add "_cond" prefix to the end of each of the conditions you just created; like so...
use_cond talk_cond etc...
4. On mouse over for each object, item & character, create an execute a script action containing...
checkObjCmd()
5. On mouse out for each object, character & item, create an execute a script action containing...
resetCmdCond()
Main Script
--[[
Global Command Checker [v6] (17/03/2014)
Written by AFRLme [Lee Clarke]
-- + --
email: afrlme@outlook.com
paypal: afrlme@zoho.com
patreon: https://www.patreon.com/AFRLme
portfolio: https://afrl.me
-- + --
This script is donation optional. In game credit is non-negotiable.
You are free to: ¹ use it in your game(s). ² modify the script.
Do not remove - or edit - this comment block.
--]]
-- * local variables * --
local cmd -- empty variables...
-- * tables * --
local t = {"close", "examine", "give", "open", "pick_up", "pull", "push", "talk", "use"} -- add command/condition names here (should both have same name)
-- * let's create the function which will determine what type of object is currently underneath the mouse cursor * --
function checkObjCmd()
cmd = game:getLink(VGameCurrentObject) -- store the object underneath the cursor
-- * --
if not cmd:isEmpty() then
if cmd:getId().tableId == eCharacters then cmd = cmd:getLinks(VCharacterActions) else cmd = cmd:getLinks(VObjectActions) end
for i=1, table.maxn(cmd) do getCmdCond(i) end -- for each command listed in the table check if condition exists...
end
end
-- * let's create the function which determines if command equals one of the stored conditions & sets condition accordingly * --
function getCmdCond(val)
for i=1, table.maxn(t) do
if cmd[val]:getName() == "'" .. t[i] .. "' executed" or cmd[val]:getName() == "'" .. t[i] .. "' executed (immediate)" then getObject("Conditions[" .. t[i] .. "_cond]"):setValue(VConditionValue, true) end
end
end
-- * let's create the condition for on mouse out which checks which conditions are true & resets them back to false * --
function resetCmdCond()
for i=1, table.maxn(t) do
if getObject("Conditions[" .. t[i] .."_cond]"):getBool(VConditionValue) then getObject("Conditions[" .. t[i] .. "_cond]"):setValue(VConditionValue, false) end
end
end