So weil ich heute irgendwas machen wollte habe ich mal an diesem Startertool rumgefummelt Oo
- Beim Start wird eine server.txt eingelesen, falls nicht vorhanden angelegt.
- Auf Klick startet er die ersten 2 gespeicherten Server (Aber noch voller Bugs).
; Quake3 Startool
; -----------------------------------------------------------------------------
@INCLUDE "ScuiLib.hws"
@DISPLAY {Title = "Quake3 Launchtool", Width = 300, Height = 305, Color = $EAECEA}
;
;--Variablen deklarieren--
;
Dim server$[17]
;
;--Daten geladen--
;
@SPRITE 1, "gfx/logo.iff"
;
;--server.txt öffnen oder anlegen wenn nicht vorhanden--
;
result=Exists("server.txt")
If result <> 1
;
; --Falls Eintrag < 2 Zeichen kein Gültiger Eintrag--
;
For z = 0 To 16 Step 2
server$[z] = "No Entry!"
server$[z - 1] = ""
Next
OpenFile(1, "server.txt", #MODE_WRITE)
;Seek (1, 0)
For z = 0 To 15
WriteLine(1, server$[z])
Next
CloseFile(1)
EndIf
OpenFile(1, "server.txt")
While Not Eof(1) ;
server$[z] = ReadLine(1)
z = z + 1
Wend
z = z - 1
CloseFile(1)
; -----------------------------------------------------------------------------
MoveDisplay(#CENTER, #CENTER)
EscapeQuit(True)
DisplaySprite(1, #CENTER, 10)
Function fEndApplication(msg)
ObjektID = scui.GetIFOID("StringBox1")
Obj=scui.Get(ObjektID)
IP=Obj.value
ObjektID = scui.GetIFOID("StringBox2")
Obj=scui.Get(ObjektID)
PW=Obj.value
Run ("quake3 connect "..IP.."; password "..PW)
End
EndFunction
Function ListViewChanged(msg)
lv = scui.Get("ListView")
z=0
For i = 0 To helpers.CountEntries(lv.Entries) -1
;DebugPrint(lv.Selected[3])
;DebugPrint(lv.Entries[i])
;obj = lv_EntriesCount
;DebugPrint (GetType(lv))
;Local state = ""
;For i = 0 To 8 -1
s = lv.Selected[i]
If lv.Selected[0] = 1
IP=server$[0]
PW=server$[1]
Run ("quake3 connect "..IP.."; password "..PW)
End
EndIf
If lv.Selected[2] = 1
IP=server$[2]
PW=server$[3]
Run ("quake3 connect "..IP.."; password "..PW)
End
EndIf
If lv.Selected[4] = 1
IP=server$[4]
PW=server$[5]
Run ("quake3 connect "..IP.."; password "..PW)
End
EndIf
If lv.Selected[6] = 1
IP=server$[6]
PW=server$[7]
Run ("quake3 connect "..IP.."; password "..PW)
End
EndIf
;If lv.Selected[1] = 1 Then z=1
;If lv.Selected[2] = 1 Then z=2
;Local mylist = scui.Get(listview_name)
;
Next
;scui.Set("StatusLabel", { Text = { Content = { Values = { "Changed ListView Selection, current selection is:"..State } } } }, 1 )
EndFunction
Function fSaveServer(msg)
ObjektID = scui.GetIFOID("StringBox1")
Obj=scui.Get(ObjektID)
IP$=Obj.value
ObjektID = scui.GetIFOID("StringBox2")
Obj=scui.Get(ObjektID)
PW$=Obj.value
If IP$="Enter Server IP Here!" Then IP$="No Entry!"
If PW$="Enter Password Here!" Then PW$=""
; --Variable für Eintrag durchsuchen und eintragen neuer Daten--
Eintrag = 1
For z = 0 To 15
If Eintrag = 1 and server$[z]="No Entry!"
server$[z] = ""
server$[z] = IP$
server$[z + 1] = ""
server$[z + 1] = PW$
Eintrag = 0
EndIf
Next
OpenFile(1, "server.txt", #MODE_WRITE)
Seek (1, 0)
For z = 0 To 15
WriteLine(1, server$[z])
Next
CloseFile(1)
EndFunction
; BACKGROUND FRAME
a = scui.NewObject( #IFOCLASS_BEVELBOX, "BGFrame", ; Gadget Class
{ x = 5, y = 5 }, ; Position
{ x = 290, y = 290 } ) ; Size
; Eingabefelde IP Adresse
c = scui.NewObject( #IFOCLASS_STRINGBOX, "StringBox1",
{ x = 15, y = 130 },
{ x = 170, y = 25 },
{ Enabled = #IFO_ENABLED },
{ Values = { "Enter Server IP Here!" }, Lines = 1, ;zum Test mal mit IP
InputType = #GETKEY_NUMERIC,
Clear1st = 1,
MaxLen = 21, },
{ OnExit = ButtonID, OnChange = ButtonID, OnKeyPress = ButtonID } )
; Eingabefeld Passwort
d = scui.NewObject( #IFOCLASS_STRINGBOX, "StringBox2",
{ x = 15, y = 160 },
{ x = 170, y = 25 },
{ Enabled = #IFO_ENABLED },
{ Values = { "Enter Password Here!" }, Lines = 1, ;zum Test mal mit Paswword
InputType = #GETKEY_ALL,
Clear1st = 1,
MaxLen = 50, },
{ OnExit = ButtonID, OnChange = ButtonID, OnKeyPress = ButtonID } )
; Startbutton
e = scui.NewObject( #IFOCLASS_BUTTON, "StartButton",
{ x = 195, y = 160 },
{ x = 90, y = 25 },
nil,
{ Values = { "Start Game" }, Lines = 1 },
{ OnPushed = fEndApplication })
; Savebutton
e = scui.NewObject( #IFOCLASS_BUTTON, "SaveButton",
{ x = 195, y = 130 },
{ x = 90, y = 25 },
nil,
{ Values = { "Save Server" }, Lines = 1 },
{ OnPushed = fSaveServer })
; Liste für gespeicherte Server
f = scui.NewObject( #IFOCLASS_LISTVIEW, ; Listview Class
"ListView", ; Listview Name
{ x = 5, y = 200 }, ; Position
{ x = 290, y = 100 }, ; Width & Height
nil, ; Visuals
; Below we define the column's names...
{ FieldNames = { "Server", "Password" },
; ...and their width in percentual
Sizes = { 60, 40 },
Entries = { { server$[0], server$[1] },
{ server$[2], server$[3] },
{ server$[4], server$[5] },
{ server$[6], server$[7] },
{ server$[8], server$[9] },
{ server$[10], server$[11] },
{ server$[12], server$[13] },
{ server$[14], server$[15] },
} },
{ OnChanged = ListViewChanged })
;{ OnChanged = fEndApplication2 })
/*
COMMENTS
What we have seen:
- ListView class
DETAILS
*** ListView class ***
The <ListView> class is used to display a grid of informations organized by rows
and columns.
You can build ListViews of any size (columns and rows), if needed, a scroll bar
will be added to the control allowing the user to scroll all the available rows.
ListViewes can work in two modes, like options, with a single select or a multiselect mode.
Columns can be sized easily with the tag <Sizes> containing every column size in %.
ListView's data can be sorted clicking on each column header, a second click will invert
the sorting method.
When you sort your starting list order will be lost, so, if you want to know wich rows is
selected you should use scui.Get() and look for the tables:
Entries With all ListView's sorted entries
Selected All row selection status (ordered like <Entries>)
Example:
Local i
Local mylist = scui.Get(listview_name)
For i = 0 To helpers.CountEntries(mylist.entries) -1
DebugPrint(mylist.selected[i], mylist.entries[i][0])
Next
; --- entries[row][column] ---
*/
Repeat
WaitEvent
Forever