[Prof~] Sistema de Reputação Hitskin_logo Hitskin.com

Isto é uma pré-visualização de um tema em Hitskin.com
Instalar o temaVoltar para a ficha do tema

Aldeia RPG
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

[Prof~] Sistema de Reputação

+2
Takabe
Profane ~
6 participantes

Ir para baixo

[Prof~] Sistema de Reputação Empty [Prof~] Sistema de Reputação

Mensagem por Profane ~ Seg Abr 30, 2018 11:22 am

Oin turu baum?

Venho trazer um sistemazinho simples.
O que se tem de entender dele é que ele não necessariamente é um Sistema de Reputação, mas sim uma Base Geral de se ter Valores Salvos e de se Enviar tais valores pela comunicação Server <> Cliente.

Esse Pedido foi feito pelo Yashi (Allan) via PM, e aqui estou disponibilizando.

Vai servir como uma Leve Aula para os que ainda não tem conhecimento de como enviar valores, fazer atualização dos mesmos e salva-los.




Qual a Lógica por trás?

Bem, teremos de abrir uma memoria no NPC, onde ela armazenará o valor de "Reputação". 

Quando este NPC for derrotado o Player ganhará esse valor de Reputação.

Logo o Player também precisará de uma memoria para salvar este valor de reputação que vamos usar.



Ficha Tecnina

 Dificuldade: Fácil
 Compatibilidade: Qualquer EO/CS
 Necessário
- Visual Basic 6
- Após o Termino apagar NPC's e Player's nas pastas do Servidor. (Evitar Probleminhas ;3)


 Engine Já Modificada: Download  (Menos de 2mb)
 (Baixe caso queria apenas Ripar o Sistema de Engine - Ou o ver funcionando.)
 (Caso queira Ripar, procurar por tudo que tenha "Reputation" ou "Reputação".)




Ao Sistema


[ Parte 1 - Criando as Memórias ]

Vamos estar Indo aos Types para poder adicionar a Variável Type que irá armazenar o Valor que desejamos criar.

 No Cliente e no Servidor, procure por:
Código:
Private Type PlayerRec

 Dentro dele, antes do End Type, adicione:

Código:
   Reputation As Long

Colocamos um valor Long na Memória já que em geral esses jogos vão trabalhar na casa de milhões mais.. (Absurdo /o/)
Com isso a memoria no Player já vai estar lá.

Vamos tratar dos Npc's.

Procure por:
Código:
Private Type NpcRec

Dentro dele e antes do End Type, adicione:

Código:
   Reputation As Long

O Npc irá armazenar o Valor de reputação a qual ele dará ao morrer.

[ Parte 2 - Preparando o NPC ]

No Cliente

Acesse a FrmEditor_NPC e prepare os componentes a qual irão nos ajudar na edição do Npc.

Poderá ficar mais o menos assim:
[Prof~] Sistema de Reputação PcARvUl

 Componentes Principais ai são: 
 - Label (Sem nome necessário, apenas para ficar indicado que é ali que fica a reputação.)
 - textBox (Name = txtReputation)

Apague todo o conteúdo da propriedade "Text" do textBox (txtReputation), deixando ele Limpo.

Dê 2 click's sobre o txtReputation e vamos aos seus códigos:

Código:
 ' If debug mode, handle error then exit out
    If Options.Debug = 1 Then On Error GoTo errorhandler
    
    If Not Len(txtReputation.text) > 0 Then Exit Sub
    If IsNumeric(txtReputation.text) Then Npc(EditorIndex).Reputation = Val(txtReputation.text)
    
    ' Error handler
    Exit Sub
errorhandler:
    HandleError "txtReputation_Change", "frmEditor_NPC", Err.Number, Err.Description, Err.Source, Err.HelpContext
    Err.Clear
    Exit Sub

Adicionado isso a parte interna do txtReputation, vamos agora garantir que ao Npc ser carregado no Editor, ele carregue também o valor de reputação atual do Npc.

Procure por:

Código:
Public Sub NpcEditorInit()

Esta sub processa cada carregamento de NPC no Editor. É muito importante que ao fazer componentes novos que usem memória, seja adicionado o carregamento do mesmo no Editor usando essa Sub.

Dentro dela e abaixo de :

Código:
With frmEditor_NPC

Adicione:

Código:
.txtReputation.text = Npc(EditorIndex).Reputation

