Anti God Mode
#21

во первых неуспеет сооьбразить, во вторых, можно проверить просто устанавливая координаты на 0 0 10 и всё -_- а потом возвращать прежние
Reply
#22

Quote:
Originally Posted by lost13
Посмотреть сообщение
во первых неуспеет сооьбразить, во вторых, можно проверить просто устанавливая координаты на 0 0 10 и всё -_- а потом возвращать прежние
нет...
нужно установить z+10.0
патом ускорение вниз
ну взрывом конечно как минимум в два раза лучше )
Reply
#23

сделай взрывом кто тебе мешает? =)
Reply
#24

Таким способом АнтиГМ не сделать, ведь собейт, как и большинство читов, замораживает ХП, а вообще, было бы умно, сделать проверку на файл в папке с игрой, какой-нибудь конфиг или т.п. от собейта, думаю, все поняли, что я имею ввиду, это конечно мне пока не под силу, но скриптерам, советую задуматься.
P.S. Если это конечно вообще реально (:
Reply
#25

это нереально, возможности сампа позволяют проверять создавать удалять файлы только в папке с сервером, наверное воизбежание написания вирусов, и вредоносных кодов, так как с помощью павно можно написать неплохой вирус =D и поэтому, поможет пока такой способ, и неговори что он не работает, так как если хп не заморожено, оно отнимется и функция напишит что игрок не читер, а если ХП останется 100 то соответсвенно функция скажет что проверяемый читак =)
Reply
#26

1) В коде указано, что будет писать "читер", если ХП больше 100, т.е. 101 и больше...
2) Насчёт идей античита: как насчёт проверки нажатия клавиш, какой функцией её проверять? К примеру игрок нажимает F12 или F11 и тут выполняется действие... как проверять нажатие клавиш? Забыл уже..
Reply
#27

никак, в сампе забиты только клавишы управления персонажем, которые палятся в On‌PlayerKeyStateChange =|
Reply
#28

Надо бы разработчику SA-MP сделать проверку на остальные клавиши... есть ещё идея, может "не умная", но какую-то функцию из собейта (к примеру регенерация хп) переписать в PWN код? Это возможно, или тоже нет?
Reply
#29

Quote:
Originally Posted by false
View Post
Можно сделать примерно так...

Code:
#include <a_samp>

public OnPlayerCommandText(playerid, cmdtext[])
{
	new cmd[256], tmp[256], idx;
	cmd = strtok(cmdtext, idx);
	tmp = strtok(cmdtext,idx);
	
	if(strcmp(cmd, "/testgm", true) == 0)
	{
		
		if(!IsPlayerAdmin( playerid ))return SendClientMessage(playerid, 0xffffffff, "Вы не админ");
		if(!strlen(tmp))return SendClientMessage(playerid, 0xffffffff, "Укажите id игрока");
		if(!IsNumeric(tmp))return SendClientMessage(playerid, 0xffffffff, "Неверно указан id игрока");
		new player = strval(tmp);
		if(IsPlayerConnected(player) && player != INVALID_PLAYER_ID)
		{
	    	       if(IsPlayerInAnyVehicle(player))
	    	       {
	        	        new vehicleid = GetPlayerVehicleID(playerid);
	        	        new Float:health, Float:X, Float:Y, Float:Z;
    			        GetVehicleHealth(vehicleid, health);
				SetPVarFloat(player, "VehicleHealth", health);
				SetVehicleHealth(vehicleid, 1000);
				GetPlayerPos(player,X,Y,Z);
				CreateExplosion(X,Y,Z-6,8,0);
				SetTimerEx("TestGmModeInVehicle",200,0, "i", player);
	    	        }
	    	        else
			{
				new Float:health, Float:X, Float:Y, Float:Z;
    			        GetPlayerHealth(player, health);
    			        SetPlayerHealth(player, 100);
				SetPVarFloat(playerid, "PlayerHealth", health);
				GetPlayerPos(player,X,Y,Z);
				CreateExplosion(X,Y,Z-6,8,0);
				SetTimerEx("TestGmModeOnFoot",200,0, "i", player);
			}
    	        }
		return 1;
	}
	return 0;
}

forward TestGmModeOnFoot(playerid);
public TestGmModeOnFoot(playerid)
{
	new Float:health;
   	GetPlayerHealth(playerid, health);
	if(health < 100)
	{
		SendClientMessageToAll(0xffffffff,"Проверка пройдена ;)");
		SetPlayerHealth(playerid, GetPVarFloat(playerid, "PlayerHealth"));
	}
	else
	{
		SendClientMessageToAll(0xffffffff,"чиииииитеееееер!!!!!!!!!!!!!");
		SetPlayerHealth(playerid, GetPVarFloat(playerid, "PlayerHealth"));
	}
    return 1;
}

forward TestGmModeInVehicle(playerid);
public TestGmModeInVehicle(playerid)
{
    new vehicleid = GetPlayerVehicleID(playerid);
	new Float:health;
   	GetVehicleHealth(vehicleid, health);
	if(health < 1000)
	{
		SendClientMessageToAll(0xffffffff,"Проверка пройдена ;)");
		RepairVehicle(vehicleid);
	}
	else SendClientMessageToAll(0xffffffff,"чиииииитеееееер!!!!!!!!!!!!!");
    return 1;
}

