 |
|
 |
|
|
|
Последние Файлы GTA 4 |
Последние Файлы GTA-MP |
Реклама |
|
|
|
|
|
Античит на оружие/патроны - вопрос
| |
| 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
Город: Санкт-Петербург
| 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
Город: Санкт-Петербург
| 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
Город: Санкт-Петербург
| Quote (Vagrant) new bool:Weapons[MAX_PLAYERS][47]; и 0 на false заменил а 1 на true. У меня вообще,когда я 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 |
| |
|
|
|
 |
|
 | |
| |
|