MMORPG Brasil
Ola, visitante! Agradecemos sua visita, para ter acesso a todo nosso conteúdo recomendamos que faça um cadastro no fórum, com ele você pode participar de tópicos e ter acesso a todas áreas da comunidade!

Participe do fórum, é rápido e fácil

MMORPG Brasil
Ola, visitante! Agradecemos sua visita, para ter acesso a todo nosso conteúdo recomendamos que faça um cadastro no fórum, com ele você pode participar de tópicos e ter acesso a todas áreas da comunidade!
MMORPG Brasil
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Item Sprite v1.0

+8
nuno960
Mark-
Gol_D_Roger
-Kira
Aaaalt
alenaldo
Ancient™
lucas100vzs
12 participantes

Ir para baixo

Item Sprite v1.0 Empty Item Sprite v1.0

Mensagem por lucas100vzs Qua 16 Jan 2013, 05:55

Bem, já que estou de bom humor hoje, e a área de "Tutoriais" do Eclipse está parada, vou postar o tutorial de:

MUDAR SPRITE POR ITEM POR TEMPO DETERMINADO !

Sem mais delongas, abra seu "cliente.vbp" , e crie em seu "frmEditor_Item" :

1x Frame:

-Nome: FraSprite


2x ScrollBars:

-Nome 1º: scrlSprite
-Nome 2º: ScrlDur

2x labels:

-Nome 1º: lblSprite
-Nome 2º: lblDur

1x PictureBox:

-Nome: PicSprite



Juntos no Editor de item ficará mais ou menos assim:
Spoiler:


Muito bem, feito isto, adicione este código dentro da "ScrlSprite" :

Código:
Item(EditorIndex).Sprite = scrlSprite.Value
lblSprite.Caption = "Sprite: " & scrlSprite.Value
picSprite.Picture = LoadPicture(App.Path & GFX_PATH & "/characters/" & scrlSprite.Value & ".bmp")
scrlSprite.Max = NumCharacters

Agora, dentro da "ScrlDur" ,adicione este código:

Código:
Item(EditorIndex).SpriteDuration = scrlDur.Value
lbldur.Caption = "Duração: " & scrlDur.Value & "s"

Agora dentro da "CmbType" , abaixo de:

Código:
If EditorIndex = 0 Or EditorIndex > MAX_ITEMS Then Exit Sub

Adicione este código:

Código:
If cmbType.ListIndex = ITEM_TYPE_SPRITE Then
        fraSprite.Visible = True
    Else
        fraSprite.Visible = False
    End If

Muito bem, agora em "ModGameEditors" , na "Public Sub ItemEditorInit", abaixo de:

Código:
frmEditor_Item.txtDesc.text = Trim$(.Desc)

Adicione isto:

Código:
frmEditor_Item.scrlSprite.Value = .Sprite
        frmEditor_Item.scrlDur.Value = .SpriteDuration

Agora, em "ModEnumerations" , procure por:

Código:
SStunned

E abaixo adicione isto:

Código:
SSprite

E depois, em "ModHandleData", procure por:

Código:
HandleDataSub(SStunned) = GetAddress(AddressOf HandleStunned)

E abaixo adicione isto:

Código:
HandleDataSub(SSprite) = GetAddress(AddressOf HandleSprite)

Ainda em "ModHandleData" , procure por:

Código:
Private Sub HandleStunned

E abaixo desta PRIVATE SUB adicione esta PRIVATE SUB:

Código:
Private Sub HandleSprite(ByVal Index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)
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.WriteBytes Data()
   
    SpriteDuration = Buffer.ReadLong
   
    Set Buffer = Nothing
   
    ' Error handler
    Exit Sub
errorhandler:
    HandleError "HandleStunned", "modHandleData", Err.Number, Err.Description, Err.Source, Err.HelpContext
    Err.Clear
    Exit Sub
End Sub

Agora, em "ModGlobals", procure por:

Código:
Public StunDuration As Long

E abaixo adicione:

Código:
Public SpriteDuration As Long

Agora em "ModTypes", na "Type" :

Código:
Private Type ItemRec

