[Ajuda] Experiкncia
#1

Boa noite.

Tenho um filterscript de login que guarda vбrias informaзхes de uma conta num ficheiro .ini a partir do dini.
O sistema funciona perfeitamente sem qualquer bug.
Esse sistema cria vбrias informaзхes no ficheiro entre elas "Exp" e "Nivel" iguais a 0 e a 1 respetivamente.

Estou a criar outro filterscript que dб 1 Exp por cada kill e que evolui o nнvel a cada nнvel*5 (nнvel 1 para nнvel 2 5 exp, nнvel 2 para nнvel 3 10 exp, etc..)

Tenho a seguinte enum e respetivo vetor no filterscript da exp:
Код:
enum jDados
{
	exp,
	nivel
}

new d[MAX_PLAYERS][jDados];
Ora, para adicionar +1 de exp quando se mata alguem fiz:
Код:
public OnPlayerDeath (playerid, killerid, reason)
{
	d[killerid][exp]++;
}
Porйm, ao matar alguйm, essa exp nгo й atribuнda.
Para visualizar se resultou criei o comando /1 com o ZCMD:
Код:
command(1, playerid, params[])
{
	new temporario[128];
	format(temporario, sizeof(temporario), "Exp: %d Nivel: %d", d[playerid][exp], d[playerid][nivel]);
	SendClientMessage(playerid, 0xFF0000FF, temporario);
	return 1;
}
Este apresenta-me "Exp: 0 Nivel: 1". Apуs matar alguйm e fazer este mesmo comando, a exp nгo muda.

Criei ainda outro comando /add para adicionar 1 Exp e 1 nivel ao jogador o qual funciona:
Код:
command(add, playerid, params[])
{
	d[playerid][exp]++;
	d[playerid][nivel]++;
}
Apуs executar esse comando, executo o comando /1 e reparo que os valores mudaram naquilo que era previsto recebendo assim a mensagem "Exp: 1 Nivel: 2".

Podem-me ajudar em relaзгo ao OnPlayerDeath? Pelo que estou a ver o problema sу pode ser gerado a partir dali.

Obrigado,
hbzi.
Reply
#2

*BUMP*

Se acharam alguma parte confusa digam que eu tento explicar de forma mais simplificada.

hbzi.
Reply
#3

Jб aconteceu isso comigo no onplayerdeath '-'

tenta checar se o killerid й valido antes de dar a exp:

if(killerid != INVALID_PLAYER_ID)

Ou, tenta adicionar assim

d[killerid][exp] += 1;
Reply
#4

Quote:
Originally Posted by arakuta
Посмотреть сообщение
Jб aconteceu isso comigo no onplayerdeath '-'

tenta checar se o killerid й valido antes de dar a exp:

if(killerid != INVALID_PLAYER_ID)

Ou, tenta adicionar assim

d[killerid][exp] += 1;
Desde jб, obrigado pela resposta.

Em relaзгo a d[killerid][exp] += 1 jб tinha experimentado antes e sem sucesso.

Em relaзгo a if(killerid != INVALID_PLAYER_ID) sу poderei experimentar amanhг, mas penso que nгo resolverб o meu problema.
Imaginando eu contra ti: eu = id 0, tu = id 1. Eu mato-te. Й impossнvel teres morrido por alguйm com um ID invбlido uma vez que fui (id 0) que te matei. Logo killerid = 0. Nгo percebo mesmo.

Podem colocar mais possнveis soluзхes.

Obrigado,
hbzi.
Reply
#5

PHP код:
public OnPlayerDeath (playeridkilleridreason)
{
    
d[killerid][exp] = d[killerid][exp] + 1;
    return 
1;

Reply
#6

Quote:
Originally Posted by Murilo_sousa
Посмотреть сообщение
PHP код:
public OnPlayerDeath (playeridkilleridreason)
{
    
d[killerid][exp] = d[killerid][exp] + 1;

Obrigado pela sugestгo. Por acaso nгo testei esse, uma vez que й igual a d[killerid][exp] += 1, mas pode ser que resulte. Como disse acima, sу amanhг poderei testar. Depois posto os desenvolvimentos.

Mais sugestхes de resoluзгo do problema sгo bem-vindas.

hbzi.
Reply
#7

hbz = ... sei que й tu .-.
Tu Tem um Servidor Death Match
Reply
#8

Quote:
Originally Posted by [toːkʲoː]_Shinjuku_.]
Посмотреть сообщение
hbz = ... sei que й tu .-.
Tu Tem um Servidor Death Match
E em que й que isso contribui para a resoluзгo do meu problema?
Reply
#9

Quote:
Originally Posted by Murilo_sousa
Посмотреть сообщение
PHP код:
public OnPlayerDeath (playeridkilleridreason)
{
    
d[killerid][exp] = d[killerid][exp] + 1;
    return 
1;

Nгo funcionou. Mais alguma sugestгo para resolver este problema?

hbzi.
Reply
#10

PHP код:
public OnPlayerDeath (playeridkilleridreason

    if(
killerid != 0xFFFFd[killerid][exp]++;
    return 
1

Caso nгo funcionar й porque estб dando crash em alguma Public OnPlayerDeath seja no seu GM ou em includes...
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)