Sistema de Rate(TESTADO)
2 participantes
Página 1 de 1
Sistema de Rate(TESTADO)
Olá pessoal! Hoje vou mostrar pra você como implementar um sistema de rate para a experiencia. É um sistema bem simples, onde vamos adicionar um multiplicador. Quando o personagem mata o monstro ele vai receber a experiencia multiplicada pela rate do servidor. Então aquela galera que gosta de fazer evento de XP vai usar muito!
Mas vamos ao que interessa!
1º Passo: Vá no modTypes e procure por
Private Type OptionsRec
Game_Name As String
MOTD As String
Port As Long
Website As String
End Type
E substitua por:
Private Type OptionsRec
Game_Name As String
MOTD As String
Port As Long
Website As String
ExpRate As Long
End Type
Agora localize na pasta data do servidor o arquivo options.ini, abra-o e no final coloque ExpRate=1
2º passo: Abra o modCombat, procure por Exp = Npc(npcNum).Exp e mude para Exp = Npc(npcNum).Exp * Options.ExpRate.
3º passo: Vá para o modEnumerations, e em Public Enum ClientPackets adicione no final do sub
Como diz no próprio código fonte as linhas acima devem ficar acima do CMSG_COUNT.
4º passo: Para finalizar as modificações no servidor abra o modHandleData, e no Public Sub InitMessages() adicione:
HandleDataSub(CSetExpRate) = GetAddress(AddressOf HandleSetExpRate)
HandleDataSub(CGetExpRate) = GetAddress(AddressOf HandleGetExpRate)
E adicione tambem os dois Subs abaixo depois do Sub HandleSetMotd:
Sub HandleSetExpRate(ByVal index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)
Dim Buffer As clsBuffer
Set Buffer = New clsBuffer
Buffer.WriteBytes Data()
' Prevent hacking
If GetPlayerAccess(index) < ADMIN_CREATOR Then
Exit Sub
End If
Options.ExpRate = Buffer.ReadLong
SaveOptions
Set Buffer = Nothing
Call GlobalMsg("A rate foi alterada para " & Options.ExpRate & "X", BrightCyan)
Call AddLog(GetPlayerName(index) & " mudou a rate para: " & Options.ExpRate, ADMIN_LOG)
End Sub
Sub HandleGetExpRate(ByVal index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)
Dim Buffer As clsBuffer
Set Buffer = New clsBuffer
Buffer.WriteBytes Data()
' Prevent hacking
If GetPlayerAccess(index) < ADMIN_MONITOR Then
Exit Sub
End If
PlayerMsg index, "A rate atual é: " & Options.ExpRate & "X", BrightCyan
End Sub
Pronto nossa modificações no servidor estão concluidas. Vamos agora para o cliente!
1º passo: Vá para o modEnumerations, e em Public Enum ClientPackets adicione no final do sub
Como diz no próprio código fonte as linhas acima devem ficar acima do CMSG_COUNT.
2º passo: Abra o modClientTCP de depois do Public Sub SendMOTDChange adicione:
Public Sub SendExpRateChange(ByVal ExpRate As Long)
Dim Buffer As clsBuffer
If Options.Debug = 1 Then On Error GoTo errorhandler
Set Buffer = New clsBuffer
Buffer.WriteLong CSetExpRate
Buffer.WriteLong ExpRate
SendData Buffer.ToArray()
Set Buffer = Nothing
Exit Sub
errorhandler:
HandleError "SendExpRateChange", "modClientTCP", Err.Number, Err.Description, Err.Source, Err.HelpContext
Err.Clear
Exit Sub
End Sub
Public Sub SendExpRateRequest()
Dim Buffer As clsBuffer
' If debug mode, handle error then exit out
If Options.Debug = 1 Then On Error GoTo errorhandler
Set Buffer = New clsBuffer
Buffer.WriteLong CGetExpRate
SendData Buffer.ToArray()
Set Buffer = Nothing
' Error handler
Exit Sub
errorhandler:
HandleError "SendExpRateRequest", "modClientTCP", Err.Number, Err.Description, Err.Source, Err.HelpContext
Err.Clear
Exit Sub
End Sub
3º passo: Para terminar abra o modInput e localize o Select Case Command(0). Ao final do select case adicione os dois comando abaixo:
Case "/getrate"
If GetPlayerAccess(MyIndex) < ADMIN_MONITOR Then GoTo Continue
SendExpRateRequest
Case "/setrate"
If GetPlayerAccess(MyIndex) < ADMIN_CREATOR Then GoTo Continue
If UBound(Command) < 1 Then
AddText "Forma de Usar: /setrate (nova rate)", AlertColor
GoTo Continue
End If
If Not IsNumeric(Command(1)) Then
AddText "Forma de Usar: /setrate (nova rate)", AlertColor
GoTo Continue
End If
SendExpRateChange Right$(ChatText, Len(ChatText) -
E pronto!
Considerações finais: Sempre que desejar que a experiencia dada seja a que você colocou no NPC Editor, use a rate 1, pois todo número multiplicado por 1 é ele mesmo. E CUIDADO para não colocar a rate 0 (ZERO), pois senão o jogador nçao ira receber exp ao matar o monstro.
Bem é só isso. Eu ja testei esse sistema no Eclipse Origins e funcionou. O código é facilmente portável para qualquer outra engine pois a lógica é simples. Vou fincando por aqui, flw!
PS: Obviamente, gostaria de receber uns creds por isso! huahauahuahauahuahua
Mas vamos ao que interessa!
~ Dificuldade: 2/5 ~
~ Servidor ~
1º Passo: Vá no modTypes e procure por
Private Type OptionsRec
Game_Name As String
MOTD As String
Port As Long
Website As String
End Type
E substitua por:
Private Type OptionsRec
Game_Name As String
MOTD As String
Port As Long
Website As String
ExpRate As Long
End Type
Agora localize na pasta data do servidor o arquivo options.ini, abra-o e no final coloque ExpRate=1
2º passo: Abra o modCombat, procure por Exp = Npc(npcNum).Exp e mude para Exp = Npc(npcNum).Exp * Options.ExpRate.
3º passo: Vá para o modEnumerations, e em Public Enum ClientPackets adicione no final do sub
- Código:
CSetExpRate
CGetExpRate
Como diz no próprio código fonte as linhas acima devem ficar acima do CMSG_COUNT.
4º passo: Para finalizar as modificações no servidor abra o modHandleData, e no Public Sub InitMessages() adicione:
HandleDataSub(CSetExpRate) = GetAddress(AddressOf HandleSetExpRate)
HandleDataSub(CGetExpRate) = GetAddress(AddressOf HandleGetExpRate)
E adicione tambem os dois Subs abaixo depois do Sub HandleSetMotd:
Sub HandleSetExpRate(ByVal index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)
Dim Buffer As clsBuffer
Set Buffer = New clsBuffer
Buffer.WriteBytes Data()
' Prevent hacking
If GetPlayerAccess(index) < ADMIN_CREATOR Then
Exit Sub
End If
Options.ExpRate = Buffer.ReadLong
SaveOptions
Set Buffer = Nothing
Call GlobalMsg("A rate foi alterada para " & Options.ExpRate & "X", BrightCyan)
Call AddLog(GetPlayerName(index) & " mudou a rate para: " & Options.ExpRate, ADMIN_LOG)
End Sub
Sub HandleGetExpRate(ByVal index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)
Dim Buffer As clsBuffer
Set Buffer = New clsBuffer
Buffer.WriteBytes Data()
' Prevent hacking
If GetPlayerAccess(index) < ADMIN_MONITOR Then
Exit Sub
End If
PlayerMsg index, "A rate atual é: " & Options.ExpRate & "X", BrightCyan
End Sub
Pronto nossa modificações no servidor estão concluidas. Vamos agora para o cliente!
~ Cliente ~
1º passo: Vá para o modEnumerations, e em Public Enum ClientPackets adicione no final do sub
- Código:
CSetExpRate
CGetExpRate
Como diz no próprio código fonte as linhas acima devem ficar acima do CMSG_COUNT.
2º passo: Abra o modClientTCP de depois do Public Sub SendMOTDChange adicione:
Public Sub SendExpRateChange(ByVal ExpRate As Long)
Dim Buffer As clsBuffer
If Options.Debug = 1 Then On Error GoTo errorhandler
Set Buffer = New clsBuffer
Buffer.WriteLong CSetExpRate
Buffer.WriteLong ExpRate
SendData Buffer.ToArray()
Set Buffer = Nothing
Exit Sub
errorhandler:
HandleError "SendExpRateChange", "modClientTCP", Err.Number, Err.Description, Err.Source, Err.HelpContext
Err.Clear
Exit Sub
End Sub
Public Sub SendExpRateRequest()
Dim Buffer As clsBuffer
' If debug mode, handle error then exit out
If Options.Debug = 1 Then On Error GoTo errorhandler
Set Buffer = New clsBuffer
Buffer.WriteLong CGetExpRate
SendData Buffer.ToArray()
Set Buffer = Nothing
' Error handler
Exit Sub
errorhandler:
HandleError "SendExpRateRequest", "modClientTCP", Err.Number, Err.Description, Err.Source, Err.HelpContext
Err.Clear
Exit Sub
End Sub
3º passo: Para terminar abra o modInput e localize o Select Case Command(0). Ao final do select case adicione os dois comando abaixo:
Case "/getrate"
If GetPlayerAccess(MyIndex) < ADMIN_MONITOR Then GoTo Continue
SendExpRateRequest
Case "/setrate"
If GetPlayerAccess(MyIndex) < ADMIN_CREATOR Then GoTo Continue
If UBound(Command) < 1 Then
AddText "Forma de Usar: /setrate (nova rate)", AlertColor
GoTo Continue
End If
If Not IsNumeric(Command(1)) Then
AddText "Forma de Usar: /setrate (nova rate)", AlertColor
GoTo Continue
End If
SendExpRateChange Right$(ChatText, Len(ChatText) -
E pronto!
Considerações finais: Sempre que desejar que a experiencia dada seja a que você colocou no NPC Editor, use a rate 1, pois todo número multiplicado por 1 é ele mesmo. E CUIDADO para não colocar a rate 0 (ZERO), pois senão o jogador nçao ira receber exp ao matar o monstro.
Bem é só isso. Eu ja testei esse sistema no Eclipse Origins e funcionou. O código é facilmente portável para qualquer outra engine pois a lógica é simples. Vou fincando por aqui, flw!
PS: Obviamente, gostaria de receber uns creds por isso! huahauahuahauahuahua
Re: Sistema de Rate(TESTADO)
Bom sistema, bom tuto!
Vai ajudar quem ainda não tinha esse sistema =)
+1
Abraço!
(se quiserem uma dica, coloca ali no "Exp = Npc(npcNum).Exp * Options.ExpRate + (GetPlayerLevel(index)* 2)
Isso vai fazer com que, o lvl conte no ganho de exp tmb.
Se você quiser mais dificuldade (Conforme o player for upando) troca o + por - ali =D
Abraço!
Vai ajudar quem ainda não tinha esse sistema =)
+1
Abraço!
(se quiserem uma dica, coloca ali no "Exp = Npc(npcNum).Exp * Options.ExpRate + (GetPlayerLevel(index)* 2)
Isso vai fazer com que, o lvl conte no ganho de exp tmb.
Se você quiser mais dificuldade (Conforme o player for upando) troca o + por - ali =D
Abraço!
megosarco- Membro Junior
- Mensagens : 95
Tópicos semelhantes
» Sistema de Pet
» como fazer para o sistema de transformação requerir acesso(vip, sistema de 2 vips)
» Sistema VIP
» Sistema de Org
» [ALL]Sistema de PDL 2.0
» como fazer para o sistema de transformação requerir acesso(vip, sistema de 2 vips)
» Sistema VIP
» Sistema de Org
» [ALL]Sistema de PDL 2.0
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