[CS:DE] to [EO] Conversation system V1.1

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 constants

under ’ General constants add


Public Const MAX_CONVS As Byte = 255

under ’ Game editor constants add


Public Const EDITOR_CONV As Byte = 7

in modEnumerations

at the bottom of the “s” list add


SChatUpdate

SConvEditor

SUpdateConv

at the bottom of the “c” list add


CChatOption

CRequestEditConv

CSaveConv

CRequestConvs

in modTypes

under ’ Public data structures add


Public Conv(1 To MAX_CONVS) As ConvWrapperRec

at the bottom of Private Type NpcRec add


Conv As Long

Convo As Boolean

add to the bottom of Private Type MapNpcRec


c_lastDir As Byte

c_inChatWith As Long

at the bottom of modTypes add


Private Type ConvRec

Conv As String

rText(1 To 4) As String

rTarget(1 To 4) As Long

Event As Long

Data1 As Long

Data2 As Long

Data3 As Long

End Type

Private Type ConvWrapperRec

Name As String * NAME_LENGTH

chatCount As Long

Conv() As ConvRec

End Type

CLIENT SIDE

Add the attached editor to your Client.

http://heroofathea.c…Editor_Conv.frm

In modClientTCP add at the bottom


Public Sub SendRequestEditConv()

Dim Buffer As clsBuffer

Set Buffer = New clsBuffer

Buffer.WriteLong CRequestEditConv

SendData Buffer.ToArray()

Set Buffer = Nothing

End Sub

Public Sub SendSaveConv(ByVal Convnum As Long)

Dim Buffer As clsBuffer

Dim i As Long

Dim x As Long

Set Buffer = New clsBuffer

Buffer.WriteLong CSaveConv

Buffer.WriteLong Convnum

With Conv(Convnum)

Buffer.WriteString .Name

Buffer.WriteLong .chatCount

For i = 1 To .chatCount

Buffer.WriteString .Conv(i).Conv

For x = 1 To 4

Buffer.WriteString .Conv(i).rText(x)

Buffer.WriteLong .Conv(i).rTarget(x)

Next

Buffer.WriteLong .Conv(i).Event

Buffer.WriteLong .Conv(i).Data1

Buffer.WriteLong .Conv(i).Data2

Buffer.WriteLong .Conv(i).Data3

Next

End With

SendData Buffer.ToArray()

Set Buffer = Nothing

End Sub

Sub SendRequestConvs()

Dim Buffer As clsBuffer

Set Buffer = New clsBuffer

Buffer.WriteLong CRequestConvs

SendData Buffer.ToArray()

Set Buffer = Nothing

End Sub

Public Sub SendChatOption(ByVal Index As Long)

Dim Buffer As clsBuffer

Set Buffer = New clsBuffer

Buffer.WriteLong CChatOption

Buffer.WriteLong Index

SendData Buffer.ToArray()

Set Buffer = Nothing

End 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 = vbNullString

ReDim Conv(Index).Conv(1)

End Sub

Sub ClearConvs()

Dim i As Long

For i = 1 To MAX_CONVS

Call ClearConv(i)

Next

End Sub

in modGameEditors add at the bottom


' /////////////////

' // Conv Editor //

' /////////////////

Public Sub ConvEditorInit()

Dim i As Long, n As Long

On Error Resume Next

If frmEditor_Conv.Visible = False Then Exit Sub

EditorIndex = frmEditor_Conv.lstIndex.ListIndex + 1

With frmEditor_Conv

.txtName.text = Trim$(Conv(EditorIndex).Name)

If Conv(EditorIndex).chatCount = 0 Then

Conv(EditorIndex).chatCount = 1

ReDim Preserve Conv(EditorIndex).Conv(1 To Conv(EditorIndex).chatCount)

End If

For n = 1 To 4

.cmbReply(n).Clear

.cmbReply(n).AddItem "None"

For i = 1 To Conv(EditorIndex).chatCount

.cmbReply(n).AddItem i

Next

Next

.scrlChatCount = Conv(EditorIndex).chatCount

.scrlConv.Max = Conv(EditorIndex).chatCount

.scrlConv.Value = 1

.txtConv = Conv(EditorIndex).Conv(.scrlConv.Value).Conv

For 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).Data3

