03-10-2006, 04:33 PM
Hey I know you guys are probably getting annoyed with me, but I'm going to post the code that I have been working on for ingame class editor and maybe(hopefully) I can get some help on it.
starting server side in modhandledata
modServerTCP
ModDataBase
OK onto client side starting at frmclasseditor(YOU WILL HAVE TO CREATE THIS FORM YOURSELF) just a hint for any newbie who wants to add a untested code
Ok for ^ the above on the form create 1 text box and 5 hscroll bars; name then scrlsprite str def speed and magi; then 2 pic boxes, name them picsprite and picsprites; now a label called lblHp; then a timer called tmrsprite and the ok and cancel buttons. Moving along to frmindexmodGameLogic
modGlobalsmodhandledata[code] ' :::::::::::::::::::::::
' :: Class editor packet ::
' :::::::::::::::::::::::
If (LCase(Parse(0)) = "classeditor") Then
InClassEditor = True
frmIndex.Show
frmIndex.lstIndex.Clear
' Add the names
For i = 1 To MAX_CLASSES
frmIndex.lstIndex.AddItem i & ": " & Trim(Class(i).Name)
Next i
frmIndex.lstIndex.ListIndex = 0
Exit Sub
End If
' :::::::::::::::::::::::
' :: Update Class packet ::
' :::::::::::::::::::::::
If (LCase(Parse(0)) = "updateclass") Then
n = Val(Parse(1))
' Update the item
Class(n).Name = Parse(2)
Class(n).Sprite = Val(Parse(3))
Class(n).STR = 0
Class(n).DEF = 0
Class(n).SPEED = 0
Class(n).MAGI = 0
Exit Sub
End If
' :::::::::::::::::::::
' :: Edit class packet :: Max_Classes Then
Call HackingAttempt(Index, "Invalid CLASS Index")
Exit Sub
End If
' Update the npc
STR(n).Name = Parse(2)
STR(n).Sprite = Val(Parse(3))
STR(n).STR = Val(Parse(4))
STR(n).DEF = Val(Parse(5))
STR(n).SPEED = Val(Parse(6))
STR(n).MAGI = Val(Parse(7))
' Save it
Call SendUpdateClassToAll(n)
>>>>>>>>Call SaveClass(n)
starting server side in modhandledata
Code:
' :::::::::::::::::::::::::::::
' :: Request edit Class packet ::
' :::::::::::::::::::::::::::::
If LCase(Parse(0)) = "requesteditclass" Then
' Prevent hacking
If GetPlayerAccess(Index) < ADMIN_DEVELOPER Then
Call HackingAttempt(Index, "Admin Cloning")
Exit Sub
End If
Call SendDataTo(Index, "CLASSEDITOR" & SEP_CHAR & END_CHAR)
Exit Sub
End If
' :::::::::::::::::::::
' :: Edit class packet ::
' :::::::::::::::::::::
If LCase(Parse(0)) = "editclass" Then
' Prevent hacking
If GetPlayerAccess(Index) < ADMIN_DEVELOPER Then
Call HackingAttempt(Index, "Admin Cloning")
Exit Sub
End If
' The class #
n = Val(Parse(1))
' Prevent hacking
If n < 0 Or n > Max_Classes Then
Call HackingAttempt(Index, "Invalid CLASS Index")
Exit Sub
End If
Call AddLog(GetPlayerName(Index) & " editing class #" & n & ".", ADMIN_LOG)
Call SendEditClassTo(Index, n)
End If
' :::::::::::::::::::::
' :: Save class packet ::
' :::::::::::::::::::::
If LCase(Parse(0)) = "saveclass" Then
' Prevent hacking
If GetPlayerAccess(Index) < ADMIN_DEVELOPER Then
Call HackingAttempt(Index, "Admin Cloning")
Exit Sub
End If
n = Val(Parse(1))
' Prevent hacking
If n < 0 Or n > Max_Classes Then
Call HackingAttempt(Index, "Invalid CLASS Index")
Exit Sub
End If
' Update the npc
STR(n).Name = Parse(2)
STR(n).Sprite = Val(Parse(3))
STR(n).STR = Val(Parse(4))
STR(n).DEF = Val(Parse(5))
STR(n).SPEED = Val(Parse(6))
STR(n).MAGI = Val(Parse(7))
' Save it
Call SendUpdateClassToAll(n)
Call SaveClass(n)
Call AddLog(GetPlayerName(Index) & " saved Class #" & n & ".", ADMIN_LOG)
Exit Sub
End If
Code:
Sub SendUpdateClassToAll(ByVal ClassNum As Long)
Dim Packet As String
Packet = "UPDATECLASS" & SEP_CHAR & ClassNum & SEP_CHAR & Trim(Class(ClassNum).Name) & SEP_CHAR & Class(ClassNum).Sprite & SEP_CHAR & END_CHAR
Call SendDataToAll(Packet)
End Sub
Sub SendUpdateClassTo(ByVal Index As Long, ByVal ClassNum As Long)
Dim Packet As String
Packet = "UPDATECLASS" & SEP_CHAR & ClassNum & SEP_CHAR & Trim(Class(ClassNum).Name) & SEP_CHAR & Class(ClassNum).Sprite & SEP_CHAR & END_CHAR
Call SendDataTo(Index, Packet)
End Sub
Sub SendEditClassTo(ByVal Index As Long, ByVal ClassNum As Long)
Dim Packet As String
Packet = "EDITCLASS" & SEP_CHAR & ClassNum & SEP_CHAR & Trim(Class(ClassNum).Name) & SEP_CHAR & SEP_CHAR & Class(ClassNum).Sprite & SEP_CHAR & Class(ClassNum).STR & SEP_CHAR & Class(ClassNum).DEF & SEP_CHAR & Class(ClassNum).SPEED & SEP_CHAR & Class(ClassNum).MAGI & SEP_CHAR & END_CHAR
Call SendDataTo(Index, Packet)
End Sub
Code:
Sub SaveClass()
Dim i As Long
For i = 1 To Max_Classes
Call SaveClasses(i)
Next i
End Sub
OK onto client side starting at frmclasseditor(YOU WILL HAVE TO CREATE THIS FORM YOURSELF) just a hint for any newbie who wants to add a untested code
Code:
Option Explicit
Private Sub scrlSprite_Change()
lblSprite.Caption = STR(scrlSprite.Value)
End Sub
Private Sub scrlSTR_Change()
lblSTR.Caption = STR(scrlSTR.Value)
lblHp.Caption = STR(scrlSTR.Value * scrlDEF.Value)
End Sub
Private Sub scrlDEF_Change()
lblDEF.Caption = STR(scrlDEF.Value)
lblHp.Caption = STR(scrlSTR.Value * scrlDEF.Value)
End Sub
Private Sub scrlSPEED_Change()
lblSPEED.Caption = STR(scrlSpeed.Value)
End Sub
Private Sub scrlMAGI_Change()
lblMAGI.Caption = STR(scrlMAGI.Value)
End Sub
Private Sub cmdOk_Click()
Call ClassEditorOk
End Sub
Private Sub cmdCancel_Click()
Call ClassEditorCancel
End Sub
Private Sub tmrSprite_Timer()
Call ClassEditorBltSprite
End Sub
Code:
If InClassEditor = True Then
Call SendData("EDITCLASS" & SEP_CHAR & EditorIndex & SEP_CHAR & END_CHAR)
End If
InClassEditor = False
Code:
Public Sub ClassEditorInit()
frmClassEditor.picSprites.Picture = LoadPicture(App.Path & GFX_PATH & "sprites" & GFX_EXT)
frmClassEditor.txtName.Text = Trim(Class(EditorIndex).Name)
frmClassEditor.scrlSprite.Value = STR(EditorIndex).Sprite
frmClassEditor.scrlSTR.Value = STR(EditorIndex).STR
frmClassEditor.scrlDEF.Value = STR(EditorIndex).DEF
frmClassEditor.scrlSpeed.Value = STR(EditorIndex).SPEED
frmClassEditor.scrlMAGI.Value = STR(EditorIndex).MAGI
frmClassEditor.Show vbModal
End Sub
Public Sub ClassEditorOk()
Class(EditorIndex).Name = frmClassEditor.txtName.Text
Class(EditorIndex).Sprite = frmClassEditor.scrlSprite.Value
Class(EditorIndex).STR = frmClassEditor.scrlSTR.Value
Class(EditorIndex).DEF = frmClassEditor.scrlDEF.Value
Class(EditorIndex).SPEED = frmClassEditor.scrlSpeed.Value
Class(EditorIndex).MAGI = frmClassEditor.scrlMAGI.Value
Call SendSaveClasses(EditorIndex)
InClassEditor = False
Unload frmClassEditor
End Sub
Public Sub ClassEditorCancel()
InClassEditor = False
Unload frmClassEditor
End Sub
Public Sub ClassEditorBltSprite()
Call BitBlt(frmClassEditor.picSprite.hdc, 0, 0, PIC_X, PIC_Y, frmClassEditor.picSprites.hdc, 3 * PIC_X, frmClassEditor.scrlSprite.Value * PIC_Y, SRCCOPY)
End Sub
Code:
Public InClassEditor As Boolean
' :: Class editor packet ::
' :::::::::::::::::::::::
If (LCase(Parse(0)) = "classeditor") Then
InClassEditor = True
frmIndex.Show
frmIndex.lstIndex.Clear
' Add the names
For i = 1 To MAX_CLASSES
frmIndex.lstIndex.AddItem i & ": " & Trim(Class(i).Name)
Next i
frmIndex.lstIndex.ListIndex = 0
Exit Sub
End If
' :::::::::::::::::::::::
' :: Update Class packet ::
' :::::::::::::::::::::::
If (LCase(Parse(0)) = "updateclass") Then
n = Val(Parse(1))
' Update the item
Class(n).Name = Parse(2)
Class(n).Sprite = Val(Parse(3))
Class(n).STR = 0
Class(n).DEF = 0
Class(n).SPEED = 0
Class(n).MAGI = 0
Exit Sub
End If
' :::::::::::::::::::::
' :: Edit class packet :: Max_Classes Then
Call HackingAttempt(Index, "Invalid CLASS Index")
Exit Sub
End If
' Update the npc
STR(n).Name = Parse(2)
STR(n).Sprite = Val(Parse(3))
STR(n).STR = Val(Parse(4))
STR(n).DEF = Val(Parse(5))
STR(n).SPEED = Val(Parse(6))
STR(n).MAGI = Val(Parse(7))
' Save it
Call SendUpdateClassToAll(n)
>>>>>>>>Call SaveClass(n)