RyokuHasu Posted April 6, 2012 Share Posted April 6, 2012 @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 More sharing options...
zenmen Posted April 19, 2012 Share Posted April 19, 2012 > Is this compatible with CS:DE engine. ?i have the same question! : ) Link to comment Share on other sites More sharing options...
Tic Tac 2 Posted April 28, 2012 Share Posted April 28, 2012 I've followed the tutorial, now how do i speak to a friendly npc to start my created quest?When i use CTRL on it, nothing happens. Link to comment Share on other sites More sharing options...
Rew Posted April 30, 2012 Share Posted April 30, 2012 Please help, If I complete quest, i can't claim my reward. It can't be complete. Link to comment Share on other sites More sharing options...
sirebrus Posted May 1, 2012 Share Posted May 1, 2012 So I've been lookin at this post, and installed it, only problem I'm having is that when someone gathers resources, it doesn't count unless you drop it, and then pick it up…Anyone find a fix for this yet? Link to comment Share on other sites More sharing options...
Alatar Posted May 1, 2012 Author Share Posted May 1, 2012 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 More sharing options...
Justn Posted May 1, 2012 Share Posted May 1, 2012 @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 More sharing options...
abhi2011 Posted May 9, 2012 Share Posted May 9, 2012 @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 More sharing options...
Urumil Posted May 9, 2012 Share Posted May 9, 2012 @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 More sharing options...
Alatar Posted May 10, 2012 Author Share Posted May 10, 2012 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 More sharing options...
onzinho Posted May 27, 2012 Share Posted May 27, 2012 @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 ThenI 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 More sharing options...
james5890 Posted May 29, 2012 Share Posted May 29, 2012 Were are the GUI Link to comment Share on other sites More sharing options...
james5890 Posted May 29, 2012 Share Posted May 29, 2012 I have the codes but were are the GUI and do you need vb6 Link to comment Share on other sites More sharing options...
james5890 Posted May 29, 2012 Share Posted May 29, 2012 Can I have the GUI and all the stuff for v 1.1 cause I dont have vb6 Link to comment Share on other sites More sharing options...
james5890 Posted May 29, 2012 Share Posted May 29, 2012 PLEAAAAAAASSSSSSSSSSSEEEEEEEEEEEEEEEEEEEEE help i know im anoying but please help Link to comment Share on other sites More sharing options...
Wilfre Posted May 29, 2012 Share Posted May 29, 2012 use Eclipse Chronicles… It has practically everything you need... Link to comment Share on other sites More sharing options...
james5890 Posted May 29, 2012 Share Posted May 29, 2012 @Wilfre:> use Eclipss56 fge Chronicles… It has practically everything you need...I know but it opens wirh notepad dont know what to open it with Link to comment Share on other sites More sharing options...
Mineox Posted May 30, 2012 Share Posted May 30, 2012 This Quest System is the BEST! Congrats Alatar Link to comment Share on other sites More sharing options...
Mineox Posted May 30, 2012 Share Posted May 30, 2012 Este sistema es la Ostia! Link to comment Share on other sites More sharing options...
babyXio Posted June 2, 2012 Share Posted June 2, 2012 :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 More sharing options...
loveeclipsethai Posted June 2, 2012 Share Posted June 2, 2012 in server eror:HandleDataSub(CRequestEditQuest) = GetAddress(AddressOf HandleRequestEditQuest)![](http://image.free.in.th/z/if/ueror.png)help methank Link to comment Share on other sites More sharing options...
Alatar Posted June 7, 2012 Author Share Posted June 7, 2012 Screen update after a very long time…![](http://img440.imageshack.us/img440/8051/screenier.jpg) Link to comment Share on other sites More sharing options...
abhi2011 Posted June 7, 2012 Share Posted June 7, 2012 @loveeclipsethai:> in server eror:> HandleDataSub(CRequestEditQuest) = GetAddress(AddressOf HandleRequestEditQuest)> ![](http://image.free.in.th/z/if/ueror.png)> help me> thankGo 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 More sharing options...
Alatar Posted June 7, 2012 Author Share Posted June 7, 2012 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 More sharing options...
Alatar Posted June 8, 2012 Author Share Posted June 8, 2012 **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 = NothingEnd 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 IndexEnd 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 = NothingEnd Sub>! Sub HandleQuestLogUpdate(ByVal Index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long) SendPlayerQuests IndexEnd 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 = NothingEnd 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 = NothingEnd 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 = NothingEnd 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 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