Abaixo de :

Código:
instaCast As Byte

Adicione isto:

Código:
Sprite As Long
    SpriteDuration As Long

Agora em "ModConstants" , procure por:

Código:
Public Const ITEM_TYPE_SPELL As Byte = 8

E abaixo adicione isto:

Código:
Public Const ITEM_TYPE_SPRITE As Byte = 9 ' Ou o proximo numero


Pronto Cliente feito! Agora, abra seu "server.vbp", e, em "ModServerLoop" , na "Sub ServerLoop" , depois desta parte:

Código:
Dim LastUpdateSavePlayers, LastUpdateMapSpawnItems As Long, LastUpdatePlayerVitals As Long

Adicione isto:

Código:
Dim filename as String

E ainda na "Sub ServerLoop", depois desta parte:

Código:
' check if need to turn off stunned
                    If TempPlayer(i).StunDuration > 0 Then
                        If GetTickCount > TempPlayer(i).StunTimer + (TempPlayer(i).StunDuration * 1000) Then
                            TempPlayer(i).StunDuration = 0
                            TempPlayer(i).StunTimer = 0
                            SendStunned i
                        End If
       

Adicione esta parte:

Código:
' check if need to return to our original sprite
                    If TempPlayer(i).SpriteDuration > 0 Then
                        If GetTickCount > TempPlayer(i).SpriteTimer + (TempPlayer(i).SpriteDuration * 1000) Then
                            TempPlayer(i).SpriteDuration = 0
                            TempPlayer(i).SpriteTimer = 0
                            filename = App.Path & "\data\classes.ini"
                Call SetPlayerSprite(i, Val(GetVar(filename, "CLASS" & GetPlayerClass(i), "MaleSprite")))
                SendPlayerData i
                            SendSprite i
                        End If
                    End If

Agora em "ModPlayer" na "Sub UseItem", acima desta parte:

Código:
End Select
    End If
End Sub

Adicione isto:

Código:
Case ITEM_TYPE_SPRITE
              ' stat requirements
                For i = 1 To Stats.Stat_Count - 1
                    If GetPlayerRawStat(index, i) < Item(ItemNum).Stat_Req(i) Then
                        PlayerMsg index, "You do not meet the stat requirements to use this item.", BrightRed
                        Exit Sub
                    End If
                Next
               
                ' level requirement
                If GetPlayerLevel(index) < Item(ItemNum).LevelReq Then
                    PlayerMsg index, "You do not meet the level requirement to use this item.", BrightRed
                    Exit Sub
                End If
               
                ' class requirement
                If Item(ItemNum).ClassReq > 0 Then
                    If Not GetPlayerClass(index) = Item(ItemNum).ClassReq Then
                        PlayerMsg index, "You do not meet the class requirement to use this item.", BrightRed
                        Exit Sub
                    End If
                End If
               
                ' access requirement
                If Not GetPlayerAccess(index) >= Item(ItemNum).AccessReq Then
                    PlayerMsg index, "You do not meet the access requirement to use this item.", BrightRed
                    Exit Sub
                End If
               
                Player(index).Sprite = Item(ItemNum).Sprite
            Call TakeInvItem(index, ItemNum, 0)
                SendPlayerData index
            Call PlayerMsg(index, "Sua SPRITE mudou!", White)
           
           
            If Item(ItemNum).SpriteDuration > 0 Then SpritePlayer index, ItemNum
                           
            ' send the sound and animation
                SendPlayerSound index, GetPlayerX(index), GetPlayerY(index), SoundEntity.seItem, ItemNum
                SendAnimation GetPlayerMap(index), Item(ItemNum).Animation, 0, 0, TARGET_TYPE_PLAYER, index


Agora em "ModCombat" depois da "Public Sub StunPlayer" , adicione esta PUIBLIC SUB:

Código:
Public Sub SpritePlayer(ByVal index As Long, ByVal ItemNum As Long)
    ' check if it's a stunning spell
    If Item(ItemNum).SpriteDuration > 0 Then
        ' set the values on index
        TempPlayer(index).SpriteDuration = Item(ItemNum).SpriteDuration
        TempPlayer(index).SpriteTimer = GetTickCount
        ' send it to the index
        SendSprite index
        ' tell him for how much time his sprite will be changed
        PlayerMsg index, "Se transformou por:" & TempPlayer(index).SpriteDuration & " segundos!", BrightRed
    End If