End With

Conv_Changed(EditorIndex) = True

End Sub

Public Sub ConvEditorOk()

Dim i As Long

For i = 1 To MAX_CONVS

If Conv_Changed(i) Then

Call SendSaveConv(i)

End If

Next

Unload frmEditor_Conv

Editor = 0

ClearChanged_Conv

End Sub

Public Sub ConvEditorCancel()

Editor = 0

Unload frmEditor_Conv

ClearChanged_Conv

ClearConvs

SendRequestConvs

End Sub

Public Sub ClearChanged_Conv()

ZeroMemory Conv_Changed(1), MAX_CONVS * 2 ' 2 = boolean length

End Sub

In modGlobals

under 'gui add


Public inChat As Boolean

under ’ Editor edited items array add


Public Conv_Changed(1 To MAX_CONVS) As Boolean

In modHandleData

At 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 Long

With frmEditor_Conv

Editor = EDITOR_CONV

.lstIndex.Clear

' Add the names

For i = 1 To MAX_CONVS

.lstIndex.AddItem i & ": " & Trim$(Conv(i).Name)

Next

.Show

.lstIndex.ListIndex = 0

ConvEditorInit

End With

End Sub

Private Sub HandleUpdateConv(ByVal Index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)

Dim Convnum As Long

Dim Buffer As clsBuffer

Dim i As Long

Dim x As Long

Set Buffer = New clsBuffer

Buffer.WriteBytes Data()

Convnum = Buffer.ReadLong

With Conv(Convnum)

.Name = Buffer.ReadString

.chatCount = Buffer.ReadLong

ReDim Conv(Convnum).Conv(1 To .chatCount)

For i = 1 To .chatCount

.Conv(i).Conv = Buffer.ReadString

For x = 1 To 4

.Conv(i).rText(x) = Buffer.ReadString

.Conv(i).rTarget(x) = Buffer.ReadLong

Next

.Conv(i).Event = Buffer.ReadLong

.Conv(i).Data1 = Buffer.ReadLong

.Conv(i).Data2 = Buffer.ReadLong

.Conv(i).Data3 = Buffer.ReadLong

Next

End With

Set Buffer = Nothing

End Sub

Private Sub HandleChatUpdate(ByVal Index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)

Dim Buffer As clsBuffer

Dim i As Long

Dim npcNum As Long

Dim mT As String

Dim o1 As String

Dim o2 As String

Dim o3 As String

Dim o4 As String

Set Buffer = New clsBuffer

Buffer.WriteBytes Data()

npcNum = Buffer.ReadLong

mT = Buffer.ReadString

o1 = Buffer.ReadString

o2 = Buffer.ReadString

o3 = Buffer.ReadString

o4 = Buffer.ReadString

Set Buffer = Nothing

' if npcNum is 0, exit the chat system

If npcNum = 0 Then

inChat = False

frmMain.picChat.Visible = False

Exit Sub

End If

' setup the main window

frmMain.lblChatName.Caption = Trim$(NPC(npcNum).Name)

frmMain.lblChat.Caption = mT

frmMain.lblChatOpt(1).Caption = o1

frmMain.lblChatOpt(2).Caption = o2

frmMain.lblChatOpt(3).Caption = o3

frmMain.lblChatOpt(4).Caption = o4

' render the face

