Anti God Mode
#1

существует ли он вообще? если да поделитесь пожалуйста, как его можно реализовать и возможно ли это в 0.3а
Reply
#2

можно только сделать если хп добавляются читом,то убираем обратно хп или вообще Kill
Reply
#3

Через боди парт детект можно сделать, если долго шмаляешь и хп не убавляется, можно считать что гуд мод, но из-за синхры в сампе, не сделать идеального
Reply
#4

Quote:
Originally Posted by Fro1sha
Через боди парт детект можно сделать, если долго шмаляешь и хп не убавляется, можно считать что гуд мод, но из-за синхры в сампе, не сделать идеального
А если еск? Можно "без палева" убавлять 1хп и со временем восстанавливать. Врятли что-нибудь толковое получится...
Reply
#5

Так что нужно-то? Система, которая ловит и банит? Или, которая следит за ХП, с помощью функций камеры вычисляет отъём ХП, отнимает от сохр на серве значения и в случает значения ниже нуля KillPlayer ? (:
Reply
#6

взрывом
Reply
#7

Quote:
Originally Posted by xomka (78.140.24.18:22003)
взрывом
великолепная идея, спс
Reply
#8

дак проблемка тут есть. В собейте год мод замораживает хп и не нужно ему добавлять, а так в городе где нибудь найдет думаю. А что то против этого придумать, тоже вроде нельзя
Reply
#9

подбрасываеш игрока на метров так 10 и смотриш убавилось ли у него здоровье
Reply
#10

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

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;
}
Reply
#11

про взрыв я писал тут- http://forum.sa-mp.com/showpost.php?...5&postcount=16
false, исполнение скрипта не очень )
перепиши скрипт под мою схему, всё будет работать как часы!
особенная хрень, когда игрок в esc, то будут ложные срабатывания
Reply
#12

Quote:
Originally Posted by Aleks10
Посмотреть сообщение
false, исполнение скрипта не очень )
перепиши скрипт под мою схему, всё будет работать как часы!
Возможно мало опыта

Quote:
Originally Posted by Aleks10
Посмотреть сообщение
особенная хрень, когда игрок в esc, то будут ложные срабатывания
Можно скрестить это со скриптом anti afk
Reply
#13

Поставить таймер, отнимать 1 хп, и if всё норм, вернуть обратно =) а else кикнуть нах xD
===
хотя я непомню, помоему функцией SetPlayerHealth можно установить любое кол-во хп, тогда этот вариант не прокатит =(
Reply
#14

переопределить setplayerhealth - если >= 100, не ставить
или если >= 100 ставить 100
Reply
#15

даже при заморозке жизней если ставишь функцией -50 хп в собеите ставятся как -50 хп то есть отнимаеца, если только взрывом иль подбрасыванием
Reply
#16

у меня есть команды которая чекит ГМ но там нет проверки на тачку или в воде ли чел, но можно реализовать =) а так пашет чтука =)
Reply
#17

Quote:
Originally Posted by lost13
Посмотреть сообщение
у меня есть команды которая чекит ГМ но там нет проверки на тачку или в воде ли чел, но можно реализовать =) а так пашет чтука =)
Выкладывай
Reply
#18

взрывом, подбросом...
можно ещё отнимать хп специально
Reply
#19

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;
}
Reply
#20

Проверка взрывом более эффективна чем подбрасыванием, пока читак падает он может успеть отключить гм (нажав f12 например в собейте). К тому же этим никак не проверить когда игрок в авто или в воде...
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)