End Sub

Agora em "ModServerTCP" , abaixo desta parte:

Código:
Sub SendStunned(ByVal index As Long)
    Dim Buffer As clsBuffer
   
    Set Buffer = New clsBuffer
    Buffer.WriteLong SStunned
    Buffer.WriteLong TempPlayer(index).StunDuration
   
    SendDataTo index, Buffer.ToArray()
   
    Set Buffer = Nothing
End Sub

Adicione esta parte:

Código:
Sub SendSprite(ByVal index As Long)
    Dim Buffer As clsBuffer
   
    Set Buffer = New clsBuffer
    Buffer.WriteLong SSprite
    Buffer.WriteLong TempPlayer(index).SpriteDuration
   
    SendDataTo index, Buffer.ToArray()
   
    Set Buffer = Nothing
End Sub

Agora em "ModTypes", na "Public Type TempPlayerRec" , após esta parte:

Código:
StunTimer As Long
    StunDuration As Long

Adicione isto:

Código:
SpriteTimer As Long
    SpriteDuration As Long

E, ainda em "ModTypes", na "Public Type ItemRec" abaixo de :

Código:
instaCast As Byte

Adicione isto:

Código:
Sprite As Long
    SpriteDuration As Long

Agora, em "ModEnumerations" , procure por:

Código:
SStunned

E abaixo adicione isto:

Código:
SSprite

E pronto !! É isso !!

Agora vamos adicionar Atualizações, pra quem fez meu tutorial passado da "Spell de Copiar Sprite v1.0" , com tempo, se quiserem substituir a "OldSprite" por esta também pode !!!....Muito bem, pra quem não tem,no servidor, no final do "ModPlayer" , adicione isto:

Código:
Public Sub OldSprite(ByVal Index)
Dim filename As String

'This sends the player back to his original class sprite, just use now as you want, right makers of mmorpg? '-'
      filename = App.Path & "\data\classes.ini"
Call SetPlayerSprite(i, Val(GetVar(filename, "CLASS" & GetPlayerClass(i), "MaleSprite")))


End Sub

E na "Sub JoinGame" ,acima disto:

Código:
' Send the flag so they know they can start doing stuff
    SendInGame Index

Adicione isto:

Código:
Dim filename As String

'This sends the player back to his original class sprite, just use now as you want, right makers of mmorpg? '-'
      filename = App.Path & "\data\classes.ini"
Call SetPlayerSprite(Index, Val(GetVar(filename, "CLASS" & GetPlayerClass(Index), "MaleSprite")))

E na "Sub LeftGame" , acima desta parte:

Código:
' Check if player was the only player on the map and stop npc processing if so
        If GetTotalMapPlayers(GetPlayerMap(Index)) < 1 Then
            PlayersOnMap(GetPlayerMap(Index)) = NO
        End If

Adicione isto:

Código:
Dim filename As String

'This sends the player back to his original class sprite, just use now as you want, right makers of mmorpg? '-'
      filename = App.Path & "\data\classes.ini"
Call SetPlayerSprite(Index, Val(GetVar(filename, "CLASS" & GetPlayerClass(Index), "MaleSprite")))

É isso pessoal, até a próxima !!! Item Sprite v1.0 80839




Créditos:

-Deus
-Eu, lucas100vzs
-Robin


Última edição por lucas100vzs em Qua 13 Fev 2013, 09:54, editado 2 vez(es)
lucas100vzs
lucas100vzs
Membro Sênior
Membro Sênior

Mensagens : 396

Ir para o topo Ir para baixo

Item Sprite v1.0 Empty Re: Item Sprite v1.0

Mensagem por Ancient™ Qua 16 Jan 2013, 06:07

Muito bom só acho que ta faltando uma print de como deve fazer na FRM pra facilitar um pouco.
+1 Crédito

