Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Eclipse - Event System


jcsnider
 Share

Recommended Posts

  • Replies 512
  • Created
  • Last Reply

Top Posters In This Topic

Ok, the final update 2.1.. I have probably said this 10 times now :D. This simply fixes up the delay of showing text and choices… pretty simple edit that should help a little but... Here we go :D

[Eclipse Event System 2.1](http://www.mediafire.com/?83ufaur43b2y5rc)

>! >! Server side is easiest, in modEventLogic Sub ProcessEventCommands…
>! Find
```
Case EventType.evShowText
```Replace the whole case with this..
```
                                    Case EventType.evShowText
                                        Set buffer = New clsBuffer
                                        buffer.WriteLong SEventChat
                                        buffer.WriteLong .eventID
                                        buffer.WriteLong .pageID
                                        buffer.WriteString Map(GetPlayerMap(i)).Events(.eventID).Pages(.pageID).CommandList(.CurList).Commands(.CurSlot).Text1
                                        buffer.WriteLong 0
                                        If Map(GetPlayerMap(i)).Events(.eventID).Pages(.pageID).CommandList(.CurList).CommandCount > .CurSlot Then
                                            If Map(GetPlayerMap(i)).Events(.eventID).Pages(.pageID).CommandList(.CurList).Commands(.CurSlot + 1).index = EventType.evShowText Or Map(GetPlayerMap(i)).Events(.eventID).Pages(.pageID).CommandList(.CurList).Commands(.CurSlot + 1).index = EventType.evShowChoices Then
                                                buffer.WriteLong 1
                                            ElseIf Map(GetPlayerMap(i)).Events(.eventID).Pages(.pageID).CommandList(.CurList).Commands(.CurSlot + 1).index = EventType.evCondition Then
                                                buffer.WriteLong 2
                                            Else
                                                buffer.WriteLong 0
                                            End If
                                        Else
                                            buffer.WriteLong 2
                                        End If
                                        SendDataTo i, buffer.ToArray
                                        Set buffer = Nothing
                                        .WaitingForResponse = 1
```
Next, find
```
Case EventType.evShowChoices
```Replace that whole case with
```
                                    Case EventType.evShowChoices
                                        Set buffer = New clsBuffer
                                        buffer.WriteLong SEventChat
                                        buffer.WriteLong .eventID
                                        buffer.WriteLong .pageID
                                        buffer.WriteString Map(GetPlayerMap(i)).Events(.eventID).Pages(.pageID).CommandList(.CurList).Commands(.CurSlot).Text1
                                        If Len(Trim$(Map(GetPlayerMap(i)).Events(.eventID).Pages(.pageID).CommandList(.CurList).Commands(.CurSlot).Text2)) > 0 Then
                                            w = 1
                                            If Len(Trim$(Map(GetPlayerMap(i)).Events(.eventID).Pages(.pageID).CommandList(.CurList).Commands(.CurSlot).Text3)) > 0 Then
                                                w = 2
                                                If Len(Trim$(Map(GetPlayerMap(i)).Events(.eventID).Pages(.pageID).CommandList(.CurList).Commands(.CurSlot).Text4)) > 0 Then
                                                    w = 3
                                                    If Len(Trim$(Map(GetPlayerMap(i)).Events(.eventID).Pages(.pageID).CommandList(.CurList).Commands(.CurSlot).Text5)) > 0 Then
                                                        w = 4
                                                    End If
                                                End If
                                            End If
                                        End If
                                        buffer.WriteLong w
                                        For v = 1 To w
                                            Select Case v
                                                Case 1
                                                    buffer.WriteString Trim$(Map(GetPlayerMap(i)).Events(.eventID).Pages(.pageID).CommandList(.CurList).Commands(.CurSlot).Text2)
                                                Case 2
                                                    buffer.WriteString Trim$(Map(GetPlayerMap(i)).Events(.eventID).Pages(.pageID).CommandList(.CurList).Commands(.CurSlot).Text3)
                                                Case 3
                                                    buffer.WriteString Trim$(Map(GetPlayerMap(i)).Events(.eventID).Pages(.pageID).CommandList(.CurList).Commands(.CurSlot).Text4)
                                                Case 4
                                                    buffer.WriteString Trim$(Map(GetPlayerMap(i)).Events(.eventID).Pages(.pageID).CommandList(.CurList).Commands(.CurSlot).Text5)
                                            End Select
                                        Next
                                        If Map(GetPlayerMap(i)).Events(.eventID).Pages(.pageID).CommandList(.CurList).CommandCount > .CurSlot Then
                                            If Map(GetPlayerMap(i)).Events(.eventID).Pages(.pageID).CommandList(.CurList).Commands(.CurSlot + 1).index = EventType.evShowText Or Map(GetPlayerMap(i)).Events(.eventID).Pages(.pageID).CommandList(.CurList).Commands(.CurSlot + 1).index = EventType.evShowChoices Then
                                                buffer.WriteLong 1
                                            ElseIf Map(GetPlayerMap(i)).Events(.eventID).Pages(.pageID).CommandList(.CurList).Commands(.CurSlot + 1).index = EventType.evCondition Then
                                                buffer.WriteLong 2
                                            Else
                                                buffer.WriteLong 0
                                            End If
                                        Else
                                            buffer.WriteLong 2
                                        End If
                                        SendDataTo i, buffer.ToArray
                                        Set buffer = Nothing
                                        .WaitingForResponse = 1
```
>!
>! Now, on the client side, go to modGlobals and at the very bottom att
```
Public AnotherChat as long
```
Now, In Sub HandleEventChat
Add
```
AnotherChat = Buffer.ReadLong
```BEFORE
```
Set Buffer = Nothing
```
Finally, replace Sub ClearEventChat with this…
```
Sub ClearEventChat()
    Dim i As Long
    If AnotherChat = 1 Then
        For i = 1 To 4
            frmMain.lblChoices(i).Visible = False
        Next

        frmMain.lblEventChat.Caption = ""
        frmMain.lblEventChatContinue.Visible = False
    ElseIf AnotherChat = 2 Then
        For i = 1 To 4
            frmMain.lblChoices(i).Visible = False
        Next

        frmMain.lblEventChat.Visible = False
        frmMain.lblEventChatContinue.Visible = False
        EventChatTimer = GetTickCount + 100
    Else
        frmMain.picEventChat.Visible = False
    End If
>! End Sub
```
Link to comment
Share on other sites

I haven't actually made anything with the event system, but I was fooling around and made a dog that walks around randomly and when you press ctrl facing it it shows the text Woof Woof…but I get this error server side:

RTE 9, highlights this:

If Map(mapnum).Events(eventID).Pages(1).DirFix = 0 Then
Link to comment
Share on other sites

Thanks for the report, really easy fix for this one….

Server side, replace this line...
In Sub ProcessLocalEventMovement
```
EventDir 0, i, x, rand, True
```
with this…
```
EventDir 0, GetPlayerMap(i), x, rand, True
```
It is will be fine :D

Will release 2.2 in just a sec for those who do not have vb6.
Link to comment
Share on other sites

Another small release with another small bug fix… appearntly, I never finished adding in the open-shop command so here we go...

Download [Eclipse Event System 2.2](http://www.freemmorpgmaker.com/Eclipse-Event-System-2.2.zip)

>! Open up frmEditor_Events in the client, double click on any button to get to the code for the form and add this sub at the bottom…
>! ```
Private Sub cmdOpenShop_Click()
    ' show
    fraDialogue.Visible = True
    fraOpenShop.Visible = True
    cmbOpenShop.ListIndex = 0
    ' hide
    fraCommands.Visible = False
End Sub
```
Then find this…
```
cmbOpenShop.Clear
    For i = 1 To MAX_SHOPS
        cmbOpenShop.AddItem Trim$(Shop(i).Name)
    Next
```
and replace it with this…
```
cmbOpenShop.Clear
    For i = 1 To MAX_SHOPS
        cmbOpenShop.AddItem i & ". " & Trim$(Shop(i).Name)
    Next
```
That is it! Enjoy!
Link to comment
Share on other sites

I do not know if I will actually get around to it or not. The broken graphic engine of CSDE greatly discourages me from working with it.. however, if someone DOES want to convert it over, I was going to add in fading/weather/fogs/better sound handling and more… Something to think about lol.
Link to comment
Share on other sites

Did you disable resources. Because i made a tree and when i put the resouce on the map it dosent appear. The resource is there but there is no graphic appearing.
Link to comment
Share on other sites

nvm i commented somthing out. BTW I got a glitch for you. Not a runtime eror but when naming a player switch . It keeps getting switched to player varialbe. If i name aplayer switch it wrties it to a player variable as well and then resets the player swich name.
Link to comment
Share on other sites

Another simple bug with an easy fix…
simply replace sub SendSwitchesAndVariables with this one...

```
Sub SendSwitchesAndVariables()
Dim i As Long, Buffer As clsBuffer
    Set Buffer = New clsBuffer
    Buffer.WriteLong CSwitchesAndVariables
    For i = 1 To MAX_SWITCHES
        Buffer.WriteString Switches(i)
    Next
    For i = 1 To MAX_VARIABLES
        Buffer.WriteString Variables(i)
    Next
    SendData Buffer.ToArray
Set Buffer = Nothing
End Sub
```
EDIT: I am working on a small game with this system to test it out some and I now have 2 more (small) bug fixes…

First, server side, in Sub RemoveDeadEvents find this line
```
f Map(mapnum).Events(id).Pages(page).SwitchCompare = 0 Then
```and replace it with this..
```
f Map(mapnum).Events(id).Pages(page).SwitchCompare = 1 Then
```
Secondly, in the client…
replace Sub PicGraphicSel_MouseDown with this...
```
Private Sub picGraphicSel_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim i As Long
    If frmEditor_Events.cmbGraphic.ListIndex = 2 Then
        'Tileset... hard one....
        If ShiftDown Then
            If GraphicSelX > -1 And GraphicSelY > -1 Then
                If CLng(X + frmEditor_Events.hScrlGraphicSel.Value) / 32 > GraphicSelX And CLng(Y + frmEditor_Events.vScrlGraphicSel.Value) / 32 > GraphicSelY Then
                    GraphicSelX2 = CLng(X + frmEditor_Events.hScrlGraphicSel.Value) / 32
                    GraphicSelY2 = CLng(Y + frmEditor_Events.vScrlGraphicSel.Value) / 32
                End If
            End If
        Else
            GraphicSelX = CLng(X + frmEditor_Events.hScrlGraphicSel.Value) \ 32
            GraphicSelY = CLng(Y + frmEditor_Events.vScrlGraphicSel.Value) \ 32
            GraphicSelX2 = 0
            GraphicSelY2 = 0
        End If
    ElseIf frmEditor_Events.cmbGraphic.ListIndex = 1 Then
        GraphicSelX = CLng(X + frmEditor_Events.hScrlGraphicSel.Value)
        GraphicSelY = CLng(Y + frmEditor_Events.vScrlGraphicSel.Value)
        GraphicSelX2 = 0
        GraphicSelY2 = 0

        If frmEditor_Events.scrlGraphic.Value <= 0 Or frmEditor_Events.scrlGraphic.Value > NumCharacters Then Exit Sub

        If DDS_Character(frmEditor_Events.scrlGraphic.Value) Is Nothing Then
            Call InitDDSurf("Characters\" & frmEditor_Events.scrlGraphic.Value, DDSD_Character(frmEditor_Events.scrlGraphic.Value), DDS_Character(frmEditor_Events.scrlGraphic.Value))
        End If

        For i = 0 To 3
            If GraphicSelX >= ((DDSD_Character(frmEditor_Events.scrlGraphic.Value).lWidth / 4) * i) And GraphicSelX < ((DDSD_Character(frmEditor_Events.scrlGraphic.Value).lWidth / 4) * (i + 1)) Then
                GraphicSelX = i
            End If
        Next

        For i = 0 To 3
            If GraphicSelY >= ((DDSD_Character(frmEditor_Events.scrlGraphic.Value).lHeight / 4) * i) And GraphicSelY < ((DDSD_Character(frmEditor_Events.scrlGraphic.Value).lHeight / 4) * (i + 1)) Then
                GraphicSelY = i
            End If
        Next

    End If
End Sub
```
All of these fixes will be released in a download soon enough ;)
Link to comment
Share on other sites

As you know, i love this system however i encountered a bug today. When you are on a scrolling map with events near the top of the map and you decide to go down the map. Once they move off screen they continue to appear as you move down at the top of the screen. I don't know if i explained this right but i could always show you via msn.

~Kibbelz
Link to comment
Share on other sites

@jcsnider:

> First, server side, in Sub RemoveDeadEvents find this line
> ```
> f Map(mapnum).Events(id).Pages(page).SwitchCompare = 0 Then
> ```and replace it with this..
> ```
> f Map(mapnum).Events(id).Pages(page).SwitchCompare = 1 Then
> ```

That results in:
```
If Map(mapnum).Events(id).Pages(page).chkSwitch = 1 Then
                            If Map(mapnum).Events(id).Pages(page).SwitchCompare = 1 Then
                                If Player(i).Switches(Map(mapnum).Events(id).Pages(page).SwitchIndex) = 1 Then
                                    TempPlayer(i).EventMap.EventPages(x).Visible = 0
                                End If
                            Else
                                If Player(i).Switches(Map(mapnum).Events(id).Pages(page).SwitchIndex) = 0 Then
                                    TempPlayer(i).EventMap.EventPages(x).Visible = 0
                                End If
                            End If
                        End If
```
~~Why make an if statement if both cases result in the same action?~~

Being tired makes me stupid as hell.
Link to comment
Share on other sites

Haha.

Oh right, although very rare it sometimes happens that an NPC spawns on top of an event. I just noticed this when I was endlessly fidgeting with my events and suddenly saw one of my bandits standing on top of my good friend John.
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share


×
×
  • Create New...