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.

[EO] Spell Copiar Sprite Npc/Player V1.0

5 participantes

Ir para baixo

[EO] Spell Copiar Sprite Npc/Player V1.0 Empty [EO] Spell Copiar Sprite Npc/Player V1.0

Mensagem por lucas100vzs Sex 04 Jan 2013, 18:50

Bem, como eu estou empolgado em ajudar pessoas novatas, ou simplesmente aquelas que vivem de "Ctrl+C e Ctrl+V" por preguiça de aprenderem ou por falta de tempo....Então postarei o sistema de copiar sprite seja ela de Npc's ou Players com Tempo escolhido pelo editor de magias.....

Então vamos ao tutorial....vou começar pela a parte chata...abra o seu "client.vbp" ,e na "FrmEditor_Spell" crie:

-1x Scrolls

Nome: scrlCopy

-1x Label

Nome: lblCopy
Caption: Copy Duration: 0

-1x CheckBox

Nome: chkCSprite


Muito bem, dentro da "chkCSprite" adicione este seguinte código:

Código:
If ChkCSprite.value = 0 Then
        Spell(EditorIndex).CSprite = False
    Else
        Spell(EditorIndex).CSprite = True
    End If


Agora dentro da "scrlCopy" adicione este código:

Código:
Spell(EditorIndex).CopyDuration = scrlCopy.value
lblCopy.Caption = "Copy Duration:" & scrlCopy.value & "s"

Agora, em "modGameEditors", na "Public Sub SpellEditorInit()" , procure por:

Código:
.scrlInterval.value = Spell(EditorIndex).Interval

E abaixo disto, adicione isto:

Código:
If Spell(EditorIndex).CSprite Then
            .ChkCSprite.value = 1
        Else
            .ChkCSprite.value = 0
        End If
.scrlCopy.value = Spell(EditorIndex).CopyDuration

Agora, em "ModTypes" , procure pela "Type":

Código:
Private Type SpellRec

E nesta "Type" , procure por:

Código:
StunDuration As Long

E abaixo disto, adicione isto:

Código:
CopyDuration as Long

E ainda nesta "Type" mais abaixo, acima de "End Type", adicione isto:

Código:
CSprite As Boolean


Agora em "ModGlobals" , procure por:

Código:
Public StunDuration As Long

E abaixo disto, adicione isto:

Código:
Public CopyDuration As Long

Agora na "ModEnumerations" na "Public Enum ServerPackets" , procure por:

Código:
SStunned

E abaixo disto, adicione isto:

Código:
SCopy

E agora, na "ModHandleData" em "InitMessages", procure por:

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

E abaixo disto, adicione isto:

Código:
HandleDataSub(SCopy) = GetAddress(AddressOf HandleCopy)

E agora, procure por esta Sub:

Código:
Private Sub HandleStunned(ByVal Index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)


E abaixo desta SUB , depois da "End Sub" desta "Sub HandleStunned", adicione isto:

