| Mirage Source http://web.miragesource.net/forums/ |
|
| InClassEditor system http://web.miragesource.net/forums/viewtopic.php?f=201&t=594 |
Page 1 of 1 |
| Author: | DarkX [ Tue Oct 03, 2006 4:33 pm ] |
| Post subject: | InClassEditor system |
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 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 modServerTCP 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 ModDataBase 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 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 frmindex Code: If InClassEditor = True Then Call SendData("EDITCLASS" & SEP_CHAR & EditorIndex & SEP_CHAR & END_CHAR) End If InClassEditor = False modGameLogic 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 modGlobals Code: Public InClassEditor As Boolean modhandledata 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 :: <- Used for item editor admins only ' ::::::::::::::::::::: If (LCase(Parse(0)) = "editclass") Then n = Val(Parse(1)) ' Update the class Class(n).Name = Parse(2) Class(n).Sprite = Val(Parse(3)) Class(n).STR = Val(Parse(4)) Class(n).DEF = Val(Parse(5)) Class(n).SPEED = Val(Parse(6)) Class(n).MAGI = Val(Parse(7)) ' Initialize the Class editor Call ClassEditorInit Exit Sub End If modclienttcp Code: Sub SendRequestEditClass() Dim Packet As String Packet = "REQUESTEDITCLASS" & SEP_CHAR & END_CHAR Call SendData(Packet) End Sub Public Sub SendSaveClasses(ByVal NpcNum As Long) '**************************************************************** '* WHEN WHO WHAT '* ---- --- ---- '* 07/12/2005 Shannara Optimized function. '**************************************************************** Dim Packet As String With Class(ClassNum) Packet = "SAVECLASSES" & SEP_CHAR & ClassNum & SEP_CHAR & Trim(.Name) & SEP_CHAR & SEP_CHAR & .Sprite & SEP_CHAR & SEP_CHAR & .STR & SEP_CHAR & .DEF & SEP_CHAR & .SPEED & SEP_CHAR & .MAGI & SEP_CHAR & END_CHAR End With Call SendData(Packet) End Sub I can't get it to work because it highlights one thing on server side Code: ' ::::::::::::::::::::: When it highlights that it says "Compile Error: wrong number of arguments or invalid property assignment" which I created SubSaveClass because it kept giving the same error. any idea of somethign thats wrong please post I could use all the help I can get. Thanks later' :: 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 -----------EDIT---------- I fixed the above by removing the (n) at the end of it... Now just to get to actually bring up the class editor, since now when you bring it (through the admin panel only is how it opens) it has an error runtime error '424': object required. oohh and it highlights this 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 |
|
| Page 1 of 1 | All times are UTC |
| Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |
|