我想在lua中创建一个简单的Web浏览器。我得到了以下脚本。但它没有编译并给出错误:尝试索引全局'concommand'(零值) 任何人都可以告诉我的剧本有什么问题吗?
-- Simple Web Browser by Drunkie
if SERVER then AddCSLuaFile("web_browser.lua") return end
concommand.Add( "OpenWebBrowser", function()
local homepage = "http://www.google.com"
local frame = vgui.Create( "DFrame" )
frame:SetSize( ScrW()*0.8, ScrH()*0.8 )
frame:SetTitle( "" )
frame:SetDraggable( false )
frame:Center()
frame:MakePopup()
frame.Paint = function()
surface.SetDrawColor( 0, 0, 0, 150 )
surface.DrawRect( 0, 0, frame:GetWide(), frame:GetTall() )
end
local lbl_loading = vgui.Create( "DLabel", frame )
lbl_loading:SetText( "Loading . . ." )
surface.CreateFont( "coolvetica", 64, 400, true, false, "LoadFont" )
lbl_loading:SetFont( "LoadFont" )
lbl_loading:SetColor( Color( 255, 255, 255 ) )
lbl_loading:SizeToContents()
lbl_loading:Center()
local html_pos = { 12, 48 }
local html_size = { frame:GetWide()-html_pos[1]*2, frame:GetTall()-html_pos[2]-html_pos[1] }
local html_frame = vgui.Create( "HTML", frame )
html_frame:SetPos( html_pos[1], html_pos[2] )
html_frame:SetSize( html_size[1], html_size[2] )
html_frame:OpenURL( homepage )
local lbl_goto = vgui.Create( "DLabel", frame )
lbl_goto:SetText( "Goto:" )
surface.CreateFont( "coolvetica", 24, 400, true, false, "GotoFont" )
lbl_goto:SetFont( "GotoFont" )
lbl_goto:SetColor( Color( 255, 255, 255 ) )
lbl_goto:SetPos( 12, 16 )
lbl_goto:SizeToContents()
local txt_goto = vgui.Create( "DTextEntry", frame )
txt_goto:SetSize( frame:GetWide()-96, 24 )
txt_goto:SetPos( 64, 14 )
txt_goto:SetText( homepage )
txt_goto.OnEnter = function()
local site = string.lower( txt_goto:GetValue() )
-- if string.Left( site, 7 ) != "http://" then
-- site = "http://" .. site
-- txt_goto:SetText( site )
-- end
html_frame:OpenURL( site )
end
end )
答案 0 :(得分:2)
我无法关注您的wiremod链接(需要登录才能下载)。但看起来这个脚本应该是从一些嵌入Lua的应用程序中运行以使其自身可编写脚本(我认为gmod http://www.garrysmod.com/)。您不能单独运行脚本:您在此脚本中看到的几个变量链接到主机应用程序中的数据。
要创建类似于Web浏览器的脚本,您必须安装该应用程序。或者,放弃这种方法,从更简单,更有趣的事情开始,例如使用Lua的Corona,它将更好地记录并获得更多社区支持。
答案 1 :(得分:0)
该脚本是从2010年开始的,而Garry在2012/13赛季对Garry的Mod进行了一些API更改。脚本不太可能按原样运行。
另外,我同意Schollii不要开始使用Garry的Mod编程。 API不是很好。