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

[EO] Alatar's Quest System v1.2


Alatar
 Share

Recommended Posts

@waseemk:

> Can I put this to my existing game by moving the src files to mine? And also, I downloaded the complete thing and when go in, the menu has a white square that is for the quest but does somebody have the GUI for it that I can have a copy for?

No to add it to your own you will need VB6 and you will have to manually have to follow the instructions.
Link to comment
Share on other sites

  • 2 weeks later...
  • Replies 703
  • Created
  • Last Reply

Top Posters In This Topic

  • 2 weeks later...
I've been out for a long time and i'm probably gonna be out until mid July at least. I have the unfinished v1.2 to work with so in a couple of months I will take note of all the report bugs and stuff and finish this system.

Note: Im not going to add any other feature, just give this source edit a 'final' version or at least a (nice) working one.
Link to comment
Share on other sites

@Alatar:

> I've been out for a long time and i'm probably gonna be out until mid July at least. I have the unfinished v1.2 to work with so in a couple of months I will take note of all the report bugs and stuff and finish this system.
>
> Note: Im not going to add any other feature, just give this source edit a 'final' version or at least a (nice) working one.

Very cool thought this was the final release. Anycase on the quest log the todo's I got the rewards menu to display the exp u will get but the items i could only get the item number not the name to display maybe u can help with that. Also my reach map task stopped working on me.. not sure what causes this but reaching the map I set for the task doesn't do anything and quest never progresses.. not sure if anyone else is having that issue but thought I would report it ;)
Link to comment
Share on other sites

@Alatar:

> I've been out for a long time and i'm probably gonna be out until mid July at least. I have the unfinished v1.2 to work with so in a couple of months I will take note of all the report bugs and stuff and finish this system.
>
> Note: Im not going to add any other feature, just give this source edit a 'final' version or at least a (nice) working one.

Nice
Link to comment
Share on other sites

@Alatar:

> I've been out for a long time and i'm probably gonna be out until mid July at least. I have the unfinished v1.2 to work with so in a couple of months I will take note of all the report bugs and stuff and finish this system.
>
> Note: Im not going to add any other feature, just give this source edit a 'final' version or at least a (nice) working one.

Nice! I can't wait to see this.
Link to comment
Share on other sites

I said July but this could be sooner. Anyways I don't wank to raise no-one expectations at the point they start with the 'oh is it already?!' 'WEN AR U RELESIN THIS' and stuff.

:)

PS: If anyone find another bug or has a comment or something to say about the system then this is the moment.
Link to comment
Share on other sites

  • 3 weeks later...
@DarkScythe57:

> I need help whenever a player logs into my game i get subscript out f range. it is referring to this If TargetIndex = Quest(QuestNum).Task(ActualTask).Map Then

I am having the same problem, you managed to solve?
–-------------------------

