[Ayuda] Error con el Score
#1

Buenas a todos los del foro, vengo a molestarlos con una simple pregunta que tengo desde hace tiempo.
Resulta que estoy haciendo mi server Freeroam y hay algo que me inquieta bastante y quisiera saber si alguien me puede dar una mano respecto a ello.

Bueno ! : El problema es que cuando el jugador Spawnea se le otorgan 50000 de dinero, pero a la vez se le otorgan 50000 de score .
La cuestiтn es que cuando matas a alguien te da 10000 de dinero pero tambiиn 10000 de score.

Alguien me puede decir como solucionar esto ?.

Muchas gracias de antemano.
Reply
#2

Revisa la funcion publica public OnPlayerDeath(playerid, killerid, reason) alli debe estar el codigo que te manda 10k de score, suerte.
Reply
#3

Quote:
Originally Posted by jotajeda
Посмотреть сообщение
Revisa la funcion publica public OnPlayerDeath(playerid, killerid, reason) alli debe estar el codigo que te manda 10k de score, suerte.
Tengo esto en "OnPlayerDeath"

Код:
public OnPlayerDeath(playerid, killerid, reason)
{
    new playercash;
	if(killerid == INVALID_PLAYER_ID) {
        SendDeathMessage(INVALID_PLAYER_ID,playerid,reason);
        ResetPlayerMoney(playerid);
	} else {
	    	SendDeathMessage(killerid,playerid,reason);
			SetPlayerScore(killerid,GetPlayerScore(killerid)+1);
			playercash = GetPlayerMoney(playerid);
			if (playercash > 0)  {
				GivePlayerMoney(killerid, playercash);
				ResetPlayerMoney(playerid);
			}
			else
			{
			}
     	}
 	return 1;
}
Reply
#4

Debes tener la funciуn que traer por defecto GrandLarc.
Reply
#5

Quote:
Originally Posted by xTexTx
Посмотреть сообщение
Debes tener la funciуn que traer por defecto GrandLarc.
No, son funciones dentro del gamemode "lvdm"
Reply
#6

Quote:
Originally Posted by TheVladimir
Посмотреть сообщение
Tengo esto en "OnPlayerDeath"

Код:
public OnPlayerDeath(playerid, killerid, reason)
{
    new playercash;
	if(killerid == INVALID_PLAYER_ID) {
        SendDeathMessage(INVALID_PLAYER_ID,playerid,reason);
        ResetPlayerMoney(playerid);
	} else {
	    	SendDeathMessage(killerid,playerid,reason);
			SetPlayerScore(killerid,GetPlayerScore(killerid)+1);
			playercash = GetPlayerMoney(playerid);
			if (playercash > 0)  {
				GivePlayerMoney(killerid, playercash);
				ResetPlayerMoney(playerid);
			}
			else
			{
			}
     	}
 	return 1;
}
Te recomiendo que pongas con variables porque asн como tienes cualquier con cheat's pueden darse score facilmente, ejemplo:
pawn Код:
new score[MAX_PLAYERS]; // o tu variable de score


public OnPlayerDeath(playerid, killerid, reason)
{
    new playercash;
    if(killerid == INVALID_PLAYER_ID)
    {
        SendDeathMessage(INVALID_PLAYER_ID,playerid,reason);
        ResetPlayerMoney(playerid);
    }
    else
    {
        score[killerid]++;//suma cada vez que mata
        SendDeathMessage(killerid,playerid,reason);
        SetPlayerScore(killerid,score[killerid]);// pone lo de la variable
        playercash = GetPlayerMoney(playerid);
        if (playercash > 0)
        {
            GivePlayerMoney(killerid, playercash);
            ResetPlayerMoney(playerid);// porque reseteas luego de darle al player?
        }
    }
    return 1;
}
Reply
#7

JOTAJEDA Muchas gracias, ya pude solucionarlo con eso y quitando este comando.

Код:
public MoneyGrubScoreUpdate()
{
	new CashScore;
	new name[MAX_PLAYER_NAME];
	//new string[256];
	for(new i=0; i<MAX_PLAYERS; i++)
	{
		if (IsPlayerConnected(i))
		{
			GetPlayerName(i, name, sizeof(name));
   			CashScore = GetPlayerMoney(i);
			SetPlayerScore(i, CashScore);
			if (CashScore > CashScoreOld)
			{
				CashScoreOld = CashScore;
				//format(string, sizeof(string), "$$$ %s is now in the lead $$$", name);
				//SendClientMessageToAll(COLOR_YELLOW, string);
			}
		}
	}
}
Reply
#8

Quote:
Originally Posted by TheVladimir
Посмотреть сообщение
JOTAJEDA Muchas gracias, ya pude solucionarlo con eso y quitando este comando.

Код:
public MoneyGrubScoreUpdate()
{
	new CashScore;
	new name[MAX_PLAYER_NAME];
	//new string[256];
	for(new i=0; i<MAX_PLAYERS; i++)
	{
		if (IsPlayerConnected(i))
		{
			GetPlayerName(i, name, sizeof(name));
   			CashScore = GetPlayerMoney(i);
			SetPlayerScore(i, CashScore);
			if (CashScore > CashScoreOld)
			{
				CashScoreOld = CashScore;
				//format(string, sizeof(string), "$$$ %s is now in the lead $$$", name);
				//SendClientMessageToAll(COLOR_YELLOW, string);
			}
		}
	}
}
Exacto alli estaba el problema.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)