04:17
ОбновитьСмайлыУправление мини-чатом
МИНИ-ЧАТ
Главная страница!

 



 
          





Рекомендуем:





Последние Файлы GTA 4 Последние Файлы GTA-MP Реклама
Скрипт GTA 4 элементы Watch... 07.09.2014
Ferrari 360 Spider [EPM con... 13.12.2013
Porsche Cayenne Turbo 2012 ... 13.12.2013
Shelby Terlingua Mustang v1... 13.12.2013
Hamann Lamborghini Gallardo... 27.10.2013
[GM] The Big PEN1:LS v2.00 ... 04.12.2017
Dgun (AvnanceRP,SampRP,Dimo... 19.03.2016
SAMP скрипт SX Events (MySQ... 03.03.2016
Карта ASL мэрия для SAMP се... 03.03.2016
AIM для SA-MP 0.3.7 22.02.2016
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: AXE, Weddew  
Античит на оружие/патроны - вопрос
Fus1Дата: Вторник, 03.05.2011, 15:28 | Сообщение # 1
Группа: Продвинутые
Сообщений: 2704
Награды: 121
Город: Melbourne Australia
Репутация: 3103
Замечания: 0%
Статус:
Здравствуйте, вообщем вот сделал античит на оружие и патроны, в принципе работает нормально но почему то не всегда хорошо, вообщем, укажите что и как лучше изменить (переписать) , что сделано не так, в чём могут быть ошибки, отписываться просьба только действительно только тех кто понимает, с меня причитается.

Code
stock ServerGivePlayerWeapons(playerid,weaponid,ammo)
{
       PyxiTime[playerid] = 5;
    if(weaponid == 1)
    {
        PlayerGun[playerid][0] = weaponid;
        PlayerAmmo[playerid][0] = 1;
    }
    else if(IsAMelee(weaponid))
    {
        PlayerGun[playerid][1] = weaponid;
        PlayerAmmo[playerid][1] = 1;
    }
    else if(IsAPistol(weaponid))
    {
        PlayerGun[playerid][2] = weaponid;
        PlayerAmmo[playerid][2] += ammo;
    }
    else if(IsAShotgun(weaponid))
    {
        PlayerGun[playerid][3] = weaponid;
        PlayerAmmo[playerid][3] += ammo;
    }
    else if(IsAMachineGun(weaponid))
    {
        PlayerGun[playerid][4] = weaponid;
        PlayerAmmo[playerid][4] += ammo;
    }
    else if(IsAnAssault(weaponid))
    {
        PlayerGun[playerid][5] = weaponid;
        PlayerAmmo[playerid][5] += ammo;
    }
    else if(IsARifle(weaponid))
    {
        PlayerGun[playerid][6] = weaponid;
        PlayerAmmo[playerid][6] += ammo;
    }
    else if(IsAHeavyAssault(weaponid))
    {
        PlayerGun[playerid][7] = weaponid;
        PlayerAmmo[playerid][7] += ammo;
    }
    else if(IsAGrenade(weaponid))
    {
        PlayerGun[playerid][8] = weaponid;
        PlayerAmmo[playerid][8] += ammo;
    }
    else if(IsAStuff1(weaponid))
    {
        PlayerGun[playerid][9] = weaponid;
        PlayerAmmo[playerid][9] += ammo;
    }
    else if(IsAGirlsStuff(weaponid))
    {
        PlayerGun[playerid][10] = weaponid;
        PlayerAmmo[playerid][10] = 1;
    }
    else if(IsAStuff2(weaponid))
    {
        PlayerGun[playerid][11] = weaponid;
        PlayerAmmo[playerid][11] = 1;
    }
    GivePlayerWeapon(playerid,weaponid,ammo);
    return 1;
}

Code
stock ServerTakePlayerWeapon(playerid,weaponid)
{
    PyxiTime[playerid] = 5;
    for(new i; i < 11; i++)
    {
     if(PlayerGun[playerid][i] == weaponid)
     {
         PlayerGun[playerid][i] = 0;
         PlayerAmmo[playerid][i] = 0;
         break;
     }
    }
    ResetPlayerWeapons(playerid);
    for(new i; i < 11; i++)
           GivePlayerWeapon(playerid,PlayerGun[playerid][i],PlayerAmmo[playerid][i]);
    return 1;
}

Code
stock IsAPistol(gunid)
{
    switch(gunid)
    {
        case 22..24:    return 1;
    }
    return 0;
}
stock IsAMelee(gunid)
{
    switch(gunid)
    {
        case 2..9:      return 1;
    }
    return 0;
}
stock IsAGirlsStuff(gunid)
{
    switch(gunid)
    {
        case 10..15:    return 1;
    }
    return 0;
}
stock IsAGrenade(gunid)
{
    switch(gunid)
    {
        case 16..18, 39: return 1;
    }
    return 0;
}
stock IsAShotgun(gunid)
{
    switch(gunid)
    {
        case 25..27:    return 1;
    }
    return 0;
}
stock IsAMachineGun(gunid)
{
    switch(gunid)
    {
        case 28,29,32:  return 1;
    }
    return 0;
}
stock IsAnAssault(gunid)
{
    switch(gunid)
    {
        case 30,31: return 1;
    }
    return 0;
}
stock IsARifle(gunid)
{
    if(gunid == 33 || gunid == 34)
       return 1;
    return 0;
}
stock IsAHeavyAssault(gunid)
{
    switch(gunid)
    {
        case 35..37:    return 1;
    }
    return 0;
}
stock IsAStuff1(gunid)//Баллончик
{
    switch(gunid)
    {
        case 41..43:    return 1;
    }
    return 0;
}
stock IsAStuff2(gunid)
{
    switch(gunid)
    {
        case 44..46:    return 1;
    }
    return 0;
}

Code

public OnPlayerUpdate(playerid)
{
       new gun = GetPlayerWeapon(playerid);
    if(GetPVarInt(playerid,"LastWeapon") != gun)
    {
        SetPVarInt(playerid,"WeaponJustChanged",1);
     SetPVarInt(playerid,"LastWeapon",gun);
    }
    return 1;
}

Code
stock AntiCheat(playerid)
{
       if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
        if(PlayerACtest[playerid] > 0)
     return 1;
     PlayerACtest[playerid] = 1;
           if(PyxiTime[playerid] > 0)
           PyxiTime[playerid] --;
     if(GetPVarInt(playerid,"WeaponJustChanged") == 1)//Заценим
     SetPVarInt(playerid,"WeaponJustChanged",0);
     else
     {
      new gun,ammo, cheater = 0, gunname[32];
      for(new i; i < 11; i++)
      {
          GetPlayerWeaponData(playerid,i,gun,ammo);
          if(!IsPlayerInAnyVehicle(playerid)/* || i == 4*/)//Баг сампа, либо самой ГТА: в транспорте оружие не обновляется
          {
           if(PlayerGun[playerid][i] != gun)//Если оружие не совпадает
        {
         if(gun != 0)
         {
          GetWeaponName(gun,gunname,sizeof(gunname));
          cheater = 1;//Чит на оружие
         }
        }
        if(PlayerAmmo[playerid][i] != ammo && i != 0 && i != 1)//У 0 и 1 слота патроны не важны
        {
            if(PlayerAmmo[playerid][i] > ammo && ammo >= 0 && PlayerGun[playerid][i] != 0)
            PlayerAmmo[playerid][i] = ammo;
            else if(PlayerAmmo[playerid][i] < ammo)
            {
                if(PlayerAmmo[playerid][i] < 0)
                PlayerAmmo[playerid][i] = 0;
                else
                {
                    GetWeaponName(gun,gunname,sizeof(gunname));
               cheater = 2;//Чит на патроны
                }
          }
         else
         {
          if(PlayerGun[playerid][i] == 0)
          else if(ammo >= 0)
         }
        }
       }
      }
      if(cheater == 1 && PyxiTime[playerid] == 0)
      {
          SendClientMessage(playerid,COLOR_RED,"Читерство на нашем сервере запрещено!");
       ResetPlayerWeapons(playerid);
      }
      else if(cheater == 2 && PyxiTime[playerid] == 0)
      {
          SendClientMessage(playerid,COLOR_RED,"Читерство на нашем сервере запрещено !");
          ResetPlayerWeapons(playerid);
        }
        else if(GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_USEJETPACK)
        {
            SetPlayerSpecialAction(playerid,SPECIAL_ACTION_NONE);
          SendClientMessage(playerid,COLOR_RED,"Читерство на нашем сервере запрещено!");
        }
     }
     PlayerACtest[playerid] = 0;
    }
    return 1;
}

//OnPlayerStateChange

Code

    if(oldstate == PLAYER_STATE_DRIVER || oldstate == PLAYER_STATE_PASSENGER)
    {
     PyxiTime[playerid] = 3;//Для античита
     ResetPlayerWeapons(playerid);
     for(new i; i < 11; i++)
     {
         ServerGivePlayerWeapons(playerid,PlayerGun[playerid][i],PlayerAmmo[playerid][i]);
     }
}



Сообщение отредактировал Fus1 - Вторник, 03.05.2011, 16:02
[TonY]Дата: Вторник, 03.05.2011, 15:42 | Сообщение # 2
Уверенный в себе
Группа: Пользователи
Сообщений: 220
Награды: 10
Город: Tallinn
Репутация: 123
Замечания: 20%
Статус:
напиши мне в скайп tony_stark113
я тебе скину анти чит на оружие на много короче и эфективнее



[b]1. Вы сейчас в интернете.
2. Вы на сайте www.samp-rus.com
3. Вы читаете это)
5. Вы не заметили что отсутствует пункт 4 :D
6. Вы сейчас это проверили.
7. Вы улыбаетесь.[/b]

[url=http://skyline-rp.tk][img]http://savepic.ru/2605283.gif[/img][/url]
[url=http://www.agrank.com/samp/91.218.229.241:6666][img]http://www.agrank.com/dimg/monitor4/samp/13407_RU.png[/img][/url]
[url=http://nick-name.ru/sertificates/395903/][img]http://nick-name.ru/forum1t0/Gordon%20Frimen.gif[/img][/url]
ImperealДата: Вторник, 03.05.2011, 15:49 | Сообщение # 3
Мастер джэдай
Группа: I'm V.I.P.
Сообщений: 2677
Награды: 51
Город: Санкт-Петербург
Репутация: 1868
Замечания: 100%
Статус:
Quote (Fus1)
 for(new i; i < 11; i ++)    {     if(PlayerGun[playerid][i] == g)     return 0;//Оружие не читерское    }

Эм,если у него PlayerGun[playerid][i] == g,при первом проходе(i=0),то return 0; выйдет из цикла и дальше ты уже не проверишь,continue тогда надо использовать!
Если я конечно верно код понял,так как быстренько пробежался :)
Quote (|TonY|)
напиши мне в скайп tony_stark113 я тебе скину анти чит на оружие на много короче и эфективнее

-___- А об этом кто-то просил?



Прощай самп-рус =Р

Сообщение отредактировал Impereal - Вторник, 03.05.2011, 15:52
Fus1Дата: Вторник, 03.05.2011, 15:53 | Сообщение # 4
Группа: Продвинутые
Сообщений: 2704
Награды: 121
Город: Melbourne Australia
Репутация: 3103
Замечания: 0%
Статус:
Quote (|TonY|)
напиши мне в скайп tony_stark113
я тебе скину анти чит на оружие на много короче и эфективнее

мне не нужно легче и чужое, мне нужно найти решение в этом что не так знать и т.д.

ZiGGiДата: Вторник, 03.05.2011, 15:58 | Сообщение # 5
Мастер джэдай
Группа: Продвинутые
Сообщений: 2652
Награды: 34
Город: St. Petersburg
Репутация: 2102
Замечания: 20%
Статус:
Quote (Impereal)
Эм,если у него PlayerGun[playerid][i] == g,при первом проходе(i=0),то return 0; выйдет из цикла и дальше ты уже не проверишь,continue тогда надо использовать!
Если я конечно верно код понял,так как быстренько пробежался

ващет IsACheaterWeapon вообще не используется:)



Бложе
[indent]Мой блог
Уроки по Pawn
[/indent]

Open-GTO
[indent]Блог разработчиков
GitHub: https://github.com/Open-GTO/Open-GTO
Сборки мода с сервером тут
[/indent]
Fus1Дата: Вторник, 03.05.2011, 16:01 | Сообщение # 6
Группа: Продвинутые
Сообщений: 2704
Награды: 121
Город: Melbourne Australia
Репутация: 3103
Замечания: 0%
Статус:
Да, IsACheaterWeapon сделано для того чтобы когда оружие выкидываешь проверка читерское оно или нет.
ImperealДата: Вторник, 03.05.2011, 16:04 | Сообщение # 7
Мастер джэдай
Группа: I'm V.I.P.
Сообщений: 2677
Награды: 51
Город: Санкт-Петербург
Репутация: 1868
Замечания: 100%
Статус:
Quote (Fus1)
Да, IsACheaterWeapon сделано для того чтобы когда оружие выкидываешь проверка читерское оно или нет.

Все равно,Учти что в цикле return использовать не надо,так как она тупо его остановит! ;)



Прощай самп-рус =Р
Fus1Дата: Вторник, 03.05.2011, 16:14 | Сообщение # 8
Группа: Продвинутые
Сообщений: 2704
Награды: 121
Город: Melbourne Australia
Репутация: 3103
Замечания: 0%
Статус:
Так-же прошу посмотреть этот код и сказать что с ним , нормальный или нет , как будет работать кто как считает.

pastebin

ShilManДата: Вторник, 03.05.2011, 16:45 | Сообщение # 9
Уверенный в себе
Группа: Продвинутые
Сообщений: 171
Награды: 11
Город: Тверь
Репутация: 25
Замечания: 0%
Статус:
Quote (Fus1)
Так-же прошу посмотреть этот код и сказать что с ним , нормальный или нет , как будет работать кто как считает.
pastebin

Более или менее. У меня на подобие такого. При спавне игроков бывает левые предупреждения выдает, а так норм.



VagrantДата: Вторник, 03.05.2011, 16:52 | Сообщение # 10
Уважаемый человек
Группа: I'm V.I.P.
Сообщений: 904
Награды: 21
Город: Находка
Репутация: 489
Замечания: 0%
Статус:
Fus1, на мой взгляд всё нормально. Я бы поставил только
new bool:Weapons[MAX_PLAYERS][47]; и 0 на false заменил а 1 на true.



Человек учась ходить падает, и только падая, он учится ходить!
Мои работы:
[GM] W.F.S.A. V. 1.0 - 100%
[GM] San Fierro Enigmatic (TDM) V. 1.0 - 100%
[FS] Clan House V. 1.0 - 100%
[FS] Save Car Tun System V. 1.0 - 100%
[FS] Vagrant Anti-CapsLock V. 2.1 - 100%
[FS] Vagrant Anti-Advertise V. 1.1, V. 2.0 - 100%
[APP] SA-MP Interior Viewer V. 1.0 - 100%

Принимаю заказы на помощь в скриптинге!
ImperealДата: Вторник, 03.05.2011, 17:06 | Сообщение # 11
Мастер джэдай
Группа: I'm V.I.P.
Сообщений: 2677
Награды: 51
Город: Санкт-Петербург
Репутация: 1868
Замечания: 100%
Статус:
Quote (Vagrant)
new bool:Weapons[MAX_PLAYERS][47]; и 0 на false заменил а 1 на true.

OO У меня вообще,когда я bool'евую равнял 1/0 у меня ругалось,только true/false использовать...
Хотя по сути true = 1;false = 0



Прощай самп-рус =Р

Сообщение отредактировал Impereal - Вторник, 03.05.2011, 17:07
VagrantДата: Вторник, 03.05.2011, 17:10 | Сообщение # 12
Уважаемый человек
Группа: I'm V.I.P.
Сообщений: 904
Награды: 21
Город: Находка
Репутация: 489
Замечания: 0%
Статус:
Impereal, Ага такая же фигня. Неправильно как-то. Ну вообще все что больше 0 это true а 0 и меньше соответственно false. У меня тоже писал заменить 1, 0 на true, false.


Человек учась ходить падает, и только падая, он учится ходить!
Мои работы:
[GM] W.F.S.A. V. 1.0 - 100%
[GM] San Fierro Enigmatic (TDM) V. 1.0 - 100%
[FS] Clan House V. 1.0 - 100%
[FS] Save Car Tun System V. 1.0 - 100%
[FS] Vagrant Anti-CapsLock V. 2.1 - 100%
[FS] Vagrant Anti-Advertise V. 1.1, V. 2.0 - 100%
[APP] SA-MP Interior Viewer V. 1.0 - 100%

Принимаю заказы на помощь в скриптинге!
toneysixДата: Вторник, 03.05.2011, 17:26 | Сообщение # 13
Джэдай
Группа: I'm V.I.P.
Сообщений: 1731
Награды: 77
Город: Салават
Репутация: 1825
Замечания: 0%
Статус:
Vagrant можно ставить таким образом
new bool: lol;
lol = bool: 1;

На счет анти-чита трудно разобрать что к чему, привык писать все сам, насколько я помню, в сэмпе есть проблемы с возвращением оружия у игрока. Рекомендую при выдаче оружия, а также при его изъятии, или же спавна, приостанавливать анти-чит на оружие, дабы избежать ложных вызовов. К тому же, рекомендую не сразу посылать сообщение о чите, а только после 2 или 3 одновременных сигналов.
P.S: В тип bool мы можем хранить и текст и любые другие числа не выходящие за диапазон данного типа.
new bool: lol[5];
lol = bool: "text";



Русскоязычныи портал о MTA/GTA-IV-MP | http://multi-theft-auto.ru

Сообщение отредактировал toneysix - Вторник, 03.05.2011, 17:59
AndrejsДата: Вторник, 03.05.2011, 17:43 | Сообщение # 14
Группа: I'm V.I.P.
Сообщений: 1801
Награды: 37
Город: Tallinn
Репутация: 2282
Замечания: 20%
Статус:
Quote (Fus1)
Так-же прошу посмотреть этот код и сказать что с ним , нормальный или нет , как будет работать кто как считает.
pastebin

Не правильный он.




VagrantДата: Среда, 04.05.2011, 09:44 | Сообщение # 15
Уважаемый человек
Группа: I'm V.I.P.
Сообщений: 904
Награды: 21
Город: Находка
Репутация: 489
Замечания: 0%
Статус:
toneysix, На счёт текста в bool не знал. Как он определяется? true или false или как с этим работать и как можно использовать. Можешь пару примеров дать? Если текст есть то true если нет то false?
P.S.: Извеняюсь за флуд.



Человек учась ходить падает, и только падая, он учится ходить!
Мои работы:
[GM] W.F.S.A. V. 1.0 - 100%
[GM] San Fierro Enigmatic (TDM) V. 1.0 - 100%
[FS] Clan House V. 1.0 - 100%
[FS] Save Car Tun System V. 1.0 - 100%
[FS] Vagrant Anti-CapsLock V. 2.1 - 100%
[FS] Vagrant Anti-Advertise V. 1.1, V. 2.0 - 100%
[APP] SA-MP Interior Viewer V. 1.0 - 100%

Принимаю заказы на помощь в скриптинге!


Сообщение отредактировал Vagrant - Среда, 04.05.2011, 09:49
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:





 


 


 
Хостинг от uCoz samp.at.ua