stock IsNumeric(string[]) 
{
        for (new i = 0, j = strlen(string); i < j; i++) 
        if (string[i] > '9' || string[i] < '0') return 0; 
        return 1; 
}

strtok(const string[], &index)
{
	new length = strlen(string);
	while ((index < length) && (string[index] <= ' '))
	{
		index++;
	}

	new offset = index;
	new result[20];
	while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
	{
		result[index - offset] = string[index];
		index++;
	}
	result[index - offset] = EOS;
	return result;
}
Cамый оптимальный вариант
Reply
#30

Quote:
Originally Posted by false
View Post
Можно сделать примерно так...

Code:
#include <a_samp>

public OnPlayerCommandText(playerid, cmdtext[])
{
	new cmd[256], tmp[256], idx;
	cmd = strtok(cmdtext, idx);
	tmp = strtok(cmdtext,idx);
	
	if(strcmp(cmd, "/testgm", true) == 0)
	{
		
		if(!IsPlayerAdmin( playerid ))return SendClientMessage(playerid, 0xffffffff, "Вы не админ");
		if(!strlen(tmp))return SendClientMessage(playerid, 0xffffffff, "Укажите id игрока");
		if(!IsNumeric(tmp))return SendClientMessage(playerid, 0xffffffff, "Неверно указан id игрока");
		new player = strval(tmp);
		if(IsPlayerConnected(player) && player != INVALID_PLAYER_ID)
		{
	    	       if(IsPlayerInAnyVehicle(player))
	    	       {
	        	        new vehicleid = GetPlayerVehicleID(playerid);
	        	        new Float:health, Float:X, Float:Y, Float:Z;
    			        GetVehicleHealth(vehicleid, health);
				SetPVarFloat(player, "VehicleHealth", health);
				SetVehicleHealth(vehicleid, 1000);
				GetPlayerPos(player,X,Y,Z);
				CreateExplosion(X,Y,Z-6,8,0);
				SetTimerEx("TestGmModeInVehicle",200,0, "i", player);
	    	        }
	    	        else
			{
				new Float:health, Float:X, Float:Y, Float:Z;
    			        GetPlayerHealth(player, health);
    			        SetPlayerHealth(player, 100);
				SetPVarFloat(playerid, "PlayerHealth", health);
				GetPlayerPos(player,X,Y,Z);
				CreateExplosion(X,Y,Z-6,8,0);
				SetTimerEx("TestGmModeOnFoot",200,0, "i", player);
			}
    	        }
		return 1;
	}
	return 0;
}

forward TestGmModeOnFoot(playerid);
public TestGmModeOnFoot(playerid)
{
	new Float:health;
   	GetPlayerHealth(playerid, health);
	if(health < 100)
	{
		SendClientMessageToAll(0xffffffff,"Проверка пройдена ;)");
		SetPlayerHealth(playerid, GetPVarFloat(playerid, "PlayerHealth"));
	}
	else
	{
		SendClientMessageToAll(0xffffffff,"чиииииитеееееер!!!!!!!!!!!!!");
		SetPlayerHealth(playerid, GetPVarFloat(playerid, "PlayerHealth"));
	}
    return 1;
}

forward TestGmModeInVehicle(playerid);
public TestGmModeInVehicle(playerid)
{
    new vehicleid = GetPlayerVehicleID(playerid);
	new Float:health;
   	GetVehicleHealth(vehicleid, health);
	if(health < 1000)
	{
		SendClientMessageToAll(0xffffffff,"Проверка пройдена ;)");
		RepairVehicle(vehicleid);
	}
	else SendClientMessageToAll(0xffffffff,"чиииииитеееееер!!!!!!!!!!!!!");
    return 1;
}

stock IsNumeric(string[]) 
{
        for (new i = 0, j = strlen(string); i < j; i++) 
        if (string[i] > '9' || string[i] < '0') return 0; 
        return 1; 
}

strtok(const string[], &index)
{
	new length = strlen(string);
	while ((index < length) && (string[index] <= ' '))
	{
		index++;
	}

	new offset = index;
	new result[20];
	while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
	{
		result[index - offset] = string[index];
		index++;
	}
	result[index - offset] = EOS;
	return result;
}
а про броню то забыли
Reply
#31

DJ_Smagold, если бы ты читал всю тему ты бы наверно заметил, ранее писалось о нехорошей способности собейти блокировать команду CreateExplosion на стороне клиента.
Reply
#32

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
DJ_Smagold, если бы ты читал всю тему ты бы наверно заметил, ранее писалось о нехорошей способности собейти блокировать команду CreateExplosion на стороне клиента.
Если игрок не знает все функции в собеите, а ему он нужен для год мода и тп., то он не знает что такое "Предотвращение CreateExplosion"
И кстати мой вариант проверяет не только на год мод, а вообще, и на собеит
Reply
#33

Quote:
Originally Posted by DJ_Smagold
Посмотреть сообщение
И кстати мой вариант проверяет не только на год мод, а вообще, и на собеит
Ну да твой вариант на столько крут что взрывает всё вокруг. Не позавидуешь игрокам...
Reply
#34

Quote:
Originally Posted by On1xS
Посмотреть сообщение
Ну да твой вариант на столько крут что взрывает всё вокруг. Не позавидуешь игрокам...
Можно сделать так чтоб игрока тпшило в безлюдное место и взрывало, а потом возвращало на то место где он стоял.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)