Dessa forma, toda vez que acessar o Editor de Npc's, será posto o valor de Reputação do NPC no TextBox de Reputação.

[ Parte 3 - Packets e Trocas ]

Nessa parte faremos o Pacote que irá transitar a reputação de forma principal. Ele será pequeno já que toda vez que um NPC com Reputação morrer ele será enviado ao Jogador atualizando assim o valor de Reputação do Jogador.

Ainda no cliente procure por:

Código:
SMSG_COUNT

Acima dele adicione:

Código:
SPlayerReputation

Estamos aumentando o Limite de Pacotes conhecidos pelo Cliente.

Faremos o mesmo no Servidor.

No servidor procure por:

Código:
SMSG_COUNT

Acima dele adicione:

Código:
SPlayerReputation


Extremamente Importante que essa parte do modEnumerations esteja de acordo e igual Cliente e Servidor. O Mesmo Numero de Pacotes e de preferencia o Mesmo Nome! Caso contrário você vai começar a ter dores de cabeça >
Vá ao final do modServerTCP (Modulo que é responsável por armazenar os Envios de Pacotes para o Cliente.)

No Final dele adicione:
Código:
Sub SendReputationTo(ByVal index As Long)
Dim Buffer As clsBuffer, i As Long, partyNum As Long

    Set Buffer = New clsBuffer
    Buffer.WriteLong SPlayerReputation
    Buffer.WriteLong Player(index).Reputation
    
    SendDataTo index, Buffer.ToArray()
    Set Buffer = Nothing
End Sub

Tendo isso, quando chamarmos pela Call SendReputation(?), ela pegará o valor de memoria "Reputation" do jogador Alvo e tentará enviar para o Cliente.

Agora vamos fazer o cliente receber.

Voltando ao Cliente, vá ao modHandleData (Modulo responsável por receber os Pacotes que vem do Servidor para o Cliente.)

Procure por:

Código:
Public Sub InitMessages()

Dentro dele, depois de todos os :

