Anti God Mode -
[Saint] - 05.06.2010
существует ли он вообще? если да поделитесь пожалуйста, как его можно реализовать и возможно ли это в 0.3а
Re: Anti God Mode -
Johnny_Xayc - 05.06.2010
можно только сделать если хп добавляются читом,то убираем обратно хп или вообще Kill
Re: Anti God Mode -
Fro1sha - 05.06.2010
Через боди парт детект можно сделать, если долго шмаляешь и хп не убавляется, можно считать что гуд мод, но из-за синхры в сампе, не сделать идеального
Re: Anti God Mode -
Makar93 - 05.06.2010
Quote:
Originally Posted by Fro1sha
Через боди парт детект можно сделать, если долго шмаляешь и хп не убавляется, можно считать что гуд мод, но из-за синхры в сампе, не сделать идеального
|
А если еск? Можно "без палева" убавлять 1хп и со временем восстанавливать. Врятли что-нибудь толковое получится...
Re: Anti God Mode -
MX_Master - 05.06.2010
Так что нужно-то? Система, которая ловит и банит? Или, которая следит за ХП, с помощью функций камеры вычисляет отъём ХП, отнимает от сохр на серве значения и в случает значения ниже нуля KillPlayer ? (:
Re: Anti God Mode -
xomka - 05.06.2010
взрывом
Re: Anti God Mode -
[Saint] - 06.06.2010
Quote:
Originally Posted by xomka (78.140.24.18:22003)
взрывом
|

великолепная идея, спс
Re: Anti God Mode -
Nikid - 07.06.2010
дак проблемка тут есть. В собейте год мод замораживает хп и не нужно ему добавлять, а так в городе где нибудь найдет думаю. А что то против этого придумать, тоже вроде нельзя
Re: Anti God Mode -
Romanius - 07.06.2010
подбрасываеш игрока на метров так 10 и смотриш убавилось ли у него здоровье
Re: Anti God Mode -
false - 30.09.2010
Quote:
Originally Posted by xomka
взрывом
|
Можно сделать примерно так...
pawn 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;
}
Re: Anti God Mode -
Aleks10 - 30.09.2010
про взрыв я писал тут-
http://forum.sa-mp.com/showpost.php?...5&postcount=16
false, исполнение скрипта не очень )
перепиши скрипт под мою схему, всё будет работать как часы!

особенная хрень, когда игрок в esc, то будут ложные срабатывания
Re: Anti God Mode -
false - 30.09.2010
Quote:
Originally Posted by Aleks10
false, исполнение скрипта не очень )
перепиши скрипт под мою схему, всё будет работать как часы! 
|
Возможно мало опыта
Quote:
Originally Posted by Aleks10
особенная хрень, когда игрок в esc, то будут ложные срабатывания 
|
Можно скрестить это со скриптом anti afk
Re: Anti God Mode -
lost13 - 30.09.2010
Поставить таймер, отнимать 1 хп, и if всё норм, вернуть обратно =) а else кикнуть нах xD
===
хотя я непомню, помоему функцией SetPlayerHealth можно установить любое кол-во хп, тогда этот вариант не прокатит =(
Re: Anti God Mode -
Aleks10 - 30.09.2010
переопределить setplayerhealth - если >= 100, не ставить

или если >= 100 ставить 100
Re: Anti God Mode -
Romanius - 30.09.2010
даже при заморозке жизней если ставишь функцией -50 хп в собеите ставятся как -50 хп то есть отнимаеца, если только взрывом иль подбрасыванием
Re: Anti God Mode -
lost13 - 30.09.2010
у меня есть команды которая чекит ГМ но там нет проверки на тачку или в воде ли чел, но можно реализовать =) а так пашет чтука =)
Re: Anti God Mode -
false - 30.09.2010
Quote:
Originally Posted by lost13
у меня есть команды которая чекит ГМ но там нет проверки на тачку или в воде ли чел, но можно реализовать =) а так пашет чтука =)
|
Выкладывай
Re: Anti God Mode -
Aleks10 - 30.09.2010
взрывом, подбросом...
можно ещё отнимать хп специально
Re: Anti God Mode -
lost13 - 30.09.2010
new check;//наверх
if(strcmp(cmd, "/checkgm", true) == 0) {
if(!IsPlayerAdmin) return SendClientMessage(playerid,red,"Вы не админ");
new Float:X,Float:Y,Float:Z;
tmp = strtok(cmdtext,idx);
if(!strlen(tmp)) return SendClientMessage(playerid,yellow,"Вводи: /checkgm <id>");
check = strval(tmp);
if(!IsPlayerConnected(check)) {
SendClientMessage(playerid,yellow,"Игрок не найден");
return 1;
}else{
GetPlayerPos(check,X,Y,Z);
SetPlayerPos(check,X,Y,Z+10);
SendClientMessage(check,yellow,"Вас проверяют...");
SendClientMessage(playerid,yellow,"Проверяем на ГМ...");
SetTimerEx("CheckGM", 3000, 0, "d", playerid);
}
return 1;
}
forward CheckGM(playerid);
public CheckGM(playerid)
{
new Float:hp;
GetPlayerHealth(check,hp);
if(hp >= 100)
{
SendClientMessage(check, red, "У вас ГМ");
SendClientMessage(playerid, red, "У НЕГО ГМ!");
}else{
SendClientMessage(check, green, "Вы не читак =)");
SendClientMessage(playerid, green, "Он не читак расслабься =)");
}
return 1;
}
Re: Anti God Mode -
false - 30.09.2010
Проверка взрывом более эффективна чем подбрасыванием, пока читак падает он может успеть отключить гм (нажав f12 например в собейте). К тому же этим никак не проверить когда игрок в авто или в воде...