Jump to content
Sign in to follow this  
Socket

Script lua em HTML

Recommended Posts

Socket    0
Socket

Bem, hoje eu tava olhando os tópicos do forum ai ve aquele script do Mock, me aprofundei mais em WXLua e fiz isso, mistureba de Lua, WXLua, MySQL.

 

[spoiler=Script]

require("wx")
require "luasql.mysql"

local config = {
               databaseName = '', -- Database Name
               userName = '', -- User Name
               userPassword = '', -- User Password
               userHost = 'localhost', -- Host
               port = 3306, -- Port
}


function LastID() --database
 env = assert(luasql.mysql())
 con = assert(env:connect(config.databaseName, config.userName, config.userPassword, config.userHost, config.port))
 row = assert(con:execute('SELECT * FROM `players` WHERE 1;'))
 con:close()
 env:close()
 return tonumber(row:numrows()+1)
end

local ID_IDCOUNTER = wx.wxID_HIGHEST + 1
function NewID() --Autor: J Winwood
 ID_IDCOUNTER = ID_IDCOUNTER + 1
 return ID_IDCOUNTER
end

local ID_DIALOG1_OK      =  NewID()
local ID_DIALOG2_OK      =  NewID()
local ID_SEARCH          =  NewID()
local ID_NEW             =  NewID()
local ID_EXIT            =  NewID()
local ID_CLOSE           =  NewID()

local FRAME = wx.wxFrame(wx.NULL, wx.wxID_OK, "Finder", wx.wxDefaultPosition, wx.wxSize(450, 450))
local FRAME_OBJECTS = {
                       MENU_BAR = wx.wxMenuBar(),

                       FILE_MENU = wx.wxMenu({{ID_NEW,    "&New\tCtrl+N",    "Create a new player." },
                                              {ID_SEARCH, "&Search\tCtrl+S", "Search a player."     }}),

                       EXIT_MENU = wx.wxMenu({{ID_EXIT,   "&Exit\tCtrl+E",   "Exit program."        }})}