frmMain.picChatFace.Picture = LoadPicture(App.Path & GFX_PATH & "\faces\" & NPC(npcNum).Sprite & ".bmp")

' make it visible

frmMain.picChat.Visible = True

' can't move

inChat = True

End Sub

FORM WORK/CODE

in frmMain

find your way to you admin panel and make a new editor cmd button as shown

2x click it and add


If GetPlayerAccess(MyIndex) < ADMIN_DEVELOPER Then

AddText "You need to be a high enough staff member to do this!", AlertColor

Exit Sub

End If

SendRequestEditConv

Now make a Pic box and arrange it to look like this

Name the parts as follows:

Large pic box = picChat

small pic box = picChatFace

top left label = lblChatName

bottom left label = lblChat (make this one large)

name all the labels on the right

lblChatOpt

and 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 Index

End 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_NPC

Stretch the right side of the form out a bit and add in the shown parts

Name the parts as follows:

checkbox = Chkconv

frame = FraConv

label = LblConvNum

scrollbar = ScrlConv

Set FraConv visible to False

2x click Chkconv and add


If Chkconv.Value = 1 Then

FraConv.Visible = True

NPC(EditorIndex).Convo = True

Else

FraConv.Visible = False

NPC(EditorIndex).Convo = False

End If

2x click ScrlConv and add


If scrlConv.Value > 0 Then

lblConvNum.Caption = "Conv: " & Trim$(Conv(scrlConv.Value).Name)

Else

lblConvNum.Caption = "Conv: None"

End If

NPC(EditorIndex).Conv = scrlConv.Value

In modGame Editors

in 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 = 1

Else

.FraConv.Visible = False

.ScrlConv.Value = 1

.LblConvNum.Caption = NPC(EditorIndex).Conv

.Chkconv.Value = 0

End If

SERVER SIDE

Add the attached modConv to your project

http://heroofathea.c…ads/modConv.bas

in modCombat

in Public Function CanPlayerAttackNpc

under


If NpcX = GetPlayerX(attacker) Then

If NpcY = GetPlayerY(attacker) Then

add


If NPC(npcNum).Behaviour = NPC_BEHAVIOUR_FRIENDLY Then

If NPC(npcNum).Convo = True Then

InitChat attacker, mapNum, mapNpcNum

End If

Exit Function

End 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 Then

If NPC(npcNum).Convo = False Then

Call SpeechWindow(attacker, Trim$(NPC(npcNum).AttackSay), npcNum)

Else

InitChat attacker, mapNum, mapNpcNum

End If

Exit Function

End If

In modDatabase add at the bottom


' ***********

' ** Convs **

' ***********

Sub SaveConvs()

Dim i As Long

For i = 1 To MAX_CONVS

Call SaveConv(i)

Next

End Sub

Sub SaveConv(ByVal convNum As Long)

Dim filename As String

Dim i As Long, x As Long, F As Long

filename = App.Path & "\data\convs\conv" & convNum & ".dat"

F = FreeFile

Open filename For Binary As #F

With Conv(convNum)

Put #F, , .Name

Put #F, , .chatCount

For i = 1 To .chatCount

Put #F, , CLng(Len(.Conv(i).Conv))

Put #F, , .Conv(i).Conv

For x = 1 To 4

Put #F, , CLng(Len(.Conv(i).rText(x)))

Put #F, , .Conv(i).rText(x)

Put #F, , .Conv(i).rTarget(x)

Next

Put #F, , .Conv(i).Event

Put #F, , .Conv(i).Data1

Put #F, , .Conv(i).Data2

Put #F, , .Conv(i).Data3

Next

End With

Close #F

End Sub

Sub LoadConvs()

Dim filename As String

Dim i As Long, n As Long, x As Long, F As Long

Dim sLen As Long

Call CheckConvs

For i = 1 To MAX_CONVS

filename = App.Path & "\data\convs\conv" & i & ".dat"

F = FreeFile

Open filename For Binary As #F

With Conv(i)

Get #F, , .Name

Get #F, , .chatCount

If .chatCount > 0 Then ReDim .Conv(1 To .chatCount)

For n = 1 To .chatCount

Get #F, , sLen

.Conv(n).Conv = Space$(sLen)

Get #F, , .Conv(n).Conv

For x = 1 To 4

Get #F, , sLen

.Conv(n).rText(x) = Space$(sLen)

Get #F, , .Conv(n).rText(x)

Get #F, , .Conv(n).rTarget(x)

Next

Get #F, , .Conv(n).Event

Get #F, , .Conv(n).Data1

Get #F, , .Conv(n).Data2

Get #F, , .Conv(n).Data3

Next

End With

Close #F

Next

End Sub

Sub CheckConvs()

Dim i As Long

For i = 1 To MAX_CONVS

If Not FileExist("\data\convs\conv" & i & ".dat") Then

Call SaveConv(i)

End If

Next

End Sub

Sub ClearConv(ByVal index As Long)

Call ZeroMemory(ByVal VarPtr(Conv(index)), LenB(Conv(index)))

Conv(index).Name = vbNullString

ReDim Conv(index).Conv(1)

End Sub

Sub ClearConvs()

Dim i As Long

For i = 1 To MAX_CONVS

Call ClearConv(i)

Next

End Sub

In modGeneral

in Public Sub InitServer()

under ’ Check if the directory is there, if its not make it

add


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 modHadleData

under 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 clsBuffer

Dim i As Long

Set Buffer = New clsBuffer

Buffer.WriteBytes Data()

chatOption index, Buffer.ReadLong

Set Buffer = Nothing

End Sub

' 



Sub HandleRequestEditConv(ByVal index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)

Dim Buffer As clsBuffer

' Prevent hacking

If GetPlayerAccess(index) < ADMIN_DEVELOPER Then

Exit Sub

End If

Set Buffer = New clsBuffer

Buffer.WriteLong SConvEditor

SendDataTo index, Buffer.ToArray()

Set Buffer = Nothing

End Sub

' 



Sub HandleSaveConv(ByVal index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)

Dim convNum As Long

Dim Buffer As clsBuffer

Dim i As Long

Dim x As Long

' Prevent hacking

If GetPlayerAccess(index) < ADMIN_DEVELOPER Then

Exit Sub

End If

Set Buffer = New clsBuffer

Buffer.WriteBytes Data()

convNum = Buffer.ReadLong

' Prevent hacking

If convNum < 0 Or convNum > MAX_CONVS Then

Exit Sub

End If

With Conv(convNum)

.Name = Buffer.ReadString

.chatCount = Buffer.ReadLong

ReDim .Conv(1 To .chatCount)

For i = 1 To .chatCount

.Conv(i).Conv = Buffer.ReadString

For x = 1 To 4

.Conv(i).rText(x) = Buffer.ReadString

.Conv(i).rTarget(x) = Buffer.ReadLong

Next

.Conv(i).Event = Buffer.ReadLong

.Conv(i).Data1 = Buffer.ReadLong

.Conv(i).Data2 = Buffer.ReadLong

.Conv(i).Data3 = Buffer.ReadLong

Next

End With

' Save it

Call SendUpdateConvToAll(convNum)

Call SaveConv(convNum)

Call AddLog(GetPlayerName(index) & " saved Conv #" & convNum & ".", ADMIN_LOG)

End Sub

Sub HandleRequestConvs(ByVal index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)

SendConvs index

End Sub

In modPlayer

in Sub JoinGame

under ’ Send some more little goodies, no need to explain these

add


Call SendConvs(index)

in modServerTCP add at the bottom


Sub SendConvs(ByVal index As Long)

Dim i As Long

For i = 1 To MAX_CONVS

If LenB(Trim$(Conv(i).Name)) > 0 Then

Call SendUpdateConvTo(index, i)

End If

Next

End Sub

Sub SendUpdateConvToAll(ByVal convNum As Long)

Dim packet As String

Dim Buffer As clsBuffer

Dim i As Long

Dim x As Long

Set Buffer = New clsBuffer

Set Buffer = New clsBuffer

Buffer.WriteLong SUpdateConv

Buffer.WriteLong convNum

With Conv(convNum)

Buffer.WriteString .Name

Buffer.WriteLong .chatCount

For i = 1 To .chatCount

Buffer.WriteString .Conv(i).Conv

For x = 1 To 4

Buffer.WriteString .Conv(i).rText(x)

Buffer.WriteLong .Conv(i).rTarget(x)

Next

Buffer.WriteLong .Conv(i).Event

Buffer.WriteLong .Conv(i).Data1

Buffer.WriteLong .Conv(i).Data2

Buffer.WriteLong .Conv(i).Data3

Next

End With

SendDataToAll Buffer.ToArray()

Set Buffer = Nothing

End Sub

Sub SendUpdateConvTo(ByVal index As Long, ByVal convNum As Long)

Dim packet As String

Dim Buffer As clsBuffer

Dim i As Long

Dim x As Long

Set Buffer = New clsBuffer

Buffer.WriteLong SUpdateConv

Buffer.WriteLong convNum

With Conv(convNum)

Buffer.WriteString .Name

Buffer.WriteLong .chatCount

For i = 1 To .chatCount

Buffer.WriteString .Conv(i).Conv

For x = 1 To 4

Buffer.WriteString .Conv(i).rText(x)

Buffer.WriteLong .Conv(i).rTarget(x)

Next

Buffer.WriteLong .Conv(i).Event

Buffer.WriteLong .Conv(i).Data1

Buffer.WriteLong .Conv(i).Data2

Buffer.WriteLong .Conv(i).Data3

Next

End With

SendDataTo index, Buffer.ToArray()

Set Buffer = Nothing

End Sub

Sub 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 clsBuffer

Set Buffer = New clsBuffer

Buffer.WriteLong SChatUpdate

Buffer.WriteLong npcNum

Buffer.WriteString mT

Buffer.WriteString o1

Buffer.WriteString o2

Buffer.WriteString o3

Buffer.WriteString o4

SendDataTo index, Buffer.ToArray()

Set Buffer = Nothing

End Sub

in modtypes

add to the botom of Public Type TempPlayerRec


inChatWith As Long

curChat As Long

c_mapNum As Long

c_mapNpcNum As Long

DONE

Optional (not tested)

Stop NPC movement while in chat, found by justn, made by Robin

modServerLoop

Private Sub UpdateMapLogic

under this

 ' /////////////////////////////////////////////

' // This is used for NPC walking/targetting //

' /////////////////////////////////////////////

' Make sure theres a npc with the map

If Map(mapnum).NPC(x) > 0 And MapNpc(mapnum).NPC(x).Num > 0 Then

If MapNpc(mapnum).NPC(x).StunDuration > 0 Then

' check if we can unstun them

If GetTickCount > MapNpc(mapnum).NPC(x).StunTimer + (MapNpc(mapnum).NPC(x).StunDuration * 1000) Then

MapNpc(mapnum).NPC(x).StunDuration = 0

MapNpc(mapnum).NPC(x).StunTimer = 0

End If

Else

add

' check if in conversation

If MapNpc(mapnum).NPC(x).c_inChatWith > 0 Then

' check if we can stop having conversation

If Not TempPlayer(MapNpc(mapnum).NPC(x).c_inChatWith).inChatWith = npcNum Then

MapNpc(mapnum).NPC(x).c_inChatWith = 0

MapNpc(mapnum).NPC(x).Dir = MapNpc(mapnum).NPC(x).c_lastDir

NpcDir mapnum, x, MapNpc(mapnum).NPC(x).Dir

End If

Else

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 chat

TempPlayer(index).inChatWith = 0

TempPlayer(index).curChat = 0

' send chat update

sendChat index

' send npc dir

With MapNpc(TempPlayer(index).c_mapNum).NPC(TempPlayer(index).c_mapNpcNum)

If .c_inChatWith = index Then

.c_inChatWith = 0

.Dir = .c_lastDir

NpcDir TempPlayer(index).c_mapNum, TempPlayer(index).c_mapNpcNum, .Dir

End If

End With

' clear last of data

TempPlayer(index).c_mapNpcNum = 0

TempPlayer(index).c_mapNum = 0

Exit Sub

End Sub

then under “SendBank index” in modconv add:

TempPlayer(index).InBank = True

then under “SendInventory index” in modconv add:

ClosePlayerChat index

Don’t try and adopt my writing style and don’t try and beg people to credit you for other people’s code.

@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.

That’s great. 😄
Now, how do I get the TUTORIAL SYSTEM working?
~I got everything but the rendering of the picbox working.

@shadowdeath:

That’s great. 😄
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?

Anyway, nice tutorial, haven’t tried it out yet but I’ll definitely do that soon. 😉

You know when you use CrystalShir that Tutorial pops up in the beginning of the game?
That.

@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

Well then.
Take a look at the source, it uses Tutorial in the form of “TutorialState”, “TutorialStart”, etc.

Ok… ill look into that =/

In other news I forgot to include the way to call the editor XD

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.

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.

x.x CRAP…. I also forgot to add in the Convo window to the Tutorial XD… Ill make that… just give me a bit

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.

then that not part of this convo system i don’t think =P … try making another Q&A topic =D

As 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 @[email protected]

Your not the only one to successfully convert it from CS:DE to EO. o.O

@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 =P

thus why this tut now exists XD

Haha. That’s funny.

Only reason I didn’t really say I did.

;D happy? sightly edited the intro lol

Ok then. ; ]

Log in to reply