anyone know to resolve? this occurs in the server. (I'm using PV)
Thanks in advance.
Link to comment
Share on other sites

:huh: :huh: :huh:
i downloaded all files and tried the full version. the quest system works fine its just that when you pass your finished quest to the npc the rewarding thingy overlaps with the quest. showing in your chatbox that npc is rewarding you and then there's a dialog box sayin the quest again.

is there any possible way that when you pass a finished quest it wont ask again for the quest?
just askin..  :confused:
Link to comment
Share on other sites

@loveeclipsethai:

> in server eror:
> HandleDataSub(CRequestEditQuest) = GetAddress(AddressOf HandleRequestEditQuest)
> ![](http://image.free.in.th/z/if/ueror.png)
> help me
> thank

Go to modEnumerations and add the fllwing lines of code.
```
    CRequestEditQuest
    CSaveQuest
    CRequestQuests
    CPlayerHandleQuest
    CQuestLogUpdate
```Should be below
```
CPartyLeave
```
Link to comment
Share on other sites

I've been reading this thread's pages and I wanted to make clear that the Delete key was used for testing only. Please remove it from your system. On the other hand I've been testing the reported bugs and fixed most of them. Right now i'm working with the GoKill system and the Multiple Reward stuff.

PS: I've also seen lots of problems installing the system due to not properly reading the instruction. I'm thinking on making the installing extra files more obvious  :P
Link to comment
Share on other sites

**Version 1.2**:

>! **Alatar's Quest System v1.2**
>! Screenshots:
>! >! ![](http://img440.imageshack.us/img440/8051/screenier.jpg)
![](http://i53.tinypic.com/2jfgbd5.jpg)
>! * * *
>! Hello and welcome. This is a tutorial for EO 2.0, and also includes the entire project if you wan't to use it right away without the need of following the tutorial. I've started with the idea of this system months ago, and although I abandon it a few times and moved to other things, finally in the past few days I've manage to finish it. I'm just learning to program like many here, so this was my first 'big' personal challenge. So please report any error or suggestion and I will try to do my best ^^
Ok, let's go to the important. (And please forgive me, English is not my main language)
>! **Features**
>! This quest system is a bit different to others due to the fact that it allow developers to create dinamyc quests with different purpose and itinerary, like "_go talk to X npc, then kill X amount of X npc, then talk to Y npc and gather X amount of X item, finally come back and talk to me_".
Each quest can have several tasks to do, each of one fully customizable. The quest system also has a fully working QuestLog and QuestSpeech window.
>! **Types of Tasks**
>! * **GoSlay**: Kill **X** amount of **X** npc's.
* **GoGather**: Gather **X** amount of **X** item.
* **GoTalk**: Interact with **X** npc.
* **GoTravel**: Reach **X** map.
* **GoGive**: Give **X** amount of **X** item to **X** npc.
* **GoKill**: Kill **X** amount of players.
* **GoTrain**: Hit **X** amount of times **X** resource.
* **GoGet**: Get **X** amount of **X** item from **X** npc.
>! **To-Do List**
>! * -
>! **How it Works**
To open the Quest Editor type /editquest.
>! **Changelog from v1.1 to v1.2**
>!
>! * Redesigned the Quest UDT.
* Fixed experience reward.
* Added [?] and [!] symbols over npc's heads.
* Added requirements and rewards to the questlog.
* Added graphics to quest GUI.
* Fixed finished quest speech when having a repeatitive quest.
* Added completed quests to the quest log.
* Removed Delete key procedure that was used for testing only.
* Starting a quest now works with shopkeepers also.
* Fixed GoKill bug that added +1 to the current count of every quest active.
* Added multiple rewards, multiple take-item-on-the-end and multiple give-item-on-the-start.
* Fixed currency issues on GoGive, GoGet and GoGather.
* Fixed an exploit on give item on start.
>! Ok, let's go with the code.  :huh:
>! There are two ways to use this.
>! **Way 1**
[Download the full system](http://www.mediafire.com/?7xi5xe6xny1yg5i) already added to a blank EO and go test it. That's all, you don't need to follow the steps.
>! **Way 2**
Install the system on your own EO manually, following the steps below and **remember** to [download the extra files](http://www.mediafire.com/?4e8jd54chvmdwxs) and add them to your project:
>! **Server Side**
>! **Add the modSvQuest to your project.**
>! **modCombat**
>! Find:
```
If Len(Trim$(NPC(npcNum).AttackSay)) > 0 Then
```Above, after the Else, put
```
                      If NPC(npcNum).Behaviour = NPC_BEHAVIOUR_FRIENDLY Or NPC(npcNum).Behaviour = NPC_BEHAVIOUR_SHOPKEEPER Then
                            Call CheckTasks(attacker, QUEST_TYPE_GOTALK, npcNum)
                            Call CheckTasks(attacker, QUEST_TYPE_GOGIVE, npcNum)
                            Call CheckTasks(attacker, QUEST_TYPE_GOGET, npcNum)

                            If NPC(npcNum).Quest = YES Then
                                If Player(attacker).PlayerQuest(NPC(npcNum).Quest).Status = QUEST_COMPLETED Then
                                    If Quest(NPC(npcNum).Quest).Repeat = YES Then
                                        Player(attacker).PlayerQuest(NPC(npcNum).Quest).Status = QUEST_COMPLETED_BUT
                                        Exit Function
                                    End If
                                End If
                                If CanStartQuest(attacker, NPC(npcNum).QuestNum) Then
                                    'if can start show the request message (speech1)
                                    QuestMessage attacker, NPC(npcNum).QuestNum, Trim$(Quest(NPC(npcNum).QuestNum).Speech(1)), NPC(npcNum).QuestNum
                                    Exit Function
                                End If
                                If QuestInProgress(attacker, NPC(npcNum).QuestNum) Then
                                    'if the quest is in progress show the meanwhile message (speech2)
                                    QuestMessage attacker, NPC(npcNum).QuestNum, Trim$(Quest(NPC(npcNum).QuestNum).Speech(2)), 0
                                    Exit Function
                                End If
                            End If
                        End If
```
Sub PlayerAttackNpc, find:
```
' send death to the map
```Above place this:
```
Call CheckTasks(attacker, QUEST_TYPE_GOSLAY, npcNum)
```
Sub PlayerAttackNpc, find:
```
Call OnDeath(victim)
```Above place this:
```
Call CheckTasks(attacker, QUEST_TYPE_GOKILL, victim)
```
**modGeneral**
>! In InitServer find:
```
ChkDir App.Path & "\Data\", "spells"
```past this below:
```
ChkDir App.Path & "\Data\", "quests"
```
In ClearGameData find:
```
Call ClearAnimations
```past this below:
```
Call SetStatus("Clearing quests...")
Call ClearQuests
```
In LoadGameData find:
```
Call LoadAnimations
```past this below:
```
Call SetStatus("Loading quests...")
Call LoadQuests
```
**modHandleData**
>! Find:
```
HandleDataSub(CPartyLeave) = GetAddress(AddressOf HandlePartyLeave)
```Paste:
```
HandleDataSub(CRequestEditQuest) = GetAddress(AddressOf HandleRequestEditQuest)
    HandleDataSub(CSaveQuest) = GetAddress(AddressOf HandleSaveQuest)
    HandleDataSub(CRequestQuests) = GetAddress(AddressOf HandleRequestQuests)
    HandleDataSub(CPlayerHandleQuest) = GetAddress(AddressOf HandlePlayerHandleQuest)
    HandleDataSub(CQuestLogUpdate) = GetAddress(AddressOf HandleQuestLogUpdate)
```
At the end of the module add this:
>! ```
Sub HandleRequestEditQuest(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 SQuestEditor
    SendDataTo Index, Buffer.ToArray()
    Set Buffer = Nothing
End Sub
>! Sub HandleSaveQuest(ByVal Index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)
    Dim n As Long
    Dim Buffer As clsBuffer
    Dim QuestSize As Long
    Dim QuestData() As Byte
    Set Buffer = New clsBuffer
    Buffer.WriteBytes Data()
>!     ' Prevent hacking
    If GetPlayerAccess(Index) < ADMIN_DEVELOPER Then
        Exit Sub
    End If
>!     n = Buffer.ReadLong 'CLng(Parse(1))
>!     If n < 0 Or n > MAX_QUESTS Then
        Exit Sub
    End If

    ' Update the Quest
    QuestSize = LenB(Quest(n))
    ReDim QuestData(QuestSize - 1)
    QuestData = Buffer.ReadBytes(QuestSize)
    CopyMemory ByVal VarPtr(Quest(n)), ByVal VarPtr(QuestData(0)), QuestSize
    Set Buffer = Nothing

    ' Save it
    Call SendUpdateQuestToAll(n)
    Call SaveQuest(n)
    Call AddLog(GetPlayerName(Index) & " saved Quest #" & n & ".", ADMIN_LOG)
End Sub
>! Sub HandleRequestQuests(ByVal Index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)
    SendQuests Index
End Sub
>! Sub HandlePlayerHandleQuest(ByVal Index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)
    Dim Buffer As clsBuffer
    Dim QuestNum As Long, Order As Long, i As Long, n As Long
    Dim RemoveStartItems As Boolean

    Set Buffer = New clsBuffer
    Buffer.WriteBytes Data()
    QuestNum = Buffer.ReadLong
    Order = Buffer.ReadLong '1 = accept quest, 2 = cancel quest

    If Order = 1 Then
        RemoveStartItems = False
        'Alatar v1.2
        For i = 1 To MAX_QUESTS_ITEMS
            If Quest(QuestNum).GiveItem(i).Item > 0 Then
                If FindOpenInvSlot(Index, Quest(QuestNum).RewardItem(i).Item) = 0 Then
                    PlayerMsg Index, "You have no inventory space. Please delete something to take the quest.", BrightRed
                    RemoveStartItems = True
                    Exit For
                Else
                    If Item(Quest(QuestNum).GiveItem(i).Item).Type = ITEM_TYPE_CURRENCY Then
                        GiveInvItem Index, Quest(QuestNum).GiveItem(i).Item, Quest(QuestNum).GiveItem(i).Value
                    Else
                        For n = 1 To Quest(QuestNum).GiveItem(i).Value
                            If FindOpenInvSlot(Index, Quest(QuestNum).GiveItem(i).Item) = 0 Then
                                PlayerMsg Index, "You have no inventory space. Please delete something to take the quest.", BrightRed
                                RemoveStartItems = True
                                Exit For
                            Else
                                GiveInvItem Index, Quest(QuestNum).GiveItem(i).Item, 1
                            End If
                        Next
                    End If
                End If
            End If
        Next

        If RemoveStartItems = False Then 'this means everything went ok
            Player(Index).PlayerQuest(QuestNum).Status = QUEST_STARTED '1
            Player(Index).PlayerQuest(QuestNum).ActualTask = 1
            Player(Index).PlayerQuest(QuestNum).CurrentCount = 0
            PlayerMsg Index, "New quest accepted: " & Trim$(Quest(QuestNum).Name) & "!", BrightGreen
        End If
        '/alatar v1.2

    ElseIf Order = 2 Then
        Player(Index).PlayerQuest(QuestNum).Status = QUEST_NOT_STARTED '2
        Player(Index).PlayerQuest(QuestNum).ActualTask = 1
        Player(Index).PlayerQuest(QuestNum).CurrentCount = 0
        RemoveStartItems = True 'avoid exploits
        PlayerMsg Index, Trim$(Quest(QuestNum).Name) & " has been canceled!", BrightGreen
    End If

    If RemoveStartItems = True Then
        For i = 1 To MAX_QUESTS_ITEMS
            If Quest(QuestNum).GiveItem(i).Item > 0 Then
                If HasItem(Index, Quest(QuestNum).GiveItem(i).Item) > 0 Then
                    If Item(Quest(QuestNum).GiveItem(i).Item).Type = ITEM_TYPE_CURRENCY Then
                        TakeInvItem Index, Quest(QuestNum).GiveItem(i).Item, Quest(QuestNum).GiveItem(i).Value
                    Else
                        For n = 1 To Quest(QuestNum).GiveItem(i).Value
                            TakeInvItem Index, Quest(QuestNum).GiveItem(i).Item, 1
                        Next
                    End If
                End If
            End If
        Next
    End If

    SavePlayer Index
    SendPlayerData Index
    SendPlayerQuests Index

    Set Buffer = Nothing
End Sub
>! Sub HandleQuestLogUpdate(ByVal Index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)
    SendPlayerQuests Index
End Sub
```
**modTypes**
>! In Private Type PlayerRec, find:
```
Dir As Byte
```Paste:
```
PlayerQuest(1 To MAX_QUESTS) As PlayerQuestRec
```
In Private Type NpcRec, find:
```
Level As Long
```Paste:
```
Quest As Byte
    QuestNum As Long
```
**modEnumerations**
>! Find:
```
SPartyVitals
```Paste:
```
    SQuestEditor
    SUpdateQuest
    SPlayerQuest
    SQuestMessage
```
Find:
```
CPartyLeave
```Paste:
```
    CRequestEditQuest
    CSaveQuest
    CRequestQuests
    CPlayerHandleQuest
    CQuestLogUpdate
```
**modPlayer**
>! Find:
```
Call SendHotbar(Index)
```Paste:
```
Call SendQuests(Index)
```
In PlayerWarp, find:
```
' if same map then just send their co-ordinates
    If mapNum = GetPlayerMap(Index) Then
        SendPlayerXYToMap Index
```Paste:
```
Call CheckTasks(Index, QUEST_TYPE_GOREACH, mapNum)
```
In PlayerWarp find:
```
TempPlayer(Index).GettingMap = YES
```Paste:
```
Call CheckTasks(Index, QUEST_TYPE_GOREACH, mapNum)
```
In PlayerMapGetItem, find:
```
SendActionMsg GetPlayerMap(Index), Msg, White, 1, (GetPlayerX(Index) * 32), (GetPlayerY(Index) * 32)
```Paste:
```
Call CheckTasks(Index, QUEST_TYPE_GOGATHER, GetItemNum(Trim$(Item(GetPlayerInvItemNum(Index, n)).Name)))
```
In CheckResource find:
```
SendMapSound Index, rX, rY, SoundEntity.seResource, Resource_index
```Paste:
```
Call CheckTasks(Index, QUEST_TYPE_GOTRAIN, Resource_index)
```
>! **Client Side**
>! **Add the modQuests to your project.
Add the frmEditor_Quest to your project.
Replace your frmEditor_NPC and frmMain with the ones that I provide you.**
>! **modGameEditors**
>! In NpcEditorInit find:
```
.txtDamage.text = NPC(EditorIndex).Damage
```Paste:
```
.chkQuest.Value = NPC(EditorIndex).Quest
        .scrlQuest.Value = NPC(EditorIndex).QuestNum
```
**modEnumerations**
>! Find:
```
SPartyVitals
```Paste:
```
    SQuestEditor
    SUpdateQuest
    SPlayerQuest
    SQuestMessage
```
Find:
```
CPartyLeave
```Paste:
```
    CRequestEditQuest
    CSaveQuest
    CRequestQuests
    CPlayerHandleQuest
    CQuestLogUpdate
```
**modHandleData**
>! Find:
```
HandleDataSub(SPartyVitals) = GetAddress(AddressOf HandlePartyVitals)
```Paste:
```
    HandleDataSub(SQuestEditor) = GetAddress(AddressOf HandleQuestEditor)
    HandleDataSub(SUpdateQuest) = GetAddress(AddressOf HandleUpdateQuest)
    HandleDataSub(SPlayerQuest) = GetAddress(AddressOf HandlePlayerQuest)
    HandleDataSub(SQuestMessage) = GetAddress(AddressOf HandleQuestMessage)
```
At the end of the module, past this:
```
Private Sub HandleQuestEditor()
    Dim i As Long

    With frmEditor_Quest
        Editor = EDITOR_TASKS
        .lstIndex.Clear
>!         ' Add the names
        For i = 1 To MAX_QUESTS
            .lstIndex.AddItem i & ": " & Trim$(Quest(i).Name)
        Next
>!         .Show
        .lstIndex.ListIndex = 0
        QuestEditorInit
    End With
>! End Sub
>! Private Sub HandleUpdateQuest(ByVal Index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)
    Dim n As Long
    Dim Buffer As clsBuffer
    Dim QuestSize As Long
    Dim QuestData() As Byte
    Set Buffer = New clsBuffer
    Buffer.WriteBytes Data()
    n = Buffer.ReadLong
    ' Update the Quest
    QuestSize = LenB(Quest(n))
    ReDim QuestData(QuestSize - 1)
    QuestData = Buffer.ReadBytes(QuestSize)
    CopyMemory ByVal VarPtr(Quest(n)), ByVal VarPtr(QuestData(0)), QuestSize
    Set Buffer = Nothing
End Sub
>! Private Sub HandlePlayerQuest(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()

    For i = 1 To MAX_QUESTS
        Player(MyIndex).PlayerQuest(i).Status = Buffer.ReadLong
        Player(MyIndex).PlayerQuest(i).ActualTask = Buffer.ReadLong
        Player(MyIndex).PlayerQuest(i).CurrentCount = Buffer.ReadLong
    Next

    RefreshQuestLog

    Set Buffer = Nothing
End Sub
>! Private Sub HandleQuestMessage(ByVal Index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)
    Dim Buffer As clsBuffer
    Dim i As Long, QuestNum As Long, QuestNumForStart As Long
    Dim Message As String

    Set Buffer = New clsBuffer
    Buffer.WriteBytes Data()
    QuestNum = Buffer.ReadLong
    Message = Trim$(Buffer.ReadString)
    QuestNumForStart = Buffer.ReadLong

    frmMain.lblQuestName = Trim$(Quest(QuestNum).Name)
    frmMain.lblQuestSay = Message
    frmMain.lblQuestSubtitle = "Info:"
    frmMain.picQuestDialogue.Visible = True

    If QuestNumForStart > 0 And QuestNumForStart <= MAX_QUESTS Then
        frmMain.lblQuestAccept.Visible = True
        frmMain.lblQuestAccept.Tag = QuestNumForStart
    End If

    Set Buffer = Nothing
End Sub
```
**modInput**
>! Find:
```
SendRequestEditSpell
```Paste:
```
                Case "/editquest"
                    If GetPlayerAccess(MyIndex) < ADMIN_DEVELOPER Then GoTo Continue
                    SendRequestEditQuest
```
**modTypes**
>! In Private Type PlayerRec, find:
```
Step As Byte
```Paste:
```
PlayerQuest(1 To MAX_QUESTS) As PlayerQuestRec
```
In Private Type NpcRec, find:
```
Level As Long
```Paste:
```
    Quest As Byte
    QuestNum As Long
```
**modText**
>! In DrawNpcName find this:
```
Call DrawText(TexthDC, TextX, TextY, Name, color)
```Paste this:
```
Dim i As Long

    For i = 1 To MAX_QUESTS
        'check if the npc is the next task to any quest: [?] symbol
        If Quest(i).Name <> "" Then
            If Player(MyIndex).PlayerQuest(i).Status = QUEST_STARTED Then
                If Quest(i).Task(Player(MyIndex).PlayerQuest(i).ActualTask).NPC = npcNum Then
                    Name = "[?]"
                    TextX = ConvertMapX(MapNpc(Index).x * PIC_X) + MapNpc(Index).XOffset + (PIC_X \ 2) - getWidth(TexthDC, (Trim$(Name)))
                    If NPC(npcNum).Sprite < 1 Or NPC(npcNum).Sprite > NumCharacters Then
                        TextY = ConvertMapY(MapNpc(Index).y * PIC_Y) + MapNpc(Index).YOffset - 16
                    Else
                        TextY = ConvertMapY(MapNpc(Index).y * PIC_Y) + MapNpc(Index).YOffset - (DDSD_Character(NPC(npcNum).Sprite).lHeight / 4)
                    End If
                    Call DrawText(TexthDC, TextX, TextY, Name, QBColor(Yellow))
                    Exit For
                End If
            End If

            'check if the npc is the starter to any quest: [!] symbol
            'can accept the quest as a new one?
            If Player(MyIndex).PlayerQuest(i).Status = QUEST_NOT_STARTED Or Player(MyIndex).PlayerQuest(i).Status = QUEST_COMPLETED_BUT Then
                'the npc gives this quest?
                If NPC(npcNum).QuestNum = i Then
                    Name = "[!]"
                    TextX = ConvertMapX(MapNpc(Index).x * PIC_X) + MapNpc(Index).XOffset + (PIC_X \ 2) - getWidth(TexthDC, (Trim$(Name)))
                    If NPC(npcNum).Sprite < 1 Or NPC(npcNum).Sprite > NumCharacters Then
                        TextY = ConvertMapY(MapNpc(Index).y * PIC_Y) + MapNpc(Index).YOffset - 16
                    Else
                        TextY = ConvertMapY(MapNpc(Index).y * PIC_Y) + MapNpc(Index).YOffset - (DDSD_Character(NPC(npcNum).Sprite).lHeight / 4)
                    End If
                    Call DrawText(TexthDC, TextX, TextY, Name, QBColor(Yellow))
                    Exit For
                End If
            End If
        End If
    Next
```
**modConstants**
>! Find:
```
Public Const MAX_MAINBUTTONS As Long = 6
```Replace the 6 for a 7.
>! **modGeneral**
>! In LoadGUI find
```
frmMain.picHotbar.Picture = LoadPicture(App.Path & "\data files\graphics\gui\main\hotbar.jpg")
```Paste:
```
frmMain.picQuestLog.Picture = LoadPicture(App.Path & "\data files\graphics\gui\main\questlog.jpg")
    frmMain.picQuestDialogue.Picture = LoadPicture(App.Path & "\data files\graphics\gui\main\questdialogue.jpg")

```
In cacheButtons find:
```
' main - party
    With MainButton(6)
        .fileName = "party"
        .state = 0 ' normal
    End With
```
Paste:
```
' main - quest
    With MainButton(7)
        .fileName = "quest"
        .state = 0 ' normal
    End With
```
>! * * *
>! And that's all! Tell me if anything goes wrong. I hope that this system could be useful to your project, and if you use it please give credits  ;)
>! **_- Alatar_**
>! * * *
>! Special thanks to Erwin and people who help here bugfixing while I was inactive. :)
And to the people who reported bugs ^^
>! * * *
>! **All Versions**
>! * Alatar's Quest System v1.2: [Link](http://www.touchofdeathforums.com/smf2/index.php/topic,70502.msg863386.html#msg863386)
* Alatar's Quest System v1.1: [Link](http://www.touchofdeathforums.com/smf/index.php/topic,70502.msg809248.html#msg809248)
* Alatar's Quest System v1.0: [Link](http://www.touchofdeathforums.com/smf/index.php/topic,70502.msg758371.html#msg758371).
>! * * *
>! **Extras**
>! * [Convert quests from v1.0 to v1.1](http://www.touchofdeathforums.com/smf/index.php/topic,70502.msg809345.html#msg809345)
* [Update your whole system from v1.0 to v1.1](http://www.touchofdeathforums.com/smf/index.php/topic,70502.msg809347.html#msg809347)

**Changelog**

* Redesigned the Quest UDT.
* Fixed experience reward.
* Added [?] and [!] symbols over npc's heads.
* Added requirements and rewards to the questlog.
* Added graphics to quest GUI.
* Fixed finished quest speech when having a repeatitive quest.
* Added completed quests to the quest log.
* Removed Delete key procedure that was used for testing only.
* Starting a quest now works with shopkeepers also.
* Fixed GoKill bug that added +1 to the current count of every quest active.
* Added multiple rewards, multiple take-item-on-the-end and multiple give-item-on-the-start.
* Fixed currency issues on GoGive, GoGet and GoGather.
* Fixed an exploit on give item on start.
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...