Ulysses Stuff > General Chat & Help and Support

Capturing String Argument (ULX Command Hook)

(1/1)

Fobro879:
Okay, so I am making a discord-gmod synchronization addon with MySQL. I have literally everything working except for one ULX parameter hook

So, here is the code that matters:


--- Code: -----Inroduces the function
function ulx.linkdiscord( calling_ply, discord )

--Sanitization module
function input_laundry(source)
source.gsub(source, ";", "ILLEGAL") -- sanitizes ; kill value for SQL
source.gsub(source, '"', "ILLEGAL") -- sanitizes general " for both
source.gsub(source, "'", "ILLEGAL") -- sanitizes general ' for both
end

--Info grab
local player_ulx_group = calling_ply:GetUserGroup() --grabs player ulx grouop (string v)
local player_playerid = tostring(calling_ply); input_laundry(player_playerid);  -- sanitized username input
local player_discordid = tostring(discord); input_laundry(player_discordid); -- sanitized discordID input
local player_steam_id = calling_ply:SteamID() --grabs steam ID
local player_verify_key = tostring(randomizedoutput) --grabs the player's specific and uniquely generated ID

--ULX Config
local CATEGORY_NAME = "Discord"
local linkdiscord = ulx.command( CATEGORY_NAME, "ulx linkdiscord", ulx.linkdiscord, "!linkdiscord", true )
linkdiscord:addParam{ type=ULib.cmds.CallingPlayerArg } -- First param to the function is the player running the command
linkdiscord:addParam{ type=ULib.cmds.StringArg, hint="discord", ULib.cmds.takeRestOfLine } -- Second param to the function is discord ID string
linkdiscord:defaultAccess( ULib.ACCESS_ALL )
linkdiscord:help( "Links your steam account to discord ID" )

--- End code ---

My issue is that when I try and call the 'discord' string parameter, it doesn't translate as a string but defaults to user data (i.e. "Player [1][steam_name]"

I want people to do "!linkdiscord [discordID]" so that I can send the discordID to SQL for matching from the bot

JamminR:
'calling_ply' is always passed without the function needing to add it as a parameter - therefore, you're passing calling_ply twice to the function.
Basically, your_function(calling_ply, discord) becomes your_function(calling_ply, discord=calling_ply) because of this line.

--- Code: ---linkdiscord:addParam{ type=ULib.cmds.CallingPlayerArg } -- First param to the function is the player running the command

--- End code ---
That's the second parameter, not the first.
ulx.command already passes calling_ply as first.

Quick reference is the ulx map command. Calling_ply is called, then we add string map name as second param.
https://github.com/TeamUlysses/ulx/blob/a8b31ffb3ec6ae1e7bbcea35019312d1b2ca52e1/lua/ulx/modules/sh/util.lua#L47

Navigation

[0] Message Index

Go to full version