Código:
HandleDataSub(

Você adiciona:

Código:
HandleDataSub(SPlayerReputation) = GetAddress(AddressOf HandlePlayerReputation)

Não é estritamente necessário que você adicione isso em um "Padrão". Como assim? A ordem ali dentro não é importante, é mais organização. Já que se adicionou um novo pacote, ele "teria" de ficar no final.

Agora que o Cliente já tem conhecimento do que fazer com o Pacote que criamos, vamos fazer ele ler o pacote.

O Pacote ao chegar será enviado para a "HandlePlayerReputation", sendo assim no final da ModHandleData, coloque:

Código:
Private Sub HandlePlayerReputation(ByVal Index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)
Dim Buffer As clsBuffer, i As Long
Dim Reputation As Long

    ' If debug mode, handle error then exit out
    If Options.Debug = 1 Then On Error GoTo errorhandler
    
    Set Buffer = New clsBuffer
    Buffer.WriteBytes Data()

    Reputation = Buffer.ReadLong
    
    If Index = MyIndex Then
        Player(MyIndex).Reputation = Reputation
    End If
  
    ' Error handler
    Exit Sub
errorhandler:
    HandleError "HandlePlayerReputation", "modHandleData", Err.Number, Err.Description, Err.Source, Err.HelpContext
    Err.Clear
    Exit Sub
End Sub


Pronto, dessa forma o Servidor já sabe enviar o valor ao Cliente, o Cliente já recebe o Pacote e também já faz a leitura guardando o valor recebido dentro da Memória que criamos para ele.

[ Parte 4 - Fazendo o NPC dar Reputação ao ser Abatido ]

 No Servidor, vamos procurar pela SUB que processa a morte do NPC.

Procure por:

Código:
Public Sub PlayerAttackNpc(ByVal attacker As Long

Dentro dela, procure por isso aqui...

Código:
 ' Now set HP to 0 so we know to actually kill them in the server loop (this prevents subscript out of range)
        MapNpc(mapNum).Npc(mapNpcNum).Num = 0
        MapNpc(mapNum).Npc(mapNpcNum).SpawnWait = GetTickCount
        MapNpc(mapNum).Npc(mapNpcNum).Vital(Vitals.HP) = 0

Esta parte acima determina e faz o começo da limpeza do NPC, mas queremos que antes dele ser "limpo" entregue a nós a reputação num é mermu?

Então, acima disso adicione:

Código:
'Get Reputation
   If Npc(npcNum).Reputation > 0 Then
        Player(attacker).Reputation = Player(attacker).Reputation + Npc(npcNum).Reputation 'Add Reputação
        SendReputationTo attacker 'Envia ao Player que Matou
   End If

Em outras palavras o código analisa se o Npc tem reputação para ser entregue, caso tenha, ele adiciona a reputação a memoria do Player, e logo em seguida pede para enviar o Pacote de atualização de Reputação ao Cliente do Player.

[ Parte 5 *-* - Mostrando a Reputação no Cliente ]

De forma simples apenas para mostrar a reputação na tela, eu criei uma Label no FrmMain.

Name da Label: (lblReputation)

[Prof~] Sistema de Reputação 87vPB37

Agora procure pelo nosso pacote que recebe a Reputação do Servidor...
Ainda no Cliente procure por:

Código:
Private Sub HandlePlayerReputation(B

Dentro dessa Sub procure por:

Código:
Player(MyIndex).Reputation = Reputation

Abaixo dele adicione:

Código:
frmMain.lblReputation.Caption = "Reputação: " & Reputation

Dessa forma, toda vez que o Pacote chegar, ele irá atualizar a Propriedade Caption da Label que criamos para mostrar a Reputação.

Até aqui o sistema está basicamente terminado, faltando apenas mais um detalhe!

[ Parte Ultima - Detalhe! ]

Esse detalhe se trata de uma atualização vital que se segue pelo cliente<>Server. 

É o Nosso PlayerData() que  envia muitas vezes boa parte de todas as memorias do Player.

Vamos por nossa memoria de Reputação para ser atualizada também via ele, porque caso contrario.. Ao Você logar no jogo, o Player só receberia a Reputação de 2 Jeitos:

 [ 1 ] Caso esteja no PlayerData()
 [ 2 ] Caso envie a Reputação via JoinGame()

Como eu estou fazendo esse sistema visando que vocês aprendam e assim modifiquem essa "logica" e memorias para serem usadas de outras maneiras e com outros nomes /o/ para outras diversas finalidades então vou ensinar a mover isso pelo PlayerData(), o que para a Situação Atual seria melhor ser enviada pelo JoinGame (Assim que o Player Logar). 

Mas não chega a ser um problema.

Vamos lá.

No Servidor, procure por:

Código:
Function PlayerData(ByVal index As Long) As Byte()

Fique bem atento a isso, entenda que os Buffer's empacotam os valores em ORDEM , no caso Listagem! E o Cliente precisa desempacotar na mesma ORDEM de listagem. Caso contrário você ter dor de cabecinha bb ><

Uma maneira fácil de por é, procure um Buffer de preferencia sem estar dentro de um For/Next

Ex:

Código:
Buffer.WriteLong GetPlayerPK(index)

Esse Buffer empacota o valor de PK do Player.

Abaixo adicione:

Código:
Buffer.WriteLong Player(index).Reputation
Agora o PlayerData() vai estar enviando o Reputation do Player.

Vamos ao Cliente,

Iremos agora procurar a Leitura do Pacote do PlayerData() que se chama HandlePlayerData()

Procure por:

Código:
Private Sub HandlePlayerData(ByVal Index As Long,

Dentro dela, LEMBRANDO QUE A ESTRUTURA TEM DE SER DESEMPACOTADA EM ORDEM QUE FOI EMPACOTADA!

Como botamos o Buffer do Reputation para ser Empacotado embaixo do Buffer de PK, então procuremos pelo de PK Primeiro:

Código:
Call SetPlayerPK(i, Buffer.ReadLong)

Abaixo dele, adicionaremos:

Código:
Player(i).Reputation = Buffer.ReadLong

Pronto! Agora, o Cliente desempacota com tranquilidade e na ordem correta. 

Caso você ponha em ordem errada, o Valor vai ser Atribuído a outra MEMORIA, e assim Você pode imaginar sua Reputação sendo colocada no HP, ou em diversos outros locais dependendo da ordem de desempacotamento /o/ ~ É uma reação em cadeia que iria lhe dar dores de cabeça não só a você... pq provavelmente iria vir aqui trazer o problema < 3

Para Finalizar...

Ainda na HandlePlayerData, procure por isso aqui:

Código:
' Check if the player is the client player
    If i = MyIndex Then

Abaixo disso adicione:

Código:
 'Refresh Reputation Label
        frmMain.lblReputation.Caption = "Reputation: " & Player(MyIndex).Reputation

Agora a Label que criamos lá no FrmMain será atualizada assim que o Player Receber a PlayerData também /o/

FIM * o *

Espero que tenham gostado e que com isso possam pensar em diversas outras memórias,valores e possíveis customizações para a falência de vocês!

Att amores < 3

_________________
"Mistress of shattered hopes and forever broken dreams"
Profane ~
Profane ~
Colaborador
Colaborador

Mensagens : 818
Créditos : 130

Ir para o topo Ir para baixo

[Prof~] Sistema de Reputação Empty Re: [Prof~] Sistema de Reputação

Mensagem por Takabe Seg Abr 30, 2018 3:53 pm

U.u Maravilhoso minha fadinha rsrs
Takabe
Takabe
Novato
Novato

Mensagens : 22
Créditos : 6

Ficha do personagem
Nível: 1
Experiência:
[Prof~] Sistema de Reputação Left_bar_bleue0/0[Prof~] Sistema de Reputação Empty_bar_bleue  (0/0)
Vida:
[Prof~] Sistema de Reputação Left_bar_bleue30/30[Prof~] Sistema de Reputação Empty_bar_bleue  (30/30)

Ir para o topo Ir para baixo

[Prof~] Sistema de Reputação Empty Re: [Prof~] Sistema de Reputação

Mensagem por Mizuki Qua Ago 08, 2018 11:54 pm

como faria pra usar essa reputação pra compra algo ou ter ela como restrição tipo pra itens ou personagens?

_________________
vem sempre aqui?  I love you
Mizuki
Mizuki
Iniciante
Iniciante

Mensagens : 30
Créditos : 4

Ficha do personagem
Nível: 1
Experiência:
[Prof~] Sistema de Reputação Left_bar_bleue0/0[Prof~] Sistema de Reputação Empty_bar_bleue  (0/0)
Vida:
[Prof~] Sistema de Reputação Left_bar_bleue30/30[Prof~] Sistema de Reputação Empty_bar_bleue  (30/30)

https://www.facebook.com/DBZSayanfury/

Ir para o topo Ir para baixo

[Prof~] Sistema de Reputação Empty Re: [Prof~] Sistema de Reputação

Mensagem por Kies Qui Ago 09, 2018 9:27 am

Mizuki escreveu:como faria pra usar essa reputação pra compra algo ou ter ela como restrição tipo pra itens ou personagens?

Sobre comprar algo tu poderia fazer com que:

A cada x de reputação ele ganhasse uma moeda especifica no jogo.

Sobre restrição... bom neh não creio que seja algo muito útil.


Profane seria interessante dar uma luz sobre rank de reputação ai sim seria maneiro.
Kies
Kies
Diva
Diva

Mensagens : 1155
Créditos : 124

Ficha do personagem
Nível: 1
Experiência:
[Prof~] Sistema de Reputação Left_bar_bleue0/0[Prof~] Sistema de Reputação Empty_bar_bleue  (0/0)
Vida:
[Prof~] Sistema de Reputação Left_bar_bleue30/30[Prof~] Sistema de Reputação Empty_bar_bleue  (30/30)

Ir para o topo Ir para baixo

[Prof~] Sistema de Reputação Empty Re: [Prof~] Sistema de Reputação

Mensagem por Hayashi Sex Mar 25, 2022 10:53 pm

como poderia usar esse sistema para colocar titulos ao lado do nome utilizando esse sistema? tipo:
enquanto o player tiver entre 0 e 100, ele possuir o titulo (Noob) ao lado do nome, ai de 101 a 1000 possuir o titulo (killer) etc.
seria possivel?

desculpar reviver o tópico, mas esse sistema é top
Hayashi
Hayashi
Iniciante
Iniciante

Mensagens : 33
Créditos : 1

Ficha do personagem
Nível: 1
Experiência:
[Prof~] Sistema de Reputação Left_bar_bleue0/0[Prof~] Sistema de Reputação Empty_bar_bleue  (0/0)
Vida:
[Prof~] Sistema de Reputação Left_bar_bleue30/30[Prof~] Sistema de Reputação Empty_bar_bleue  (30/30)

Nando Moura gosta desta mensagem

Ir para o topo Ir para baixo

[Prof~] Sistema de Reputação Empty Re: [Prof~] Sistema de Reputação

Mensagem por Profane ~ Sex Abr 01, 2022 1:05 pm

(Estou sem VB aqui e se eu passar aqui depois posso adornar caso não consigam fazer.)

No...

Código:
modText

Você teria de procurar pela Sub responsável pela renderização do Nome do Player.
Em geral: BltPlayerName ou DrawPlayerName

O sistema trabalha no cliente envolta da variavel Player().reputation
Ela é a responsável por armazenar a quantidade/valor da Reputação.

Na Sub, teria de ser adicionado um Select Case; Exemplo.

Código:
Select Case Player(Index).Reputation

Case 100 to 200: Text = "Consagrado" & Text

End Select


Se não me engano deixei isso antes da Ultima linha e poderia começar as edições. Em casa eu poderia editar como disse para ficar melhor, estou no trabson.

Bjus.

_________________
"Mistress of shattered hopes and forever broken dreams"
Profane ~
Profane ~
Colaborador
Colaborador

Mensagens : 818
Créditos : 130

Ir para o topo Ir para baixo

[Prof~] Sistema de Reputação Empty Re: [Prof~] Sistema de Reputação

Mensagem por Hayashi Sáb Abr 02, 2022 8:09 pm

não consegui, tá dando erro no text
Hayashi
Hayashi
Iniciante
Iniciante

Mensagens : 33
Créditos : 1

Ficha do personagem
Nível: 1
Experiência:
[Prof~] Sistema de Reputação Left_bar_bleue0/0[Prof~] Sistema de Reputação Empty_bar_bleue  (0/0)
Vida:
[Prof~] Sistema de Reputação Left_bar_bleue30/30[Prof~] Sistema de Reputação Empty_bar_bleue  (30/30)

Ir para o topo Ir para baixo

[Prof~] Sistema de Reputação Empty Re: [Prof~] Sistema de Reputação

Mensagem por Profane ~ Sáb Abr 02, 2022 9:00 pm

Hayashi escreveu:não consegui, tá dando erro no text

Meu patrãooo me ajude...

Vou dar o Exemplo na EO 2.0, baixei aqui para mandar.

Essa aqui é a SUB na EO 2.0 - Em Estado Original.
Código:

Public Sub DrawPlayerName(ByVal Index As Long)
Dim TextX As Long
Dim TextY As Long
Dim color As Long
Dim Name As String

    ' If debug mode, handle error then exit out
    If Options.Debug = 1 Then On Error GoTo errorhandler

    ' Check access level
    If GetPlayerPK(Index) = NO Then

        Select Case GetPlayerAccess(Index)
            Case 0
                color = RGB(255, 96, 0)
            Case 1
                color = QBColor(DarkGrey)
            Case 2
                color = QBColor(Cyan)
            Case 3
                color = QBColor(BrightGreen)
            Case 4
                color = QBColor(Yellow)
        End Select

    Else
        color = QBColor(BrightRed)
    End If

    Name = Trim$(Player(Index).Name)
    ' calc pos
    TextX = ConvertMapX(GetPlayerX(Index) * PIC_X) + Player(Index).XOffset + (PIC_X \ 2) - getWidth(TexthDC, (Trim$(Name)))
    If GetPlayerSprite(Index) < 1 Or GetPlayerSprite(Index) > NumCharacters Then
        TextY = ConvertMapY(GetPlayerY(Index) * PIC_Y) + Player(Index).YOffset - 16
    Else
        ' Determine location for text
        TextY = ConvertMapY(GetPlayerY(Index) * PIC_Y) + Player(Index).YOffset - (DDSD_Character(GetPlayerSprite(Index)).lHeight / 4) + 16
    End If

    ' Draw name
    Call DrawText(TexthDC, TextX, TextY, Name, color)
   
    ' Error handler
    Exit Sub
errorhandler:
    HandleError "DrawPlayerName", "modText", Err.Number, Err.Description, Err.Source, Err.HelpContext
    Err.Clear
    Exit Sub
End Sub

Agora vou editar com o Exemplo.

Código:
Public Sub DrawPlayerName(ByVal Index As Long)
Dim TextX As Long
Dim TextY As Long
Dim color As Long
Dim Name As String

    ' If debug mode, handle error then exit out
    If Options.Debug = 1 Then On Error GoTo errorhandler

    ' Check access level
    If GetPlayerPK(Index) = NO Then

        Select Case GetPlayerAccess(Index)
            Case 0
                color = RGB(255, 96, 0)
            Case 1
                color = QBColor(DarkGrey)
            Case 2
                color = QBColor(Cyan)
            Case 3
                color = QBColor(BrightGreen)
            Case 4
                color = QBColor(Yellow)
        End Select

    Else
        color = QBColor(BrightRed)
    End If

    Name = Trim$(Player(Index).Name)
   
    ' Reputação Aplicando Valor Antes ou Depois do nome do Player.
    Select Case Player(Index).Reputation
        Case 0 To 100 ' ANtes do Nome do Player
            Name = "Safadinho " & Name
        Case 101 To 200 ' Antes do Nome do Player
            Name = "Delicioso " & Name
        Case 201 To 300 ' Depois do Nome do Player
            Name = Name & " do Bju na Boka"
    End Select
   
    ' calc pos
    TextX = ConvertMapX(GetPlayerX(Index) * PIC_X) + Player(Index).XOffset + (PIC_X \ 2) - getWidth(TexthDC, (Trim$(Name)))
    If GetPlayerSprite(Index) < 1 Or GetPlayerSprite(Index) > NumCharacters Then
        TextY = ConvertMapY(GetPlayerY(Index) * PIC_Y) + Player(Index).YOffset - 16
    Else
        ' Determine location for text
        TextY = ConvertMapY(GetPlayerY(Index) * PIC_Y) + Player(Index).YOffset - (DDSD_Character(GetPlayerSprite(Index)).lHeight / 4) + 16
    End If

    ' Draw name
    Call DrawText(TexthDC, TextX, TextY, Name, color)
   
    ' Error handler
    Exit Sub
errorhandler:
    HandleError "DrawPlayerName", "modText", Err.Number, Err.Description, Err.Source, Err.HelpContext
    Err.Clear
    Exit Sub
End Sub

Lembrando que repassei o olho rapidinho pelo sistema e o foco dele é ser leve para "mySelf" apenas, no caso apenas eu recebo meu valor e é isso, logo não teriamos atualizado o valor de Reputation de outros jogadores, que agora é algo que precisamos. 

Ja... que o mesmo influenciaria no Nome do Jogador que é algo que em padrão é visto a todos. 

Então você precisaria ir no Cliente e Servidor adicionar umas linhas...

Tem de ser adicionada uma Linha pra Reputation ser atualizada com algo, eu no momento escolhi a PlayerData() já que seria mais rápido pra solucionar a questão.

No Cliente...
Procura por
Código:
Private Sub HandlePlayerData(ByVal Index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)

Na linha abaixo de...

Código:
Call SetPlayerPK(i, Buffer.ReadLong)

Adiciona...

Código:
Player(i).Reputation = Buffer.ReadLong

Agora para o Server ~

Procura por...

Código:
Function PlayerData(ByVal index As Long) As Byte()

Abaixo de...

Código:
Buffer.WriteLong GetPlayerPK(index)

Você adiciona...

Código:
Buffer.WriteLong Player(Index).Reputation


E estaria pronto, se fizer tudo direitinho.

_________________
"Mistress of shattered hopes and forever broken dreams"
Profane ~
Profane ~
Colaborador
Colaborador

Mensagens : 818
Créditos : 130

Hayashi gosta desta mensagem

Ir para o topo Ir para baixo

[Prof~] Sistema de Reputação Empty Re: [Prof~] Sistema de Reputação

Mensagem por GalaxyHells Sex Set 23, 2022 11:06 am

ala

_________________
[Prof~] Sistema de Reputação 90yel0
GalaxyHells
GalaxyHells
Ocasional
Ocasional

Mensagens : 196
Créditos : 22

Ficha do personagem
Nível: 1
Experiência:
[Prof~] Sistema de Reputação Left_bar_bleue0/0[Prof~] Sistema de Reputação Empty_bar_bleue  (0/0)
Vida:
[Prof~] Sistema de Reputação Left_bar_bleue30/30[Prof~] Sistema de Reputação Empty_bar_bleue  (30/30)

Ir para o topo Ir para baixo

[Prof~] Sistema de Reputação Empty Re: [Prof~] Sistema de Reputação

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