public OnPlayerDeath(playerid, killerid, reason)
{
if(PlayerInfo[playerid][EnDuelo] == 1)
{
new Float:vida[2];
GetPlayerHealth(playerid,vida[0]);
GetPlayerArmour(playerid, vida[1]);
if(vida[1] >= 1.0)
{
format(iMessage, sizeof(iMessage), "%s ha ganado el duelo a %s con %02d de vida y %02d de chaleco.", Nombre(killerid), Nombre(playerid), vida[0], vida[1]);
SendClientMessageToAll(Amarillo, iMessage);
}
else if(vida[0] <= 100.0)
{
format(iMessage, sizeof(iMessage), "%s ha ganado el duelo a %s con %02d de vida.", Nombre(killerid), Nombre(playerid), vida[0]);
SendClientMessageToAll(Amarillo, iMessage);
}
PlayerInfo[killerid][DueloScore]++;
PlayerInfo[killerid][Dueloid] = 999;
PlayerInfo[playerid][DueloPerdido]++;
PlayerInfo[playerid][EnDuelo] = 0;
PlayerInfo[killerid][EnDuelo] = 1;
DueloActivo = false;
SpawnPlayer(killerid);
}
return 1;
}
public OnPlayerDeath(playerid, killerid, reason) { DueloActivo = false; Aqui va lo demas que tienes
public OnPlayerDeath(playerid, killerid, reason)
{
if(PlayerInfo[playerid][EnDuelo] == 1)
{
new Float:vida[2];
GetPlayerHealth(playerid,vida[0]);
GetPlayerArmour(playerid, vida[1]);
if(vida[1] >= 1.0)
{
format(iMessage, sizeof(iMessage), "%s ha ganado el duelo a %s con %02d de vida y %02d de chaleco.", Nombre(killerid), Nombre(playerid), vida[0], vida[1]);
SendClientMessageToAll(Amarillo, iMessage);
}
else if(vida[0] <= 100.0)
{
format(iMessage, sizeof(iMessage), "%s ha ganado el duelo a %s con %02d de vida.", Nombre(killerid), Nombre(playerid), vida[0]);
SendClientMessageToAll(Amarillo, iMessage);
}
if(killerid != INVALID_PLAYER_ID)
{
PlayerInfo[killerid][DueloScore]++;
PlayerInfo[killerid][Dueloid] = 999;
PlayerInfo[killerid][EnDuelo] = 1;
SpawnPlayer(killerid);
}
PlayerInfo[playerid][DueloPerdido]++;
PlayerInfo[playerid][EnDuelo] = 0;
DueloActivo = false;
}
return 1;
}
Siempre tienes que chequear que killerid no sea INVALID_PLAYER_ID..
|
public OnPlayerDeath(playerid, killerid, reason)
{
SendDeathMessage(killerid, playerid, reason);
if(killerid != INVALID_PLAYER_ID)
{
PlayerInfo[killerid][Matados]++;
PlayerInfo[killerid][ScoreDM]++;
}
PlayerInfo[playerid][Muertes]++;
if(PlayerInfo[playerid][EnDuelo] == 1)
{
if(killerid != INVALID_PLAYER_ID)
{
PlayerInfo[killerid][DueloScore]++;
PlayerInfo[killerid][Dueloid] = 999;
PlayerInfo[killerid][EnDuelo] = 0;
SpawnPlayer(killerid);
new Float:vida[2];
GetPlayerHealth(playerid, vida[0]);
GetPlayerArmour(playerid, vida[1]);
if(vida[1] >= 0.1)
{
format(iMessage, sizeof(iMessage), "%s ha ganado el duelo a %s con %02d de vida y %02d de chaleco.", Nombre(killerid), Nombre(playerid), vida[0], vida[1]);
SendClientMessageToAll(Amarillo, iMessage);
}
else if(vida[0] <= 100.0)
{
format(iMessage, sizeof(iMessage), "%s ha ganado el duelo a %s con %02d de vida.", Nombre(killerid), Nombre(playerid), vida[0]);
SendClientMessageToAll(Amarillo, iMessage);
}
}
PlayerInfo[playerid][DueloPerdido]++;
PlayerInfo[playerid][EnDuelo] = 0;
DueloActivo = false;
}
return 1;
}
if(killerid != INVALID_PLAYER_ID)
{
PlayerInfo[killerid][DueloScore]++; // No deberнa agregar esto abajo si es invalid player id el que segun es killerid no seteara las variables ??.
PlayerInfo[killerid][Dueloid] = 999;
PlayerInfo[killerid][EnDuelo] = 0;
SpawnPlayer(killerid);
}
PlayerInfo[playerid][DueloPerdido]++;
PlayerInfo[playerid][EnDuelo] = 0;
DueloActivo = false;
}
if(killerid != INVALID_PLAYER_ID)
{
// si es diferente de INVALID_player_ID
}
else
{
// si murio por causa de un suicidio o algo que no sea un jugador. (aquн puedes poner que el jugador tal tal gano porque el otro se suicidу.
}
public OnPlayerDeath(playerid, killerid, reason)
{
SendDeathMessage(killerid, playerid, reason);
if(killerid != INVALID_PLAYER_ID)
{
PlayerInfo[killerid][Matados]++;
PlayerInfo[killerid][ScoreDM]++;
}
PlayerInfo[playerid][Muertes]++;
if(PlayerInfo[playerid][EnDuelo] == 1)
{
new Float:vida[2];
GetPlayerHealth(playerid, vida[0]);
GetPlayerArmour(playerid, vida[1]);
if(killerid != INVALID_PLAYER_ID)
{
PlayerInfo[killerid][DueloScore]++;
PlayerInfo[killerid][Dueloid] = 999;
PlayerInfo[killerid][EnDuelo] = 0;
SpawnPlayer(killerid);
if(vida[1] >= 0.1)
{
format(iMessage, sizeof(iMessage), "%s ha ganado el duelo a %s con %.2f de vida y %.2f de chaleco.", Nombre(killerid), Nombre(playerid), vida[0], vida[1]);
SendClientMessageToAll(Amarillo, iMessage);
}
else if(vida[0] <= 100.0)
{
format(iMessage, sizeof(iMessage), "%s ha ganado el duelo a %s con %.2f de vida.", Nombre(killerid), Nombre(playerid), vida[0]);
SendClientMessageToAll(Amarillo, iMessage);
}
}
else
{
format(iMessage, sizeof(iMessage), "%s ha ganado el duelo a %s con %.2f de vida y %.2f de chaleco(suicidio).", Nombre(killerid), Nombre(playerid), vida[0], vida[1]);
SendClientMessageToAll(Amarillo, iMessage);
// Aqui como compruebo al que estaba en duelo como killerid si es invalid_player_id, como seteo las variables a el ??
for(new j = 0; j < MAX_PLAYERS; j++) // puedo usar esto ? :s
{
if(IsPlayerConnected(j))
{
if(PlayerInfo[j][EnDuelo] == 1)
{
PlayerInfo[j][Dueloid] = 999;
PlayerInfo[j][EnDuelo] = 0;
}
}
}
}
PlayerInfo[playerid][DueloPerdido]++;
PlayerInfo[playerid][EnDuelo] = 0;
PlayerInfo[playerid][Dueloid] = 999;
DueloActivo = false;
}
return 1;
}
switch(reason) { case 49 .. 54: { // si se suicidу } }
No, creo que eso no te vendrнa para lo que quieres, la callback esa no tiene un parбmetro "reason"?
Код:
switch(reason) { case 49 .. 54: { // si se suicidу } } |
switch(reason)
{
case 49 .. 54:
{
// si se suicidу, aquн seteas las variables.
}
}
if(killerid != INVALID_PLAYER_ID)
{
// si es diferente de INVALID_player_ID
}
else
{
// si murio por causa de un suicidio o algo que no sea un jugador. (aquн puedes poner que el jugador tal tal gano porque el otro se suicidу.
// aqui seteas las variables las pones.
}