Weird death bug. -
[TRP]Eagle - 31.10.2010
Ugh. I recently started scripting a new GM but I have a small bug which is quite frustrating.
As soon as somebody gets killed he is dead for the others but...the player who got killed is still alive(with 1hp) and cannot be seen by any other players, neither can he deal any damage.
Is there a way to fix this?
Re: Weird death bug. -
The_Moddler - 31.10.2010
It's a SAMP related bug I think... also check your OnPlayerUpdate callback.
Re: Weird death bug. -
[TRP]Eagle - 31.10.2010
This is all I have in it and I don't think it should give me any problem.
pawn Code:
public OnPlayerUpdate(playerid)
{
if(GetPlayerWeapon(playerid) == WEAPON_MINIGUN) {
Kick(playerid);
return 0;
}
if(GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_USEJETPACK) {
Kick(playerid);
return 0;
}
return 1;
}
Re: Weird death bug. -
The_Moddler - 31.10.2010
Ah, so that's all you got?
Show OnPlayerDeath then..
Re: Weird death bug. -
[TRP]Eagle - 31.10.2010
pawn Code:
public OnPlayerDeath(playerid, killerid, reason)
{
SendDeathMessage(killerid,playerid,reason);
SetPlayerScore(killerid, GetPlayerScore(killerid) + 1);
GivePlayerMoney(killerid, 500);
if(gTeam[killerid] == gTeam[playerid])
{
SetPlayerScore(killerid, GetPlayerScore(killerid) - 2);
GivePlayerMoney(killerid, -200);
}
ResetPlayerWeapons(playerid);
ShowPlayerMarkers(0);
//counts the kills
kills[killerid] += 1;
new string[11+7];
format(string, sizeof string, "kills: %d", kills[killerid]);
TextDrawSetString(killcount[killerid], string);
TextDrawHideForPlayer(playerid,killcount[playerid]);
//killing spree
new kName[128], kstring[128];
GetPlayerName(killerid, kName, sizeof(kName));
PlayerKills[killerid] = PlayerKills[killerid] + 1;
PlayerKills[playerid] = 0;
if (PlayerKills[killerid] == 4 && Dominating[killerid] == 1)
{
format(kstring, sizeof(kstring), "~w~%s ~r~ is dominating!", kName);
GameTextForAll(kstring, 1000, 1);
SetPlayerScore(killerid, GetPlayerScore(killerid) + 5);
GivePlayerMoney(killerid, 1000);
return 1;
}
if (PlayerKills[killerid] == 6)
{
format(kstring, sizeof(kstring), "~w~%s ~r~is on a rampage!", kName);
SetPlayerScore(killerid, GetPlayerScore(killerid) + 10);
GameTextForAll(kstring, 1000, 1);
GivePlayerMoney(killerid, 1500);
return 1;
}
if (PlayerKills[killerid] == 8)
{
format(kstring, sizeof(kstring), "~w~%s ~r~is on a killing spree!", kName);
GameTextForAll(kstring, 1000, 1);
SetPlayerScore(killerid, GetPlayerScore(killerid) + 15);
GivePlayerMoney(killerid, 2000);
return 1;
}
if (PlayerKills[killerid] == 10)
{
format(kstring, sizeof(kstring), "~r~monster kill ~r~%s!", kName);
GameTextForAll(kstring, 1000, 1);
SetPlayerScore(killerid, GetPlayerScore(killerid) + 20);
GivePlayerMoney(killerid, 2500);
ShowPlayerMarkers(1);
return 1;
}
if (PlayerKills[killerid] == 12)
{
format(kstring, sizeof(kstring), "~w~%s ~r~is unstoppable!", kName);
GameTextForAll(kstring, 1000, 1);
SetPlayerScore(killerid, GetPlayerScore(killerid) + 25);
GivePlayerMoney(killerid, 3000);
return 1;
}
if (PlayerKills[killerid] == 14)
{
format(kstring, sizeof(kstring), "~r~ultra kill ~w~%s!", kName);
GameTextForAll(kstring, 1000, 1);
SetPlayerScore(killerid, GetPlayerScore(killerid) + 30);
GivePlayerMoney(killerid, 3500);
return 1;
}
if (PlayerKills[killerid] == 16)
{
format(kstring, sizeof(kstring), "~w~%s ~r~is godlike!", kName);
GameTextForAll(kstring, 1000, 1);
SetPlayerScore(killerid, GetPlayerScore(killerid) + 35);
GivePlayerMoney(killerid, 4000);
return 1;
}
if (PlayerKills[killerid] == 18)
{
format(kstring, sizeof(kstring), "~r~wicked sick ~w~%s!", kName);
GameTextForAll(kstring, 1000, 1);
SetPlayerScore(killerid, GetPlayerScore(killerid) + 40);
GivePlayerMoney(killerid, 4500);
return 1;
}
if (PlayerKills[killerid] == 20)
{
format(kstring, sizeof(kstring), "~r~ludicrous kill ~w~%s!", kName);
GameTextForAll(kstring, 1000, 1);
SetPlayerScore(killerid, GetPlayerScore(killerid) + 45);
GivePlayerMoney(killerid, 5000);
return 1;
}
if (PlayerKills[killerid] == 24)
{
format(kstring, sizeof(kstring), "~r~holy shit ~w~%s!", kName);
GameTextForAll(kstring, 1000, 1);
SetPlayerScore(killerid, GetPlayerScore(killerid) + 50);
GivePlayerMoney(killerid, 5500);
return 1;
}
return 1;
}
There we go. I think the problem is ResetPlayerWeapons
Re: Weird death bug. -
The_Moddler - 31.10.2010
pawn Code:
public OnPlayerDeath(playerid, killerid, reason)
{
SendDeathMessage(killerid, playerid, reason);
//The killer
if(IsPlayerConnected(killerid))
{
new string[64], name[25];
//Kill counting
kills[killerid]++;
format(string, 64, "kills: %d", kills[killerid]);
TextDrawSetString(killcount[killerid], string);
//Spree
GetPlayerName(killerid, name, 25);
PlayerKills[killerid] = PlayerKills[killerid]+1;
if(PlayerKills[killerid] == 4 && Dominating[killerid] == 1)
{
format(string, 64, "~w~%s ~r~ is dominating!", name);
GameTextForAll(string, 1000, 1);
SetPlayerScore(killerid, GetPlayerScore(killerid) + 5);
GivePlayerMoney(killerid, 1000);
return 1;
}
if(PlayerKills[killerid] == 6)
{
format(string, 64, "~w~%s ~r~is on a rampage!", name);
SetPlayerScore(killerid, GetPlayerScore(killerid) + 10);
GameTextForAll(string, 1000, 1);
GivePlayerMoney(killerid, 1500);
return 1;
}
if(PlayerKills[killerid] == 8)
{
format(string, 64, "~w~%s ~r~is on a killing spree!", name);
GameTextForAll(string, 1000, 1);
SetPlayerScore(killerid, GetPlayerScore(killerid) + 15);
GivePlayerMoney(killerid, 2000);
return 1;
}
if(PlayerKills[killerid] == 10)
{
format(string, 64, "~r~monster kill ~r~%s!", name);
GameTextForAll(string, 1000, 1);
SetPlayerScore(killerid, GetPlayerScore(killerid) + 20);
GivePlayerMoney(killerid, 2500);
ShowPlayerMarkers(1);
return 1;
}
if(PlayerKills[killerid] == 12)
{
format(string, 64, "~w~%s ~r~is unstoppable!", name);
GameTextForAll(string, 1000, 1);
SetPlayerScore(killerid, GetPlayerScore(killerid) + 25);
GivePlayerMoney(killerid, 3000);
return 1;
}
if(PlayerKills[killerid] == 14)
{
format(string, 64, "~r~ultra kill ~w~%s!", name);
GameTextForAll(string, 1000, 1);
SetPlayerScore(killerid, GetPlayerScore(killerid) + 30);
GivePlayerMoney(killerid, 3500);
return 1;
}
if(PlayerKills[killerid] == 16)
{
format(string, 64, "~w~%s ~r~is godlike!", name);
GameTextForAll(string, 1000, 1);
SetPlayerScore(killerid, GetPlayerScore(killerid) + 35);
GivePlayerMoney(killerid, 4000);
return 1;
}
if(PlayerKills[killerid] == 18)
{
format(string, 64, "~r~wicked sick ~w~%s!", name);
GameTextForAll(string, 1000, 1);
SetPlayerScore(killerid, GetPlayerScore(killerid) + 40);
GivePlayerMoney(killerid, 4500);
return 1;
}
if(PlayerKills[killerid] == 20)
{
format(string, 64, "~r~ludicrous kill ~w~%s!", name);
GameTextForAll(string, 1000, 1);
SetPlayerScore(killerid, GetPlayerScore(killerid) + 45);
GivePlayerMoney(killerid, 5000);
return 1;
}
if(PlayerKills[killerid] == 24)
{
format(string, 64, "~r~holy shit ~w~%s!", name);
GameTextForAll(string, 1000, 1);
SetPlayerScore(killerid, GetPlayerScore(killerid) + 50);
GivePlayerMoney(killerid, 5500);
return 1;
}
if(gTeam[killerid] == gTeam[playerid])
{
SetPlayerScore(killerid, GetPlayerScore(killerid)-2);
GivePlayerMoney(killerid, -200);
}
else
{
SetPlayerScore(killerid, GetPlayerScore(killerid)+1);
GivePlayerMoney(killerid, 500);
ShowPlayerMarkers(0);
}
}
//Killed person
TextDrawHideForPlayer(playerid, killcount[playerid]);
PlayerKills[playerid] = 0;
return 1;
}
Try that.
Respuesta: Weird death bug. -
xenowort - 31.10.2010
One suggestion, I think that instead of using OnPlayerUpdate, better to use a timer and arrays that give Warns kicker and if there is 3 Warns kick it.
OnPlayerUpdate may have problems with the client.
The client does not receive the packet, the server takes it as a weapon that was cheat, but actually just bought the package was lost and then I kick
Escuchar
Leer fonйticamente
Diccionario - Ver diccionario detalladoconjunciуn0.or
Re: Weird death bug. -
Mean - 31.10.2010
BTW use return 1; not return 0; in OnPlayerUpdate