Isto é uma pré-visualização de um tema em Hitskin.com
Instalar o tema • Voltar para a ficha do tema
[EO 2.0] Sistema de Craft
+8
Yukii
Dooolly
llAliferll
kriteuss
Akio
joaopaulo98
Profane ~
silipinho
12 participantes
Página 1 de 2
Página 1 de 2 • 1, 2
[EO 2.0] Sistema de Craft
Ai gente só trazendo um ótimo tutorial de outra comunidade pra cá, a unica coisa que fiz foi dar Ctrl+C e Ctrl+V no poste do llAliferll (membro da tarberna e foi de lá que tirei o sistema).
Então todo o crédito é de direito dele, e as considerações dele está ao final do tópico!
Não foi eu quem fiz então não posso dar qualquer tipo de suporte ao conteúdo, porém já foi testa e roda tranquilo e muito bem é ótimo o sistema... (testado numa E.O2.0 "limpa" "original).
Olá, faz tempo que não posto algo aqui na área de tutoriais então vim disponibilizar o sistema de Craft que por meio de um pedido resolvi compartilhar.
O Sistema é bem simples porém tem um Editor, além de eu deixar bem pratico de ser adicionado ao Projeto
A "formula" do Craft é: Item1+Qntia1 + Item2+Qntia2 = Resultado + QntiaResultado.
Arquivos Necessários: Download
Obs: a FrmMainPic são as Pics que tem que ser colocadas na FrmMain via Ctrl+C e Ctrl+V para ficar mais simples 'u'
Bom primeiro baixe os arquivos necessários e adicione ao seu projeto.
Pronto!?, Então podemos começar primeiro vamos ao servidor que tem pouca coisa para configurar...
Vá ao ModHandleData e encontre a Sub InitMessages e no final Antes de End Sub Adicione:
Feito Isso vá ao ModEnumerations e procure por Public Enum ClientPackets e antes de ' Make sure CMSG_COUNT is below everything else adicione:
e Em Public Enum ServerPackets antes de ' Make sure SMSG_COUNT is below everything else adicione:
Agora já configurado os Pacotes vá para ModTypes e antes de Private Type PlayerRec adicione:
e Dentro da Private Type PlayerRec adicione:
No mesmo Modulo procure por Private Type TempPlayerRec:
Código:
no ModHandleData procure por Sub HandlePlayerMove dentro abaixo de:
Código:
Adicione:
Código:
Em ModPlayer procure por Sub JoinGame(ByVal index As Long) e dentro encontre Call SendHotbar(index) abaixo adicione:
Código:
Agora vá em ModGeneral e procure por Private Sub LoadGameData() e antes de End Sub adicione:
Código:
Obs: Agora crie uma pasta no DataFiles do servidor chamada Craft
Certo Servidor Configurado! Agora vamos para o Client.
Vá ao ModHandleData e encontre a Sub InitMessages e antes de ' Error handler adicione:
Código:
Feito isso vá em ModEnumerations e procure por Public Enum ClientPackets e antes de ' Make sure CMSG_COUNT is below everything else adicione:
Código:
e Em Public Enum ServerPackets antes de ' Make sure SMSG_COUNT is below everything else adicione:
Código:
Agora já configurado os Pacotes vá para ModTypes e antes de Private Type PlayerRec adicione:
Código:
No mesmo Modulo procure por Private Type PlayerRec:
Código:
Agora vá na frmMain e na PicInventory de dois cliques para abrir a Private Sub picInventory_DblClick() e dentro da mesma Acima de ' are we in a shop? adicione:
Código:
Agora na FrmMain de um duplo clique e vá até o final dos codes e adicione:
Código:
Vá no modDirectDraw7 e no final do Modulo adicione:
Código:
Agora para abrir o editor Crie um Botão na PicAdmin e adicione dentro:
Código:
Pronto agora só testar o sistema, caso encontrem bugs me avise :3!
llAliferll 'Fazer o sistema :3
Belzebu 'Cobaia para achar Bugs para Correção.
Junior 'Base linda do Video(Se não colocar Crédito ele Xora)
Depois de terminar o sistema caso queira o membro Thales12 lembrou dessa parte:
OBS: Procurem por :
Código:
em baixo add:
Código:
De nd
E é isso gente espero ter ajudado trazendo para cá!
Então todo o crédito é de direito dele, e as considerações dele está ao final do tópico!
Não foi eu quem fiz então não posso dar qualquer tipo de suporte ao conteúdo, porém já foi testa e roda tranquilo e muito bem é ótimo o sistema... (testado numa E.O2.0 "limpa" "original).
[b][b]Introdução[/b][/b] |
Sistema de Craft |
O Sistema é bem simples porém tem um Editor, além de eu deixar bem pratico de ser adicionado ao Projeto
A "formula" do Craft é: Item1+Qntia1 + Item2+Qntia2 = Resultado + QntiaResultado.
[b][b]Mídia[/b][/b] |
Vídeo Demonstração |
[b][b]Material[/b][/b] |
Download e Tutorial |
Obs: a FrmMainPic são as Pics que tem que ser colocadas na FrmMain via Ctrl+C e Ctrl+V para ficar mais simples 'u'
Aviso: Antes de começar qualquer modificação no Projeto certifique-se de fazer Backup para não haver perda do seu projeto. Sistema funcional EO 2.0, não me responsabilizo por ações de Programadores Inexperientes ou Incompatibilidade com seu projeto...
Bom primeiro baixe os arquivos necessários e adicione ao seu projeto.
Pronto!?, Então podemos começar primeiro vamos ao servidor que tem pouca coisa para configurar...
Vá ao ModHandleData e encontre a Sub InitMessages e no final Antes de End Sub Adicione:
- Código:
HandleDataSub(CRequestEditCraft) = GetAddress(AddressOf HandleRequestEditCraft) 'Craft System
HandleDataSub(CSaveCraft) = GetAddress(AddressOf HandleSaveCraft)
HandleDataSub(CRequestCraft) = GetAddress(AddressOf HandleRequestCraft)
HandleDataSub(CCraftLogUpdate) = GetAddress(AddressOf HandleCraftUpdate)
HandleDataSub(CPlayerHandleCraft) = GetAddress(AddressOf HandleCraftOk)
HandleDataSub(CCraftItemAdd) = GetAddress(AddressOf HandleCraftItemAdd)
Feito Isso vá ao ModEnumerations e procure por Public Enum ClientPackets e antes de ' Make sure CMSG_COUNT is below everything else adicione:
- Código:
HandleDataSub(CRequestEditCraft) = GetAddress(AddressOf HandleRequestEditCraft) 'Craft System
HandleDataSub(CSaveCraft) = GetAddress(AddressOf HandleSaveCraft)
HandleDataSub(CRequestCraft) = GetAddress(AddressOf HandleRequestCraft)
HandleDataSub(CCraftLogUpdate) = GetAddress(AddressOf HandleCraftUpdate)
HandleDataSub(CPlayerHandleCraft) = GetAddress(AddressOf HandleCraftOk)
HandleDataSub(CCraftItemAdd) = GetAddress(AddressOf HandleCraftItemAd
e Em Public Enum ServerPackets antes de ' Make sure SMSG_COUNT is below everything else adicione:
- Código:
SCraftEditor ' Craft System
SUpdateCraft
SPlayerCraft
SInCraft
Agora já configurado os Pacotes vá para ModTypes e antes de Private Type PlayerRec adicione:
- Código:
'Variaveis do Jogador Craft
Private Type PlayerCraftRec
Name As String * NAME_LENGTH
Item1 As Long
Item1Value As Long
Item2 As Long
Item2Value As Long
Resultado As Long
ResultadoValue As Long
Cost As Long
End Type
e Dentro da Private Type PlayerRec adicione:
- Código:
Craft As PlayerCraftRec 'Sistema de Craft
No mesmo Modulo procure por Private Type TempPlayerRec:
Código:
- Código:
InCraft As Boolean 'Sistema de Craft
no ModHandleData procure por Sub HandlePlayerMove dentro abaixo de:
Código:
- Código:
' if stunned, stop them moving
If TempPlayer(index).StunDuration > 0 Then
Call SendPlayerXY(index)
Exit Sub
End If
Adicione:
Código:
- Código:
' Craft System - Remove Craft Walk
If TempPlayer(index).InCraft = True Then
TempPlayer(index).InCraft = False
SendInCraft index
End If
Em ModPlayer procure por Sub JoinGame(ByVal index As Long) e dentro encontre Call SendHotbar(index) abaixo adicione:
Código:
- Código:
Call SendCraftS(index) 'Sistema de Craft
Agora vá em ModGeneral e procure por Private Sub LoadGameData() e antes de End Sub adicione:
Código:
- Código:
Call SetStatus("Loading Crafts...") 'Sistema de Craft
Call LoadCraft
Obs: Agora crie uma pasta no DataFiles do servidor chamada Craft
Certo Servidor Configurado! Agora vamos para o Client.
Vá ao ModHandleData e encontre a Sub InitMessages e antes de ' Error handler adicione:
Código:
- Código:
HandleDataSub(SCraftEditor) = GetAddress(AddressOf HandleCraftEditor) 'Craft System
HandleDataSub(SUpdateCraft) = GetAddress(AddressOf HandleUpdateCraft)
HandleDataSub(SPlayerCraft) = GetAddress(AddressOf HandlePlayerCraft)
HandleDataSub(SInCraft) = GetAddress(AddressOf HandleInCraft)
Feito isso vá em ModEnumerations e procure por Public Enum ClientPackets e antes de ' Make sure CMSG_COUNT is below everything else adicione:
Código:
- Código:
CRequestEditCraft 'Craft System
CSaveCraft
CRequestCraft
CCraftLogUpdate
CPlayerHandleCraft
CCraftItemAdd
e Em Public Enum ServerPackets antes de ' Make sure SMSG_COUNT is below everything else adicione:
Código:
- Código:
SCraftEditor ' Craft System
SUpdateCraft
SPlayerCraft
SInCraft
Agora já configurado os Pacotes vá para ModTypes e antes de Private Type PlayerRec adicione:
Código:
- Código:
'Variaveis do Jogador Craft
Private Type PlayerCraftRec
Name As String * NAME_LENGTH
Item1 As Long
Item1Value As Long
Item2 As Long
Item2Value As Long
Resultado As Long
ResultadoValue As Long
Cost As Long
End Type
No mesmo Modulo procure por Private Type PlayerRec:
Código:
- Código:
Craft As PlayerCraftRec 'Sistema de Craft
Agora vá na frmMain e na PicInventory de dois cliques para abrir a Private Sub picInventory_DblClick() e dentro da mesma Acima de ' are we in a shop? adicione:
Código:
- Código:
'In Craft? Send Item to Craft Window
If CraftMode = True Then
If Item(GetPlayerInvItemNum(MyIndex, InvNum)).Type = ITEM_TYPE_CURRENCY Then
ItemNumAddCraft = GetPlayerInvItemNum(MyIndex, InvNum)
PicValueCraft.Visible = True
Else
PlayerCraftItemAdd GetPlayerInvItemNum(MyIndex, InvNum), 1
ItemNumAddCraft = 0
PicValueCraft.Visible = False
End If
Exit Sub
End If
Agora na FrmMain de um duplo clique e vá até o final dos codes e adicione:
Código:
- Código:
Private Sub cmdAdminCraft_Click()
PlayerCraftOk 0, 4 'Retirar esse Comando quando adicionar Npc Craft
End Sub
Private Sub imgCraftCancel_Click()
PlayerCraftOk 0, 0
End Sub
Private Sub imgCraftOk_Click()
PlayerCraftOk 0, 1
End Sub
Private Sub imgItem1_Click()
PlayerCraftOk 0, 2
End Sub
Private Sub imgItem2_Click()
PlayerCraftOk 0, 3
End Sub
Private Sub lblCancelValueCraft_Click()
ItemNumAddCraft = 0
PicValueCraft.Visible = False
End Sub
Private Sub lblOkValueCraft_Click()
Call PlayerCraftItemAdd(ItemNumAddCraft, Trim$(TxtCraftCurrency))
ItemNumAddCraft = 0
PicValueCraft.Visible = False
End Sub
Vá no modDirectDraw7 e no final do Modulo adicione:
Código:
- Código:
Public Sub bltCraft()
Dim I As Long, x As Long, y As Long, CraftNum As Long, CraftPic As Long, CraftNumValue As Long
Dim Amount As String
Dim rec As RECT, rec_pos As RECT
Dim colour As Long
' If debug mode, handle error then exit out
If Options.Debug = 1 Then On Error GoTo errorhandler
If Not InGame Then Exit Sub
frmMain.PicCraft.Cls
For I = 1 To 3
Select Case I
Case 1
CraftNum = Player(MyIndex).Craft.Item1
CraftNumValue = Player(MyIndex).Craft.Item1Value
Case 2
CraftNum = Player(MyIndex).Craft.Item2
CraftNumValue = Player(MyIndex).Craft.Item2Value
Case 3
CraftNum = Player(MyIndex).Craft.Resultado
CraftNumValue = Player(MyIndex).Craft.ResultadoValue
Case Else
CraftNum = 0
CraftNumValue = 0
End Select
If CraftNum > 0 And CraftNum <= MAX_CRAFTS Then
CraftPic = Item(CraftNum).Pic
If CraftPic > 0 And CraftPic <= NumItems Then
Select Case I
Case 1
With rec_pos
.top = 13
.Bottom = .top + PIC_Y
.Left = 12
.Right = .Left + PIC_X
End With
Case 2
With rec_pos
.top = 13
.Bottom = .top + PIC_Y
.Left = 56
.Right = .Left + PIC_X
End With
Case 3
With rec_pos
.top = 51
.Bottom = .top + PIC_Y
.Left = 34
.Right = .Left + PIC_X
End With
End Select
With rec
.top = 0
.Bottom = 32
.Left = 32
.Right = 64
End With
' Load item if not loaded, and reset timer
ItemTimer(CraftPic) = GetTickCount + SurfaceTimerMax
If DDS_Item(CraftPic) Is Nothing Then
Call InitDDSurf("Items" & CraftPic, DDSD_Item(CraftPic), DDS_Item(CraftPic))
End If
'Engine_BltToDC DDS_SpellIcon(SkillTreepic), rec, rec_pos, frmMain.PicSkillTree, False
Call Engine_BltToDC(DDS_Item(CraftPic), rec, rec_pos, frmMain.PicCraft, False)
' If item is a stack - draw the amount you have
y = rec_pos.top + 22
x = rec_pos.Left + 14
If CraftNumValue > 1 Then
DrawText frmMain.PicCraft.hDC, x, y, CraftNumValue, QBColor(White)
End If
frmMain.PicCraft.Refresh
End If
End If
Next
' Error handler
Exit Sub
errorhandler:
HandleError "EditorSkillTree_BltIcon", "modDirectDraw7", Err.Number, Err.Description, Err.Source, Err.HelpContext
Err.Clear
Exit Sub
End Sub
Agora para abrir o editor Crie um Botão na PicAdmin e adicione dentro:
Código:
- Código:
' If debug mode, handle error then exit out
If Options.Debug = 1 Then On Error GoTo errorhandler
If GetPlayerAccess(MyIndex) < ADMIN_DEVELOPER Then
Exit Sub
End If
SendRequestEditCraft
' Error handler
Exit Sub
errorhandler:
HandleError "cmdCraft_Click", "frmMain", Err.Number, Err.Description, Err.Source, Err.HelpContext
Err.Clear
Exit Sub
Pronto agora só testar o sistema, caso encontrem bugs me avise :3!
[b][b]Considerações finais[/b][/b] |
Créditos |
Belzebu 'Cobaia para achar Bugs para Correção.
Junior 'Base linda do Video
Depois de terminar o sistema caso queira o membro Thales12 lembrou dessa parte:
OBS: Procurem por :
Código:
- Código:
Call SetStatus("Clearing animations...")
Call ClearAnimations
em baixo add:
Código:
- Código:
Call SetStatus("Clearing crafts...")
Call ClearCraftS
De nd
E é isso gente espero ter ajudado trazendo para cá!
silipinho- Semi-Experiente
- Mensagens : 97
Créditos : 14
Re: [EO 2.0] Sistema de Craft
Well. Muito bom.
Parabéns pelo desenvolvimento até mesmo pelo post. Um dia crio coragem e testo ><!
*-*
+1
Parabéns pelo desenvolvimento até mesmo pelo post. Um dia crio coragem e testo ><!
*-*
+1
_________________
"Mistress of shattered hopes and forever broken dreams"
Profane ~- Colaborador
- Mensagens : 818
Créditos : 130
Re: [EO 2.0] Sistema de Craft
Vlw man... como eu disse só trouxe ele pra cá!
Enfim eu testei, funcionou não é tão completo por não ter chance de falhar e não gasta gold e tals tipo pra ficar mais bem completinho e reparei q funcionou com uma conta ADMIN com um player normal a pic de craft não abri... nem tentei arrumar e tals mas "funcionar" ele funciona! Talvez uns ajustes e ele fica top!
Enfim eu testei, funcionou não é tão completo por não ter chance de falhar e não gasta gold e tals tipo pra ficar mais bem completinho e reparei q funcionou com uma conta ADMIN com um player normal a pic de craft não abri... nem tentei arrumar e tals mas "funcionar" ele funciona! Talvez uns ajustes e ele fica top!
silipinho- Semi-Experiente
- Mensagens : 97
Créditos : 14
Re: [EO 2.0] Sistema de Craft
Case 3
CraftNum = Player(MyIndex).Craft.Resultado
CraftNumValue = Player(MyIndex).Craft.ResultadoValue
Call TakeItem(Index, 1, 2)
+- assim 1 é o ID do item 2 a quantidade
bom eu n testei pra ver se da certo mais eu coloquei ali +- para tirar o item depois do resultado do craft
CraftNum = Player(MyIndex).Craft.Resultado
CraftNumValue = Player(MyIndex).Craft.ResultadoValue
Call TakeItem(Index, 1, 2)
+- assim 1 é o ID do item 2 a quantidade
bom eu n testei pra ver se da certo mais eu coloquei ali +- para tirar o item depois do resultado do craft
_________________
- Dancinha:
METAS 2020.
- APRENDER TOCAR VIOLINO ||||||||||
- FAZER ETEC DESENVOLVIMENTO EM SISTEMA ||||||||||
- CRIAR UM APLICATIVO RENTÁVEL||||||||||
- GANHAR DINHEIRO PROGRAMANDO ||||||||||
Re: [EO 2.0] Sistema de Craft
Kkkk, esta corretissimo pequeno Joao ; 3
Ficando bom nisso em xD
Ficando bom nisso em xD
_________________
"Mistress of shattered hopes and forever broken dreams"
Profane ~- Colaborador
- Mensagens : 818
Créditos : 130
Re: [EO 2.0] Sistema de Craft
Opa já tenho esse sistema do Alifer no meu jogo, muito bom continue contribuindo
Akio- Membro Ativo
- Mensagens : 353
Créditos : 35
Ficha do personagem
Nível: 1
Experiência:
(0/0)
Vida:
(30/30)
Re: [EO 2.0] Sistema de Craft
Esse sistema não é do Alifer, ele apenas pegou o sistema pronto e modificou --'
kriteuss- Iniciante
- Mensagens : 44
Créditos : 2
Re: [EO 2.0] Sistema de Craft
kriteuss escreveu:Esse sistema não é do Alifer, ele apenas pegou o sistema pronto e modificou --'
Quero saber onde esta esse sistema pronto por que né, quero provas...
Já tenho experiência com E.O 2.0 o suficiente para fazer sistemas de minha vontade não necessito pegar sistemas prontos para ganhar algum créditos na comunidade maker, além de eu ter somente colocado o sistema na Taberna, o usuário Silipinho disponibilizou aqui até agradeço por compartilhar com a aldeia.
Agora sobre o sistema algumas Observações...
Sobre criar itens somente usando admin foi uma condição colocada por mim pois eu estava testando um npc para crafts e a janela não ficar aberta torto a direito .-. e nego craftando o que bem entendesse...
Para resolver é somente retirar está parte no ModCraftServer em HandleCraftItemAdd:
Código:
- Código:
If Player(index).Access < ADMIN_DEVELOPER Then
If TempPlayer(index).InCraft = False Then Exit Sub
End If
E acabei de notar um "bug" que foi erro meu na hora de criar os packets... irei explicar o que ocorre bom não é possivel colocar um valor maior que 255 'As byte
Então tenho o dever de passar a correção imediata.
Vamos começar pelo Client... Procure por:
Código:
- Código:
Public Sub PlayerCraftItemAdd(ByVal ItemNum As Long, ByVal ItemNumValue As Byte)
Então substitua toda a Sub por:
Código:
- Código:
Public Sub PlayerCraftItemAdd(ByVal ItemNum As Long, ByVal ItemNumValue As Long)
Dim Buffer As clsBuffer
Set Buffer = New clsBuffer
Buffer.WriteLong CCraftItemAdd
Buffer.WriteLong ItemNum
Buffer.WriteLong ItemNumValue
SendData Buffer.ToArray()
Set Buffer = Nothing
End Sub
Pronto Agora vamos para o Servidor... E procure por:
Código:
- Código:
Sub HandleCraftItemAdd(ByVal index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)
E dentro procure por:
ResultadoValue As Byte 'Não tenho muita certeza se está a byte se estiver as long deixe se estiver as byte troque para as long .-.
ainda dentro dessa sub procure por:
Código:
- Código:
ItemNumValue = Buffer.ReadByte
e troque por:
Código:
- Código:
ItemNumValue = Buffer.ReadLong
Bom feito isso... teste um valor acima de 255 no craft !
llAliferll- Novato
- Mensagens : 18
Créditos : 7
Re: [EO 2.0] Sistema de Craft
Não se importe com Haters, Alifer >.<.
Ainda acho uma bobagem essa questão de "creditos"; Não se ganha nada com esse teste de conhecimento, e tenho certeza que um reconhecimento bobo em fórum é apenas algo infantil, você sabe suas capacidades.
Como já falei,adorei o vídeo e a forma como ficou o sistema; Realmente um excelente trabalho.
Ainda acho uma bobagem essa questão de "creditos"; Não se ganha nada com esse teste de conhecimento, e tenho certeza que um reconhecimento bobo em fórum é apenas algo infantil, você sabe suas capacidades.
Como já falei,adorei o vídeo e a forma como ficou o sistema; Realmente um excelente trabalho.
_________________
"Mistress of shattered hopes and forever broken dreams"
Profane ~- Colaborador
- Mensagens : 818
Créditos : 130
Re: [EO 2.0] Sistema de Craft
Muito bom o sistema, eu já o conhecia, parabéns Alifer você é muito bom programador e não ligue para oq esse pessoas falam...
+1 Cred
+1 Cred
Página 1 de 2 • 1, 2
Tópicos semelhantes
» [RESOLVIDO][AJUDA] Sistema de Craft
» [VXA-OS] [DUVIDA] Sistema de craft e resources
» Craft,Blacksmith,Alquemia
» World of War Craft: The Burning Crusader
» AvilaMn Simple Craft System
» [VXA-OS] [DUVIDA] Sistema de craft e resources
» Craft,Blacksmith,Alquemia
» World of War Craft: The Burning Crusader
» AvilaMn Simple Craft System
Página 1 de 2
Permissões neste sub-fórum
Não podes responder a tópicos