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.

Sistema de WarpPlayer

+4
Caio~ C10
Ryo
Wirosaki
Thales12
8 participantes

Ir para baixo

Sistema de WarpPlayer Empty Sistema de WarpPlayer

Mensagem por Thales12 Dom 26 Fev 2012, 11:41

No eo so tem o warpto q e para adm, então ta ai o warp para players ! Smile
para usar em botão, label ou outra coisa do tipo...

Abra o Server~Side e procure por:

Código:
CWarpTo

em baixo adicione:

Código:
CWarpPlayer

dps procure por:

Código:
HandleDataSub(CWarpTo) = GetAddress(AddressOf HandleWarpTo)

em baixo adicione:

Código:
 HandleDataSub(CWarpPlayer) = GetAddress(AddressOf HandleWarpPlayer)

no final da modHandleData adicione:

Código:
Sub HandleWarpPlayer(ByVal index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)
    Dim n As Long
    Dim Buffer As clsBuffer
    Set Buffer = New clsBuffer
    Buffer.WriteBytes Data()

    ' The map
    n = Buffer.ReadLong 'CLng(Parse(1))
    Set Buffer = Nothing

    ' Prevent hacking
    If n < 0 Or n > MAX_MAPS Then
        Exit Sub
    End If

    Call PlayerWarp(index, n, GetPlayerX(index), GetPlayerY(index))
    Call PlayerMsg(index, "Você está no mapa:" & n, BrightBlue)
    Call AddLog(GetPlayerName(index) & " Você foi para o mapa:" & n & ".", ADMIN_LOG)
End Sub

Server~Side terminado agora no Client~Side procure por:

no final da modClientTCP adicione:

