DevClub


Você não está conectado. Conecte-se ou registre-se

Photo

Sistema de vila

Ver o tópico anterior Ver o tópico seguinte Ir para baixo  Mensagem [Página 1 de 1]

Marakgarin

avatar
Novato
Sistema de Vila

Ficha :
-Dificuldade : Dificil
-Aprovado   : [ON]
-Download   : [ON]

CLIENT SIDE :

Procure por :

Código:
Private Type PlayerRec


Abaixo de:

Código:
Pk as byte


Adicione:

Código:
Vila as byte

' Com isso, terá uma nova variavel na estrutura do player, onde será as vilas.

No frmMenu, na Private Sub Form_Load(), procure por:

Código:
For i = 0 To UBound(tmpArray)
        lblNews.Caption = lblNews.Caption & tmpArray(i) & vbNewLine
    Next


Abaixo adicione:

Código:
Vila = 1

' Com isso, ao carregar a frmMenu, o valor de vila será 1, isso evitara futuros erros..

no frmMenu, crie:
Uma picture chamada:

Código:
Nome: picVila
Caption: Konoha


E deixe sua propriedade igual a da foto abaixo:
Sistema de vila 7Rf2D
Em seguinda, ainda na picVila, adicione esta imagem de Konoha como sua Picture padrão.
Sistema de vila K4sMv

Uma label chamada:

Código:
Nome: lblVilaProx
Caption: >

Uma segunda label :
Código:
Nome: lblVilaAnt
Caption: <

E uma terceira label, chamada:
Código:
Nome: lblVila
Caption: Konoha

Ficará mais ou menos assim :
Sistema de vila IOnoP

Após feito isso, dê 2 clicks na lblVilaProx, e adicione:

Código:
If Vila >= 5 Then
  Vila = 1
Else
  Vila = Vila + 1
End If
picVila.Picture = LoadPicture(App.Path & "\data files\graphics\Vilas" & Vila & ".jpg")
If Vila = 1 Then
lblVila.Caption = "Konohagakure"
ElseIf Vila = 2 Then
lblVila.Caption = "Sunagakure"
ElseIf Vila = 3 Then
lblVila.Caption = "Iwagakure"
ElseIf Vila = 4 Then
lblVila.Caption = "Kirigakure"
ElseIf Vila = 5 Then
lblVila.Caption = "Kumogakure"
End If

' Isso fará com que, você ao clicar na label, passara de vila, indo de 1 em 1, quando chegar na vila 5, voltará na 1.. Indo sempre pra frente ( avançando )

Na lblVilaAnt, adicione:
Código:
If Vila <= 1 Then
  Vila = 5
Else
  Vila = Vila - 1
End If

picVila.Picture = LoadPicture(App.Path & "\data files\graphics\Vilas" & Vila & ".jpg")

If Vila = 1 Then
lblVila.Caption = "Konohagakure"
ElseIf Vila = 2 Then
lblVila.Caption = "Sunagakure"
ElseIf Vila = 3 Then
lblVila.Caption = "Iwagakure"
ElseIf Vila = 4 Then
lblVila.Caption = "Kirigakure"
ElseIf Vila = 5 Then
lblVila.Caption = "Kumogakure"
End If

' Isso fará com que, você ao clicar na label, voltará de vila, voltando de 1 em 1, quando chegar na vila 1, voltará na 5.. Indo sempre pra trás ( retornando )


Em seguida, na Public Sub SendAddChar, troque ela toda por:

