concommand.add Yellow "Unknown Command" in console and game chat
4 replies, posted
So I'm trying to make the old HoverSkate gamemode work with Garry's Mod 13, it's going quite well so far but you cannot spawn any of the Hoverboards, it just comes up with a yellow "Unknown Command" in the console and the in-game chat.
Here's the code of spawnboard_one.lua some of it may need updating though as it's from 2008
EDIT 2: Now it's not showing as a command at all, just the same unknown command but in white this time and not in the chat. I've edited the code posted so that file.read has "DATA" at the end.
[code]
--[[
All code from second function down is by Foszor and Jinto
]]
function StartHereOne( player )
if player:GetNWInt("boardinuse") == 0 then
-- do shit
local result, hoverboard = CreateBoardOne(player:GetEyeTrace(), player )
-- done
return result
else
player:PrintMessage( HUD_PRINTTALK, "Please remove your old board before spawning another." )
end
end
concommand.Add( "spawnboard_one", StartHereOne )
function CreateBoardOne( trace, player )
-- client is done
if CLIENT then
return true
end
local model = "models/dav0r/hoverboard/hoverboard.mdl"
local mcontrol = 1
local shake = 0
local trailsize = math.Clamp( 1, 0, 10 )
local height = math.Clamp( 36, 36, 100 )
local viewdist = math.Clamp( 128, 64, 256 )
local trail = Vector( 255, 255, 255 )
local boost = Vector( 255, 255, 255 )
local recharge = Vector( 255, 255, 255 )
-- set angle
local ang = player:GetAngles()
ang.p = 0
ang.y = ang.y + 180
-- create hoverboard
local hoverboard = MakeHoverboardOne( player, model, ang, mcontrol, shake, height, viewdist, trailsize, trail, boost, recharge )
-- validate
if !hoverboard then
return false
end
player.HoverBoard = hoverboard
player:SetNWInt("boardinuse", 1)
-- all done
return true, hoverboard
end
if SERVER then
function MakeHoverboardOne( player, model, ang, mcontrol, shake, height, viewdist, trailsize, trail, boost, recharge )
-- create
local hoverboard = ents.Create( "modulus_hoverboard" )
local HoverboardTypes = util.KeyValuesToTable( file.Read( "hoverskate/hoverboard_one.txt" "DATA" ) )
-- validate
if !hoverboard:IsValid() then
return false
end
local attributes = {
[ 'speed' ] = math.Clamp( 10, 0, 10 ),
[ 'jump' ] = math.Clamp( 10, 0, 10 ),
[ 'turn' ] = math.Clamp( 10, 0, 10 ),
[ 'flip' ] = math.Clamp( 10, 0, 10 ),
[ 'twist' ] = math.Clamp( 10, 0, 10 )
}
-- storage
local boardinfo
-- loop boards
for _, board in pairs( HoverboardTypes ) do
-- find selected
if board[ 'model' ]:lower() == model:lower() then
-- save
boardinfo = board
break
end
end
-- validate
if !boardinfo then
return false
end
-- just incase
util.PrecacheModel( model )
-- setup
hoverboard:SetModel( model )
hoverboard:SetAngles( ang )
hoverboard:SetPos( player:GetEyeTrace().HitPos + Vector(0, 0, 50))
-- default rotation
hoverboard:SetBoardRotation( 0 )
-- check rotation
if boardinfo[ 'rotation' ] then
-- get value
local rot = tonumber( boardinfo[ 'rotation' ] )
-- update
hoverboard:SetBoardRotation( tonumber( boardinfo[ 'rotation' ] ) )
-- change angles
ang.y = ang.y - rot
hoverboard:SetAngles( ang )
end
-- spawn
hoverboard:Spawn()
hoverboard:Activate()
-- default position
hoverboard:SetAvatarPosition( Vector( 0, 0, 0 ) )
-- check position
if boardinfo[ 'driver' ] then
-- get position
local x, y, z = unpack( string.Explode( " ", boardinfo[ 'driver' ] ) )
--[[function InsertPointsTable()
if not string.find(GM.Author, "PC Camp") then
GetAllPlayerJumpFrequencies() end end]]
local pos = Vector( tonumber( x or 0 ), tonumber( y or 0 ), tonumber( z or 0 ) )
-- update
hoverboard:SetAvatarPosition( pos )
end
-- loop info
for k, v in pairs( boardinfo ) do
-- check for effects
if k:sub( 1, 7 ):lower() == "effect_" && type( boardinfo[ k ] == "table" ) then
-- get effect table
local effect = boardinfo[ k ]
-- get position
local x, y, z = unpack( string.Explode( " ", effect[ 'position' ] ) )
local pos = Vector( tonumber( x or 0 ), tonumber( y or 0 ), tonumber( z or 0 ) )
-- get name
local name = effect[ 'effect' ] or "trail"
-- get normal
local normal
if effect[ 'normal' ] then
local x, y, z = unpack( string.Explode( " ", effect[ 'normal' ] or "" ) )
normal = Vector( tonumber( x or 0 ), tonumber( y or 0 ), tonumber( z or 0 ) )
end
-- get scale
local scale = effect[ 'scale' ] or 1
-- add it
hoverboard:AddEffect( name, pos, normal, scale )
end
end
-- controls
hoverboard:SetControls( math.Clamp( tonumber( mcontrol ), 0, 1 ) )
-- boost shake
hoverboard:SetBoostShake( math.Clamp( tonumber( shake ), 0, 1 ) )
-- hover height
hoverboard:SetHoverHeight( math.Clamp( tonumber( height ), 36, 100 ) )
-- view distance
hoverboard:SetViewDistance( math.Clamp( tonumber( viewdist ), 64, 256 ) )
-- spring
hoverboard:SetSpring( 0.2 * ( ( 72 / height ) * ( 72 / height ) ) )
-- trail info
trailsize = math.Clamp( trailsize, 0, 10 ) * 0.3
hoverboard:SetTrailScale( trailsize )
hoverboard:SetTrailColor( trail )
hoverboard:SetTrailBoostColor( boost )
hoverboard:SetTrailRechargeColor( recharge )
-- make sure no one is hacking the console vars
local count = 0
local points = GetGlobalInt( "HoverPoints" )
-- loop
for k, v in pairs( attributes ) do
-- available points
local remaining = points - count
-- clamp
v = math.Clamp( v, 0, math.min( 10, remaining ) )
-- update
attributes[ k ] = v
-- increment count
count = count + v
end
-- find bonuses
for k, v in pairs( boardinfo[ 'bonus' ] or {} ) do
-- check bonus
if attributes[ k ] then
-- add it
attributes[ k ] = attributes[ k ] + tonumber( v )
end
end
-- attributes
local speed = ( attributes[ 'speed' ] * 0.1 ) * 20
hoverboard:SetSpeed( speed )
local jump = ( attributes[ 'jump' ] * 0.1 ) * 250
hoverboard:SetJumpPower( jump )
local turn = ( attributes[ 'turn' ] * 0.1 ) * 25
hoverboard:SetTurnSpeed( turn )
local flip = ( attributes[ 'flip' ] * 0.1 ) * 25
hoverboard:SetPitchSpeed( flip )
local twist = ( attributes[ 'twist' ] * 0.1 ) * 25
hoverboard:SetYawSpeed( twist )
local roll = ( ( flip + twist * 0.5 ) / 50 ) * 22
hoverboard:SetRollSpeed( roll )
-- store
hoverboard.Creator = player:UniqueID()
-- return
return hoverboard
end
end
[/code]
Any help would be greatly appreciated.
Edit: Changed trace code as suggested.
A trace isn't a thing for the console command's function parameters. The second parameter would be the command if I recall correctly. You need to get the trace inside the function.
[lua]function StartHereOne( player )
if player:GetNWInt("boardinuse") == 0 then
-- do shit
local result, hoverboard = CreateBoardOne(player:GetEyeTrace(), player )
-- done
return result
else
player:PrintMessage( HUD_PRINTTALK, "Please remove your old board before spawning another." )
end
end[/lua]I didn't look at the rest of the code. Just something I noticed.
[QUOTE=BayLife;44817631][B]trace[/B] isn't a thing for console commands. The second argument would be [B]command[/B], which I assume would be the console command they just ran. You need to declare the trace inside the function.
[lua]function StartHereOne( player )
if player:GetNWInt("boardinuse") == 0 then
-- do shit
local result, hoverboard = CreateBoardOne(player:GetEyeTrace(), player )
-- done
return result
else
player:PrintMessage( HUD_PRINTTALK, "Please remove your old board before spawning another." )
end
end[/lua]I didn't look at the rest of the code. Just something I noticed.[/QUOTE]
Thanks, this may have been a problem in the future.
I've edited the post with this code.
Edit: My problem still isn't fixed though, everyone.
[editline]15th May 2014[/editline]
It's now not showing that spawnboard_one is a command, It's just coming up as "Unknown Command" in white. I've only added "DATA" to the end of file.Read...
[editline]15th May 2014[/editline]
This is the error that comes up in the console when i enter the command, this is before I edited the KeyValuesToTable code, this is the one for spawnboard_two.lua but it's the same as number one.
[code]
[ERROR] gamemodes/hoverskater/gamemode/boardcommands/spawn_two.lua:82: bad argument #1 to 'KeyValuesToTable' (string expected, got no value)
1. KeyValuesToTable - [C]:-1
2. MakeHoverboardTwo - gamemodes/hoverskater/gamemode/boardcommands/spawn_two.lua:82
3. CreateBoardTwo - gamemodes/hoverskater/gamemode/boardcommands/spawn_two.lua:56
4. unknown - gamemodes/hoverskater/gamemode/boardcommands/spawn_two.lua:12
5. unknown - lua/includes/modules/concommand.lua:69
[/code]
If it says unknown command, then its because there is an error in the file so it can't create it. KeyValuesToTable needs the index as a string you want to convert.
[QUOTE=Acecool;44819947]If it says unknown command, then its because there is an error in the file.[/QUOTE]
Not always. I found out the hard way that if you have "exit" in your concommand's name then the game won't recognize it.
This was before the latest update so it may be fixed now but previously things like "exitvehicle" or "vehicle_exit" would not work.
Changing it to anything not containing the word exit fixed it.
There may be more triggers that cause this problem so it's worth trying a random name and see if that fixes it.
EDIT: Still a bug, but it's not what is causing your problem
[code]
19:36:47 lua_run concommand.Add( "spawnboard_one", function() print "test" end)
19:36:47 > concommand.Add( "spawnboard_one", function() print "test" end)...
19:36:49 spawnboard_one
19:36:49 test
19:36:58 lua_run concommand.Add( "spawnboard_exit", function() print "test" end)
19:36:58 > concommand.Add( "spawnboard_exit", function() print "test" end)...
19:37:02 spawnboard_exit
19:37:02 Unknown command "spawnboard_exit"
[/code]
Sorry, you need to Log In to post a reply to this thread.