Burgershot
  • Home
  • Members
  • Team
  • Help
  • Search
  • Register
  • Login
  • Home
  • Members
  • Help
  • Search
Burgershot SA-MP Support [Server] Bug when player freezes

 
  • 0 Vote(s) - 0 Average
Server Bug when player freezes
RhaegarX
Offline

Burgershot Member
Posts: 66
Threads: 12
Joined: Nov 2020
Reputation: 4
#12
2021-02-23, 01:37 AM (This post was last modified: 2021-02-23, 01:41 AM by RhaegarX.)
Sorry for remembering this topic, but I need to clear up some doubts.

I used the include weapon-config mentioned above, but I didn't like the modifications it carries with it. So I decided to develop my own solution to the problem of that topic.

PHP Code:
new bool:freezedPlayer[MAX_PLAYERS];
new 
bool:canReceveidDamageFreezed[MAX_PLAYERS];

TogglePlayerControllableEx(playerid, bool:status, bool:damage)
{
    canReceveidDamageFreezed[playerid] = damage;
if (
status == false) freezedPlayer[playerid] = true;
else 
freezedPlayer[playerid] = false;
TogglePlayerControllable(playerid, status);
}

public 
OnPlayerConnect(playerid)
{
    freezedPlayer[playerid] = false;
canReceveidDamageFreezed[playerid] = false;
}

public 
OnPlayerSpawn(playerid)
{
    freezedPlayer[playerid] = false;
}

// This command is just an example of the server command itself.
CMD:freeze(playerid, params[])
{
    new id;
if (
sscanf(params, "u", id))
{
return 
SendClientMessage(playerid, COLOR_INVALID, "USE: /freeze [id]");
}
if (!
IsPlayerConnected(id) || id == INVALID_PLAYER_ID)
{
return 
SendClientMessage(playerid, COLOR_INVALID, "Invalid Player");
}

    TogglePlayerControllableEx(id, false, true);
    return 1;
}

public 
OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid, bodypart)
{
if (
playerid != INVALID_PLAYER_ID)
{
// Corrigi o Dano em Roubo e Lavagem de Dinheiro
if (freezedPlayer[damagedid] == true && canReceveidDamageFreezed[damagedid] == true)
{
if (
Armour > 0)
{
if (
amount > Armour)
{
new 
Float:leftDamage = (amount - Armour), Float:newLife = (Life - leftDamage);
SetPlayerArmour(damagedid, 0);
SetPlayerHealth(damagedid, newLife);
}
else
{
new 
Float:newArmour = (Armour - amount);
SetPlayerArmour(damagedid, newArmour);
}
}
else
{
if (
amount > Life)
{
CallLocalFunction("OnPlayerDeath", "iii", damagedid, playerid, GetPlayerWeapon(playerid));
SetPlayerHealth(damagedid, 100);
SpawnPlayer(damagedid);
}
else
{
new 
Float:newLife = (Life - amount);
SetPlayerHealth(damagedid, newLife);
}
}
}
//
}
return 
1;
} 


Pastebin: Code SAMP - Pastebin.com



That way I can control when the player can take damage or not when frozen, what I would like to know is if there is any problem with me calling OnPlayerDeath to simulate a false death as I used in the code above, instead of causing death effectively.
« Next Oldest | Next Newest »



Messages In This Thread
Bug when player freezes - by RhaegarX - 2021-02-12, 08:18 PM
RE: Bug when player freezes - by Radical - 2021-02-12, 08:35 PM
RE: Bug when player freezes - by RhaegarX - 2021-02-12, 08:38 PM
RE: Bug when player freezes - by RhaegarX - 2021-02-12, 09:12 PM
RE: Bug when player freezes - by Radical - 2021-02-12, 09:27 PM
RE: Bug when player freezes - by RhaegarX - 2021-02-12, 09:34 PM
RE: Bug when player freezes - by RhaegarX - 2021-02-12, 09:35 PM
RE: Bug when player freezes - by Radical - 2021-02-12, 09:44 PM
RE: Bug when player freezes - by RhaegarX - 2021-02-12, 09:57 PM
RE: Bug when player freezes - by arber - 2021-02-12, 09:53 PM
RE: Bug when player freezes - by RhaegarX - 2021-02-12, 09:58 PM
RE: Bug when player freezes - by RhaegarX - 2021-02-23, 01:37 AM

  • View a Printable Version
  • Subscribe to this thread
Forum Jump:

© Burgershot - Powered by our Community and MyBB Original Theme by Emerald

Linear Mode
Threaded Mode