Código:
Public Sub SendAddChar(ByVal name As String, ByVal Sex As Long, ByVal ClassNum As Long, ByVal Sprite As Long, ByVal Vila 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 CAddChar
    buffer.WriteString name
    buffer.WriteLong Sex
    buffer.WriteLong ClassNum
    buffer.WriteLong Sprite
    buffer.WriteByte Vila
    SendData buffer.ToArray()
    Set buffer = Nothing
    
    ' Error handler
    Exit Sub
errorhandler:
    HandleError "SendAddChar", "modClientTCP", Err.Number, Err.Description, Err.Source, Err.HelpContext
    Err.Clear
    Exit Sub
End Sub

' Isso fará com que, ao criar char, envie a packet para armazenar vila do jogador juntamente com os dados do player, para assim amarzenar no servidor a sua vila.

Em seguida, no final da modGlobals, adicione:
Código:
Public Vila As Byte

Em seguida, em modGeneral, na Public Sub MenuState, procure por:
Código:
If frmMenu.optMale.Value Then
                    Call SendAddChar(frmMenu.txtCName, SEX_MALE, frmMenu.cmbClass.ListIndex + 1, newCharSprite)
                Else
                    Call SendAddChar(frmMenu.txtCName, SEX_FEMALE, frmMenu.cmbClass.ListIndex + 1, newCharSprite)
                End If

Mude para:
Código:
If frmMenu.optMale.Value Then
                    Call SendAddChar(frmMenu.txtCName, SEX_MALE, frmMenu.cmbClass.ListIndex + 1, newCharSprite, Vila)
                Else
                    Call SendAddChar(frmMenu.txtCName, SEX_FEMALE, frmMenu.cmbClass.ListIndex + 1, newCharSprite, Vila)
                End If

' Isso fará com que envie o dado da vila ao você escolher ela no frmMenu

Depois, na modHandleData, procure por
Código:
Call SetPlayerPK(i, buffer.ReadLong)

Abaixo adicione:
Código:
Player(i).Vila = buffer.ReadByte

Caso queira que mostre a vila do jogador em uma LABEL, vá na frmMain, e crie uma label chamada:
Código:
lblVila

E procure na modHandledata, por:
Código:
For x = 1 To Stats.Stat_Count - 1
            frmMain.lblCharStat(x).Caption = GetPlayerStat(MyIndex, x)
        Next


E abaixo adicione:

Código:
Select Case Player(MyIndex).Vila
        Case 1
          frmMain.lblVila.Caption = "Konohagakure"
        Case 2
          frmMain.lblVila.Caption = "Sunagakure"
        Case 3
          frmMain.lblVila.Caption = "Iwagakure"
        Case 4
          frmMain.lblVila.Caption = "Kirigakure"
        Case 5
          frmMain.lblVila.Caption = "Kumogakure"
        End Select

'Isso fará com que acada valor de vila, tenha um nome, seguindo assim seus respectivos nomes dados no frmMenu.
Pronto, client side completo.. Vamos para o servidor agora.

SERVER SIDE :

Procure a Sub AddChar, e troque ela toda por:
Código:
Sub AddChar(ByVal index As Long, ByVal Name As String, ByVal Sex As Byte, ByVal ClassNum As Long, ByVal Sprite As Long, ByVal Vila As Byte)
    Dim f As Long
    Dim n As Long
    Dim spritecheck As Boolean

    If LenB(Trim$(Player(index).Name)) = 0 Then
        
        spritecheck = False
        
        Player(index).Name = Name
        Player(index).Sex = Sex
        Player(index).Class = ClassNum
        Player(index).Vila = Vila
        
        
        If Player(index).Sex = SEX_MALE Then
            Player(index).Sprite = Class(ClassNum).MaleSprite(Sprite)
        Else
            Player(index).Sprite = Class(ClassNum).FemaleSprite(Sprite)
        End If

        Player(index).Level = 1

        For n = 1 To Stats.Stat_Count - 1
            Player(index).stat(n) = Class(ClassNum).stat(n)
        Next n

        Player(index).Dir = DIR_DOWN
        Player(index).Map = Player(index).Vila
        Player(index).x = START_X
        Player(index).y = START_Y
        Player(index).Dir = DIR_DOWN
        Player(index).Vital(Vitals.HP) = GetPlayerMaxVital(index, Vitals.HP)
        Player(index).Vital(Vitals.MP) = GetPlayerMaxVital(index, Vitals.MP)
        
        ' set starter equipment
        If Class(ClassNum).startItemCount > 0 Then
            For n = 1 To Class(ClassNum).startItemCount
                If Class(ClassNum).StartItem(n) > 0 Then
                    ' item exist?
                    If Len(Trim$(Item(Class(ClassNum).StartItem(n)).Name)) > 0 Then
                        Player(index).Inv(n).Num = Class(ClassNum).StartItem(n)
                        Player(index).Inv(n).Value = Class(ClassNum).StartValue(n)
                    End If
                End If
            Next
        End If
        
        ' set start spells
        If Class(ClassNum).startSpellCount > 0 Then
            For n = 1 To Class(ClassNum).startSpellCount
                If Class(ClassNum).StartSpell(n) > 0 Then
                    ' spell exist?
                    If Len(Trim$(Spell(Class(ClassNum).StartSpell(n)).Name)) > 0 Then
                        Player(index).Spell(n) = Class(ClassNum).StartSpell(n)
                    End If
                End If
            Next
        End If
        
        ' Append name to file
        f = FreeFile
        Open App.path & "\data\accounts\charlist.txt" For Append As #f
        Print #f, Name
        Close #f
        Call SavePlayer(index)
        Exit Sub
    End If

End Sub

No final do modGlobals, para evitar erros, adicione:
Código:
Public Vila As Byte

Depois, na modHandleData, procure por:
Código:
Private Sub HandleAddChar(ByVal index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)

Abaixo de:
Código:
Dim n as Long

Adicione:
Código:
Dim Vila As Byte

Ainda na mesma sub, procure por:
Código:
Sprite = buffer.ReadLong


Abaixo adicione:
Código:
Vila = buffer.ReadByte

Ainda na modHandleData, procure por:
Código:
' Everything went ok, add the character
        Call AddChar(index, Name, Sex, Class, Sprite)

E modifique para:
Código:
' Everything went ok, add the character
        Call AddChar(index, Name, Sex, Class, Sprite, Vila)

Depois, no modServerTCP, procure por:
Código:
buffer.WriteLong GetPlayerPK(index)

Abaixo adicione:
Código:
buffer.WriteByte Player(index).Vila

Depois, em ModTypes, na Private Type PlayerRec, procure por:
Código:
PK As Byte

Abaixo adicione:
Código:
Vila as byte

Download Pasta Vilas

Baixe a pasta: Vilas, e adicione na pasta "graphics" do seu Eclipse Origins, e pronto sistema concluído. Delete suas contas antes de testar, e crie uma nova conta.


E para aqueles que quiserem colocar acima da cabeça do jogador, o nome da vila, adicionem isso..

No final do modText, adicione:
Código:
Public Sub DrawPlayerVila(ByVal Index As Long)
If Player(Index).Vila < 0 Then Exit Sub

Dim VilaX As Long
Dim VilaY As Long
Dim VilaColor As Long
Dim VilaName As String

Select Case Player(Index).Vila
    Case 1
        VilaName = "Konohagakure"
        VilaColor = QBColor(BrightRed)
    Case 2 'Suna
        VilaName = "Sunagakure"
        VilaColor = QBColor(Brown)
    Case 3 'Iwa
        VilaName = "Iwagakure"
        VilaColor = QBColor(Brown)
    Case 4 'Kiri
        VilaName= "Kirigakure"
        VilaColor = QBColor(Cyan)
    Case 5 'Kumo
        VilaName = "Kumogakure"
        VilaColor = QBColor(Cyan)
    Case Else
      VilaName = vbNullString
End Select

    VilaX = ConvertMapX(GetPlayerX(Index) * PIC_X) + Player(Index).XOffset + (PIC_X \ 2) - getWidth(TexthDC, (Trim$(VilaName)))
    If GetPlayerSprite(Index) < 1 Or GetPlayerSprite(Index) > NumCharacters Then
        VilaY = ConvertMapY(GetPlayerY(Index) * PIC_Y) + Player(Index).YOffset - 18
    Else
        VilaY = ConvertMapY(GetPlayerY(Index) * PIC_Y) + Player(Index).YOffset - (DDSD_Character(GetPlayerSprite(Index)).lHeight / 4) + 2
    End If

    
    Call DrawText(TexthDC, VilaX, VilaY, VilaName, VilaColor)

Depois procurem por:
Código:
' draw player names
    For i = 1 To Player_HighIndex
        If IsPlaying(i) And GetPlayerMap(i) = GetPlayerMap(MyIndex) Then
            Call DrawPlayerName(i)

Abaixo de Call DrawPlayerName(i) adicionem:
Código:
DrawPlayerVila i

Créditos :
Desconhecido por criar

Math320

avatar
Novato
Putz bom trabalho cara so de ver este tutorial ja deceu um suor da testa imagina fazer ne +1

Guifs

avatar
Membro
Bom marak tenho certeza q você sabe que quem criou esse sistema foi o thales até mesmo pq vc ripou ele da falecida mmorpgbr,acho legal colcoar os devidos creditos

Dark Angel

Dark Angel
Membro
Guifs escreveu:Bom marak tenho certeza q você sabe que quem criou esse sistema foi o thales até mesmo pq vc ripou ele da falecida mmorpgbr,acho legal colcoar os devidos creditos

OFF: A MMORPGBR morreu? kkkk

ON: Obrigado pela postagem Marak. +1 Cred.

ayan13

avatar
Novato
Muito Bom Vlw ai Mano +1



Última edição por ayan13 em Sáb Jun 29, 2013 11:50 am, editado 2 vez(es)

Convidado

avatar
Convidado
Parabéns gostei das screen belo sistema =1 Crédito

Guifs

avatar
Membro
Dark Angel escreveu:
Guifs escreveu:Bom marak tenho certeza q você sabe que quem criou esse sistema foi o thales até mesmo pq vc ripou ele da falecida mmorpgbr,acho legal colcoar os devidos creditos

OFF: A MMORPGBR morreu? kkkk

ON: Obrigado pela postagem Marak. +1 Cred.

Bom amigo achei que o grau de entendimento das crianças do forum focem maior que isso(off~topic-zoa)

EU to zuando,mais ficar dando quote no comentário dos outros para dar uma tiradinha dessa é uma atitude meio imatura não acha?

Dark Angel

Dark Angel
Membro
OFF: Vai mim bater é Guifs? kkkk. Foi mal man, queira mim bater não.

Guifs

avatar
Membro
kk calma man eu tava zuando ctg fica de boa e.e

GustavoNunes

GustavoNunes
Novato
Gostei, mas você testou?
+1 por ter o trabalho de copiar.

Conteúdo patrocinado


Ver o tópico anterior Ver o tópico seguinte Ir para o topo  Mensagem [Página 1 de 1]

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