RyokuHasu Posted August 5, 2011 Author Share Posted August 5, 2011 apparently since i'm the ~~only one~~ first to come out and say that he successfully converted the convo system from CSDE to EO every one and their grandma wants to know how I did it. lol So instead of helping you all out one by one I'll just make a tutorial on how to do it.All credit (as far as I know) for this Mod goes to **Robin**But that doesn't mean that you don't give me a thank you post for taking time to write this ;D**BOTH CLIENT AND SERVER**In mod constantsunder ' General constants add```Public Const MAX_CONVS As Byte = 255```under ' Game editor constants add```Public Const EDITOR_CONV As Byte = 7```in modEnumerationsat the bottom of the "s" list add```SChatUpdateSConvEditorSUpdateConv```at the bottom of the "c" list add```CChatOptionCRequestEditConvCSaveConvCRequestConvs```in modTypesunder ' Public data structures add```Public Conv(1 To MAX_CONVS) As ConvWrapperRec```at the bottom of Private Type NpcRec add```Conv As LongConvo As Boolean```add to the bottom of Private Type MapNpcRec```c_lastDir As Bytec_inChatWith As Long```at the bottom of modTypes add```Private Type ConvRecConv As StringrText(1 To 4) As StringrTarget(1 To 4) As LongEvent As LongData1 As LongData2 As LongData3 As LongEnd TypePrivate Type ConvWrapperRecName As String * NAME_LENGTHchatCount As LongConv() As ConvRecEnd Type```**CLIENT SIDE**Add the attached editor to your Client.[http://heroofathea.c…Editor_Conv.frm](http://heroofathea.com/Downloads/frmEditor_Conv.frm)In modClientTCP add at the bottom```Public Sub SendRequestEditConv()Dim Buffer As clsBufferSet Buffer = New clsBufferBuffer.WriteLong CRequestEditConvSendData Buffer.ToArray()Set Buffer = NothingEnd SubPublic Sub SendSaveConv(ByVal Convnum As Long)Dim Buffer As clsBufferDim i As LongDim x As LongSet Buffer = New clsBufferBuffer.WriteLong CSaveConvBuffer.WriteLong ConvnumWith Conv(Convnum)Buffer.WriteString .NameBuffer.WriteLong .chatCountFor i = 1 To .chatCountBuffer.WriteString .Conv(i).ConvFor x = 1 To 4Buffer.WriteString .Conv(i).rText(x)Buffer.WriteLong .Conv(i).rTarget(x)NextBuffer.WriteLong .Conv(i).EventBuffer.WriteLong .Conv(i).Data1Buffer.WriteLong .Conv(i).Data2Buffer.WriteLong .Conv(i).Data3NextEnd WithSendData Buffer.ToArray()Set Buffer = NothingEnd SubSub SendRequestConvs()Dim Buffer As clsBufferSet Buffer = New clsBufferBuffer.WriteLong CRequestConvsSendData Buffer.ToArray()Set Buffer = NothingEnd SubPublic Sub SendChatOption(ByVal Index As Long)Dim Buffer As clsBufferSet Buffer = New clsBufferBuffer.WriteLong CChatOptionBuffer.WriteLong IndexSendData Buffer.ToArray()Set Buffer = NothingEnd Sub```in modDatabase add at the bottom```Sub ClearConv(ByVal Index As Long)Call ZeroMemory(ByVal VarPtr(Conv(Index)), LenB(Conv(Index)))Conv(Index).Name = vbNullStringReDim Conv(Index).Conv(1)End SubSub ClearConvs()Dim i As LongFor i = 1 To MAX_CONVSCall ClearConv(i)NextEnd Sub```in modGameEditors add at the bottom```' /////////////////' // Conv Editor //' /////////////////Public Sub ConvEditorInit()Dim i As Long, n As LongOn Error Resume NextIf frmEditor_Conv.Visible = False Then Exit SubEditorIndex = frmEditor_Conv.lstIndex.ListIndex + 1With frmEditor_Conv.txtName.text = Trim$(Conv(EditorIndex).Name)If Conv(EditorIndex).chatCount = 0 ThenConv(EditorIndex).chatCount = 1ReDim Preserve Conv(EditorIndex).Conv(1 To Conv(EditorIndex).chatCount)End IfFor n = 1 To 4.cmbReply(n).Clear.cmbReply(n).AddItem "None"For i = 1 To Conv(EditorIndex).chatCount.cmbReply(n).AddItem iNextNext.scrlChatCount = Conv(EditorIndex).chatCount.scrlConv.Max = Conv(EditorIndex).chatCount.scrlConv.Value = 1.txtConv = Conv(EditorIndex).Conv(.scrlConv.Value).ConvFor i = 1 To 4.txtReply(i).text = Conv(EditorIndex).Conv(.scrlConv.Value).rText(i).cmbReply(i).ListIndex = Conv(EditorIndex).Conv(.scrlConv.Value).rTarget(i)Next.cmbEvent.ListIndex = Conv(EditorIndex).Conv(.scrlConv.Value).Event.scrlData1.Value = Conv(EditorIndex).Conv(.scrlConv.Value).Data1.scrlData2.Value = Conv(EditorIndex).Conv(.scrlConv.Value).Data2.scrlData3.Value = Conv(EditorIndex).Conv(.scrlConv.Value).Data3End WithConv_Changed(EditorIndex) = TrueEnd SubPublic Sub ConvEditorOk()Dim i As LongFor i = 1 To MAX_CONVSIf Conv_Changed(i) ThenCall SendSaveConv(i)End IfNextUnload frmEditor_ConvEditor = 0ClearChanged_ConvEnd SubPublic Sub ConvEditorCancel()Editor = 0Unload frmEditor_ConvClearChanged_ConvClearConvsSendRequestConvsEnd SubPublic Sub ClearChanged_Conv()ZeroMemory Conv_Changed(1), MAX_CONVS * 2 ' 2 = boolean lengthEnd Sub```In modGlobalsunder 'gui add```Public inChat As Boolean```under ' Editor edited items array add```Public Conv_Changed(1 To MAX_CONVS) As Boolean```In modHandleDataAt the bottom of Public Sub InitMessages() add```HandleDataSub(SChatUpdate) = GetAddress(AddressOf HandleChatUpdate)HandleDataSub(SConvEditor) = GetAddress(AddressOf HandleConvEditor)HandleDataSub(SUpdateConv) = GetAddress(AddressOf HandleUpdateConv)```at the bottom of modHandleData add```Private Sub HandleConvEditor()Dim i As LongWith frmEditor_ConvEditor = EDITOR_CONV.lstIndex.Clear' Add the namesFor i = 1 To MAX_CONVS.lstIndex.AddItem i & ": " & Trim$(Conv(i).Name)Next.Show.lstIndex.ListIndex = 0ConvEditorInitEnd WithEnd SubPrivate Sub HandleUpdateConv(ByVal Index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)Dim Convnum As LongDim Buffer As clsBufferDim i As LongDim x As LongSet Buffer = New clsBufferBuffer.WriteBytes Data()Convnum = Buffer.ReadLongWith Conv(Convnum).Name = Buffer.ReadString.chatCount = Buffer.ReadLongReDim Conv(Convnum).Conv(1 To .chatCount)For i = 1 To .chatCount.Conv(i).Conv = Buffer.ReadStringFor x = 1 To 4.Conv(i).rText(x) = Buffer.ReadString.Conv(i).rTarget(x) = Buffer.ReadLongNext.Conv(i).Event = Buffer.ReadLong.Conv(i).Data1 = Buffer.ReadLong.Conv(i).Data2 = Buffer.ReadLong.Conv(i).Data3 = Buffer.ReadLongNextEnd WithSet Buffer = NothingEnd SubPrivate Sub HandleChatUpdate(ByVal Index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)Dim Buffer As clsBufferDim i As LongDim npcNum As LongDim mT As StringDim o1 As StringDim o2 As StringDim o3 As StringDim o4 As StringSet Buffer = New clsBufferBuffer.WriteBytes Data()npcNum = Buffer.ReadLongmT = Buffer.ReadStringo1 = Buffer.ReadStringo2 = Buffer.ReadStringo3 = Buffer.ReadStringo4 = Buffer.ReadStringSet Buffer = Nothing' if npcNum is 0, exit the chat systemIf npcNum = 0 TheninChat = FalsefrmMain.picChat.Visible = FalseExit SubEnd If' setup the main windowfrmMain.lblChatName.Caption = Trim$(NPC(npcNum).Name)frmMain.lblChat.Caption = mTfrmMain.lblChatOpt(1).Caption = o1frmMain.lblChatOpt(2).Caption = o2frmMain.lblChatOpt(3).Caption = o3frmMain.lblChatOpt(4).Caption = o4' render the facefrmMain.picChatFace.Picture = LoadPicture(App.Path & GFX_PATH & "\faces\" & NPC(npcNum).Sprite & ".bmp")' make it visiblefrmMain.picChat.Visible = True' can't moveinChat = TrueEnd Sub```**FORM WORK/CODE**in frmMainfind your way to you admin panel and make a new editor cmd button as shown![](http://www.mediafire.com/imgbnc.php/4f4e08fe8d93367bd088fffc27a5474e3646c59b421a562b88a0d42828c11a5f6g.jpg)2x click it and add```If GetPlayerAccess(MyIndex) < ADMIN_DEVELOPER ThenAddText "You need to be a high enough staff member to do this!", AlertColorExit SubEnd IfSendRequestEditConv```Now make a Pic box and arrange it to look like this![](http://www.mediafire.com/imgbnc.php/f6c2d5b102ef7b3a5270f4df1c9161db2da2b4d0c75535e8fd1784a5fd4f4e806g.jpg)Name the parts as follows:Large pic box = picChatsmall pic box = picChatFacetop left label = lblChatNamebottom left label = lblChat (make this one large)name all the labels on the rightlblChatOptand give each one an index in order, index can be found in the properties window.lblChatOpt (1)lblChatOpt (2)lblChatOpt (3)lblChatOpt (4)2x click one of the options, any of them, and add```Private Sub lblChatOpt_Click(Index As Integer)SendChatOption IndexEnd Sub```{if you set up the index for each right they should all link to that piece of code.}in frmMain (code) find Private Sub Form_Unload(Cancel As Integer)add before ' Error handler```picChat.Visible = False```In frmEditor_NPCStretch the right side of the form out a bit and add in the shown parts![](http://www.mediafire.com/imgbnc.php/5a2573f1e0cb21807acc2a0e0a8a6932bc2819a6decce7930d0263d337cd796b6g.jpg)Name the parts as follows:checkbox = Chkconvframe = FraConvlabel = LblConvNumscrollbar = ScrlConvSet FraConv visible to False2x click Chkconv and add```If Chkconv.Value = 1 ThenFraConv.Visible = TrueNPC(EditorIndex).Convo = TrueElseFraConv.Visible = FalseNPC(EditorIndex).Convo = FalseEnd If```2x click ScrlConv and add```If scrlConv.Value > 0 ThenlblConvNum.Caption = "Conv: " & Trim$(Conv(scrlConv.Value).Name)ElselblConvNum.Caption = "Conv: None"End IfNPC(EditorIndex).Conv = scrlConv.Value```In modGame Editorsin Public Sub NpcEditorInit()ABOVE ' find the sound we have set add```If NPC(EditorIndex).Convo = True Then.FraConv.Visible = True.ScrlConv.Value = NPC(EditorIndex).Conv.LblConvNum.Caption = NPC(EditorIndex).Conv.Chkconv.Value = 1Else.FraConv.Visible = False.ScrlConv.Value = 1.LblConvNum.Caption = NPC(EditorIndex).Conv.Chkconv.Value = 0End If```**SERVER SIDE**Add the attached modConv to your project[http://heroofathea.c…ads/modConv.bas](http://www.touchofdeathforums.com/smf/index.php?action=dlattach;topic=74220.0;attach=19038)in modCombatin Public Function CanPlayerAttackNpcunder```If NpcX = GetPlayerX(attacker) ThenIf NpcY = GetPlayerY(attacker) Then```add```If NPC(npcNum).Behaviour = NPC_BEHAVIOUR_FRIENDLY ThenIf NPC(npcNum).Convo = True ThenInitChat attacker, mapNum, mapNpcNumEnd IfExit FunctionEnd If```**OPTIONAL STEP**If you already have the Speech Window mod add this instead of the last part```If NPC(npcNum).Behaviour = NPC_BEHAVIOUR_FRIENDLY ThenIf NPC(npcNum).Convo = False ThenCall SpeechWindow(attacker, Trim$(NPC(npcNum).AttackSay), npcNum)ElseInitChat attacker, mapNum, mapNpcNumEnd IfExit FunctionEnd If```In modDatabase add at the bottom```' ***********' ** Convs **' ***********Sub SaveConvs()Dim i As LongFor i = 1 To MAX_CONVSCall SaveConv(i)NextEnd SubSub SaveConv(ByVal convNum As Long)Dim filename As StringDim i As Long, x As Long, F As Longfilename = App.Path & "\data\convs\conv" & convNum & ".dat"F = FreeFileOpen filename For Binary As #FWith Conv(convNum)Put #F, , .NamePut #F, , .chatCountFor i = 1 To .chatCountPut #F, , CLng(Len(.Conv(i).Conv))Put #F, , .Conv(i).ConvFor x = 1 To 4Put #F, , CLng(Len(.Conv(i).rText(x)))Put #F, , .Conv(i).rText(x)Put #F, , .Conv(i).rTarget(x)NextPut #F, , .Conv(i).EventPut #F, , .Conv(i).Data1Put #F, , .Conv(i).Data2Put #F, , .Conv(i).Data3NextEnd WithClose #FEnd SubSub LoadConvs()Dim filename As StringDim i As Long, n As Long, x As Long, F As LongDim sLen As LongCall CheckConvsFor i = 1 To MAX_CONVSfilename = App.Path & "\data\convs\conv" & i & ".dat"F = FreeFileOpen filename For Binary As #FWith Conv(i)Get #F, , .NameGet #F, , .chatCountIf .chatCount > 0 Then ReDim .Conv(1 To .chatCount)For n = 1 To .chatCountGet #F, , sLen.Conv(n).Conv = Space$(sLen)Get #F, , .Conv(n).ConvFor x = 1 To 4Get #F, , sLen.Conv(n).rText(x) = Space$(sLen)Get #F, , .Conv(n).rText(x)Get #F, , .Conv(n).rTarget(x)NextGet #F, , .Conv(n).EventGet #F, , .Conv(n).Data1Get #F, , .Conv(n).Data2Get #F, , .Conv(n).Data3NextEnd WithClose #FNextEnd SubSub CheckConvs()Dim i As LongFor i = 1 To MAX_CONVSIf Not FileExist("\data\convs\conv" & i & ".dat") ThenCall SaveConv(i)End IfNextEnd SubSub ClearConv(ByVal index As Long)Call ZeroMemory(ByVal VarPtr(Conv(index)), LenB(Conv(index)))Conv(index).Name = vbNullStringReDim Conv(index).Conv(1)End SubSub ClearConvs()Dim i As LongFor i = 1 To MAX_CONVSCall ClearConv(i)NextEnd Sub```In modGeneralin Public Sub InitServer()under ' Check if the directory is there, if its not make itadd```ChkDir App.Path & "\Data\", "convs"```under Public Sub ClearGameData() add```Call SetStatus("Clearing conversations...")Call ClearConvs```under Private Sub LoadGameData() add```Call SetStatus("Loading conversations...")Call LoadConvs```in modHadleDataunder Public Sub InitMessages() add```HandleDataSub(CChatOption) = GetAddress(AddressOf HandleChatOption)HandleDataSub(CRequestEditConv) = GetAddress(AddressOf HandleRequestEditConv)HandleDataSub(CSaveConv) = GetAddress(AddressOf HandleSaveConv)HandleDataSub(CRequestConvs) = GetAddress(AddressOf HandleRequestConvs)```and at the bottom of modHandleData add```Sub HandleChatOption(ByVal index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)Dim Buffer As clsBufferDim i As LongSet Buffer = New clsBufferBuffer.WriteBytes Data()chatOption index, Buffer.ReadLongSet Buffer = NothingEnd Sub' :::::::::::::::::::::::::::::' :: Request edit Conv packet ::' :::::::::::::::::::::::::::::Sub HandleRequestEditConv(ByVal index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)Dim Buffer As clsBuffer' Prevent hackingIf GetPlayerAccess(index) < ADMIN_DEVELOPER ThenExit SubEnd IfSet Buffer = New clsBufferBuffer.WriteLong SConvEditorSendDataTo index, Buffer.ToArray()Set Buffer = NothingEnd Sub' :::::::::::::::::::::::' :: Save Conv packet ::' :::::::::::::::::::::::Sub HandleSaveConv(ByVal index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)Dim convNum As LongDim Buffer As clsBufferDim i As LongDim x As Long' Prevent hackingIf GetPlayerAccess(index) < ADMIN_DEVELOPER ThenExit SubEnd IfSet Buffer = New clsBufferBuffer.WriteBytes Data()convNum = Buffer.ReadLong' Prevent hackingIf convNum < 0 Or convNum > MAX_CONVS ThenExit SubEnd IfWith Conv(convNum).Name = Buffer.ReadString.chatCount = Buffer.ReadLongReDim .Conv(1 To .chatCount)For i = 1 To .chatCount.Conv(i).Conv = Buffer.ReadStringFor x = 1 To 4.Conv(i).rText(x) = Buffer.ReadString.Conv(i).rTarget(x) = Buffer.ReadLongNext.Conv(i).Event = Buffer.ReadLong.Conv(i).Data1 = Buffer.ReadLong.Conv(i).Data2 = Buffer.ReadLong.Conv(i).Data3 = Buffer.ReadLongNextEnd With' Save itCall SendUpdateConvToAll(convNum)Call SaveConv(convNum)Call AddLog(GetPlayerName(index) & " saved Conv #" & convNum & ".", ADMIN_LOG)End SubSub HandleRequestConvs(ByVal index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)SendConvs indexEnd Sub```In modPlayerin Sub JoinGameunder ' Send some more little goodies, no need to explain theseadd```Call SendConvs(index)```in modServerTCP add at the bottom```Sub SendConvs(ByVal index As Long)Dim i As LongFor i = 1 To MAX_CONVSIf LenB(Trim$(Conv(i).Name)) > 0 ThenCall SendUpdateConvTo(index, i)End IfNextEnd SubSub SendUpdateConvToAll(ByVal convNum As Long)Dim packet As StringDim Buffer As clsBufferDim i As LongDim x As LongSet Buffer = New clsBufferSet Buffer = New clsBufferBuffer.WriteLong SUpdateConvBuffer.WriteLong convNumWith Conv(convNum)Buffer.WriteString .NameBuffer.WriteLong .chatCountFor i = 1 To .chatCountBuffer.WriteString .Conv(i).ConvFor x = 1 To 4Buffer.WriteString .Conv(i).rText(x)Buffer.WriteLong .Conv(i).rTarget(x)NextBuffer.WriteLong .Conv(i).EventBuffer.WriteLong .Conv(i).Data1Buffer.WriteLong .Conv(i).Data2Buffer.WriteLong .Conv(i).Data3NextEnd WithSendDataToAll Buffer.ToArray()Set Buffer = NothingEnd SubSub SendUpdateConvTo(ByVal index As Long, ByVal convNum As Long)Dim packet As StringDim Buffer As clsBufferDim i As LongDim x As LongSet Buffer = New clsBufferBuffer.WriteLong SUpdateConvBuffer.WriteLong convNumWith Conv(convNum)Buffer.WriteString .NameBuffer.WriteLong .chatCountFor i = 1 To .chatCountBuffer.WriteString .Conv(i).ConvFor x = 1 To 4Buffer.WriteString .Conv(i).rText(x)Buffer.WriteLong .Conv(i).rTarget(x)NextBuffer.WriteLong .Conv(i).EventBuffer.WriteLong .Conv(i).Data1Buffer.WriteLong .Conv(i).Data2Buffer.WriteLong .Conv(i).Data3NextEnd WithSendDataTo index, Buffer.ToArray()Set Buffer = NothingEnd SubSub SendChatUpdate(ByVal index As Long, ByVal npcNum As Long, ByVal mT As String, ByVal o1 As String, ByVal o2 As String, ByVal o3 As String, ByVal o4 As String)Dim Buffer As clsBufferSet Buffer = New clsBufferBuffer.WriteLong SChatUpdateBuffer.WriteLong npcNumBuffer.WriteString mTBuffer.WriteString o1Buffer.WriteString o2Buffer.WriteString o3Buffer.WriteString o4SendDataTo index, Buffer.ToArray()Set Buffer = NothingEnd Sub```in modtypesadd to the botom of Public Type TempPlayerRec```inChatWith As LongcurChat As Longc_mapNum As Longc_mapNpcNum As Long```**DONE****Optional** (not tested)Stop NPC movement while in chat, found by justn, made by RobinmodServerLoopPrivate Sub UpdateMapLogicunder this``` ' /////////////////////////////////////////////' // This is used for NPC walking/targetting //' /////////////////////////////////////////////' Make sure theres a npc with the mapIf Map(mapnum).NPC(x) > 0 And MapNpc(mapnum).NPC(x).Num > 0 ThenIf MapNpc(mapnum).NPC(x).StunDuration > 0 Then' check if we can unstun themIf GetTickCount > MapNpc(mapnum).NPC(x).StunTimer + (MapNpc(mapnum).NPC(x).StunDuration * 1000) ThenMapNpc(mapnum).NPC(x).StunDuration = 0MapNpc(mapnum).NPC(x).StunTimer = 0End IfElse```add```' check if in conversationIf MapNpc(mapnum).NPC(x).c_inChatWith > 0 Then' check if we can stop having conversationIf Not TempPlayer(MapNpc(mapnum).NPC(x).c_inChatWith).inChatWith = npcNum ThenMapNpc(mapnum).NPC(x).c_inChatWith = 0MapNpc(mapnum).NPC(x).Dir = MapNpc(mapnum).NPC(x).c_lastDirNpcDir mapnum, x, MapNpc(mapnum).NPC(x).DirEnd IfElse```bottom of mod conv add the sub closeplayerchat (the same thing basicly you had in the shop event```Public Sub ClosePlayerChat(ByVal index As Long)' exit the chatTempPlayer(index).inChatWith = 0TempPlayer(index).curChat = 0' send chat updatesendChat index' send npc dirWith MapNpc(TempPlayer(index).c_mapNum).NPC(TempPlayer(index).c_mapNpcNum)If .c_inChatWith = index Then.c_inChatWith = 0.Dir = .c_lastDirNpcDir TempPlayer(index).c_mapNum, TempPlayer(index).c_mapNpcNum, .DirEnd IfEnd With' clear last of dataTempPlayer(index).c_mapNpcNum = 0TempPlayer(index).c_mapNum = 0Exit SubEnd Sub```then under "SendBank index" in modconv add:```TempPlayer(index).InBank = True```then under "SendInventory index" in modconv add:```ClosePlayerChat index``` Link to comment Share on other sites More sharing options...
Robin Posted August 5, 2011 Share Posted August 5, 2011 Don't try and adopt my writing style and don't try and beg people to credit you for other people's code. Link to comment Share on other sites More sharing options...
RyokuHasu Posted August 5, 2011 Author Share Posted August 5, 2011 @Robin:> Don't try and adopt my writing style and don't try and beg people to credit you for other people's code.Im not, and I'm not.I even said to credit you, I just want a post saying Thanks for writing this topic.About your writing style… O.o... sorry didn't notice. Link to comment Share on other sites More sharing options...
shadowdeath Posted August 5, 2011 Share Posted August 5, 2011 That's great. :DNow, how do I get the TUTORIAL SYSTEM working?~I got everything but the rendering of the picbox working. Link to comment Share on other sites More sharing options...
RyokuHasu Posted August 5, 2011 Author Share Posted August 5, 2011 @shadowdeath:> That's great. :D> Now, how do I get the TUTORIAL SYSTEM working?> ~I got everything but the rendering of the picbox working.Tutorial system? O.o…. err what? Link to comment Share on other sites More sharing options...
erkro1 Posted August 5, 2011 Share Posted August 5, 2011 Anyway, nice tutorial, haven't tried it out yet but I'll definitely do that soon. ;) Link to comment Share on other sites More sharing options...
shadowdeath Posted August 5, 2011 Share Posted August 5, 2011 You know when you use CrystalShir that Tutorial pops up in the beginning of the game?That. Link to comment Share on other sites More sharing options...
RyokuHasu Posted August 5, 2011 Author Share Posted August 5, 2011 @shadowdeath:> You know when you use CrystalShir that Tutorial pops up in the beginning of the game?> That.…errr... I havent played CS.. =x I want to though Link to comment Share on other sites More sharing options...
shadowdeath Posted August 5, 2011 Share Posted August 5, 2011 Well then.Take a look at the source, it uses Tutorial in the form of "TutorialState", "TutorialStart", etc. Link to comment Share on other sites More sharing options...
RyokuHasu Posted August 5, 2011 Author Share Posted August 5, 2011 Ok… ill look into that =/In other news I forgot to include the way to call the editor XD Link to comment Share on other sites More sharing options...
tsuki Posted August 5, 2011 Share Posted August 5, 2011 the tutorial he said is something like this@Jimmy:> create a character value as long, like "firstlogin as long"> and on the server side in the Sub LeftGame you put a command to change the firstlogin to 1, so after the first logout the value will be changed to 1> then at the cliente side you create a function to open the conversation (or anything else you want) if the firstlogin value is 0.> as the value was changed for 1 after the first logout, the conversation will not open again. Link to comment Share on other sites More sharing options...
shadowdeath Posted August 5, 2011 Share Posted August 5, 2011 Yeah.But, as I said, I basically have that working.The only thing is, it seems that the tutorial only shows if a box is rendered around the text.Which, of course, was rendered with DX8.EO2 does not use DX8. Link to comment Share on other sites More sharing options...
RyokuHasu Posted August 5, 2011 Author Share Posted August 5, 2011 x.x CRAP…. I also forgot to add in the Convo window to the Tutorial XD.... Ill make that... just give me a bit Link to comment Share on other sites More sharing options...
shadowdeath Posted August 5, 2011 Share Posted August 5, 2011 Actually, I got it working way before you made this tutorial.It was about 4 days after I made my thread.I mixed the CS:DE convo system source with the WN convo system source.As I said before, I just can't figure out the tutorial system. Link to comment Share on other sites More sharing options...
RyokuHasu Posted August 5, 2011 Author Share Posted August 5, 2011 then that not part of this convo system i don't think =P … try making another Q&A topic =DAs for the convo system Tutorial... XD I alsomt finished the Form work section. I forgot the coding now on the new form work XD* * *>.< ok ALL FORM WORK IS DONE XD Im such a forgetful tutorial author @w@ Link to comment Share on other sites More sharing options...
aaaron Posted August 5, 2011 Share Posted August 5, 2011 Your not the only one to successfully convert it from CS:DE to EO. o.O Link to comment Share on other sites More sharing options...
RyokuHasu Posted August 5, 2011 Author Share Posted August 5, 2011 @Aáron:> Your not the only one to successfully convert it from CS:DE to EO. o.O>.< ok point taken… but I was the first who came out and said he did it... you should see my PM box filled with requests to show how i did it =Pthus why this tut now exists XD Link to comment Share on other sites More sharing options...
aaaron Posted August 5, 2011 Share Posted August 5, 2011 Haha. That's funny.Only reason I didn't really say I did. Link to comment Share on other sites More sharing options...
RyokuHasu Posted August 5, 2011 Author Share Posted August 5, 2011 ;D happy? sightly edited the intro lol Link to comment Share on other sites More sharing options...
aaaron Posted August 5, 2011 Share Posted August 5, 2011 Ok then. ; ] Link to comment Share on other sites More sharing options...
shadowdeath Posted August 5, 2011 Share Posted August 5, 2011 The Introduction part does, in fact, use parts of the conversation system.I think. Link to comment Share on other sites More sharing options...
RyokuHasu Posted August 5, 2011 Author Share Posted August 5, 2011 x.x…. well.... im not sure what to tell you =/ maby its not working because you fused the convo system with something else =o didn't you say you did that? Link to comment Share on other sites More sharing options...
shadowdeath Posted August 5, 2011 Share Posted August 5, 2011 Yeah.The only problem with the tutorial system is that the picbox dosen't show because apparently it has to be rendered by DX8\. If look at the CS:DE source for awhile, you'll see the tutorial stuff. Link to comment Share on other sites More sharing options...
RyokuHasu Posted August 5, 2011 Author Share Posted August 5, 2011 =P sorry i dont have time to do that… just find a way to convert it to making a hidden pic box pop up like every other edit for EO Link to comment Share on other sites More sharing options...
shadowdeath Posted August 5, 2011 Share Posted August 5, 2011 It's a bit harder than that.To understand what I'm saying, you might have to look at the source. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now