o server cai por conta desse erro que ocorre, faz tempo que mexi em eo e estou sem base por onde comloeçar, acredito não ter colocado scripts relacionado a vital
3 participantes
Erro no Vital do player
gui408- Ocasional
- Mensagens : 227
Créditos : 10
- Mensagem nº2
Re: Erro no Vital do player
Marca a linha pra saber o erro.
Motodark- Ocasional
- Mensagens : 169
Créditos : 5
- Mensagem nº3
case
GetPlayerVital = Player(Index).vital(vital)
Kotol- Moderador Local
- Mensagens : 77
Créditos : 17
- Mensagem nº4
Re: Erro no Vital do player
Olá amigo!
Não me recordo ao certo em quais dos vários testes fiz no qual saiu este erro, no entanto, vamos tentar consertá-lo?
Vamos lá....
Abra o server de seu projeto, e em "ModPlayer", substitua sua "function":
Por esta:
Muito bem, isso resolve uma boa parte dos erros.
No entanto, tenha em mente uma coisa:
1- Muitas coisas que você adiciona, principalmente em alguma "rec" pode obrigar você a deletar os dados já existentes para que não haja erro de leitura dos valores ou strings.
Exemplo: Na maioria dos casos onde você mexa no tipo "PlayerRec" para excluir algo do tipo dos jogadores, você terá que refazer um jogador novo. Adicionar algo novo não se faz necessário.
E eu adicionar no final uma nova variável para ficar assim:
Não necessitará que eu modifique as contas já existentes, pois o sistema irá ler tudo normalmente.
OBS: ele vai ler o "Aleatorio" que você definiu como 0 , então você deverá indicar um valor. É como se você criasse um espaço no seu guarda roupa com um nome, ele existe lá, mas não tem nada dentro, a não ser que você coloque.
E mudar o "PK as byte" de maneira brusca:
Isso sim pode acarretar severos erros nas contas já existentes.
Não me recordo ao certo em quais dos vários testes fiz no qual saiu este erro, no entanto, vamos tentar consertá-lo?
Vamos lá....
Abra o server de seu projeto, e em "ModPlayer", substitua sua "function":
- Código:
Function GetPlayerVital(ByVal Index As Long, ByVal Vital As Vitals) As Long
Por esta:
- Código:
Function GetPlayerVital(ByVal Index As Long, ByVal Vital As Vitals) As Long
'Previne futuros erros
If Index <= 0 Or Index > MAX_PLAYERS Or Index > Player_HighIndex Then Exit Function
If IsPlaying(Index) = False Then Exit Function
If Vital <= 0 Or Vital > Vitals.Vital_Count - 1 Then Exit Function
GetPlayerVital = Player(Index).Vital(Vital)
End Function
Muito bem, isso resolve uma boa parte dos erros.
No entanto, tenha em mente uma coisa:
1- Muitas coisas que você adiciona, principalmente em alguma "rec" pode obrigar você a deletar os dados já existentes para que não haja erro de leitura dos valores ou strings.
Exemplo: Na maioria dos casos onde você mexa no tipo "PlayerRec" para excluir algo do tipo dos jogadores, você terá que refazer um jogador novo. Adicionar algo novo não se faz necessário.
Caso 1:
Se minha "PlayerRec" for assim:- Código:
Private Type PlayerRec
' Account
Login As String * ACCOUNT_LENGTH
Password As String * NAME_LENGTH
' General
Name As String * ACCOUNT_LENGTH
Sex As Byte
Class As Long
Sprite As Long
Level As Byte
exp As Long
Access As Byte
PK As Byte
End Type
E eu adicionar no final uma nova variável para ficar assim:
- Código:
Private Type PlayerRec
' Account
Login As String * ACCOUNT_LENGTH
Password As String * NAME_LENGTH
' General
Name As String * ACCOUNT_LENGTH
Sex As Byte
Class As Long
Sprite As Long
Level As Byte
exp As Long
Access As Byte
PK As Byte
Aleatorio as Long
End Type
Não necessitará que eu modifique as contas já existentes, pois o sistema irá ler tudo normalmente.
OBS: ele vai ler o "Aleatorio" que você definiu como 0 , então você deverá indicar um valor. É como se você criasse um espaço no seu guarda roupa com um nome, ele existe lá, mas não tem nada dentro, a não ser que você coloque.
Caso 2
Agora é aquela situação em que você tem sua "PlayerRec" e você quer mudar algo. Lembre-se, é mudar, e não adicionar.
Se você tiver sua "PlayerRec" assim por exemplo:
- Código:
Private Type PlayerRec
' Account
Login As String * ACCOUNT_LENGTH
Password As String * NAME_LENGTH
' General
Name As String * ACCOUNT_LENGTH
Sex As Byte
Class As Long
Sprite As Long
Level As Byte
exp As Long
Access As Byte
PK As Byte
End Type
E mudar o "PK as byte" de maneira brusca:
- Código:
Private Type PlayerRec
' Account
Login As String * ACCOUNT_LENGTH
Password As String * NAME_LENGTH
' General
Name As String * ACCOUNT_LENGTH
Sex As Byte
Class As Long
Sprite As Long
Level As Byte
exp As Long
Access As Byte
PK(1 to 20) As String
End Type
Isso sim pode acarretar severos erros nas contas já existentes.
Meu conselho caso dê esses tipos de erros impossíveis, como, por exemplo, você estar mexendo nos mapas, e dar erros incomuns nas magias do nada, você tentar sempre fazer um backup de sua database que indica o erro, e criar uma nova para ver se resolve seu problema.
Caso a substituição da "Sub" que eu indiquei não resolva, faça um backup de suas contas, e exclua todas para verificar se houve resolução, caso não haja, poste mais, e tentaremos verificar a fundo o erro de sua máquina.