Código:
Public Sub WarpPlayer(ByVal MapNum 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.WriteLong CWarpPlayer
    Buffer.WriteLong MapNum
    SendData Buffer.ToArray()
    Set Buffer = Nothing
   
    ' Error handler
    Exit Sub
errorhandler:
    HandleError "WarpPlayer", "modClientTCP", Err.Number, Err.Description, Err.Source, Err.HelpContext
    Err.Clear
    Exit Sub
End Sub

dps procure por:

Código:
CWarpTo

em baixo adicione:

Código:
CWarpPlayer

para usa-lo basta usar o seguinte codigo :

Código:
Call WarpPlayer(numero do mapa)

Créditos: ao titio thales
Thales12
Thales12
Membro Veterano
Membro Veterano

Mensagens : 1011

http://www.rdmgames.tk

Ir para o topo Ir para baixo

Sistema de WarpPlayer Empty Re: Sistema de WarpPlayer

Mensagem por Wirosaki Sex 19 Out 2012, 16:34

Thales...
Segui seu tutorial e deu tudo certo...
Só me ajude com uma coisa!

Como coloco as coordenadas que quero nesse comando?
Call WarpPlayer(numero do mapa)

Queria algo do tipo:
Call WarpPlayer(numero do mapa, x, y)


Edit: Isso não é tão importante, mas se vc souber... Tem como eu cobrar "gold" por esse teleporte?!
Se tiver como faria isso?
Wirosaki
Wirosaki
Membro Sênior
Membro Sênior

Mensagens : 262

Ir para o topo Ir para baixo

Sistema de WarpPlayer Empty Re: Sistema de WarpPlayer

Mensagem por Ryo Sáb 20 Out 2012, 10:01

Para de reviver topicos wirosaki olha a data foi em Fevereiro
Ryo
Ryo
Membro Sênior
Membro Sênior

Mensagens : 308

Ir para o topo Ir para baixo

Sistema de WarpPlayer Empty Re: Sistema de WarpPlayer

Mensagem por Caio~ C10 Sáb 20 Out 2012, 18:31

Wirosaki escreveu:Thales...
Segui seu tutorial e deu tudo certo...
Só me ajude com uma coisa!

Como coloco as coordenadas que quero nesse comando?
Call WarpPlayer(numero do mapa)

Queria algo do tipo:
Call WarpPlayer(numero do mapa, x, y)


Edit: Isso não é tão importante, mas se vc souber... Tem como eu cobrar "gold" por esse teleporte?!
Se tiver como faria isso?

Da pra deixar x, y... basta fazer algumas modificaçoes no sistema.
Tem como cobrar gold tambem, basta vc colocar o call de pegar item currency da pessoa se ela tiver.
Caio~ C10
Caio~ C10
Membro Veterano
Membro Veterano

Mensagens : 803

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

Ir para o topo Ir para baixo

Sistema de WarpPlayer Empty Re: Sistema de WarpPlayer

Mensagem por Wirosaki Sáb 20 Out 2012, 20:04

Lin Master, não fale do que você não sabe amigo!
Não revivi tópico nenhum, apenas criei um tópico de dúvida, ainda essa semana, e ele me respondeu neste tópico:
http://www.mmorpgbr.com/t10617-warp-por-imagem

Com o link deste tópico em que estamos!
Não tem essa de reviver, larga der panguão guri, quem vim falar merda, se toca!
Se tenho uma dúvida com o sistema dele, VOU perguntar! Entendeu?
Mereço ein...


Caio, tem como me ajudar a fazer isso amigo? Pois já cansei de ler os códigos pra tentar solucionar eu mesmo, mas não tenho ideia de como fazer tudo isso que você falou.. Por favor brother, me ajuda ai com isso ^^
Obrigado!
Wirosaki
Wirosaki
Membro Sênior
Membro Sênior

Mensagens : 262

Ir para o topo Ir para baixo

Sistema de WarpPlayer Empty Re: Sistema de WarpPlayer

Mensagem por Guardian Dom 21 Out 2012, 00:31

Cliente ~Side

Mude sua Sub WarpPlayer para :

Código:
Public Sub WarpPlayer(ByVal MapNum As Long, ByVal X As Byte, ByVal Y As Byte)
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 CWarpPlayer
    Buffer.WriteLong MapNum
    Buffer.WriteByte X
    Buffer.WriteByte Y
    SendData Buffer.ToArray()
    Set Buffer = Nothing
   
    ' Error handler
    Exit Sub
errorhandler:
    HandleError "WarpPlayer", "modClientTCP", Err.Number, Err.Description, Err.Source, Err.HelpContext
    Err.Clear
    Exit Sub
End Sub



Server~Side

Mude sua HandleWarpPlayer por :

Código:
Sub HandleWarpPlayer(ByVal index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)
    Dim n As Long
    Dim x as byte, y as byte
    Dim Buffer As clsBuffer
    Set Buffer = New clsBuffer
    Buffer.WriteBytes Data()

    ' The map
    n = Buffer.ReadLong 'CLng(Parse(1))
    x = buffer.readbyte
    y = buffer.readbyte
    Set Buffer = Nothing

    ' Prevent hacking
    If n < 0 Or n > MAX_MAPS Then
        Exit Sub
    End If

    If X < 0 Or X > Map(GetPlayerMap(Index)).MaxX Then Exit Sub
    If Y < 0 Or Y > Map(GetPlayerMap(Index)).MaxY Then Exit Sub

    Call PlayerWarp(index, n, X, Y)
    Call PlayerMsg(index, "Você está no mapa:" & n, BrightBlue)
    Call AddLog(GetPlayerName(index) & " Você foi para o mapa:" & n & ".", ADMIN_LOG)
End Sub


Agora, pra usar no cliente, utilize :

Código:
Call WarpPlayer(numero do mapa, X, Y)

E bom, caso queira cobrar gold. Utilize algo como o código abaixo na HandleWarpPlayer do Server :

Código:
Dim i as Byte
For i = 1 to max_inv
If GetPlayerInvItemnum(Index, i) = Número do Gold Then
If GetPlayerinvitemvalue(Index, i) >= Quantidade de Gold Then
TakeInvItem index, Número do Gold, GetPlayerInvItemValue(index, i) - Quantidade que vai perder
End if
End if
Next

Espero que ajude. Smile
Guardian
Guardian
Membro de Honra
Membro de Honra

Mensagens : 781

Ir para o topo Ir para baixo

Sistema de WarpPlayer Empty Re: Sistema de WarpPlayer

Mensagem por Wirosaki Dom 21 Out 2012, 06:27

Olá Guardian, eu te amo cara *----*' +1 cred!
Agora só me tira uma ultima duvidazinha?
Tipo, eu acho que não consegui manjar como cobrar gold, veja como coloquei e vê se esta correto:

Código:
Sub HandleWarpPlayer(ByVal index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)
    Dim n As Long
    Dim x As Byte, y As Byte
    Dim i As Byte
    Dim Buffer As clsBuffer
    Set Buffer = New clsBuffer
    Buffer.WriteBytes Data()

    Dim i As Byte
    For i = 1 To MAX_INV
    If GetPlayerInvItemNum(index, i) = 1 Then
    If GetPlayerInvItemValue(index, i) >= 100 Then
    TakeInvItem index, 1, GetPlayerInvItemValue(index, i) - 100
    End If
    End If
    Next

    ' The map
    n = Buffer.ReadLong 'CLng(Parse(1))
    x = Buffer.ReadByte
    y = Buffer.ReadByte
    Set Buffer = Nothing

    ' Prevent hacking
    If n < 0 Or n > MAX_MAPS Then
        Exit Sub
    End If

    If x < 0 Or x > Map(GetPlayerMap(index)).MaxX Then Exit Sub
    If y < 0 Or y > Map(GetPlayerMap(index)).MaxY Then Exit Sub

    Call PlayerWarp(index, n, x, y)
    Call PlayerMsg(index, "Você está no mapa:" & n, BrightBlue)
    Call AddLog(GetPlayerName(index) & " Você foi para o mapa:" & n & ".", ADMIN_LOG)
    End If
    End If
    Next
End Sub

É assim, o item gold é numero 1 e o preço a ser cobrado pela viagem é 100!
Eai, ta certo.. Porque tipo, eu coloquei assim e ele não cobra, mas também não da nenhum tipo de erro, ele da o warp normal, apenas não cobra...
O que faço?
Wirosaki
Wirosaki
Membro Sênior
Membro Sênior

Mensagens : 262

Ir para o topo Ir para baixo

Sistema de WarpPlayer Empty Re: Sistema de WarpPlayer

Mensagem por Guardian Dom 21 Out 2012, 07:32

Tenta mudar para isso (Não liga pro código, foi só pq é mais rápido testar assim...) Smile :

Código:
Sub HandleWarpPlayer(ByVal index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)
    Dim n As Long
    Dim x As Byte, y As Byte
    Dim i As Byte
    Dim Buffer As clsBuffer
    Set Buffer = New clsBuffer
    Buffer.WriteBytes Data()

    For i = 1 To MAX_INV
    If GetPlayerInvItemNum(index, i) = 1 Then
    If GetPlayerInvItemValue(index, i) >= 100 Then
    TakeInvItem index, 1, GetPlayerInvItemValue(index, i) - 100
    Else
    Playermsg index, "Você não tem Gold Suficiente!", Yellow
    Exit Sub
    End If
    Else
    Playermsg index, "Você não tem Gold Suficiente!", Yellow
    Exit Sub
    End If
    Next

    ' The map
    n = Buffer.ReadLong 'CLng(Parse(1))
    x = Buffer.ReadByte
    y = Buffer.ReadByte
    Set Buffer = Nothing

    ' Prevent hacking
    If n < 0 Or n > MAX_MAPS Then
        Exit Sub
    End If

    If x < 0 Or x > Map(GetPlayerMap(index)).MaxX Then Exit Sub
    If y < 0 Or y > Map(GetPlayerMap(index)).MaxY Then Exit Sub

    Call PlayerWarp(index, n, x, y)
    Call PlayerMsg(index, "Você está no mapa:" & n, BrightBlue)
    Call AddLog(GetPlayerName(index) & " Você foi para o mapa:" & n & ".", ADMIN_LOG)
End Sub
Guardian
Guardian
Membro de Honra
Membro de Honra

Mensagens : 781

Ir para o topo Ir para baixo

Sistema de WarpPlayer Empty Re: Sistema de WarpPlayer

Mensagem por Wirosaki Dom 21 Out 2012, 20:57

Então Guardian, é o seguinte...
A mensagem aparece no chat sempre "você não tem gold suficiente!"
E não teleporta... E mais, estava com 17k de gold, quando testei o sistema foi pra 100 de gold o.O

E agora?
Wirosaki
Wirosaki
Membro Sênior
Membro Sênior

Mensagens : 262

Ir para o topo Ir para baixo

Sistema de WarpPlayer Empty Re: Sistema de WarpPlayer

Mensagem por Thales12 Qua 24 Out 2012, 18:39

mude o

If GetPlayerInvItemValue(index, i) >= 100 Then

para:


If GetPlayerInvItemValue(index, i) = 100 Then
Thales12
Thales12
Membro Veterano
Membro Veterano

Mensagens : 1011

http://www.rdmgames.tk

Ir para o topo Ir para baixo

Sistema de WarpPlayer Empty Re: Sistema de WarpPlayer

Mensagem por Wirosaki Qua 24 Out 2012, 18:51

não deu certo cara :/
Wirosaki
Wirosaki
Membro Sênior
Membro Sênior

Mensagens : 262

Ir para o topo Ir para baixo

Sistema de WarpPlayer Empty Re: Sistema de WarpPlayer

Mensagem por Guardian Qua 24 Out 2012, 18:53

mude o

If GetPlayerInvItemValue(index, i) >= 100 Then

para:


If GetPlayerInvItemValue(index, i) = 100 Then

Nossa Thales... Foi você mesmo que fez esse tutorial ? '-'
Essa "Correção" que tu escreveu, pelo amor de deus em mano... Qualquer um sabe que isso só vai funcionar se ele tiver um valor exato de 100 de dinheiro. Chegou nem perto kkkk'

Tenta por assim oh Wirosaki, coloquei os códigos separados porque de vez em quando tem uns erros pequenos na lógica que acaba bagunçando tudo, a única coisa que eu fiz foi separar os códigos que ja tinha feito ali em cima. Smile

Código:
Sub HandleWarpPlayer(ByVal index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)
    Dim n As Long
    Dim x As Byte, y As Byte
    Dim i As Byte
    Dim Buffer As clsBuffer
    Set Buffer = New clsBuffer
    Buffer.WriteBytes Data()

    For i = 1 To MAX_INV
    If GetPlayerInvItemNum(index, i) = 1 Then
    If GetPlayerInvItemValue(index, i) < 100 Then
    PlayerMsg index, "Você não tem Gold Suficiente!", Yellow
    Exit Sub
    Exit For
    End If
    End If
    Next

    ' The map
    n = Buffer.ReadLong 'CLng(Parse(1))
    x = Buffer.ReadByte
    y = Buffer.ReadByte
    Set Buffer = Nothing

    ' Prevent hacking
    If n < 0 Or n > MAX_MAPS Then
        Exit Sub
    End If

    If x < 0 Or x > Map(GetPlayerMap(index)).MaxX Then Exit Sub
    If y < 0 Or y > Map(GetPlayerMap(index)).MaxY Then Exit Sub

    For i = 1 To MAX_INV
    If GetPlayerInvItemNum(index, i) = 1 Then
    TakeInvItem index, 1, 100
    End If
    Next

    Call PlayerWarp(index, n, x, y)
    Call PlayerMsg(index, "Você está no mapa:" & n, BrightBlue)
    Call AddLog(GetPlayerName(index) & " Você foi para o mapa:" & n & ".", ADMIN_LOG)
    SendPlayerData index
End Sub


Última edição por Guardian em Qua 24 Out 2012, 19:14, editado 1 vez(es)
Guardian
Guardian
Membro de Honra
Membro de Honra

Mensagens : 781

Ir para o topo Ir para baixo

Sistema de WarpPlayer Empty Re: Sistema de WarpPlayer

Mensagem por Thales12 Qua 24 Out 2012, 19:09

Guardian escreveu:
mude o

If GetPlayerInvItemValue(index, i) >= 100 Then

para:


If GetPlayerInvItemValue(index, i) = 100 Then

Nossa Thales... Foi você mesmo que fez esse tutorial ? '-'
Essa "Correção" que tu escreveu, pelo amor de deus em mano... Qualquer um sabe que isso só vai funcionar se ele tiver um valor exato de 100 de dinheiro. Chegou nem perto kkkk'

Tenta por assim oh Wirosaki, coloquei os códigos separados porque de vez em quando tem uns erros pequenos na lógica que acaba bagunçando tudo, a única coisa que eu fiz foi separar os códigos que ja tinha feito ali em cima. Sistema de WarpPlayer 256397

Código:
Sub HandleWarpPlayer(ByVal index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)
    Dim n As Long
    Dim x As Byte, y As Byte
    Dim i As Byte
    Dim Buffer As clsBuffer
    Set Buffer = New clsBuffer
    Buffer.WriteBytes Data()

    For i = 1 To MAX_INV
    If GetPlayerInvItemNum(index, i) = 1 Then
    If GetPlayerInvItemValue(index, i) < 100 Then
    Playermsg index, "Você não tem Gold Suficiente!", Yellow
    Exit Sub
    End If
    End if
    Next

    ' The map
    n = Buffer.ReadLong 'CLng(Parse(1))
    x = Buffer.ReadByte
    y = Buffer.ReadByte
    Set Buffer = Nothing

    ' Prevent hacking
    If n < 0 Or n > MAX_MAPS Then
        Exit Sub
    End If

    If x < 0 Or x > Map(GetPlayerMap(index)).MaxX Then Exit Sub
    If y < 0 Or y > Map(GetPlayerMap(index)).MaxY Then Exit Sub

    For i = 1 to max_inv
    If GetPlayerinvitemnum(Index, i) = 1 then
    TakeInvItem index, 1, GetPlayerinvitemvalue(index, i) - 100
    end if
    Next

    Call PlayerWarp(index, n, x, y)
    Call PlayerMsg(index, "Você está no mapa:" & n, BrightBlue)
    Call AddLog(GetPlayerName(index) & " Você foi para o mapa:" & n & ".", ADMIN_LOG)
End Sub


verdade.. erro meu..
preguiça e ler primeira linha q vi eu falei q era o problema
mais bom.. errei fazer oq:d
Thales12
Thales12
Membro Veterano
Membro Veterano

Mensagens : 1011

http://www.rdmgames.tk

Ir para o topo Ir para baixo

Sistema de WarpPlayer Empty Re: Sistema de WarpPlayer

Mensagem por Wirosaki Qua 24 Out 2012, 23:21

Guardian, funcionou perfeitamente...
Estava com 500 de gold, fui viajando e sempre gastando de 100 em 100 gold!
E warpando normal...

Porem, mesmo quando tenho menos que 100 ele warpa!
E tem outra, quando eu tenho 200 de gold, viajo, vai para 100 de gold, dai eu viajo de novo e ele continua com 100 de gold na label, só que no inventário não tem mais gold!
E ele sempre fica la na label 100, até reiniciar o cliente.

Tem como resolver esse bug? D:

Edit: De tanto pesquisar descobri... Tem um bug fix pra isso:
http://www.touchofdeathforums.com/community/index.php?/topic/129101-bug-fix-inventory-gold-display/

Mas mesmo assim isso não resolve tudo, pois se vc tem qualquer quantia de gold, exemplo, 50...
E tendo ela dropando-a de uma vez, exemplo, tenho 50 e dropo 50, o item some do inventário mas a label lblgold continua 50! Então resolvi, foi meio no chutômetro mas resolveu '-'

Após fazer o bug fix da lblgold...
Procure por:
Código:
' Check if it's gold, and update the label
If Item(GetPlayerInvItemNum(MyIndex, i)).Type = ITEM_TYPE_CURRENCY Then '1 = gold :P
frmMain.lblGold.Caption = Format$(Amount, "#,###,###,###") & "g"
End If

Abaixo, coloque:
Código:
' Check if it's gold, and update the label 2
If GetPlayerInvItemValue(MyIndex, i) = 0 Then
frmMain.lblGold.Caption = "0g"
End If

Procure por:
Código:
' Check if it's gold, and update the label
If Item(GetPlayerInvItemNum(MyIndex, i)).Type = ITEM_TYPE_CURRENCY Then '1 = gold :P
frmMain.lblGold.Caption = Format$(Amount, "#,###,###,###") & "g"
End If
End If

Abaixo, coloque:
Código:
' Check if it's gold, and update the label 2
If GetPlayerInvItemValue(MyIndex, i) = 0 Then
frmMain.lblGold.Caption = "0g"
End If

Pronto, isto forcará quando o value for 0 a label ficar em 0g xD

E o mais importante...
MUITÍSSIMO OBRIGADO PELA AJUDA ESSENCIAL GUARDIAN, VALEU MESMO *-*
E OBRIGADO TAMBÉM A VOCÊ THALES! E OBRIGADO TAMBÉM A TODOS OS OUTROS QUE TENTARAM AJUDAR... Very Happy

+1 CRED GUARDIAN Smile
Wirosaki
Wirosaki
Membro Sênior
Membro Sênior

Mensagens : 262

Ir para o topo Ir para baixo

Sistema de WarpPlayer Empty Re: Sistema de WarpPlayer

Mensagem por srloks Sáb 27 Out 2012, 02:21

E mais um tópico antigo volta !

Algum mod pode trancar esse tópico ?
srloks
srloks
Membro Sênior
Membro Sênior

Mensagens : 395

Ir para o topo Ir para baixo

Sistema de WarpPlayer Empty Re: Sistema de WarpPlayer

Mensagem por Pablo Sáb 27 Out 2012, 08:57

srloks escreveu:E mais um tópico antigo volta !

Algum mod pode trancar esse tópico ?

Não seria o caso já que foi um meio de suporte há um membro que necessitava de ajuda, mesmo ele ressuscitando ele estava mostrando que o tutorial continha erros e foi comentar para ajudar futuras pessoas que tentarem do mesmo.

Atenciosamente,
Pablo
Pablo
Pablo
Moderador Global
Moderador Global

Mensagens : 1371

Ir para o topo Ir para baixo

Sistema de WarpPlayer Empty Re: Sistema de WarpPlayer

Mensagem por newbie123 Sáb 24 Nov 2012, 07:52

Ainda vai fazer 1 mês então não estou revivendo topico

Bem o tutorial ensina a warp o player ao clicar em button por exemplo, não sei para qual versão do eclipse é esse sistema, mas aqui na minha quando eu coloco dentro de uma command button assim:

Código:
WarpTo (1) 'o 1 é o numero do mapa que você deseja que a pessoa se teletransporte.

isso da certo :s, mas se eu entendi mal o que você quis fazer com o topico me desculpe.
newbie123
newbie123
Membro Vitalicio
Membro Vitalicio

Mensagens : 622

Ir para o topo Ir para baixo

Sistema de WarpPlayer Empty Re: Sistema de WarpPlayer

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