[Pedido] Sistema de Quest
+2
maninho21
TheKirin
6 participantes
Página 1 de 1
[Pedido] Sistema de Quest
Eu preciso de um tutorial de sistema de quest eu não achei nenhum...
Se alguém poder disponibilizar para mim eu agradeço e dou +1
Vlw!
Se alguém poder disponibilizar para mim eu agradeço e dou +1
Vlw!
TheKirin- Membro Vitalicio
- Mensagens : 561
Re: [Pedido] Sistema de Quest
Esse tutorial foi traduzido e modificado.
Bom,você tem duas opções,baixar o Eclipse Origins com o sistema já implantado: http://www.mediafire.com/?8oq70z4cq2qik26
Ou seguir o tutorial e implantar manualmente na sua source,tendo de trocar apenas alguns arquivos: http://www.mediafire.com/?g1gn1bosic8aan1
Foto:
Vamos começar com a Source do servidor
no modCombat,procure:
depois disso,após o else,adicione:
Procure por:
Abaixo adicione isso:
Agora procure por:
Acima adicione isso:
Agora,no modGeneral
Procure por:
Coloque isso abaixo:
Procure agora por:
Adicione isso abaixo:
Agora,procure por isso:
Adicione isso abaixo:
Agora,no modHandleData
Procure por
Adicione abaixo:
Agora,no final do modHandleData adicione isso:
Agora,no modTypes
Procure por:
Abaixo cole:
Agora,procure por isso:
Adicione isso abaixo:
Agora,no modEnumerations
Procure por:
Abaixo coloque:
Procure agora:
Adicione Abaixo:
Agora,vamos ao modPlayer
Procure por:
Cole abaixo:
Procure por:
Cole abaixo:
Procure agora por:
Cole abaixo:
Procure agora por:
Cole abaixo
Agora no CLIENTE !!!
adicione modQuests para seu projeto
adicione frmEditor_Quest para seu projeto.
Troque seu frmEditor_NPC e frmMain pelo que estava no arquivo em que baixou...
Agora,no modGameEditors,procure:
Abaixo,adicione:
no modEnumerations,procure por
Cole abaixo:
Agora,procure por:
Abaixo,cole:
Agora,no modHandleDate procure por:
Abaixo cole:
no final do modHandleDate cole isso:
no modInput,procure por:
abaixo,cole:
em modType,procure por:
Abaixo,cole:
Agora,procure por:
E por último cole:
Creditos:
Alatar - Por fazer
Terabin - Por traduzir
Ricardo - Por Postar na MMORPGBR
Valentine - Por Postar na Aldeia RPG
A min - Por pegar la na aldeia e colocar o tuto pra você
Bom,você tem duas opções,baixar o Eclipse Origins com o sistema já implantado: http://www.mediafire.com/?8oq70z4cq2qik26
Ou seguir o tutorial e implantar manualmente na sua source,tendo de trocar apenas alguns arquivos: http://www.mediafire.com/?g1gn1bosic8aan1
Foto:
Vamos começar com a Source do servidor
no modCombat,procure:
- Código:
If Len(Trim$(NPC(npcNum).AttackSay)) > 0 Then
depois disso,após o else,adicione:
- Código:
If NPC(npcNum).Behaviour = NPC_BEHAVIOUR_FRIENDLY 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 CanStartQuest(attacker, NPC(npcNum).QuestNum) Then
'if can start show the request message (chat1)
QuestMessage attacker, NPC(npcNum).QuestNum, Trim$(Quest(NPC(npcNum).QuestNum).Chat(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 (chat2)
PlayerMsg attacker, Trim$(NPC(npcNum).Name) + ": " + Trim$(Quest(NPC(npcNum).QuestNum).Chat(2)), BrightGreen
'QuestMessage attacker, NPC(npcNum).QuestNum, Trim$(Quest(NPC(npcNum).QuestNum).Chat(2)), 0
Exit Function
End If
End If
End If
Procure por:
- Código:
' send death to the map
Abaixo adicione isso:
- Código:
Call CheckTasks(attacker, QUEST_TYPE_GOSLAY, npcNum)
Agora procure por:
- Código:
Call OnDeath(victim)
Acima adicione isso:
- Código:
Call CheckTasks(attacker, QUEST_TYPE_GOKILL, victim)
Agora,no modGeneral
Procure por:
- Código:
ChkDir App.Path & "\Data\", "spells"
Coloque isso abaixo:
- Código:
ChkDir App.Path & "\Data\", "quests"
Procure agora por:
- Código:
Call ClearAnimations
Adicione isso abaixo:
- Código:
Call SetStatus("Escaneando missões...")
Call ClearQuests
Agora,procure por isso:
- Código:
Call LoadAnimations
Adicione isso abaixo:
- Código:
Call SetStatus("Carregando missões...")
Call LoadQuests
Agora,no modHandleData
Procure por
- Código:
HandleDataSub(CPartyLeave) = GetAddress(AddressOf HandlePartyLeave)
Adicione abaixo:
- Código:
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)
Agora,no final do modHandleData adicione isso:
- Código:
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) & " salvou missão #" & 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
Set Buffer = New clsBuffer
Buffer.WriteBytes Data()
QuestNum = Buffer.ReadLong
Order = Buffer.ReadLong '1 = accept, 2 = cancel
If Order = 1 Then
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
'Add item on start
If Quest(QuestNum).QuestGiveItem > 0 And Quest(QuestNum).QuestGiveItem < MAX_ITEMS Then
If Quest(QuestNum).QuestGiveItemValue > 0 And Quest(QuestNum).QuestGiveItemValue < MAX_INV Then 'ToDo: stuff with currency
GiveInvItem Index, Quest(QuestNum).QuestGiveItem, Quest(QuestNum).QuestGiveItemValue
End If
End If
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
PlayerMsg Index, Trim$(Quest(QuestNum).Name) & " foi cancelada!", BrightGreen
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
Agora,no modTypes
Procure por:
- Código:
Dir As Byte
Abaixo cole:
PlayerQuest(1 To MAX_QUESTS) As PlayerQuestRec
Agora,procure por isso:
- Código:
Level As Long
Adicione isso abaixo:
- Código:
Quest As Byte
QuestNum As Long
Agora,no modEnumerations
Procure por:
- Código:
SPartyVitals
Abaixo coloque:
- Código:
SQuestEditor
SUpdateQuest
SPlayerQuest
SQuestMessage
Procure agora:
- Código:
CPartyLeave
Adicione Abaixo:
- Código:
CRequestEditQuest
CSaveQuest
CRequestQuests
CPlayerHandleQuest
CQuestLogUpdate
Agora,vamos ao modPlayer
Procure por:
- Código:
Call SendHotbar(Index)
Cole abaixo:
- Código:
Call SendQuests(Index)
Procure por:
- Código:
TempPlayer(Index).GettingMap = YES
Cole abaixo:
- Código:
Call CheckTasks(Index, QUEST_TYPE_GOREACH, mapNum)
Procure agora por:
- Código:
SendActionMsg GetPlayerMap(Index), Msg, White, 1, (GetPlayerX(Index) * 32), (GetPlayerY(Index) * 32)
Cole abaixo:
- Código:
Call CheckTasks(Index, QUEST_TYPE_GOGATHER, GetItemNum(Trim$(Item(GetPlayerInvItemNum(Index, n)).Name)))
Procure agora por:
- Código:
SendMapSound Index, rX, rY, SoundEntity.seResource, Resource_index
Cole abaixo
- Código:
Call CheckTasks(Index, QUEST_TYPE_GOTRAIN, Resource_index)
Agora no CLIENTE !!!
adicione modQuests para seu projeto
adicione frmEditor_Quest para seu projeto.
Troque seu frmEditor_NPC e frmMain pelo que estava no arquivo em que baixou...
Agora,no modGameEditors,procure:
- Código:
.txtDamage.text = NPC(EditorIndex).Damage
Abaixo,adicione:
- Código:
.chkQuest.Value = NPC(EditorIndex).Quest
.scrlQuest.Value = NPC(EditorIndex).QuestNum
no modEnumerations,procure por
- Código:
SPartyVitals
Cole abaixo:
- Código:
SQuestEditor
SUpdateQuest
SPlayerQuest
SQuestMessage
Agora,procure por:
- Código:
CPartyLeave
Abaixo,cole:
- Código:
CRequestEditQuest
CSaveQuest
CRequestQuests
CPlayerHandleQuest
CQuestLogUpdate
Agora,no modHandleDate procure por:
- Código:
HandleDataSub(SPartyVitals) = GetAddress(AddressOf HandlePartyVitals)
Abaixo cole:
- Código:
HandleDataSub(SQuestEditor) = GetAddress(AddressOf HandleQuestEditor)
HandleDataSub(SUpdateQuest) = GetAddress(AddressOf HandleUpdateQuest)
HandleDataSub(SPlayerQuest) = GetAddress(AddressOf HandlePlayerQuest)
HandleDataSub(SQuestMessage) = GetAddress(AddressOf HandleQuestMessage)
no final do modHandleDate cole isso:
- Código:
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.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
no modInput,procure por:
- Código:
SendRequestEditSpell
abaixo,cole:
- Código:
Case "/editquest"
If GetPlayerAccess(MyIndex) < ADMIN_DEVELOPER Then GoTo Continue
SendRequestEditQuest
em modType,procure por:
- Código:
Step As Byte
Abaixo,cole:
- Código:
PlayerQuest(1 To MAX_QUESTS) As PlayerQuestRec
Agora,procure por:
- Código:
Level As Long
E por último cole:
- Código:
Quest As Byte
QuestNum As Long
Creditos:
Alatar - Por fazer
Terabin - Por traduzir
Ricardo - Por Postar na MMORPGBR
Valentine - Por Postar na Aldeia RPG
A min - Por pegar la na aldeia e colocar o tuto pra você
maninho21- Membro
- Mensagens : 234
Re: [Pedido] Sistema de Quest
Muito Obrigado mesmo +1 ^^
Edit: ta dando erro aqui quando vou compilar...
Print:
https://2img.net/r/ihimg/f/33/imagemyk.png/
OBS: eu estou usando a versão FULL
Edit: ta dando erro aqui quando vou compilar...
Print:
https://2img.net/r/ihimg/f/33/imagemyk.png/
OBS: eu estou usando a versão FULL
TheKirin- Membro Vitalicio
- Mensagens : 561
Re: [Pedido] Sistema de Quest
Simples, vá abra seu "Client.vbp" e em "ModConstants" depois de:
Adicione isto:
E a mesma coisa no servidor, abra seu "Server.vbp" e em "ModConstants" , depois de:
Adicione isto:
OBS: Lembrando que o "Max_Quests" do cliente deve ser igual o do servidor....
E pronto, compile e seja feliz!!
- Código:
Public Const MAX_PARTYS As Long =
Adicione isto:
- Código:
Public Const MAX_QUESTS as Long = 30 ' Ou o número máximo de quests
E a mesma coisa no servidor, abra seu "Server.vbp" e em "ModConstants" , depois de:
- Código:
Public Const MAX_PARTYS As Long =
Adicione isto:
- Código:
Public Const MAX_QUESTS as Long = 30 ' Ou o número máximo de quests
OBS: Lembrando que o "Max_Quests" do cliente deve ser igual o do servidor....
E pronto, compile e seja feliz!!
lucas100vzs- Membro Sênior
- Mensagens : 396
Re: [Pedido] Sistema de Quest
@Himinato
Abre digitando /editquest
OBS: só admin pode fazer esse comando
OBG para todos os 2 que me ajudaram + 1 pra vcs...
Esqueci de falar
Abre digitando /editquest
OBS: só admin pode fazer esse comando
OBG para todos os 2 que me ajudaram + 1 pra vcs...
Esqueci de falar
TheKirin- Membro Vitalicio
- Mensagens : 561
Re: [Pedido] Sistema de Quest
pelo que parece topico resolvido ? se for .. vo chamar um mod para trancar
sushi123Banido- Mensagens : 188
Re: [Pedido] Sistema de Quest
Tópico resolvido,trancado de movido.
Blizzard- Membro Vitalicio
- Mensagens : 603
Tópicos semelhantes
» Pedido sistema de quest
» [Pedido] Sistema de quest ou missao
» [Pedido] Sistema de Quest Funcional
» [PEDIDO]Script de Classe por level ou por quest
» [PEDIDO]Sistema Spell em Area[PEDIDO]
» [Pedido] Sistema de quest ou missao
» [Pedido] Sistema de Quest Funcional
» [PEDIDO]Script de Classe por level ou por quest
» [PEDIDO]Sistema Spell em Area[PEDIDO]
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
Dom 08 Abr 2018, 18:40 por JorgeZinhoo002
» Ojkjeeeee
Seg 10 Out 2016, 23:19 por Frozen
» Naruto Great Ninja Batle
Dom 09 Out 2016, 14:29 por GuiinhoLP
» Recrutamento de um Designer para jogo de CDZ.
Sex 23 Set 2016, 18:37 por newbie123
» Serviços de suporte maker( Programação , Design , PixelArt ) E Vendas de Jogos
Qui 22 Set 2016, 20:11 por Eduardo
» Serviços de suporte maker( Programação , Design , PixelArt ) E Vendas de Jogos
Qui 22 Set 2016, 20:11 por Eduardo
» Serviços de suporte maker( Programação , Design , PixelArt ) E Vendas de Jogos
Qui 22 Set 2016, 20:09 por Eduardo
» Projeto Dbz
Qua 31 Ago 2016, 23:46 por 157
» Avaliação - Sprites Naruto
Qua 31 Ago 2016, 17:09 por 157
» [Sprites] DBZ (Plix)
Qua 31 Ago 2016, 14:13 por 157
» Super Pack - Bleach V.2
Qua 31 Ago 2016, 13:02 por 157
» [PEDIDO][PROJETO][RECRUTAMENTO] DYNISTYGAMES
Ter 30 Ago 2016, 10:04 por 157
» [PEDIDO][PROJETO][RECRUTAMENTO] DYNISTYGAMES
Ter 30 Ago 2016, 10:03 por 157
» [PEDIDO][PROJETO][RECRUTAMENTO] DYNISTYGAMES
Ter 30 Ago 2016, 10:02 por 157
» [Pedido] Contador de resets na FrmMain
Sáb 13 Ago 2016, 17:45 por killers97
» [Recrutamento]
Qua 10 Ago 2016, 23:09 por Monsters
» Ajuda erro no Cliente e Servidor do EEB 2.6!
Qua 20 Jul 2016, 19:53 por Binholx
» Como criar tilesets para Eclipse Origins 3.0 (POKÉMON)
Qua 29 Jun 2016, 19:46 por Sir Aaron
» Recursos Pokemons
Qua 29 Jun 2016, 19:34 por Sir Aaron
» erro frm flash
Qua 25 maio 2016, 13:51 por vava123
» Pedido - Pack de star wars
Qui 19 maio 2016, 05:06 por edsonpet
» [Ajuda] Sobre como por o servidor on por ip fixo
Ter 17 maio 2016, 16:14 por vava123
» Illusion Dimension - O Misterio do ID: BETA TESTE ONLINE
Sex 06 maio 2016, 20:02 por LksFlorencio
» [NSME] Naruto Shinobi Maker Engine
Qua 23 Mar 2016, 15:11 por luana1457
» Script /base,/casa Igual DBZ Forces
Dom 21 Fev 2016, 07:34 por JorgeZinhoo002
» [Pedido]Colar Tsunade item sprite eclipse origin
Qui 21 Jan 2016, 07:38 por lawllietbr
» [Pedido] Elysium
Sáb 19 Dez 2015, 11:31 por luana1457
» Naruto - Recruta
Ter 15 Dez 2015, 18:40 por Uchiha ~
» [Avaliação] - Kirito from Sword Art Online; Red and Pikachu from Pokemon.
Qua 25 Nov 2015, 13:43 por Thanakii
» [Avaliação] - Kenpachi Zaraki from Bleach; Libra Shiryu From Saint Seiya.
Qua 25 Nov 2015, 12:55 por Thanakii
» Demonstração de Sprites (Á VENDA!)
Qua 25 Nov 2015, 12:40 por Thanakii
» [Sistema de Reset]Para Eclipse .
Ter 24 Nov 2015, 16:51 por VithorUchi
» Cada Guild Nascer em Certo Mapa
Qui 12 Nov 2015, 06:13 por fabiofeijó_HIT
» Dragon Ball z Fusion A Grande Volta
Qui 29 Out 2015, 15:17 por fabiofeijó_HIT
» Ajuda com Ip fixo
Seg 26 Out 2015, 16:07 por GalaxyHells15
» Como Fazer um GUI no Eclipse Origins
Dom 18 Out 2015, 22:10 por Jeanleee
» Shisui Susanoo
Dom 18 Out 2015, 20:23 por Jeanleee
» Fantasy Art Online
Dom 18 Out 2015, 16:41 por daviih123
» Ajuda !!
Seg 05 Out 2015, 12:13 por andersonzika
» como passar o usuário e senha para o MainMenu?
Seg 28 Set 2015, 22:03 por Bëzerk
» Ru time ero 13 Type mismatch
Seg 28 Set 2015, 09:08 por andredarle
» Jarvis 1.3 Download
Qua 23 Set 2015, 18:42 por soares125
» [Avaliação/Disponibilização]Árvore 64x64
Qua 23 Set 2015, 15:15 por Over~
» Mlk's Zikas Signatures
Ter 22 Set 2015, 21:15 por Aikawa Reborn'
» Pedido de Sistemas
Dom 20 Set 2015, 18:05 por cleyton_05
» [AjudaEEB]Gerador de EXP
Qua 16 Set 2015, 14:04 por Over~
» [Avaliar] Base, Humano e Goblin.
Seg 14 Set 2015, 22:51 por .iBlaz3.
» Fabrica do Tio Cronos!
Dom 13 Set 2015, 21:31 por [ADM]Cronos
» [PixelArt] Minion - Meu malvado favorito
Dom 13 Set 2015, 12:51 por [ADM]Cronos
» [Avaliar] Goku Dragon Ball Z
Qua 05 Ago 2015, 21:36 por Setrux