FRAME_OBJECTS.MENU_BAR:Append(FRAME_OBJECTS.FILE_MENU, "&File")
FRAME_OBJECTS.MENU_BAR:Append(FRAME_OBJECTS.EXIT_MENU, "&Exit")
FRAME:SetMenuBar(FRAME_OBJECTS.MENU_BAR)
FRAME:CreateStatusBar(1)
FRAME:SetStatusText('Welcome to finder.')
local HTML = wx.wxLuaHtmlWindow(FRAME, wx.wxID_ANY,wx.wxDefaultPosition, wx.wxSize(0, 0), wx.wxHW_SCROLLBAR_NEVER)
local DIALOG1 = wx.wxDialog(FRAME, wx.wxID_ANY, 'New player')
local DIALOG1_OBJECTS = {
                       STATIC_LINE = wx.wxStaticLine(DIALOG1, wx.wxID_ANY),
                       BUTTON_CLOSE = wx.wxButton(DIALOG1, ID_CLOSE, "Close"),
                       BUTTON_OK = wx.wxButton(DIALOG1, ID_DIALOG1_OK, "Ok"),
                       NAME = wx.wxTextCtrl(DIALOG1, wx.wxID_ANY, ""),
                       NAME_TEXT = wx.wxStaticText(DIALOG1, wx.wxID_ANY, "Name"),
                       LEVEL = wx.wxTextCtrl(DIALOG1,wx.wxID_ANY, ""),
                       LEVEL_TEXT = wx.wxStaticText(DIALOG1, wx.wxID_ANY, "Level"),
                       ACCOUNT_ID = wx.wxTextCtrl(DIALOG1, wx.wxID_ANY, ""),
                       ACCOUNT_ID_TEXT = wx.wxStaticText(DIALOG1, wx.wxID_ANY, "Account id"),
                       VOCATION = wx.wxTextCtrl(DIALOG1, wx.wxID_ANY, ""),
                       VOCATION_TEXT = wx.wxStaticText(DIALOG1, wx.wxID_ANY, "Vocation"),
                       SEX = wx.wxTextCtrl(DIALOG1, wx.wxID_ANY, ""),
                       SEX_TEXT = wx.wxStaticText(DIALOG1, wx.wxID_ANY, "Sex"),
                       MAGLEVEL = wx.wxTextCtrl(DIALOG1, wx.wxID_ANY, ''),
                       MAGLEVEL_TEXT = wx.wxStaticText(DIALOG1, wx.wxID_ANY, "Magic Level")
}
local DIALOG2 = wx.wxDialog(FRAME, wx.wxID_ANY, 'Search player')
local DIALOG2_OBJECTS = {
                       STATIC_LINE = wx.wxStaticLine(DIALOG2, wx.wxID_ANY),
                       BUTTON_CLOSE = wx.wxButton(DIALOG2, ID_CLOSE, "Close"),
                       BUTTON_OK = wx.wxButton(DIALOG2,    ID_DIALOG2_OK, "Ok"),
                       NAME = wx.wxTextCtrl(DIALOG2, wx.wxID_ANY, ""),
                       NAME_TEXT = wx.wxStaticText(DIALOG2, wx.wxID_ANY, "Name"),
                       LEVEL = wx.wxTextCtrl(DIALOG2,wx.wxID_ANY, ""),
                       LEVEL_TEXT = wx.wxStaticText(DIALOG2, wx.wxID_ANY, "Level"),
                       ID = wx.wxTextCtrl(DIALOG2, wx.wxID_ANY, ""),
                       ID_TEXT = wx.wxStaticText(DIALOG2, wx.wxID_ANY, "Id"),
                       ACCOUNT_ID = wx.wxTextCtrl(DIALOG2, wx.wxID_ANY, ""),
                       ACCOUNT_ID_TEXT = wx.wxStaticText(DIALOG2, wx.wxID_ANY, "Account id"),
                       VOCATION = wx.wxTextCtrl(DIALOG2, wx.wxID_ANY, ""),
                       VOCATION_TEXT = wx.wxStaticText(DIALOG2, wx.wxID_ANY, "Vocation"),
                       SEX = wx.wxTextCtrl(DIALOG2, wx.wxID_ANY, ""),
                       SEX_TEXT = wx.wxStaticText(DIALOG2, wx.wxID_ANY, "Sex"),
                       MAGLEVEL = wx.wxTextCtrl(DIALOG2, wx.wxID_ANY, ''),
                       MAGLEVEL_TEXT = wx.wxStaticText(DIALOG2, wx.wxID_ANY, "Magic Level")
}

   local DIALOG1_SIZER = wx.wxBoxSizer(wx.wxVERTICAL)
       DIALOG1_SIZER:Add(DIALOG1_OBJECTS.NAME_TEXT, 0, wx.wxALIGN_CENTER, 0)
       DIALOG1_SIZER:Add(DIALOG1_OBJECTS.NAME, 0, wx.wxALIGN_CENTER, 0)
       DIALOG1_SIZER:Add(DIALOG1_OBJECTS.LEVEL_TEXT, 0, wx.wxALIGN_CENTER, 0)
       DIALOG1_SIZER:Add(DIALOG1_OBJECTS.LEVEL, 0, wx.wxALIGN_CENTER, 0)
       DIALOG1_SIZER:Add(DIALOG1_OBJECTS.ACCOUNT_ID_TEXT, 0, wx.wxALIGN_CENTER, 0)
       DIALOG1_SIZER:Add(DIALOG1_OBJECTS.ACCOUNT_ID, 0, wx.wxALIGN_CENTER, 0)
       DIALOG1_SIZER:Add(DIALOG1_OBJECTS.VOCATION_TEXT, 0, wx.wxALIGN_CENTER, 0)
       DIALOG1_SIZER:Add(DIALOG1_OBJECTS.VOCATION, 0, wx.wxALIGN_CENTER, 0)
       DIALOG1_SIZER:Add(DIALOG1_OBJECTS.SEX_TEXT, 0, wx.wxALIGN_CENTER, 0)
       DIALOG1_SIZER:Add(DIALOG1_OBJECTS.SEX, 0, wx.wxALIGN_CENTER, 0)
       DIALOG1_SIZER:Add(DIALOG1_OBJECTS.MAGLEVEL_TEXT, 0, wx.wxALIGN_CENTER, 0)
       DIALOG1_SIZER:Add(DIALOG1_OBJECTS.MAGLEVEL, 0, wx.wxALIGN_CENTER, 0)
       DIALOG1_SIZER:Add(DIALOG1_OBJECTS.STATIC_LINE, 0, wx.wxEXPAND + wx.wxLEFT + wx.wxRIGHT+50, 10)
       DIALOG1_SIZER:Add(DIALOG1_OBJECTS.BUTTON_OK, 0, wx.wxALL + wx.wxALIGN_LEFT, 10)
       DIALOG1_SIZER:Add(DIALOG1_OBJECTS.BUTTON_CLOSE, 0, wx.wxALL + wx.wxALIGN_LEFT, 10)

   local DIALOG2_SIZER = wx.wxBoxSizer(wx.wxVERTICAL)
       DIALOG2_SIZER:Add(DIALOG2_OBJECTS.NAME_TEXT, 0, wx.wxALIGN_CENTER, 0)
       DIALOG2_SIZER:Add(DIALOG2_OBJECTS.NAME, 0, wx.wxALIGN_CENTER, 0)
       DIALOG2_SIZER:Add(DIALOG2_OBJECTS.LEVEL_TEXT, 0, wx.wxALIGN_CENTER, 0)
       DIALOG2_SIZER:Add(DIALOG2_OBJECTS.LEVEL, 0, wx.wxALIGN_CENTER, 0)
       DIALOG2_SIZER:Add(DIALOG2_OBJECTS.ID_TEXT, 0, wx.wxALIGN_CENTER, 0)
       DIALOG2_SIZER:Add(DIALOG2_OBJECTS.ID, 0, wx.wxALIGN_CENTER, 0)
       DIALOG2_SIZER:Add(DIALOG2_OBJECTS.ACCOUNT_ID_TEXT, 0, wx.wxALIGN_CENTER, 0)
       DIALOG2_SIZER:Add(DIALOG2_OBJECTS.ACCOUNT_ID, 0, wx.wxALIGN_CENTER, 0)
       DIALOG2_SIZER:Add(DIALOG2_OBJECTS.VOCATION_TEXT, 0, wx.wxALIGN_CENTER, 0)
       DIALOG2_SIZER:Add(DIALOG2_OBJECTS.VOCATION, 0, wx.wxALIGN_CENTER, 0)
       DIALOG2_SIZER:Add(DIALOG2_OBJECTS.SEX_TEXT, 0, wx.wxALIGN_CENTER, 0)
       DIALOG2_SIZER:Add(DIALOG2_OBJECTS.SEX, 0, wx.wxALIGN_CENTER, 0)
       DIALOG2_SIZER:Add(DIALOG2_OBJECTS.MAGLEVEL_TEXT, 0, wx.wxALIGN_CENTER, 0)
       DIALOG2_SIZER:Add(DIALOG2_OBJECTS.MAGLEVEL, 0, wx.wxALIGN_CENTER, 0)
       DIALOG2_SIZER:Add(DIALOG2_OBJECTS.STATIC_LINE, 0, wx.wxEXPAND + wx.wxLEFT + wx.wxRIGHT+50, 10)
       DIALOG2_SIZER:Add(DIALOG2_OBJECTS.BUTTON_OK, 0, wx.wxALL + wx.wxALIGN_LEFT, 10)
       DIALOG2_SIZER:Add(DIALOG2_OBJECTS.BUTTON_CLOSE, 0, wx.wxALL + wx.wxALIGN_LEFT, 10)


   DIALOG1:Connect(ID_CLOSE, wx.wxEVT_COMMAND_BUTTON_CLICKED,
       function ()
           DIALOG1:Close(true)
       end
   )

   DIALOG2:Connect(ID_CLOSE, wx.wxEVT_COMMAND_BUTTON_CLICKED,
       function ()
           DIALOG2:Close(true)
       end
   )

   FRAME:Connect(ID_NEW, wx.wxEVT_COMMAND_MENU_SELECTED,
       function ()
           DIALOG1:SetAutoLayout(true)
           DIALOG1:SetSizer(DIALOG1_SIZER)
           DIALOG1_SIZER:Fit(DIALOG1)
           DIALOG1:ShowModal()
           DIALOG1:Destroy()
           DIALOG1_OBJECTS.NAME:SetValue('')
           DIALOG1_OBJECTS.LEVEL:SetValue('')
           DIALOG1_OBJECTS.ACCOUNT_ID:SetValue('')
           DIALOG1_OBJECTS.VOCATION:SetValue('')
           DIALOG1_OBJECTS.SEX:SetValue('')
           DIALOG1_OBJECTS.MAGLEVEL:SetValue('')
       end
   )

   FRAME:Connect(ID_SEARCH, wx.wxEVT_COMMAND_MENU_SELECTED,
       function ()
           DIALOG2:SetAutoLayout(true)
           DIALOG2:SetSizer(DIALOG2_SIZER)
           DIALOG2_SIZER:Fit(DIALOG2)
           DIALOG2:ShowModal()
           DIALOG2:Destroy()
           DIALOG2_OBJECTS.NAME:SetValue('')
           DIALOG2_OBJECTS.LEVEL:SetValue('')
           DIALOG2_OBJECTS.ID:SetValue('')
           DIALOG2_OBJECTS.ACCOUNT_ID:SetValue('')
           DIALOG2_OBJECTS.VOCATION:SetValue('')
           DIALOG2_OBJECTS.SEX:SetValue('')
           DIALOG2_OBJECTS.MAGLEVEL:SetValue('')
       end
   )

   FRAME:Connect(ID_EXIT, wx.wxEVT_COMMAND_MENU_SELECTED,
       function ()
           FRAME:Close(true)
       end
   )

   DIALOG1:Connect(ID_DIALOG1_OK, wx.wxEVT_COMMAND_BUTTON_CLICKED,
       function ()
           env = assert(luasql.mysql())
           con = assert(env:connect(config.databaseName, config.userName, config.userPassword, config.userHost, config.port))
           ass = assert(con:execute("SELECT `name` FROM `players` WHERE `name` = ".. DIALOG1_OBJECTS.NAME:GetValue() ..";"))
             if ass:numrows() == 1 then
               return wx.wxMessageBox('A player named '.. DIALOG1_OBJECTS.NAME:GetValue() ..' already exists.')
             end
           row = assert(con:execute("INSERT INTO `players` (`name`,`level`,`id`,`account_id`,`vocation`,`sex`,`maglevel`) VALUES ('".. DIALOG1_OBJECTS.NAME:GetValue() .."', ".. DIALOG1_OBJECTS.LEVEL:GetValue() ..", ".. LastID()+1 ..", ".. DIALOG1_OBJECTS.ACCOUNT_ID:GetValue() ..",".. DIALOG1_OBJECTS.VOCATION:GetValue() ..", ".. DIALOG1_OBJECTS.SEX:GetValue() ..",".. DIALOG1_OBJECTS.MAGLEVEL:GetValue() ..");"))
           con:close()
           env:close()
           wx.wxMessageBox('Player '.. DIALOG1_OBJECTS.NAME:GetValue() ..' added on your database.')
       end
   )

   DIALOG2:Connect(ID_DIALOG2_OK, wx.wxEVT_COMMAND_BUTTON_CLICKED,
       function ()
           environment = assert(luasql.mysql())
           connection = assert(environment:connect(config.databaseName, config.userName, config.userPassword, config.userHost, config.port))
           row = assert(connection:execute("SELECT * FROM `players` WHERE `name` = '".. DIALOG2_OBJECTS.NAME:GetValue() .."';"))
           if row:numrows() == 0 then
               wx.wxMessageBox('Player '.. name:GetValue() ..' not found.')
               DIALOG2_OBJECTS.NAME:SetValue('')
               DIALOG2_OBJECTS.LEVEL:SetValue('')
               DIALOG2_OBJECTS.ID:SetValue('')
               DIALOG2_OBJECTS.ACCOUNT_ID:SetValue('')
               DIALOG2_OBJECTS.VOCATION:SetValue('')
               DIALOG2_OBJECTS.SEX:SetValue('')
               DIALOG2_OBJECTS.MAGLEVEL:SetValue('')
           else
               local t = {}
               row:fetch(t, "a")
               DIALOG2_OBJECTS.NAME:SetValue(t.name)
               DIALOG2_OBJECTS.LEVEL:SetValue(t.level)
               DIALOG2_OBJECTS.ID:SetValue(t.id)
               DIALOG2_OBJECTS.ACCOUNT_ID:SetValue(t.account_id)
               DIALOG2_OBJECTS.VOCATION:SetValue(t.vocation)
               DIALOG2_OBJECTS.SEX:SetValue(t.sex)
               DIALOG2_OBJECTS.MAGLEVEL:SetValue(t.maglevel)
           end
       connection:close()
       environment:close()
       end
   )

   FRAME:Show(true)
   wx.wxGetApp():MainLoop()

 

 

 

Configure a tabela:

local config = {
               databaseName = '', -- Database Name
               userName = '', -- User Name
               userPassword = '', -- User Password
               userHost = 'localhost', -- Host
               port = 3306, -- Port
}

 

Logo eu coloco pra criar contas também.

 

Obs: Requer Lua For Windows 5.1x para funcionar.

Download: http://luaforge.net/frs/?group_id=377

Edited by Mickfern

Share this post


Link to post
Share on other sites
Dean    1
Dean

Legal, a algum tempo atrás eu tinha feito um desse mas não em wxlua, dei uma rápida lida mas não entendi a parte do html, vc não usou html.

Share this post


Link to post
Share on other sites
Socket    0
Socket

Usei apenas tags de html. <b> e <br>.

 

Ahh e uma coisa, se salvar o script em wlua é so clicar que ele já abre, sem abrir nenhuma página de editor e tals, mas precisa ter o SciTE instalado.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×