Off : Não quer ser o programador do meu game ?
Ancient™
Ancient™
Membro
Membro

Mensagens : 148

Ir para o topo Ir para baixo

Item Sprite v1.0 Empty Re: Item Sprite v1.0

Mensagem por alenaldo Qua 16 Jan 2013, 06:43

Pegunta:
Apos finalizar a tranformação a sprite volta para anteirior (caso eu tenha mudado minha sprite para outra ) ou para a sprite da classe.

pq no sistema de shell e asim posso ter mudado minha sprite mas sempre apos finaliza a trans a sprite volta para a sprite que a class esta cadastrada.
alenaldo
alenaldo
Membro
Membro

Mensagens : 128

http://naruto-new-empire.webnode.com

Ir para o topo Ir para baixo

Item Sprite v1.0 Empty Re: Item Sprite v1.0

Mensagem por Aaaalt Qua 16 Jan 2013, 07:10

alenaldo escreveu:Pegunta:
Apos finalizar a tranformação a sprite volta para anteirior (caso eu tenha mudado minha sprite para outra ) ou para a sprite da classe.

pq no sistema de shell e asim posso ter mudado minha sprite mas sempre apos finaliza a trans a sprite volta para a sprite que a class esta cadastrada.

Como diz logo no inicio em negrito TEMPO DETERMINADO, você configura na criação do item a duração da mudança de sprite.
Aaaalt
Aaaalt
Novato
Novato

Mensagens : 16

Ir para o topo Ir para baixo

Item Sprite v1.0 Empty Re: Item Sprite v1.0

Mensagem por alenaldo Qua 16 Jan 2013, 07:29

Aaaalt escreveu:
alenaldo escreveu:Pegunta:
Apos finalizar a tranformação a sprite volta para anteirior (caso eu tenha mudado minha sprite para outra ) ou para a sprite da classe.

pq no sistema de shell e asim posso ter mudado minha sprite mas sempre apos finaliza a trans a sprite volta para a sprite que a class esta cadastrada.

Como diz logo no inicio em negrito TEMPO DETERMINADO, você configura na criação do item a duração da mudança de sprite.

Mano eu sei disso, to falando e que kando o tempo termina a sprite que ele voltara e a sprite da class, tipo class naruto, então ele vai para a sprite do naruto, ou ele vai fica com a sprite anterior, tipo eu so da class do naruto porem mudei de sprite para madara, quando finalizar o tempo vai para a sprite de naruto ou madara.
alenaldo
alenaldo
Membro
Membro

Mensagens : 128

http://naruto-new-empire.webnode.com

Ir para o topo Ir para baixo

Item Sprite v1.0 Empty Re: Item Sprite v1.0

Mensagem por Aaaalt Qua 16 Jan 2013, 07:41

Vai voltar pra sprite que você tava antes de usar o item.
Aaaalt
Aaaalt
Novato
Novato

Mensagens : 16

Ir para o topo Ir para baixo

Item Sprite v1.0 Empty Re: Item Sprite v1.0

Mensagem por alenaldo Qua 16 Jan 2013, 07:47

Valeu +1 de cred.


Última edição por alenaldo em Qui 17 Jan 2013, 04:29, editado 1 vez(es)
alenaldo
alenaldo
Membro
Membro

Mensagens : 128

http://naruto-new-empire.webnode.com

Ir para o topo Ir para baixo

Item Sprite v1.0 Empty Re: Item Sprite v1.0

Mensagem por Aaaalt Qua 16 Jan 2013, 07:52

Não precisa testar, é só ler o código que da pra entender, são coisas óbvias.

Você ta usando a Sprite numero 1.
Você usa um item que muda pra sprite numero 2.
Quando terminar, é óbvio que vai voltar pra numero 1, qual a lógica de quando terminar mudar a sprite pra qualquer outra que não seja a numero 1?

Na parte final do código da pra ver ali, vai voltar pra Sprite da classe.

To tentando ajudar, mas pelo visto... Se você quer tanto saber e não confia no que to falando, coloca o sistema na sua engine e testa oras.
Aaaalt
Aaaalt
Novato
Novato

