2014-01-08 3 views
0

Я хочу сделать простой веб-браузер в lua. У меня есть следующий скрипт. Но его не скомпилировать и дать ошибку: попытка индексации глобальной 'concommand' (значение nil) Может ли кто-нибудь сказать, что случилось с моим скриптом?Ошибка Lua: попытка индексирования глобальной «комманды» (значение nil)

-- 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) 
+4

'concommand' - это объект, который не существует. Где это определено? – Aesthete

+0

Это не предопределенный объект в lua? Я новичок в lua, и получил этот код отсюда http://www.wiremod.com/forum/wiremod-addons-coding/21477-simple-web-browser.html – foobar

+0

вы можете помочь. – foobar

ответ

2

Мне не удалось найти ваш модем (необходимо войти в систему для загрузки). Но похоже, что этот сценарий должен запускаться из какого-то приложения, которое встраивает Lua, чтобы сделать его сценарием (я думаю, gmod http://www.garrysmod.com/). Вы не можете просто запустить скрипт самостоятельно: несколько переменных, которые вы видите в этом скрипте, связаны с данными в главном приложении.

Чтобы создать веб-браузер, как это делает скрипт, вам нужно будет установить это приложение. Альтернативно, отбросьте этот подход и начните с чего-то более простого и интересного, например, Corona, который использует Lua, он будет намного лучше документирован и будет иметь больше поддержки сообщества.

+0

Спасибо за ваш ответ. Ну да, на wiremod говорится: «Положите web_browser.lua в lua/autorun/ Он может быть установлен на сервере и клиенте. Тип OpenWebBrowser в консоли для использования.« Я понятия не имею, куда его поместить. На самом деле я хотел добавить веб-браузер lua в качестве расширения vlc. Не уверен, что он будет работать с Corona. – foobar

+0

@ user2681573 Этот путь 'lua/autorun', который вы дали, - это то место, где вам нужно его поместить. Там, где этот путь точно, я не знаю, но предположительно документация для Garry Mod сообщит вам. –

+0

@ user2681573 Это .lua не будет работать с короной, я предлагаю попробовать что-то, что лучше docs и легче изучить. – Schollii

0

Этот сценарий с 2010 года, в то время как Garry внес некоторые изменения API в Garry's Mod в 2012/13. Маловероятно, что скрипт будет работать как есть.

Кроме того, я согласен с Schollii не начинать программирование с Garry's Mod. API не очень хорош.

Смежные вопросы