I've done this Check Cmd, it is right?
alias vcmp.checkhealth {
if ($vcmp.health($1, $vcmp.getid($1, $4)) == 100) {
vcmp.say $1 Status: Cheats Detected!
vcmp.cheatsdetected $1 $4
}
else vcmp.cheatsnotdetected
}
alias vcmp.checkarmour {
if ($vcmp.armour($1, $vcmp.getid($1, $4)) == 100) {
vcmp.say $1 Status: Cheats Detected!
vcmp.cheatsdetected $1 $4
}
else vcmp.cheatsnotdetected
}
alias vcmp.cheatsnotdetected {
vcmp.setlocation $1 $vcmp.getid($1, $4) -871.455, -683.325, 10.250
vcmp.say $1 No cheats found!
vcmp.setcontrols $1 $4 1
}
alias vcmp.cheatsdetected {
vcmp.setlocation $1 $vcmp.getid($1, $4) 391.282, -506.863, 8.415
vcmp.say $1 Cheats Detected!
vcmp.say $1 Waiting for admins.
}
on *:SIGNAL:vcmp.player.command:{
if ($3 == check) {
if (!$4) vcmp.msg $1 $2 Error - Correct Syntax: ! $+ $3 <id/nick>
elseif (. isin $4) || (, isin $4) || vcmp.msg $1 $2 Error - No negative or decimal amounts
elseif ($vcmp.name($1, $vcmp.id($4)) == $vcmp.name($1, $2)) vcmp.msg $1 $2 Error - You cannot Check Yourself.
elseif (%check == on) vcmp.msg $1 $2 Checking is already in progress, please try again later.
else {
var %check = on
timer 1 3 vcmp.setlocation $1 $vcmp.getid($1, $4) -968.704, -1455.056, 44.168
timer 1 3 vcmp.say $1 Checking $vcmp.name($1, $4) ...
timer 1 3 vcmp.setcontrols $1 $4 0
timer 1 5 vcmp.sethealth $1 $4 100
timer 1 5 vcmp.setarmour $1 $4 100
timer 1 6 vcmp.sethealth $1 $4 75
timer 1 6 vcmp.setarmour $1 $4 75
timer 1 7 vcmp.checkarmour $1 $4
timer 1 7 vcmp.checkhealth $1 $4
}
}
}
If players HP is 100 == hax? Nononono. Change it to HP > 100.
== 100 would be fine, as he sets the health to 75
What if the player's hack sets the HP to +100? :-X
ok, change it to
if ($vcmp.health($1, $vcmp.getid($1, $4)) > 75) {
thx thijn,
I changed it to
alias vcmp.checkhealth {
if ($vcmp.health($1, $vcmp.getid($1, $4)) > 75) {
vcmp.say $1 Status: Cheats Detected!
vcmp.cheatsdetected $1 $4
}
else vcmp.cheatsnotdetected
}
alias vcmp.checkarmour {
if ($vcmp.armour($1, $vcmp.getid($1, $4)) > 75) {
vcmp.say $1 Status: Cheats Detected!
vcmp.cheatsdetected $1 $4
}
else vcmp.cheatsnotdetected
}
alias vcmp.cheatsnotdetected {
vcmp.setlocation $1 $vcmp.getid($1, $4) -871.455 -683.325 10.250
vcmp.say $1 No cheats found!
vcmp.setcontrols $1 $4 1
var %check = off
vcmp.setarmour $1 $4 0
vcmp.sethealth $1 $4 100
}
alias vcmp.cheatsdetected {
vcmp.setlocation $1 $vcmp.getid($1, $4) 391.282 -506.863 8.415
vcmp.say $1 Cheats Detected!
vcmp.say $1 Waiting for admins.
var %check = off
}
on *:SIGNAL:vcmp.player.command:{
if ($3 == check) {
if (!$4) vcmp.msg $1 $2 Error - Correct Syntax: ! $+ $3 <id/nick>
elseif (. isin $4) || (, isin $4) || vcmp.msg $1 $2 Error - Invalid ID
elseif ($vcmp.name($1, $vcmp.id($4)) == $vcmp.name($1, $2)) vcmp.msg $1 $2 Error - You cannot Check Yourself.
elseif (%check == on) vcmp.msg $1 $2 Checking is already in progress, please try again later.
else {
var %check = on
timer 1 3 vcmp.setlocation $1 $vcmp.getid($1, $4) -968.704, -1455.056, 44.168
timer 1 3 vcmp.say $1 Checking $vcmp.name($1, $4) ...
timer 1 3 vcmp.setcontrols $1 $4 0
timer 1 5 vcmp.sethealth $1 $4 100
timer 1 5 vcmp.setarmour $1 $4 100
timer 1 8 vcmp.sethealth $1 $4 75
timer 1 8 vcmp.setarmour $1 $4 75
timer 1 10 vcmp.checkarmour $1 $4
timer 1 10 vcmp.checkhealth $1 $4
}
}
}
But I am not sure for the working of %check
ye indeed, it has to be set %check
thanks thijn, you are the best!
:P
the correct source: alias vcmp.checkhealth {
if ($vcmp.health($1, $vcmp.getid($1, $4)) > 75) {
vcmp.say $1 Status: Cheats Detected!
vcmp.cheatsdetected $1 $4
}
else vcmp.cheatsnotdetected
}
alias vcmp.checkarmour {
if ($vcmp.armour($1, $vcmp.getid($1, $4)) > 75) {
vcmp.say $1 Status: Cheats Detected!
vcmp.cheatsdetected $1 $4
}
else vcmp.cheatsnotdetected
}
alias vcmp.cheatsnotdetected {
vcmp.setlocation $1 $vcmp.getid($1, $4) -871.455 -683.325 10.250
vcmp.say $1 No cheats found!
vcmp.setcontrols $1 $4 1
set %check = off
vcmp.setarmour $1 $4 0
vcmp.sethealth $1 $4 100
}
alias vcmp.cheatsdetected {
vcmp.setlocation $1 $vcmp.getid($1, $4) 391.282 -506.863 8.415
vcmp.say $1 Cheats Detected!
vcmp.say $1 Waiting for admins.
set %check = off
}
on *:SIGNAL:vcmp.player.command:{
if ($3 == check) {
if (!$4) vcmp.msg $1 $2 Error - Correct Syntax: ! $+ $3 <id/nick>
elseif (. isin $4) || (, isin $4) || vcmp.msg $1 $2 Error - Invalid ID
elseif ($vcmp.name($1, $vcmp.id($4)) == $vcmp.name($1, $2)) vcmp.msg $1 $2 Error - You cannot Check Yourself.
elseif (%check == on) vcmp.msg $1 $2 Checking is already in progress, please try again later.
else {
set %check = on
timer 1 3 vcmp.setlocation $1 $vcmp.getid($1, $4) -968.704, -1455.056, 44.168
timer 1 3 vcmp.say $1 Checking $vcmp.name($1, $4) ...
timer 1 3 vcmp.setcontrols $1 $4 0
timer 1 5 vcmp.sethealth $1 $4 100
timer 1 5 vcmp.setarmour $1 $4 100
timer 1 8 vcmp.sethealth $1 $4 75
timer 1 8 vcmp.setarmour $1 $4 75
timer 1 10 vcmp.checkarmour $1 $4
timer 1 10 vcmp.checkhealth $1 $4
}
}
}
the difference between set and var is that the var needs an =, set doesn't.
so, this should work:
alias vcmp.checkhealth {
if ($vcmp.health($1, $vcmp.getid($1, $4)) > 75) {
vcmp.say $1 Status: Cheats Detected!
vcmp.cheatsdetected $1 $4
}
else vcmp.cheatsnotdetected
}
alias vcmp.checkarmour {
if ($vcmp.armour($1, $vcmp.getid($1, $4)) > 75) {
vcmp.say $1 Status: Cheats Detected!
vcmp.cheatsdetected $1 $4
}
else vcmp.cheatsnotdetected
}
alias vcmp.cheatsnotdetected {
vcmp.setlocation $1 $vcmp.getid($1, $4) -871.455 -683.325 10.250
vcmp.say $1 No cheats found!
vcmp.setcontrols $1 $4 1
set %check off
vcmp.setarmour $1 $4 0
vcmp.sethealth $1 $4 100
}
alias vcmp.cheatsdetected {
vcmp.setlocation $1 $vcmp.getid($1, $4) 391.282 -506.863 8.415
vcmp.say $1 Cheats Detected!
vcmp.say $1 Waiting for admins.
set %check off
}
on *:SIGNAL:vcmp.player.command:{
if ($3 == check) {
if (!$4) vcmp.msg $1 $2 Error - Correct Syntax: ! $+ $3 <id/nick>
elseif (. isin $4) || (, isin $4) || vcmp.msg $1 $2 Error - Invalid ID
elseif ($vcmp.name($1, $vcmp.id($4)) == $vcmp.name($1, $2)) vcmp.msg $1 $2 Error - You cannot Check Yourself.
elseif (%check == on) vcmp.msg $1 $2 Checking is already in progress, please try again later.
else {
set %check on
timer 1 3 vcmp.setlocation $1 $vcmp.getid($1, $4) -968.704, -1455.056, 44.168
timer 1 3 vcmp.say $1 Checking $vcmp.name($1, $4) ...
timer 1 3 vcmp.setcontrols $1 $4 0
timer 1 5 vcmp.sethealth $1 $4 100
timer 1 5 vcmp.setarmour $1 $4 100
timer 1 8 vcmp.sethealth $1 $4 75
timer 1 8 vcmp.setarmour $1 $4 75
timer 1 10 vcmp.checkarmour $1 $4
timer 1 10 vcmp.checkhealth $1 $4
}
}
}
No problem ;)
i want to use it on pawno server thijn can you help me? thanks ;)
I did an automatic HP/Armour check for you. It runs every minute and checks if the players HP or Armour is over 75.
/* Add to the top of your gamemode */
forward AntiCheat(playerid);
/* Add to OnGameModeInit callback */
SetTimer("AntiCheat",60000,1);
/* Add anywhere in your script */
public AntiCheat(playerid)
{
for(new i = 0; i < 50; i++)
{
if(IsPlayerConnected(i))
{
new Float:hp,
Float:armour;
if(GetPlayerHealth(i,hp) > 75)
{
/* HP over 75, do your stuff here */
}
else if(GetPlayerArmour(i,armour) > 75)
{
/* Armour over 75, do your stuff here */
}
}
}
return 1;
}
Pastebin link: http://pastebin.com/BkRanF2a
Quote from: Ettans on March 02, 2010, 01:57:16 PM
I did an automatic HP/Armour check for you. It runs every minute and checks if the players HP or Armour is over 75.
/* Add to the top of your gamemode */
forward AntiCheat(playerid);
/* Add to OnGameModeInit callback */
SetTimer("AntiCheat",60000,1);
/* Add anywhere in your script */
public AntiCheat(playerid)
{
for(new i = 0; i < 50; i++)
{
if(IsPlayerConnected(i))
{
new Float:hp,
Float:armour;
if(GetPlayerHealth(i,hp) > 75)
{
/* HP over 75, do your stuff here */
}
else if(GetPlayerArmour(i,armour) > 75)
{
/* Armour over 75, do your stuff here */
}
}
}
return 1;
}
Pastebin link: http://pastebin.com/BkRanF2a
thank you very much! :)
forward AntiCheat(playerid);
where i add that? top of gamemode? where?
i fix that just like this
#include <a_vcmp>
#include <core>
#include <float>
#include <dini>
#include <dudb>
#include <dutils>
forward AntiCheat(playerid);
static szGameModeName[128] = "GUPS 1.15";
static szGameModeAuthorName[128] = "Falcon, Tamas, Xerxes, PlayerX";
Yeah, like I said, anywhere on-top of your gamemode.
that one which Ettan give dont worked, but i little remake that:
public AntiCheat(playerid)
{
for(new i = 0; i < 50; i++)
{
if(IsPlayerConnected(i))
{
new Float:hp,
Float:armour;
GetPlayerHealth(i,hp);
GetPlayerArmour(i,armour);
if(hp > 75)
{
// Do Stuff
}
else if(armour > 75)
{
// Do Stuff
}
}
}
return 1;
}
thanks for help :)
if i have more question i will start a new topic :)