Código:
Private Sub HandleCopy(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()
   
    CopyDuration = Buffer.ReadLong
   
    Set Buffer = Nothing
   
    ' Error handler
    Exit Sub
errorhandler:
    HandleError "HandleCopy", "modHandleData", Err.Number, Err.Description, Err.Source, Err.HelpContext
    Err.Clear
    Exit Sub
End Sub

Agora vamos pro que eu gosto, o server Very Happy

Abra seu "server.vbp", e em "ModEnumerations", procure por:

Código:
SStunned

E abaixo disto adicione isto:

Código:
SCopy

E agora em "ModServerTCP" procure pela sub:

Código:
Sub SendStunned(ByVal index As Long)

E abaixo desta SUB, depois da "End Sub" adicione isto:

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

Depois, em "ModCombat" na "Sub CastSpell" procure por:

Código:
' find out what kind of spell it is! self cast, target or AOE

E acima disto, adicione isto:

Código:
' Copy Sprite
    If Spell(SpellNum).CSprite = True Then
        If targetType = TARGET_TYPE_PLAYER Then
            Call SetPlayerSprite(index, Player(TempPlayer(index).Target).Sprite)
            Call SendPlayerData(index)
            TempPlayer(index).CopyDuration = Spell(SpellNum).CopyDuration
            TempPlayer(index).CopyTimer = GetTickCount
            Exit Sub
        ElseIf targetType = TARGET_TYPE_NPC Then
            Call SetPlayerSprite(index, NPC(TempPlayer(index).Target).Sprite)
            Call SendPlayerData(index)
            TempPlayer(index).CopyDuration = Spell(SpellNum).CopyDuration
            TempPlayer(index).CopyTimer = GetTickCount
            Exit Sub
        End If
    End If

Ainda em "ModCombat" procure por esta sub:

Código:
Public Sub StunPlayer(ByVal index As Long, ByVal SpellNum As Long)

E depois desta "Sub" abaixo do "End Sub" adicione isto:

Código:
Public Sub CopyPlayer(ByVal index As Long, ByVal SpellNum As Long)
    ' check if it's a copy spell and duration higher than "0"
    If Spell(SpellNum).CopyDuration > 0 Then
        ' set the values on index
        TempPlayer(index).CopyDuration = Spell(SpellNum).CopyDuration
        TempPlayer(index).CopyTimer = GetTickCount
        ' send it to the index
        SendCopy index
        ' tell him he's under copy effect for a "x" time
        PlayerMsg index, "Copia ativa por: " & TempPlayer(index).CopyDuration & " segundos.", BrightRed
    End If
End Sub

Depois em "modServerLoop" 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
                    End If

Adicione isto:

Código:
' check if need to turn off copy state
                    If TempPlayer(i).copyDuration > 0 Then
                        If GetTickCount > TempPlayer(i).CopyTimer + (TempPlayer(i).CopyDuration * 1000) Then
                            TempPlayer(i).CopyDuration = 0
                            TempPlayer(i).CopyTimer = 0
                            SendCopy i
                            PlayerMsg i, "Cópia terminada...", White
                            Call OldSprite(i)
                        End If
                    End If

Agora em "ModTypes" na "Type" : "Public Type TempPlayerRec", procure por:

Código:
StunTimer As Long
    StunDuration As Long

E abaixo disto adicione isto:

Código:
CopyTimer As Long
    CopyDuration As Long

E na "Type" : "Public Type SpellRec" , depois de :

Código:
StunDuration as Long

Adicione isto:

Código:
CopyDuration As Long

E nesta "Type" antes de "End Type" , adicione isto:

Código:
CSprite as Boolean

E no final da "ModPlayer" , adicione esta "Sub":

Código:
Sub OldSprite(ByVal index As Long)

'Cada Case é o número de cada classe, e é a Sprite que a classe indicada voltará quando o tempo da cópia acabar

Select Case GetPlayerClass(index)
  Case 0
  Player(index).Sprite = 1
  Call SendPlayerData(index)
  Case 1
  Player(index).Sprite = 2
  Call SendPlayerData(index)
  Case 2
  Player(index).Sprite = 3
  Call SendPlayerData(index)
  Case 3
  Player(index).Sprite = 4
  Call SendPlayerData(index)
  Case 4
  Player(index).Sprite = 5
  Call SendPlayerData(index)
  Case 5
  Player(index).Sprite = 6
  Call SendPlayerData(index)
  Case 6
  Player(index).Sprite = 7
  Call SendPlayerData(index)
  Case Else
  Player(index).Sprite = 10
  Call SendPlayerData(index)
End Select

End Sub

Agora em "ModPlayer", na "Sub JoinGame" , procure por:

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

E acima disto, adicione isto:

Código:
Call OldSprite(index)

E agora, na "Sub LeftGame", procure por:

Código:
Call ClearPlayer(index)

E acima disto, adicione isto:

Código:
Call OldSprite(index)


E pronto, agora você tem o tutorial de cópia de sprite por tempo e retorno à sprite original...lembrem de editar a "Sub OldSprite" com as respectivas sprites que você quer que as classes voltem na hora que acabar o tempo da cópia da sprite...

Agradeçam a Deus por eu disponibilizar uma coisa dessas [EO] Spell Copiar Sprite Npc/Player V1.0 256397

Créditos

-Eu, lucas100vzs



Então até a próxima minha gente !
Espero que ao copiarem este código, estudem ao mesmo tempo! E tentem pegar algo...porque ninguém começa de cima, mas pode chegar lá...como eu estou quase chegando ! [EO] Spell Copiar Sprite Npc/Player V1.0 80839
lucas100vzs
lucas100vzs
Membro Sênior
Membro Sênior

Mensagens : 396

Ir para o topo Ir para baixo

[EO] Spell Copiar Sprite Npc/Player V1.0 Empty Re: [EO] Spell Copiar Sprite Npc/Player V1.0

Mensagem por Caio~ C10 Sex 04 Jan 2013, 19:12

Ainda não testei e nem li os códigos, mas se estiver certo mesmo, parabéns, pois vai ajudar muita gente.
Dá até pra fazer um jogo do Mortal Kombat com isso... ae o Shag Tsung usa o poder dele de copiar a aparência do outro...
Caio~ C10
Caio~ C10
Membro Veterano
Membro Veterano

Mensagens : 803

http://www.mmorpgbr.com/t10695-evolution-games

Ir para o topo Ir para baixo

[EO] Spell Copiar Sprite Npc/Player V1.0 Empty Re: [EO] Spell Copiar Sprite Npc/Player V1.0

Mensagem por lucas100vzs Sex 04 Jan 2013, 19:15

Daria sim...mas daria muito trabalho, pois como eu sou chato, eu colocaria um "With" pra se referir a algum lugar pra guardar informações, aí seria tipo assim:

Código:
With TempStat
    .str = Player....
    .def = player....
End With

Pra copiar os status e no tempo, retornar os status do player...
Mas nem vou pensar nisso, porque não quero fazer Very Happy
Mas funciona sim...aqui funcionou....se alguém conseguir ter erros, poste aqui que eu dou suporte !! Ou melhor eu tento dar suporte Very Happy
lucas100vzs
lucas100vzs
Membro Sênior
Membro Sênior

Mensagens : 396

Ir para o topo Ir para baixo

[EO] Spell Copiar Sprite Npc/Player V1.0 Empty Re: [EO] Spell Copiar Sprite Npc/Player V1.0

Mensagem por alenaldo Sex 04 Jan 2013, 19:43

Boa Sensei Very Happy
alenaldo
alenaldo
Membro
Membro

Mensagens : 128

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

Ir para o topo Ir para baixo

[EO] Spell Copiar Sprite Npc/Player V1.0 Empty Re: [EO] Spell Copiar Sprite Npc/Player V1.0

Mensagem por lucas100vzs Sex 04 Jan 2013, 19:52

por alenaldo Hoje à(s) 22:43

Boa Sensei [EO] Spell Copiar Sprite Npc/Player V1.0 535201


Que isso Alenaldo, nem tanto 'kk
Seria sensei se eu criasse "editores"... funções de modificações gráficas ou em database.....mas isso é simples...comparado ao que realmente ainda falta... [EO] Spell Copiar Sprite Npc/Player V1.0 80839
lucas100vzs
lucas100vzs
Membro Sênior
Membro Sênior

Mensagens : 396

Ir para o topo Ir para baixo

[EO] Spell Copiar Sprite Npc/Player V1.0 Empty Re: [EO] Spell Copiar Sprite Npc/Player V1.0

Mensagem por jonny157 Ter 12 Fev 2013, 08:45

Fala aew Lucas, obrigado por disponibilizar. Mas aqui não funcinou bem não...

Deu
algum problema nas linhas de código porque quando copia a sprite do NPC
não fica igual a dele, pelo contrário, copia para outra sprite que não
tem nada haver. O.O

Estou tentando corrigir o erro.. mas creio que está nesta linha.



' Copy Sprite
If Spell(SpellNum).CSprite = True Then
If targetType = TARGET_TYPE_PLAYER Then
Call SetPlayerSprite(index, Player(TempPlayer(index).Target).Sprite)
Call SendPlayerData(index)
TempPlayer(index).CopyDuration = Spell(SpellNum).CopyDuration
TempPlayer(index).CopyTimer = GetTickCount
Exit Sub
ElseIf targetType = TARGET_TYPE_NPC Then
Call SetPlayerSprite(index, NPC(TempPlayer(index).Target).Sprite)
Call SendPlayerData(index)
TempPlayer(index).CopyDuration = Spell(SpellNum).CopyDuration
TempPlayer(index).CopyTimer = GetTickCount
Exit Sub
End If
End If



Se pude me ajudar eu lhe agradeço.
jonny157
jonny157
Membro Sênior
Membro Sênior

Mensagens : 406

Ir para o topo Ir para baixo

[EO] Spell Copiar Sprite Npc/Player V1.0 Empty Re: [EO] Spell Copiar Sprite Npc/Player V1.0

Mensagem por Monotoshi Ter 12 Fev 2013, 09:47

Ali encima de copy sprite
coloca On Error Resume Next,ou ali na linha do erro onde ta o nome npc poe Player
avatar
Monotoshi
Membro Vitalicio
Membro Vitalicio

Mensagens : 591

Ir para o topo Ir para baixo

[EO] Spell Copiar Sprite Npc/Player V1.0 Empty Re: [EO] Spell Copiar Sprite Npc/Player V1.0

Mensagem por jonny157 Ter 12 Fev 2013, 11:16

Explica de novo por favor, não entendi bem o que é pra fazer...
jonny157
jonny157
Membro Sênior
Membro Sênior

Mensagens : 406

Ir para o topo Ir para baixo

[EO] Spell Copiar Sprite Npc/Player V1.0 Empty Re: [EO] Spell Copiar Sprite Npc/Player V1.0

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo


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