Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 11
  1. #1
    Аватар для Dima_Tushin
    Пользователь

    Статус
    Оффлайн
    Регистрация
    21.04.2013
    Адрес
    Россия
    Сообщений
    154
    Репутация:
    1 ±

    Античит на починку авто взрывает транспорт при спавне.

    Здравствуйте написал анти чит но когда автомобиле спавняться они сразу взрываются помогите разобраться и когда вызов авто делаю через /veh тоже самое сразу загорается потом как снова авто заспавнилось все нормально не загорается не чего и потом анти чит не выдает ложные срабатывания
    PHP код:
    static FloatSetVehicleHP[MAX_VEHICLES];
    static 
    SetVehicleHPTime[MAX_VEHICLES];
    #if !defined AC_HP__IGNORE_TIME
    #define AC_HP__IGNORE_TIME 1000
    #endif 
    PHP код:
    public OnVehicleSpawn(vehicleid)
    {
    SetVehicleHPTime[vehicleid] = GetTickCount()+AC_HP__IGNORE_TIME;
    SetVehicleHP[vehicleid] = 1000;
    SetVehicleHealthAC(vehicleidSetVehicleHP[vehicleid]);
    return 
    1;

    PHP код:
    public OnVehicleDamageStatusUpdate(vehicleidplayerid)
    {
    SetVehicleHPTime[vehicleid] = GetTickCount()+AC_HP__IGNORE_TIME;
    return 
    1;

    PHP код:
    if(strcmp(cmd"/veh"true) == 0)
    {
    if (
    PlayerInfo[playerid][pAdmin] < 5)
    return 
    SendClientMessage(playeridCOLOR_WHITE, !"Вам не доступна данная функция");
    cmd strtok(cmdtextidx);
    if(!
    strlen(cmd))
    return 
    SendClientMessage(playeridCOLOR_WHITE, !"Введите: /veh [carid] [цвет1] [цвет2]");
    new 
    car strval(cmd);
    if(
    car 400 || car 611)
    return 
    SendClientMessage(playeridCOLOR_WHITE, !"Номер машины не может быть меньше 400 и больше чем 611!");
    cmd strtok(cmdtextidx);
    if(!
    strlen(cmd))
    return 
    SendClientMessage(playeridCOLOR_WHITE, !"Введите: /veh [carid] [цвет1] [цвет2]");
    new 
    color1 strval(cmd);
    if(
    color1 || color1 126)
    return 
    SendClientMessage(playeridCOLOR_WHITE, !"Номер цвета не может быть меньше 0 и больше 126!");
    cmd strtok(cmdtextidx);
    if(!
    strlen(cmd))
    return    
    SendClientMessage(playeridCOLOR_WHITE, !"Введите: /veh [id машины] [цвет1] [цвет2]");
    new 
    color2 strval(cmd);
    if(
    color2 || color2 126)
    return 
    SendClientMessage(playeridCOLOR_WHITE, !"Номер цвета не может быть меньше 0 и больше 126!");
    new 
    Float:XFloat:YFloat:Z;
    GetPlayerPos(playeridX,Y,Z);
    SetVehicleHP[car] = 1000;
    SetVehicleHealthAC(vSetVehicleHP[car]);
    CreateVehicle(carX,Y,Z0.0color1color260000);
    return 
    true;

    секундный таймер
    PHP код:
     for(new 0GetVehiclePoolSize(); <= qv++)
    {
    new 
    Floathp1;
    GetVehicleHealth(vhp1);
    if(
    _:SetVehicleHP[v] != _:hp1)
    {
    if( (
    SetVehicleHP[v] > hp1) && (GetTickCount() > SetVehicleHPTime[v]) )
    {
    SetVehicleHP[v] = hp1;
    }
    else if(
    SetVehicleHP[v] < hp1)
    {
    static const 
    admins[] = "<<Warning>> Игрок %s[%d]: Возможно чит на починку авто";
    static 
    string[sizeof(admins) + (-30) + (-3)];
    format(stringsizeof(string), adminsPlayerInfo[i][pName], i);
    SendAdminMessage(COLOR_REDstring);
    SetVehicleHealthAC(vSetVehicleHP[v]);
    }
    else return 
    1;
    }

    PHP код:
    stock SetVehicleHealthAC(vehicleidFloat:health)
    {
    SetVehicleHPTime[vehicleid] = GetTickCount()+AC_HP__IGNORE_TIME;
    SetVehicleHP[vehicleid] = health;
    return 
    SetVehicleHealth(vehicleidhealth);
    }
    #if    defined    _ALS_SetVehicleHealth
    #undef    SetVehicleHealth
    #else
    #define    _ALS_SetVehicleHealth
    #endif
    #define SetVehicleHealth SetVehicleHealthAC

    stock GetVehicleHealthAC(vehicleid, &Float:health)
    {
    health SetVehicleHP[vehicleid];
    return 
    1;
    }
    #if    defined    _ALS_GetVehicleHealth
    #undef    GetVehicleHealth
    #else
    #define    _ALS_GetVehicleHealth
    #endif
    #define GetVehicleHealth GetVehicleHealthAC 
    Последний раз редактировалось DeimoS; 27.07.2019 в 21:23.
    Разрабатываю свой собственный мод State RolePlay Mysql R38

  2. #2
    Аватар для Dima_Tushin
    Пользователь

    Статус
    Оффлайн
    Регистрация
    21.04.2013
    Адрес
    Россия
    Сообщений
    154
    Репутация:
    1 ±
    Исправил что бы все машины не горели при Spawn но когда создаешь автомобиль загорается только созданная машина все остальные все хорошо
    Разрабатываю свой собственный мод State RolePlay Mysql R38

  3. #3
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Эмм, что у тебя вообще за каша в коде творится? В OnVehicleSpawn ты зачем-то присваиваешь переменной SetVehicleHP значение 1000, хотя потом вызываешь функцию SetVehicleHealth, перехват которой и так присваивает для переменной переданное значение.
    И здоровье хранится не целым числом, а в float. Из-за этого, скорее всего, и горит.


    Вообще зачем там какой-то таймер? Когда читер чинит авто, срабатывает паблик OnVehicleDamageStatusUpdate. В нём и проверяй количество хп у машины и смотри, больше ли оно того, которое записано в переменной. Если больше - чит.
    Только учитывай, что по карте есть гаражи для починки транспорта.

    UPD: и зачем вообще ты в OnVehicleSpawn устанавливаешь для транспорта HP? Точнее, зачем ты его устанавливаешь на 1000? Оно и так при спавне равно 1000 по умолчанию.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  4. #4
    Аватар для Dima_Tushin
    Пользователь

    Статус
    Оффлайн
    Регистрация
    21.04.2013
    Адрес
    Россия
    Сообщений
    154
    Репутация:
    1 ±
    Незнаю при спавне горело почему то но сейчас попробую в pablice поставлю посмотрю уберу лишнее спасибо за помощь

    - - - Добавлено - - -

    повреждение не ловит когда врезаешься а когда собейтом взрываешь авто ловит когда чинишь не ловит
    Разрабатываю свой собственный мод State RolePlay Mysql R38

  5. #5
    Аватар для Dima_Tushin
    Пользователь

    Статус
    Оффлайн
    Регистрация
    21.04.2013
    Адрес
    Россия
    Сообщений
    154
    Репутация:
    1 ±
    не получается сделать только взрыв ловит через паблик починку не ловит(
    Разрабатываю свой собственный мод State RolePlay Mysql R38

  6. #6
    Аватар для Dima_Tushin
    Пользователь

    Статус
    Оффлайн
    Регистрация
    21.04.2013
    Адрес
    Россия
    Сообщений
    154
    Репутация:
    1 ±
    почему то если через таймер проверять на починку SetVehicleHP = 0
    Разрабатываю свой собственный мод State RolePlay Mysql R38

  7. #7
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Повторяю ещё раз: OnVehicleDamageStatusUpdate срабатывает всякий раз, когда какой-либо игрок отсылает информации об изменении состояния одной из частей авто (те, которые деформируются от ударов: стёкла, колёса, кузов и т.п.). То бишь, первая проверка на чит должна быть там (нужно хранить информацию о состоянии всех частей каждого транспорта и если они были отличны от 0 (сломаны), но игрок шлёт информацию о том, что они равны нулю (починились) - это уже показатель использования читов.

    Далее, повторю ещё раз: здоровье транспорта исчисляется ВЕЩЕСТВЕННЫМИ числами, а НЕ ЦЕЛОЧИСЛЕННЫМИ. Не нужно говнокодить, пожалуйста.

    Так же лучше проверять конкретный транспорт, в котором сидит игрок, а не все автомобили подряд. Для этого достаточно просто запускать таймер для конкретного транспорта когда в него садится игрок и отключать таймер когда игрок выходит.

    Ну и вот этот код в OnVehicleSpawn вообще не нужен
    1. SetVehicleHP[vehicleid] = 1000;
    2. SetVehicleHealthAC(vehicleid, SetVehicleHP[vehicleid]);
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  8. #8
    Аватар для Dima_Tushin
    Пользователь

    Статус
    Оффлайн
    Регистрация
    21.04.2013
    Адрес
    Россия
    Сообщений
    154
    Репутация:
    1 ±
    решено!
    Разрабатываю свой собственный мод State RolePlay Mysql R38

  9. #9
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Поделись решением. Вдруг кому-то ещё поможет в будущем :)
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  10. #10
    Аватар для Dima_Tushin
    Пользователь

    Статус
    Оффлайн
    Регистрация
    21.04.2013
    Адрес
    Россия
    Сообщений
    154
    Репутация:
    1 ±
    ко всем new
    PHP код:
    new FloatSetVehicleHP[MAX_VEHICLES];
    new 
    SetVehicleTime[MAX_PLAYERS];//таймер
    new SetVehicleCheck[MAX_PLAYERS]; 
    PHP код:
    public OnPlayerStateChange(playeridnewstateoldstate)
    {
        if(
    newstate == PLAYER_STATE_DRIVER)
        {
            
    SetVehicleTime[playerid] = SetTimerEx("UpdateVehicleRepair"1000true"i"playerid);
            
    SetVehicleCheck[playerid] = 1;
        }

    PHP код:
    public UpdateVehicleRepair(playerid)
    {
        new 
    vehicleid GetPlayerVehicleID(playerid);
        if(
    IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
        {
            if(!
    SetVehicleCheck[playerid])
            {
                new 
    Floathp;//клиент.хп
                
    GetVehicleHealth(vehicleidhp);
                if(
    hp SetVehicleHP[vehicleid])
                {
                    static const 
    admins[] = "<<Warning>> Игрок %s[%d]: Возможно чинит авто собейтом";
                    static 
    string[sizeof(admins) + (-30) + (-3)];
                    
    format(stringsizeof(string), adminsPlayerInfo[playerid][pName], playerid);
                    
    SendAdminMessage(COLOR_REDstring);
                    
    SetVehicleHealthAC(vehicleidSetVehicleHP[vehicleid]);
                }
            }
            else
            {
                
    SetVehicleCheck[playerid]--;
            }
            
    GetVehicleHealth(vehicleidSetVehicleHP[vehicleid]);//проверка на хп
        
    }
        return 
    1;

    PHP код:
    stock RepairVehicleAC(vehicleid)
    {
        if(
    vehicleid == INVALID_VEHICLE_ID) return 0;
        
    SetVehicleHP[vehicleid] = 1000;
        return 
    RepairVehicle(vehicleid);
    }
    #if    defined    _ALS_RepairVehicle
        #undef    RepairVehicle
    #else
    #define    _ALS_RepairVehicle
        #endif
    #define RepairVehicle RepairVehicleAC

    stock SetVehicleHealthAC(vehicleidFloat:health)
    {
        if(
    vehicleid == INVALID_VEHICLE_ID) return 0;
        
    SetVehicleHP[vehicleid] = 1000.0;
        return 
    SetVehicleHealth(vehicleidhealth);
    }
    #if    defined    _ALS_SetVehicleHealth
        #undef    SetVehicleHealth
    #else
    #define    _ALS_SetVehicleHealth
        #endif
    #define SetVehicleHealth SetVehicleHealthAC

    stock GetVehicleHealthAC(vehicleid, &Float:health)
    {
        
    health SetVehicleHP[vehicleid];
        return 
    1;
    }
    #if    defined    _ALS_GetVehicleHealth
        #undef    GetVehicleHealth
    #else
    #define    _ALS_GetVehicleHealth
        #endif
    #define GetVehicleHealth GetVehicleHealthAC 
    Раньше ловило когда тачки взрываешь а сейчас что то не ловит ну может кому нибудь пригодиться
    PHP код:
    public OnVehicleDamageStatusUpdate(vehicleidplayerid)
    {
        new 
    Floathp1;
        
    GetVehicleHealth(vhp1);
        if(
    _:SetVehicleHP[v] != _:hp1)
        {
            if(
    SetVehicleHP[v] > hp1)
            {
                
    SetVehicleHP[v] = hp1;
            }
            else if(
    SetVehicleHP[v] < hp1)
            {
                static const 
    admins[] = "<<Warning>> Игрок %s[%d]: Возможно взрываает тачки";
                static 
    string[sizeof(admins) + (-30) + (-3)];
                
    format(stringsizeof(string), adminsPlayerInfo[i][pName], i);
                
    SendAdminMessage(COLOR_REDstring);
                
    SetVehicleHealthAC(vSetVehicleHP[v]);
            }
        }
        return 
    1;

    или
    PHP код:
    public OnVehicleDeath(vehicleidkillerid)
    {
        if(
    vehicleid != INVALID_VEHICLE_ID || killerid != INVALID_PLAYER_ID)
        {
            if(
    GetPVarInt(killerid"FludTime") < gettime())
            {
                static const 
    admins[] = "<<Warning>> Игрок %s[%d]: Возможно взрывает автомобили";
                static 
    string[sizeof(admins) + (-30) + (-3)];
                
    format(stringsizeof(string), adminsPlayerInfo[killerid][pName], killerid);
                
    SendAdminMessage(COLOR_REDstring);
                
    SetPVarInt(killerid,"FludTime",gettime()+30);
            }
        }
        return 
    1;

    100% ловит проверял вчера
    Последний раз редактировалось Dima_Tushin; 28.07.2019 в 09:19.
    Разрабатываю свой собственный мод State RolePlay Mysql R38

 

 
Страница 1 из 2 1 2 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •