Ok werde mal versuchen auf fehler zu Achten.
Code: Alles auswählen
;; Wenn Du übers Internet auf eine MySQL Datenbank zugreifen
; möchtest kannst Du das entweder über ODBC oder direkt mit der
; libmysql.dll -> http://www.mysqltools.com/download.htm realisieren.
; PS: Nachfolgend von Max aus dem Englischen Forum ein Beispiel für
; die Nutzung der libmysql.dll:
;##############################################################################
;-Fehler Meldungen
Global fehler1000$ = "Konnte >libmysql.dll< nicht finden"
Global fehler1001$ = "Keinen Gültigen Datensatz gefunden"
Global fehler1002$ = "Bitte auch Passwort eingeben"
;##############################################################################
;-Text Meldungen
Text001$ = "Benutzer"
Text002$ = "Passwort"
Text003$ = "Einloggen"
Text004$ = "Benutzer Login"
Text005$ = "Hallo "
;************************************************
Text100$ = "Anzeigen"
Text101$ = "Ändern "
Text102$ = "Löschen"
Text103$ = "Preise"
Text104$ = "Item"
Text105$ = "Elemente"
;************************************************
Text200$ = "Neu"
;************************************************
;##############################################################################
;Feld und Fenster Größen
;Variabel auf Buchstabern 1+2 Fenster kennung, 3 Achse, 4+5 Fenster oder Feldfunktion
;X = Waagerecht, Y = Senkrecht, Z = Tiefe
;-Fenster Login
;-Fenster Allgemein
;##############################################################################
;-Structuren
Structure benutzer;Benutzer Angaben
id.l ;Zeilen ID
nick.s ;benutzer Nich
pass.s ;benutzer Passwort (MD5)
EndStructure
Structure rights;Benutzer Rechte
id.l ;Zeilen ID
userid.l ;Zeilen ID von Benutzer
lese.s ;Daten Lesen? N/(J)
schreibe.s ;Daten Schreiben N/(J)
delete.s ;Daten Löschen (N)/J
pre.l ;
ite.l
ele.l
EndStructure
Structure ruestung ;Job Table
id.l ;Table ID
nam.s ;Name
lvl.s ;Benötiges LVL
gen.s ;Geschlecht
set.s ;Setteil
spe.s ;Waffen Speed
EndStructure
Structure elemente ;Job Table
id.l ;Table ID
itemid.l ;Item ID
str.l ;Vagrant
feu.l ;Mercenary
erd.l ;Knight
was.l ;Blade
win.l ;Assist
EndStructure
Structure chara ;Job Chara Werte
id.l ;Table ID
itemid.l ;Item ID
atk.s ;ATK wert
def.s ;DEF wert
cri.s ;Crit wert
spd.s ;AtkSpd wert
str.s ;STR wert
sta.s ;STA wert
dex.s ;DEX wert
int.s ;INT Wert
spe.s ;SPEED
EndStructure
Structure berufe ;Job Table
id.l ;Table ID
itemid.l ;Item ID
vag.s ;Vagrant
mer.s ;Mercenary
kni.s ;Knight
bla.s ;Blade
ass.s ;Assist
bil.s ;Billposter
rin.s ;Ringmaster
mag.s ;Magician
ele.s ;Elementer
psy.s ;Psykeeper
acr.s ;Acrobat
jes.s ;Jester
ran.s ;Ranger
EndStructure
Structure kosten ;Job Table
id.l ;Table ID
itemid.l ;Item ID
hek.l ;vom Händler Kaufen
hvk.l ;an Händler verkaufen
mvk.l ;Mittlerer Verkaufs Preis aus Histerie daten
evk.l ;empfohlender verkaufs Preis
EndStructure
Structure user_kosten ;Job Table
id.l ;Table ID
userid.l ;User ID
preisid.l ;Preis ID
itemid.l ;Item ID
pre.l ;Preis in Penya
dat.l ;Datum
EndStructure
Structure infos ;Texte und Fehler Meldungen
id.l ;Table ID
inf.s ;Gadget Texte
tip.s ;Tool Tipp infos
ite.s ;Item gadget Texte Fenster Neu
feh.s ;Fehler Texte
job.s ;Job Namen
spe.s ;Waffen geschwindigkeiten
EndStructure
Structure table
id.s
nam.s
job.s
sex.s
lvl.s
atk.s
def.s
cri.s
spd.s
str.s
sta.s
dex.s
int.s
lig.s
feu.s
erd.s
was.s
win.s
hvk.s
hek.s
pvk.s
mvk.s
dvk.s
EndStructure
;##############################################################################
;-Variabeln Linketlist
Global status = 0, pfad$
Global NewList user.benutzer(), NewList rechte.rights(), NewList job.berufe(), NewList tex.infos(), NewList item.ruestung()
Global NewList ele.elemente(), NewList char.chara(), NewList preis.kosten(), NewList preih.user_kosten()
Global NewList tab.table()
Global sp01=10,sp02=20,sp03=30,sp04=40,sp05=50,sp06=60,sp07=70,sp08=80,sp09=90,sp10=100
Global sp11=110,sp12=120,sp13=130,sp14=140,sp15=150,sp16=160,sp17=170,sp18=180,sp19=190,sp20=200
Global sp21=210,sp22=220,sp23=230,sp24=240,sp25=250,sp26=260,sp27=270,sp28=280,sp29=290,sp30=300
Global sp31=310,sp32=320,sp33=330,sp34=340,sp35=350,sp36=360,sp37=370,sp38=380,sp39=390,sp40=400
Global sp41=410,sp42=420,sp43=430,sp44=440,sp45=450,sp46=460,sp47=470,sp48=480,sp49=490,sp50=500
Global sp51=510,sp52=520,sp53=530,sp54=540,sp55=550,sp56=560,sp57=570,sp58=580,sp59=590,sp60=600
Global sp61=610,sp62=620,sp63=630,sp64=640,sp65=650,sp66=660,sp67=670,sp68=680,sp69=690,sp70=700
Global sp71=710,sp72=720,sp73=730,sp74=740,sp75=750,sp76=760,sp77=770,sp78=780,sp79=790,sp80=800
Global sp81=810,sp82=820,sp83=830,sp84=840,sp85=850,sp86=860,sp87=870,sp88=880,sp89=890,sp90=900
Global sp91=910,sp92=920,sp93=930,sp94=940,sp95=950,sp96=960,sp97=970,sp98=980,sp99=990
;##############################################################################
;MySql Zugang
pfad$ = GetTemporaryDirectory()
XIncludeFile "sql_dll.pbi"
PBData_Save(pfad$+PBData_GetFileName(1), 1)
#libmysql = 1
host.s = "10.10.1.199"
user.s = "Flyff"
passwd.s = "*******"
db.s = "flyff"
port.l = 3306
Global dbHnd.l, row.s, affRows.l, fieldNum.l, rowsNum.l
Procedure.s listung()
;##############################################################################
;Fenster & Gadget
Enumeration 1000 ;Fenster
#lof ;Login Fenster
#haf ;Haupt Fenster
#eingabe ;Haupt Fenster Child neu Anlegen von Item
EndEnumeration
Enumeration ;Gadget
#txg00 ;Benutzername
#txg01 ;Passwort
#txg02 ;Fehler ausgabe Login
#txg03
#txg04
#txg05
#txg06
#txg07
#txg08
#txg09
#txg10
#stg00 ;Benutzerneme Eingabefeld
#stg01 ;Passwort Engabefeld
#stg02
#stg03
#stg04
#stg05
#stg06
#stg07
#stg08
#stg09
#stg10
#bug00 ;Login Button
#bug01 ;Button Neuer User
#bug02 ;Button Neues Item
#bug03
#bug04
#bug10 ;Speicher Button Neues Iten
#pag00 ;Panels
#pag01
#pag02
#pag03
#chb00 ;Checkbox
#chb01
#chb02
#chb03
#chb04
#chb05
#chb06
#chb07
#chb08
#chb09
#lvg00 ;Listen Gadget
#cbg00
#cbg01
#cbg02
#cbg03
#cbg04
#cbg05
#cbg06
#cbg07
#cbg08
#cbg09
#cbg10
#cbg11
#cbg12
#cbg13
#cbg14
#cbg15
#cbg16
#cbg17
#cbg18
#cbg19
#cbg20
#cbg21
#cbg22
#cbg23
#cbg24
#cbg25
#cbg26
#cbg27
#cbg28
#cbg29
#cbg30
EndEnumeration
EndProcedure
listung() ; Konstanten erstellen
Procedure.s GetError(db_ID,requester)
Protected Errormsg.s, i.l, Error.l
If CallFunction(#libmysql,"mysql_errno",db_ID) > 0
*Error =CallFunction(#libmysql,"mysql_error",db_ID)
i=-1
Repeat
i=i+1
Errormsg=Errormsg+PeekS(*Error+i,1)
Until PeekB(*Error+i)=0
If requester
Result= MessageRequester("MySQL error",Errormsg,#PB_MessageRequester_Ok)
EndIf
EndIf
ProcedureReturn Errormsg
EndProcedure
Procedure.l mel(job,feld,text)
SelectElement(tex(),text)
Select Job
Case 1 ;Tool tipp Infos
SetGadgetText(feld,tex()\inf)
Case 2 ;Item Text Gadgets
Case 3 ;Fehler Texte
SetGadgetText(feld,tex()\feh)
Case 4 ;Job Texte
Case 5 ;Texte Waffen Speed
Case 6 ;Info Texte Button
Case 7 ;Fenster Text setze
SetWindowTitle(feld,tex()\inf)
Case 8 ;Fenster Text setze
SetWindowTitle(feld,tex()\inf+" "+user()\nick)
EndSelect
EndProcedure
Procedure.s mysql(SQL.s,job)
If CallFunction(#libmysql,"mysql_real_query", dbHnd, SQL, Len(SQL))
GetError(dbHnd,1)
Else
*mysqlResult=CallFunction(#libmysql,"mysql_store_result",dbHnd)
;no result returned
If *mysqlResult=0
;no fields returned means error
If CallFunction(#libmysql,"mysql_field_count",dbHnd)
GetError(dbHnd,1)
;fields are returned, so no error but query didn't return data
Else
EndIf
;results are returned
Else
affRows = CallFunction(#libmysql,"mysql_affected_rows",dbHnd);liefert die Anzahl betroffener Datensätze durch die letzte INSERT, UPDATE oder DELETE Anfrage an den Server
fieldNum = CallFunction(#libmysql,"mysql_num_fields",*mysqlResult); liefert die Anzahl der Felder in der Ergebnismenge, die mit dem Parameter Ergebnis-Kennung angegeben wurde
rowsNum = CallFunction(#libmysql,"mysql_num_rows",*mysqlResult) ;liefert die Anzahl der Datensätze einer Ergebnismenge. Diese Funktion ist nur gültig für SELECT Befehle.
;Haben Sie eine INSERT, UPDATE oder DELETE Abfrage ausgeführt und möchten die Anzahl der betroffenen Datensätze ermitteln, verwenden Sie die Funktion mysql_affected_rows().
Debug "INSERT, UPDATE oder DELETE "+Str(affRows)
Debug "Felder in der Ergebnismenge "+Str(fieldNum)
Debug "nur gültig für SELECT Datensätze "+Str(rowsNum)
If rowsNum = 0
;SQL Fehler ausgeben
Select Job
Case 1;Login Passwort User Prüfen
SetGadgetText(#txg02,fehler1001$)
; Case 2
; If FirstElement(item()) = 0
; ClearList(item())
; AddElement(item())
; EndIf
EndSelect
Else
For i=1 To rowsNum
*mysqlRow=CallFunction(#libmysql,"mysql_fetch_row",*mysqlResult);Liefert einen Datensatz als indiziertes Array
*mysqlLen=CallFunction(#libmysql,"mysql_fetch_lengths",*mysqlResult);Liefert die Länge eines jeden Feldes in einem Ergebnis
row = ""
spalte= 0
;length of given field
For j=1 To fieldNum
length=PeekL(*mysqlLen+4*(j-1))
fieldptr=PeekL(*mysqlRow+4*(j-1))
If fieldptr>0
content.s=PeekS(fieldptr,length)
Else
;zero pointer returend means empty field
content="NULL"
EndIf
Select job
Case 1 ;Login Passwort User Prüfen
Select spalte
Case 0
AddElement(user())
user()\id=Val(content)
Case 1
user()\nick=content
Case 2
user()\pass=content
EndSelect
Case 2 ;User Rechte holen
Select spalte
Case 0
AddElement(rechte())
rechte()\id=Val(content)
Case 1
rechte()\userid=Val(content)
Case 2
rechte()\lese=content
Case 3
rechte()\schreibe=content
Case 4
rechte()\delete=content
Case 5
rechte()\pre=Val(content)
Case 6
rechte()\ite=Val(content)
Case 7
rechte()\ele=Val(content)
EndSelect
Case 3 ;Job infos Holen
Select spalte
Case 0
AddElement(job())
job()\id=Val(content)
Case 1
job()\itemid=Val(content)
Case 2
job()\vag=content
Case 3
job()\mer=content
Case 4
job()\kni=content
Case 5
job()\bla=(content)
Case 6
job()\ass=(content)
Case 7
job()\bil=(content)
Case 8
job()\rin=(content)
Case 9
job()\mag=(content)
Case 10
job()\ele=(content)
Case 11
job()\psy=(content)
Case 12
job()\acr=(content)
Case 13
job()\jes=(content)
Case 14
job()\ran=(content)
EndSelect
Case 4 ;Items Holen
Select spalte
Case 0
AddElement(item())
item()\id=Val(content)
Case 1
item()\nam=(content)
Case 2
item()\lvl=content
Case 3
item()\gen=content
Case 4
item()\set=content
Case 5
item()\spe=content
EndSelect
Case 5 ;Elemente Holen
Select spalte
Case 0
AddElement(ele())
ele()\id=Val(content)
Case 1
ele()\itemid=Val(content)
Case 2
ele()\str=Val(content)
Case 3
ele()\feu=Val(content)
Case 4
ele()\erd=Val(content)
Case 5
ele()\was=Val(content)
Case 5
ele()\win=Val(content)
EndSelect
Case 100
Select spalte
Case 0 ;Table ID
AddElement(tex())
tex()\id=Val(content)
Case 1 ;Gadget Texte
tex()\inf=content
Case 2 ;Tool Tipp infos
tex()\tip=content
Case 3 ;Item gadget Texte Fenster Neu
tex()\ite=content
Case 4 ;Fehler Texte
tex()\feh=content
Case 5 ;Job Namen
tex()\job=content
Case 6 ;Waffen geschwinkeiten
tex()\spe=content
EndSelect
EndSelect
row = row +content + ";"
spalte=spalte+1
; Debug row
Next j
status = 1
Next i
;status = 1
EndIf
Result.l=CallFunction(#libmysql,"mysql_free_result",*mysqlResult);Gibt belegten Speicher wieder frei
EndIf
EndIf
EndProcedure
Procedure.l ber(job)
LastElement(job())
AddElement(job())
job()\id = ListSize(char()) ;Table ID
job()\itemid = item()\id ;Item ID
job()\vag = "N" ;Vagrant
job()\mer = "N" ;Mercenary
job()\kni = "N" ;Knight
job()\bla = "N" ;Blade
job()\ass = "N" ;Assist
job()\bil = "N" ;Billposter
job()\rin = "N" ;Ringmaster
job()\mag = "N" ;Magician
job()\ele = "N" ;Elementer
job()\psy = "N" ;Psykeeper
job()\acr = "N" ;Acrobat
job()\jes = "N" ;Jester
job()\ran = "N" ;Ranger
Select job
Case 0
job()\vag = "J" ;Vagrant
Case 1
job()\mer = "J" ;Mercenary
Case 2
job()\kni = "J" ;Knight
Case 3
job()\bla = "J" ;Blade
Case 4
job()\ass = "J" ;Assist
Case 5
job()\bil = "J" ;Billposter
Case 6
job()\rin = "J" ;Ringmaster
Case 7
job()\mag = "J" ;Magician
Case 8
job()\ele = "J" ;Elementer
Case 9
job()\psy = "J" ;Psykeeper
Case 10
job()\acr = "J" ;Acrobat
Case 11
job()\jes = "J" ;Jester
Case 12
job()\ran = "J" ;Ranger
EndSelect
EndProcedure
Procedure.l texte(job)
Select job
Case 1
ClearList(rechte())
mysql("Select * from userrechte where user_2_iduser_2='"+Str(user()\id)+"'",2) ;User Rechte Holen
ClearList(job())
mysql("Select * from job",3) ; Job Tabelle holen
ClearList(item())
mysql("Select * FROM item",4) ; Item Tabelle holen
ClearList(ele())
mysql("Select * FROM element",5) ; Item Tabelle holen
ClearList(tex())
mysql("Select idmeldung,info_de,tipp_de,item_de,fehler_de,job_de,spe_de from meldung",100) ; Item texte holen
EndSelect
EndProcedure
Procedure.l fillen(job)
Select job
Case 1
AddGadgetItem(#cbg02, -1, "") ;Geschlecht Neutarl
AddGadgetItem(#cbg02, -1, "M") ;Geschlecht Mänlich
AddGadgetItem(#cbg02, -1, "W") ;Geschlcht Weiblich
AddGadgetItem(#cbg04, -1, "NEIN") ;Set NEIN
AddGadgetItem(#cbg04, -1, "JA") ;Set JA
AddGadgetItem(#cbg09, -1, "") ;Strom
AddGadgetItem(#cbg10, -1, "") ;Feuer
AddGadgetItem(#cbg11, -1, "") ;Erde
AddGadgetItem(#cbg12, -1, "") ;Wasser
AddGadgetItem(#cbg13, -1, "") ;Wind
For co= 1 To 10
AddGadgetItem(#cbg09, -1, Str(co)) ;Strom 1-10
AddGadgetItem(#cbg10, -1, Str(co)) ;Feuer 1-10
AddGadgetItem(#cbg11, -1, Str(co)) ;Erde 1-10
AddGadgetItem(#cbg12, -1, Str(co)) ;Wasser 1-10
AddGadgetItem(#cbg13, -1, Str(co)) ;Wind 1-10
Next
For co = 0 To 120
AddGadgetItem(#cbg01, -1, Str(co)) ;Level 1-120
Next
FirstElement(tex())
While tex()\job <> "NULL" ;Jobs Einlesen SQL
AddGadgetItem(#cbg05, -1,tex()\job ) : NextElement(tex())
Debug tex()\job
Wend
FirstElement(tex())
While tex()\spe <> "NULL" ;Waffespeed Einlesen SQL
AddGadgetItem(#cbg06, -1,tex()\spe ) : NextElement(tex())
Wend
Case 2
SetGadgetState(#cbg01,0) ;Grundwert Setzen LVL
SetGadgetState(#cbg02,0) ;Grundwert Setzen M oder W
SetGadgetState(#cbg03,0)
SetGadgetState(#cbg04,0) ;Grundwert Setzen Set
SetGadgetState(#cbg05,1) ;Grundwert Setzen Job
SetGadgetState(#cbg06,3) ;Grundwert Setzen Speed
SetGadgetText(#cbg07,"") ;Grundwert Setzen Händler EinKauf
SetGadgetText(#cbg08,"") ;Grundwert Setzen Händler Verkauf
SetGadgetState(#cbg09,0) ;Grundwert Setzen Strom
SetGadgetState(#cbg10,0) ;Grundwert Setzen Feuer
SetGadgetState(#cbg11,0) ;Grundwert Setzen Erde
SetGadgetState(#cbg12,0) ;Grundwert Setzen Wasser
SetGadgetState(#cbg13,0) ;Grundwert Setzen Wind
SetGadgetText(#cbg14,"") ;Grundwert Setzen ATK
SetGadgetText(#cbg15,"") ;Grundwert Setzen DEF
SetGadgetText(#cbg16,"") ;Grundwert Setzen CRIT
SetGadgetText(#cbg17,"") ;Grundwert Setzen AthSpd
SetGadgetText(#cbg18,"") ;Grundwert Setzen STR
SetGadgetText(#cbg19,"") ;Grundwert Setzen STA
SetGadgetText(#cbg20,"") ;Grundwert Setzen DEX
SetGadgetText(#cbg21,"") ;Grundwert Setzen INT
Case 3
ForEach item()
AddGadgetItem(#lvg00,-1, Str(item()\id)+Chr(10)+item()\nam+Chr(10)+item()\gen+Chr(10)+item()\lvl+Chr(10)+item()\set)
Next
EndSelect
EndProcedure
Procedure.l save(job)
Select job
Case 1 ;Item in SQL Schreiben
;Table Item
LastElement(item())
AddElement(item())
item()\id = Val(GetGadgetText(#cbg00)) ;Item ID hinzufügen
item()\nam = GetGadgetText(#cbg03) ;Item Name hinzufügen
item()\lvl = GetGadgetText(#cbg01) ;Item Benötiges Level hinzufürgen
item()\gen = GetGadgetText(#cbg02) ;Item Benötiges Geschlecht hinzufüegen
item()\set = Left(GetGadgetText(#cbg04),1) ;Item ist ein Set teil
item()\spe = GetGadgetText(#cbg06) ;Item Speed hinzu fügen
ForEach item()
Debug Str(item()\id)+" "+item()\nam+" "+item()\lvl+" "+item()\gen+" "+item()\set+" "+item()\spe
Next
;Table Elemente
If Val(GetGadgetText(#cbg09))+Val(GetGadgetText(#cbg10))+Val(GetGadgetText(#cbg11))+Val(GetGadgetText(#cbg12))+Val(GetGadgetText(#cbg13)) > 0
LastElement(ele())
AddElement(ele())
ele()\id = ListSize(ele()) ;Element ID ermitteln
ele()\itemid = item()\id ;Item ID hinzufügen zur wiederfindung
If Val(GetGadgetText(#cbg09)) > 0 : ele()\str = Val(GetGadgetText(#cbg09)) : EndIf ;Ermitteln des Elementen Status
If Val(GetGadgetText(#cbg10)) > 0 : ele()\feu = Val(GetGadgetText(#cbg10)) : EndIf ;es kann immer nur eienr
If Val(GetGadgetText(#cbg11)) > 0 : ele()\erd = Val(GetGadgetText(#cbg11)) : EndIf ;zur eintragung kommen
If Val(GetGadgetText(#cbg12)) > 0 : ele()\was = Val(GetGadgetText(#cbg12)) : EndIf ;
If Val(GetGadgetText(#cbg13)) > 0 : ele()\win = Val(GetGadgetText(#cbg13)) : EndIf ;
Debug "ELEMENT; "+Str(ele()\id)+" "+Str(ele()\itemid)+" "+Str(ele()\str)+" "+Str(ele()\feu)+" "+Str(ele()\erd)+" "+Str(ele()\was)+" "+Str(ele()\win)
EndIf
;Table Chara werte
LastElement(char())
AddElement(char())
char()\id = ListSize(char()) ;Element ID ermitteln
char()\itemid = item()\id ;Item ID hinzufügen zur wiederfindung
char()\atk = GetGadgetText(#cbg14)
char()\def = GetGadgetText(#cbg15)
char()\cri = GetGadgetText(#cbg16)
char()\spd = GetGadgetText(#cbg17)
char()\str = GetGadgetText(#cbg18)
char()\dex = GetGadgetText(#cbg19)
char()\int = GetGadgetText(#cbg20)
char()\spe = GetGadgetText(#cbg21)
Debug "CHAR: "+Str(char()\id)+" "+Str(char()\itemid)+" "+char()\atk+" "+char()\def+" "+char()\cri+" "+char()\spd+" "+char()\str+" "+char()\sta+" "+char()\dex+" "+char()\int+" "+char()\spe
;Table Chara werte
LastElement(job())
AddElement(job())
ber(GetGadgetState(#cbg05))
;SelectElement(tex(),GetGadgetState(#cbg05))
Debug "JOB: "+Str(job()\id)+" "+Str(job()\itemid)+" "+job()\vag+" "+job()\mer+" "+job()\kni+" "+job()\bla+" "+job()\ass+" "+job()\bil+" "+job()\rin+" "+job()\mag+" "+job()\ele+" "+job()\psy+" "+job()\acr+" "+job()\jes+" "+job()\ran
;Table Chara werte
LastElement(preis())
AddElement(preis())
preis()\id = ListSize(char()) ;Element ID ermitteln
preis()\itemid = item()\id ;Item ID hinzufügen zur wiederfindung
preis()\hek = Val(GetGadgetText(#cbg07))
preis()\hvk = Val(GetGadgetText(#cbg08))
preis()\evk = Val(GetGadgetText(#cbg08))*4
Debug "Preis"+Str(preis()\id)+"; "+Str(preis()\itemid)+"; "+Str(preis()\hek)+"; "+Str(preis()\hvk)+"; "+Str(preis()\evk)
EndSelect
mysql("INSERT INTO `item` (`name`,`level`,`gen`,`set_2`,`speed`,`time`) VALUES ('"+item()\nam+"',"+item()\lvl+",'"+item()\gen+"','"+item()\set+"','"+item()\spe+"',NULL)",999)
mysql("INSERT INTO `element` (`item_iditem`,`elektrisch`,`feuer`,`erde`,`wasser`,`wind`) VALUES ('"+Str(ele()\itemid)+"',"+Str(ele()\str)+",'"+Str(ele()\feu)+"','"+Str(ele()\erd)+"','"+Str(ele()\was)+"','"+Str(ele()\win)+"')",999)
mysql("INSERT INTO `job` (`item_iditem`,`Vagrant`,`Mercenary`,`Knight`,`Blade`,`Assist`,`Billposter`,`Ringmaster`,`Magician`,`Elementer`,`Psykeeper`,`Acrobat`,`Jester`,`Ranger`) VALUES ('"+Str(job()\itemid)+"','"+job()\vag+"','"+job()\mer+"','"+job()\kni+"','"+job()\bla+"','"+job()\ass+"','"+job()\bil+"','"+job()\rin+"','"+job()\mag+"','"+job()\ele+"','"+job()\psy+"','"+job()\acr+"','"+job()\jes+"','"+job()\ran+"')",999)
EndProcedure
Procedure.l logon()
;******************************************************************************
;-Login Fenster
If OpenWindow(#lof, 0, 0, sp20, sp15, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered); And CreateGadgetList(WindowID(#lof))
mel(7,#lof,3) ;Info 4
StringGadget(#stg00, sp08, sp01, sp10, sp02, "")
StringGadget(#stg01, sp08, sp03, sp10, sp02, "", #PB_String_Password )
ButtonGadget(#bug00,(WindowWidth(#lof)/2)+((WindowWidth(#lof)/2)/2)-(sp05/2), sp06, sp05, sp02, "")
mel(1,#bug00,2)
ButtonGadget(#bug01,((WindowWidth(#lof)/2)/2)-(sp05/2), sp06, sp05, sp02, "")
mel(1,#bug01,11)
TextGadget(#txg00,sp01,sp01,sp05,sp02,tex()\inf)
mel(1,#txg00,0)
TextGadget(#txg01,sp01,sp03,sp05,sp02,tex()\inf)
mel(1,#txg01,1)
TextGadget(#txg02,(WindowWidth(#lof)/2)-(sp20/2),sp09,sp20,sp04,"",#PB_Text_Center )
SetActiveGadget(#stg00)
Repeat
Event = WaitWindowEvent()
pass$= GetGadgetText(#stg01)
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case #bug00
Select EventType()
Case #PB_EventType_LeftClick
If pass$ <> ""
ClearList(user())
mysql("Select * from user_2 where name='"+GetGadgetText(#stg00)+"' And pass='"+MD5Fingerprint(@pass$, StringByteLength(pass$))+" '",1) ;User Prüfen
If ListSize(user()) > 0
mysql("Select * from userrechte where user_2_iduser_2='"+Str(user()\id)+" '",2)
CloseWindow(#lof)
ProcedureReturn
EndIf
Else
mel(3,#txg02,2); Fehler 3
EndIf
EndSelect
Case #bug01 ;User Neu Anlegen
Select EventType()
Case #PB_EventType_LeftClick
If pass$ <> "" And GetGadgetText(#stg00) <> ""
ClearList(user())
mysql("Select name, pass from user_2 where name='"+GetGadgetText(#stg00)+"'",1) ;User Prüfen
If ListSize(user()) > 0
mel(3,#txg02,3); Fehler 4
Else
mysql("INSERT INTO `user_2` (`iduser_2`,`name`,`pass`,`time`)VALUES (NULL,'"+GetGadgetText(#stg00)+"', '"+MD5Fingerprint(@pass$, StringByteLength(pass$))+"',NULL)",999) ;User Prüfen
mysql("Select * from user_2 where name='"+GetGadgetText(#stg00)+"' And pass='"+MD5Fingerprint(@pass$, StringByteLength(pass$))+" '",1) ;User Prüfen
mysql("INSERT INTO `userrechte` (`user_2_iduser_2`,`lesen`,`schreiben`,`delete_2`,`preise`,`item`,`element`) VALUES ("+Str(user()\id)+",'J','N','N','0','0','0')",999)
mel(3,#txg02,4); Fehler 5
EndIf
EndIf
EndSelect
EndSelect
EndSelect
Until Event= #PB_Event_CloseWindow
End
EndIf
EndProcedure
Procedure.l einst()
Debug "Setze Rechte"
If rechte()\pre >= 0 :SetGadgetState(#chb00,1):EndIf
If rechte()\pre >= 1 :SetGadgetState(#chb01,1):EndIf
If rechte()\pre >= 2 :SetGadgetState(#chb02,1):EndIf
If rechte()\pre >= 3 :SetGadgetState(#chb00,1):EndIf
If rechte()\ite >= 0 :SetGadgetState(#chb03,1):EndIf
If rechte()\ite >= 1 :SetGadgetState(#chb04,1):EndIf
If rechte()\ite >= 2 :SetGadgetState(#chb05,1):EndIf
If rechte()\ite >= 3 :SetGadgetState(#chb00,1):EndIf
If rechte()\ele >= 0 :SetGadgetState(#chb06,1):EndIf
If rechte()\ele >= 1 :SetGadgetState(#chb07,1):EndIf
If rechte()\ele >= 2 :SetGadgetState(#chb08,1):EndIf
If rechte()\ele >= 3 :SetGadgetState(#chb00,1):EndIf
EndProcedure
If OpenLibrary(#libmysql,pfad$+"libmysql.dll"); Check ob DLL vorhanden
Result=CallFunction(#libmysql,"mysql_init",dbHnd); Ja öffenen libmysql.dll
If Result ;Datenbank ist geöffnet
dbHnd = Result
If CallFunction(#libmysql,"mysql_real_connect",dbHnd, host, user, passwd, db, port, "", 0) = 0 ;verbinden zur Datenbank
GetError(dbHnd,1)
Else
weiter:
;CallDebugger
;- Debugger Einspung zum Testen
ClearList(user())
AddElement(user())
user()\nick="Aspirant"
texte(1) ;SQL Infos laden
logon()
;******************************************************************************
;-Allgemeines Fenster
If OpenWindow(#haf, 0, 0, sp60, sp30, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered); And CreateGadgetList(WindowID(#lof))
mel(8,#haf,4) ;Info 5
PanelGadget(#pag00,sp00,WindowHeight(#haf)/4,WindowWidth(#haf),(WindowHeight(#haf)/4)*3)
AddGadgetItem (#pag00, -1, "Preisermitteln")
ButtonGadget(#bug02,sp01,sp01,sp05,sp02,"") ;Button "NEU" #bug02
mel(1,#bug02,11)
ListIconGadget(#lvg00,sp00,(WindowHeight(#haf)/4)*3-(WindowHeight(#haf)/4)*3+50,WindowWidth(#haf),(WindowHeight(#haf)/4)*3-70,"ID",30,#PB_ListIcon_FullRowSelect|#PB_ListIcon_GridLines )
AddGadgetColumn(#lvg00,1,"Item",100)
AddGadgetColumn(#lvg00,2,"Job",50)
AddGadgetColumn(#lvg00,3,"Sex",50)
AddGadgetColumn(#lvg00,4,"LVL",50)
AddGadgetColumn(#lvg00,5,"SET",50)
AddGadgetColumn(#lvg00,6,"ATK",50)
AddGadgetColumn(#lvg00,7,"DEF",50)
AddGadgetColumn(#lvg00,8,"Crit",50)
AddGadgetColumn(#lvg00,9,"Atk. SPD",50)
AddGadgetColumn(#lvg00,10,"STR",50)
AddGadgetColumn(#lvg00,11,"STA",50)
AddGadgetColumn(#lvg00,12,"DEX",50)
AddGadgetColumn(#lvg00,13,"INT",50)
AddGadgetColumn(#lvg00,14,"Strom",50)
AddGadgetColumn(#lvg00,15,"Feuer",50)
AddGadgetColumn(#lvg00,16,"Erde",50)
AddGadgetColumn(#lvg00,17,"Wasser",50)
AddGadgetColumn(#lvg00,18,"Wind",50)
AddGadgetColumn(#lvg00,19,"H. VK",50)
AddGadgetColumn(#lvg00,20,"H. EK",50)
AddGadgetColumn(#lvg00,21,"P VK",50)
AddGadgetColumn(#lvg00,22,"M VK",50)
AddGadgetColumn(#lvg00,23,"D VL",50)
fillen(3)
AddGadgetItem (#pag00, -1, "Preisthistory")
AddGadgetItem (#pag00, -1, "Einstellungen")
CheckBoxGadget(#chb00,sp10,sp03,sp02,sp02,""):DisableGadget(#chb00,1) ;Checkbox Preis Anzeigen
CheckBoxGadget(#chb01,sp10,sp06,sp02,sp02,""):DisableGadget(#chb01,1) ;Checkbox Item Anzeigen
CheckBoxGadget(#chb02,sp10,sp09,sp02,sp02,""):DisableGadget(#chb02,1) ;Checkbox Element Anzeigen
CheckBoxGadget(#chb03,sp15,sp03,sp02,sp02,""):DisableGadget(#chb03,1) ;Checkbox Preis Ändern / Neu
CheckBoxGadget(#chb04,sp15,sp06,sp02,sp02,""):DisableGadget(#chb04,1) ;Checkbox Item Ändern / Neu
CheckBoxGadget(#chb05,sp15,sp09,sp02,sp02,""):DisableGadget(#chb05,1) ;Checkbox Element Ändern / Neu
CheckBoxGadget(#chb06,sp20,sp03,sp02,sp02,""):DisableGadget(#chb06,1) ;Checkbox Preis Löschen
CheckBoxGadget(#chb07,sp20,sp06,sp02,sp02,""):DisableGadget(#chb07,1) ;Checkbox Item Löschen
CheckBoxGadget(#chb08,sp20,sp09,sp02,sp02,""):DisableGadget(#chb08,1) ;Checkbox Element Löschen
TextGadget(#txg03,sp10,2,sp05,sp02,"") ;Spalten Kopf Ansehen
mel(1,#txg03,8) ;Preise
TextGadget(#txg04,sp15,2,sp05,sp02,"") ;Spalten Kopf Ändern / Neu
mel(1,#txg04,9) ;Item
TextGadget(#txg05,sp20,2,sp05,sp02,"") ;Spalten Kopf Löschen
mel(1,#txg05,10) ;Element
TextGadget(#txg06,sp01,sp03,sp08,sp02,"",#PB_Text_Right) ;Zeilen Kopf Preis
mel(1,#txg06,5) ;Anzeigen
TextGadget(#txg07,sp01,sp06,sp08,sp02,"",#PB_Text_Right) ;Zeilen Kopf Item
mel(1,#txg07,14) ;Anlegen
TextGadget(#txg08,sp01,sp09,sp08,sp02,"",#PB_Text_Right) ;Zeilen Kopf Element
mel(1,#txg08,6) ;Ändern
einst()
AddGadgetItem (#pag00, -1, "Admin")
Repeat ;Start der Schleife im Hauptfenster
Event = WaitWindowEvent() ;CPU endlasten warten auf ereignis im Fenster
Select Event ;Schleife zu ermitteln des Ereignis
Case #PB_Event_Gadget ;Filter ob Gadget Ereignis aus gelöst hat
Select EventGadget() ;Filter um das ereignis Gadget zu finden
Case #bug02 ;Gadget "Button Neu" würde gedückt
Select EventType()
Case #PB_EventType_LeftClick
DisableWindow(#haf,1) ;Hauptfenster Abschalten
HideWindow(#haf, 1) ;Hauptfenster Unsichtbar machen
Debug "Neu Button 2 ?"
Debug #bug02
Debug IsGadget(#bug02)
OpenWindow(#eingabe, 10, 10, 800, 100, "test",#PB_Window_SystemMenu | #PB_Window_ScreenCentered, WindowID(#haf))
HideWindow(#eingabe, 1) : StickyWindow(#eingabe,1) ;Fenster für neues Item 1.Unsichtbar 2.Dauerhaft in den Fordergurd Holen
xx1=sp01 : xx2=sp01 : xx3=sp01 ;Variabeln zur Button erzeugung setzen
ButtonGadget(#bug10,WindowWidth(#eingabe)-50, 55, sp05, sp02, Text003$) ;Button Save setzen
For s=#cbg00 To #cbg00+21 ;Schleife zur Button erzeugung
sz= s - #cbg00 ;Schleifenzähler
SelectElement(tex(), sz) ;Text aus wählen
Select sz ;Schleifen wert zur erzeugung den gadget
Case 0
TextGadget(#txg03+sz,xx1,10,44,sp02,tex()\ite )
TextGadget(s, xx1, 30, 34,sp02,Str(ID), #PB_Text_Border)
xx1=xx1+50
Case 1 To 2
TextGadget(#txg03+sz,xx1,10,44,sp02,tex()\ite )
ComboBoxGadget(s, xx1, 30, 44,sp02)
xx1=xx1+50
Case 3
TextGadget(#txg03+sz,xx1,10,sp05,sp02,tex()\ite )
ComboBoxGadget(s, xx1, 30, sp10,sp02, #PB_ComboBox_Editable)
xx1=xx1+100
Case 4 To 6
TextGadget(#txg03+sz,xx1,10,sp05,sp02,tex()\ite )
ComboBoxGadget(s, xx1, 30, sp10,sp02)
xx1=xx1+100
Case 7 To 8
TextGadget(#txg03+sz,xx1,10,sp05,sp02,tex()\ite )
StringGadget(s, xx1, 30, sp10,sp02,"", #PB_String_Numeric)
xx1=xx1+100
Case 9 To 13
TextGadget(#txg03+sz,xx2,55,45,sp02,tex()\ite )
ComboBoxGadget(s, xx2, 75, 45,sp02)
xx2=xx2+50
Case 14 To 25
TextGadget(#txg03+sz,xx2,55,45,sp02,tex()\ite )
StringGadget(s, xx2, 75, 45,sp02,"")
xx2=xx2+50
EndSelect
Next
fillen(1)
HideWindow(#eingabe, 0)
LastElement(item())
SetGadgetText(#cbg00,Str(item()\id+1))
Repeat ;Schleife Fenster Neu
Event = WaitWindowEvent()
Select Event ;fenster ereignis auswerten
Case #PB_Event_Gadget
Select EventGadget()
Case #cbg09 To #cbg13 ;Änderrung bei elementen
If EventType() =1 ;Rückseten des Elemts bei geänderter auswahl
If EventGadget() <> #cbg09 : SetGadgetState(#cbg09,0) :EndIf
If EventGadget() <> #cbg10 : SetGadgetState(#cbg10,0) :EndIf
If EventGadget() <> #cbg11 : SetGadgetState(#cbg11,0) :EndIf
If EventGadget() <> #cbg12 : SetGadgetState(#cbg12,0) :EndIf
If EventGadget() <> #cbg13 : SetGadgetState(#cbg13,0) :EndIf
EndIf
Case #bug10 ;Save Button ausgelöst
Event = 0 ;Ereigenis zurücksetzen
If GetGadgetText(#cbg03) <> "" ;Fetsellen ob Item name leer ist Ja= Nicht Speichern
save(1) ;Eingabe in zerlegen und in SQL Speichern
fillen(2) ;Felder auf Grundwerten zurück setzen
LastElement(item())
SetGadgetText(#cbg00,Str(item()\id+1)) ;Item ID um 1 erhöhen
EndIf
EndSelect
Case #PB_Event_CloseWindow ;Fenster neues Item wurde geschlossen
Debug "Neu Button 3 ?"
Debug #bug02
Debug IsGadget(#bug02)
CloseWindow(#eingabe) ;Fenster neues Item sicher schließen
Event = 0 ;Ereignis zurüsetzen
Debug "Neu Button 3a ?"
Debug #bug02
Debug IsGadget(#bug02)
DisableWindow(#haf,0) : HideWindow(#haf, 0) ;Hauptfenster 1.Freigeben 2.Sichtbar machen
EndSelect
Until IsWindow(#eingabe)= 0 ;Hauptfenster auf Gültigkeit Prüfen (Programm ende
EndSelect
EndSelect
EndSelect
Until Event= #PB_Event_CloseWindow
EndIf
EndIf
EndIf
Else
MessageRequester("Error!", fehler1000$) ;SQL Fehler ausgabe
EndIf