Mensagens : 16

Ir para o topo Ir para baixo

Item Sprite v1.0 Empty Re: Item Sprite v1.0

Mensagem por -Kira Qui 17 Jan 2013, 02:52

Por isso que eu nao posto mais sistemas e nem ajudo como antes, povo mal agradecido.
-Kira
-Kira
Membro Veterano
Membro Veterano

Mensagens : 895

Ir para o topo Ir para baixo

Item Sprite v1.0 Empty Re: Item Sprite v1.0

Mensagem por lucas100vzs Qui 17 Jan 2013, 10:18

-Kira,

Por isso eu posto só versões 1.0 dos meus sistemas...nunca são completos...

-"Se eu tenho completos? "

-"Tenho sim !"

Sistema de Bandeira postei a 1.0 pra vocês, mas a completa eu escolho o item e a bandeira pelo editor de mapas....esse sistema, eu coloco pra adicionar status no jogador e no tempo, voltar....mas eu não vou postar e nem passar o sistema por PM....Postei 80% do sistema...o resto é com vocês.....

E vê se tirem base disso, e não somente copiem....pois eu era assim, mas quando um dia fiquei sem internet pra acessar os meus pontos de cópias, vi a necessidade de aprender a fazer sozinho.....Pensem bem....

Smile
lucas100vzs
lucas100vzs
Membro Sênior
Membro Sênior

Mensagens : 396

Ir para o topo Ir para baixo

Item Sprite v1.0 Empty Re: Item Sprite v1.0

Mensagem por Gol_D_Roger Sáb 19 Jan 2013, 08:42

Belo tutorial.Vejo que ele sera muito útil!
+1 Up.
Gol_D_Roger
Gol_D_Roger
Membro Junior
Membro Junior

Mensagens : 95

Ir para o topo Ir para baixo

Item Sprite v1.0 Empty Re: Item Sprite v1.0

Mensagem por Mark- Dom 20 Jan 2013, 11:08

Acho que seria melhor criar um Scripted Item e por isso apenas no item que você quer.
Mark-
Mark-
Membro
Membro

Mensagens : 148

Ir para o topo Ir para baixo

Item Sprite v1.0 Empty Re: Item Sprite v1.0

Mensagem por nuno960 Ter 29 Jan 2013, 11:33

Item Sprite v1.0 Ca3e88f06b53db2aba72bf2144960b89

ao compilar o client deu erro
nuno960
nuno960
Membro
Membro

Mensagens : 137

Ir para o topo Ir para baixo

Item Sprite v1.0 Empty Re: Item Sprite v1.0

Mensagem por lucas100vzs Ter 29 Jan 2013, 12:03

Vish...Cara você têm que adicionar os componentes no seu VB.

Como adicionar?

Na barra "General" do lado esquerdo alí, onde você seleciona "label, picturebox,etc.." Clique com o botão direito do mouse, e clique em "Components" .

Depois na primeira Aba: "Controls" , procure por:

-Microsoft Windows Common Controls 6.0(SP6)
-Microsoft Rich TextBox Control 6.0(SP6)

Caso NÃO esteha marcado, marque as checkBoxs deles....Aplique e dê OK....

E pronto !

Erro relacionado ao meu tutorial não, mas estamos aí Smile
lucas100vzs
lucas100vzs
Membro Sênior
Membro Sênior

Mensagens : 396

Ir para o topo Ir para baixo

Item Sprite v1.0 Empty Re: Item Sprite v1.0

Mensagem por nuno960 Ter 29 Jan 2013, 16:24

+1 cred lucas100vzs

mais uma coisa nao sei onde meter esta linha

filename As String
nuno960
nuno960
Membro
Membro

Mensagens : 137

Ir para o topo Ir para baixo

Item Sprite v1.0 Empty Re: Item Sprite v1.0

Mensagem por Tai Kamiya Ter 29 Jan 2013, 17:02

Serve para engine de Pokemon? se servir Vo colocar na minha Engine Very Happy
Tai Kamiya
Tai Kamiya
Novato
Novato

Mensagens : 23

