//My afk coding
CMD:afk(playerid,params[])
{
if( pInfo[playerid][Spawned] != 1)
{
ShowMessage(playerid, red, 9);
return 1;
}
if(InEvent[playerid] == 1)
{
ShowMessage(playerid, red, 11);
}
if(Afk[playerid] == 1)
{
SendClientMessage(playerid,red,"You are already /afk. Use the /back command to return to playing the game." );
}
else
{
Afk[playerid] = 1;
GetPlayerHealth(playerid, afkH[playerid]);
TogglePlayerControllable(playerid,0);
GetPlayerArmour(playerid, afkA[playerid]);
SetPlayerHealth(playerid,300000);
SetPlayerArmour(playerid,100000);
GetPlayerName(playerid, afkname, sizeof(afkname));
format(afkstring,sizeof(afkstring),"[AFK]%s",afkname);
SetPlayerName(playerid, afkstring);
SendClientMessage(playerid,red,"Your Status is now set to AFK. (You have 5mins or get kick)");
}
return 1;
}
CMD:afk(playerid,params[])
{
new afkcount;
if(GetTickCount() - afkcount < (60000)) return SendClientMessage(playerid, -1, "You need to wait 60 seconds before using this command again");
if( pInfo[playerid][Spawned] != 1)
{
ShowMessage(playerid, red, 9);
return 1;
}
if(InEvent[playerid] == 1)
{
ShowMessage(playerid, red, 11);
}
if(Afk[playerid] == 1)
{
SendClientMessage(playerid,red,"You are already /afk. Use the /back command to return to playing the game." );
}
else
{
Afk[playerid] = 1;
afkcount = GetTickCount();
GetPlayerHealth(playerid, afkH[playerid]);
TogglePlayerControllable(playerid,0);
GetPlayerArmour(playerid, afkA[playerid]);
SetPlayerHealth(playerid,300000);
SetPlayerArmour(playerid,100000);
GetPlayerName(playerid, afkname, sizeof(afkname));
format(afkstring,sizeof(afkstring),"[AFK]%s",afkname);
SetPlayerName(playerid, afkstring);
SendClientMessage(playerid,red,"Your Status is now set to AFK. (You have 5mins or get kick)");
}
return 1;
}
|
hello, below i have added you 60 seconds for a player needs to wait to go afk again.
Код:
CMD:afk(playerid,params[])
{
new afkcount;
if(GetTickCount() - afkcount < (60000)) return SendClientMessage(playerid, -1, "You need to wait 60 seconds before using this command again");
if( pInfo[playerid][Spawned] != 1)
{
ShowMessage(playerid, red, 9);
return 1;
}
if(InEvent[playerid] == 1)
{
ShowMessage(playerid, red, 11);
}
if(Afk[playerid] == 1)
{
SendClientMessage(playerid,red,"You are already /afk. Use the /back command to return to playing the game." );
}
else
{
Afk[playerid] = 1;
afkcount = GetTickCount();
GetPlayerHealth(playerid, afkH[playerid]);
TogglePlayerControllable(playerid,0);
GetPlayerArmour(playerid, afkA[playerid]);
SetPlayerHealth(playerid,300000);
SetPlayerArmour(playerid,100000);
GetPlayerName(playerid, afkname, sizeof(afkname));
format(afkstring,sizeof(afkstring),"[AFK]%s",afkname);
SetPlayerName(playerid, afkstring);
SendClientMessage(playerid,red,"Your Status is now set to AFK. (You have 5mins or get kick)");
}
return 1;
}
|
afkcount = GetTickCount();
public OnPlayerTakeDamage(playerid, damagedid, Float:amount, weaponid)
new afkcount;
if((gettime() - variable[playerid]) < duration) // Player has not waited long enough
OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart)
{
if(issuerid != INVALID_PLAYER_ID && issuerid != playerid) // The player was damaged by another player
{
SetPVarInt(playerid, "LastDamaged", gettime());
}
return 1;
}
CMD:afk(playerid, params[])
{
if((gettime() - GetPVarInt(playerid, "LastDamaged")) < 60) return SendClientMessage(playerid, -1, "You have been damaged recently, you can't use this command.");
// Rest of command...
}
|
Player takes damage in OnPlayerTakeDamage. You could also technically use OnPlayerGiveDamage.
If the player was damaged by another player, update their 'last damaged' variable to the current timestamp. PHP код:
PHP код:
https://sampwiki.blast.hk/wiki/OnPlayerGiveDamage https://sampwiki.blast.hk/wiki/Gettime https://sampwiki.blast.hk/wiki/GetTickCount |
// would it be
SetPVarInt(playerid, "LastDamaged", 0);