Ir para o topo Ir para baixo

Item Sprite v1.0 Empty Re: Item Sprite v1.0

Mensagem por marak-garin Qua 30 Jan 2013, 12:47

tava precisando desse tutorial mesmo Very Happy .
marak-garin
marak-garin
Novato
Novato

Mensagens : 20

Ir para o topo Ir para baixo

Item Sprite v1.0 Empty Re: Item Sprite v1.0

Mensagem por lucas100vzs Qua 30 Jan 2013, 13:16

Item Sprite v1.0 Miniicon por nuno960 Ontem à(s) 19:24


+1 cred lucas100vzs

mais uma coisa nao sei onde meter esta linha

filename As String

No Servidor(Server.vbp), na "Sub JoinGame" , acima disto:

Código:
' Send the flag so they know they can start doing stuff
    SendInGame Index

Adicione isto:

Código:
Dim filename As String

'This sends the player back to his original class sprite, just use now as you want, right makers of mmorpg? '-'
      filename = App.Path & "\data\classes.ini"
Call SetPlayerSprite(Index, Val(GetVar(filename, "CLASS" & GetPlayerClass(Index), "MaleSprite")))
E na "Sub LeftGame" , acima desta parte:


Código:
[' Check if player was the only player on the map and stop npc processing if so
        If GetTotalMapPlayers(GetPlayerMap(Index)) < 1 Then
            PlayersOnMap(GetPlayerMap(Index)) = NO
        End If

Adicione isto:

Código:
Dim filename As String

'This sends the player back to his original class sprite, just use now as you want, right makers of mmorpg? '-'
      filename = App.Path & "\data\classes.ini"
Call SetPlayerSprite(Index, Val(GetVar(filename, "CLASS" & GetPlayerClass(Index), "MaleSprite")))
Item Sprite v1.0 Empty

Se não achar, use a ferramenta de busca no "Server.vbp" : "CTRL + F"

Item Sprite v1.0 Miniicon por Tai Kamiya Ontem à(s) 20:02


Serve para engine de Pokemon? se servir Vo colocar na minha Engine Item Sprite v1.0 535201


Server para quaisquer "Engines" da Eclipse Origins (que usem DX7, pois DX8 ainda não testei ) em seu estado natural(sem bugs).
Qualquer erro postem aqui, se possível, façam o tutorial, e confiram todos os códigos e procedimentos do tutorial !!! Item Sprite v1.0 256397
lucas100vzs
lucas100vzs
Membro Sênior
Membro Sênior

Mensagens : 396

Ir para o topo Ir para baixo

Item Sprite v1.0 Empty Re: Item Sprite v1.0

Mensagem por nuno960 Qua 30 Jan 2013, 14:51

vlw lucas100vzs

+1 cred
nuno960
nuno960
Membro
Membro

Mensagens : 137

Ir para o topo Ir para baixo

Item Sprite v1.0 Empty Re: Item Sprite v1.0

Mensagem por maraquanos-marakgarin Qua 30 Jan 2013, 17:07

acho que vou precisa desse sistema vlw
maraquanos-marakgarin
maraquanos-marakgarin
Novato
Novato

Mensagens : 18

Ir para o topo Ir para baixo

Item Sprite v1.0 Empty Re: Item Sprite v1.0

Mensagem por xurana321 Ter 12 Fev 2013, 15:43

deu esse erro aqui sera q pode me ajudar..
Item Sprite v1.0 Errorvfg
xurana321
xurana321
Membro Sênior
Membro Sênior

Mensagens : 297

Ir para o topo Ir para baixo

Item Sprite v1.0 Empty Re: Item Sprite v1.0

Mensagem por lucas100vzs Qua 13 Fev 2013, 06:54

xurana321,

Você colocou:

Código:
filename as String

No entanto o certo é:

Código:
Dim filename as String

Cuidado cara com erros simples Very Happy
Atenção Laughing
lucas100vzs
lucas100vzs
Membro Sênior
Membro Sênior

Mensagens : 396

Ir para o topo Ir para baixo

Item Sprite v1.0 Empty Re: Item Sprite v1.0

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos