SA-MP Forums Archive
Проблема с пикапамы. - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Проблема с пикапамы. (/showthread.php?tid=540092)



Проблема с пикапамы. - Vladok - 02.10.2014

Существует статические пикапы через "AddStaticPickup"
Как написано в описанию:
This function doesn't return a pickup id that you can use in, for example, OnPlayerPickUpPickup.
Функция не возвращает ид пикапа, а значит отловить событые как игрок заходит на пикап невозможно.
Суть в том что эти пикапы работают сами по себе.
Достачно указать модель пикапа и оно само будет выполнять определенное действие. (Не настраивается)
Но после установки Анти-Чита данный способ не актуален.
Но есть и другая функция: "CreatePickup" или "CreateDynamicPickup" - в данном случае пикап возвращает свой ид.
А значит можно поставить любое действие когда игрок заходит на пикап.
Я сделал так чтобы выдавало оружие с определенным количеством патронов.
Но вот баг, когда игрок заходит на пикап ему выдает патроны которые выдаются в "AddStaticPickup" + мои патроны что я указал в "OnPlayerPickUpPickup"
В итоге игрока кикает анти-чит. Т.к. игрок получил больше патронов чем указано в выдаче.
Этот баг именно в некоторых типах пикапа (2,3....15,22...), но дело в том что ниодин из типов кроме этих мне не подходит!
Подходит только 2 и 3. Ниодин другой тип я не могу использовать.
Для теста брал тип 23. Работало без бага, но пикап не пропадает.
Делать огромный массив, хранить куча данных о лимитах и т.д. нет желания.
Да еще и пикап не будет пропадать а это очень плохо будет.
Способ: высчитать сколько выдает по стандарту статичный пикап и через "SetPlayerAmmo" убирать эти патроны не подходит.
Т.к. нету доступа к исходному коду анти-чита.


Re: Проблема с пикапамы. - stabker - 02.10.2014

Когда-то давно тоже встретился с этим багом. Выдавал биту (вроде бы юзал 2-й тип) и никак не мог понять, почему античит кикает.

Я думаю вам придется либо изменить тип пикапа и делать проверку, например, на наличие оружия перед выдачей, либо заменить саму модель пикапа. Хотя ИМХО в любом случае нужно делать проверку на стороне сервера, а не просто выполнять действие пикапа. Перекладывать это на сторону клиента не очень разумно, если выдача оружия влияет на что-то в значительной мере.


Re: Проблема с пикапамы. - Stepashka - 02.10.2014

Используй тип 23 и просто удаляй пикап после того как его подняли, одна строчка кода.


Re: Проблема с пикапамы. - Vladok - 02.10.2014

Stepashka,
Пикап находится на ДМ зоне. Для всех игроков
После того как игрок его взял, он не должен его видеть в течение 20-30 секунд. Но при этом его видят и могут поднимать другие люди

stabker,
Как-то не понял что за проверка.
Можно по подробнее и желательно кодом.

Проверка на оружие перед поднятием? Что это даст? Патроны выдаются в любом случае, даже если у тебя до того была пушка или не была.
Происходит так: подбираешь пикап, выдает заданное оружие с заданным количеством патронов (те что я указал в коде), через 0,4 секунд (примерно) выдаются лишние патроны (как в статичном).

Пришел в голову только один вариант:
1. Высчитать количество патронов которые выдают статические пикапы для каждой модели,
2. Когда поднимаешь пикап выдается оружие, получаем GetWeaponData (все пушки игрока).
3. Получаем слот полученной пушки, отнимаем *фейковые* (лишние) патроны выданные багом.
4. Обнуляем все оружие игрока.
5. Выдаем все оружия заново, но выданное оружие пикапом выдаем последним.

Но вот сама проблема, причина почему я до сих пор не тестил данный способ.
Quote:

через 0,4 секунд (примерно) выдаются лишние патроны (как в статичном).

Эти 0,4 секунд... В этом паблике где я выполняю всю эту химию, я не получу данные патроны.
Пускать таймер мне кажется тоже не вариант.... Ведь таймер не точный.
Есть конечно инклюд timerfix (как-то так) но я сомневаюсь все равно что все будет ровно.
Мне кажется могут быть заддержки между выдачей патронов (эти 0,4 сек) и в итоге игрока кикнет просто так....


Re: Проблема с пикапамы. - Jon_De - 02.10.2014

Quote:

Пикап находится на ДМ зоне. Для всех игроков
После того как игрок его взял, он не должен его видеть в течение 20-30 секунд. Но при этом его видят и могут поднимать другие люди

Пусть видит, сделай так чтобы он брать не смог оружие


Re: Проблема с пикапамы. - stabker - 02.10.2014

Vladok, я это имел ввиду >

Quote:
Originally Posted by Jon_De
Посмотреть сообщение
Пусть видит, сделай так чтобы он брать не смог оружие
Тип пикапа измените и храните время последней выдачи оружия (или тому подобное).


Re: Проблема с пикапамы. - OKStyle - 03.10.2014

Там и считать нечего, выдаётся стандартное кол-во патронов, как в сингле: 10, 8 и т.п.


Re: Проблема с пикапамы. - OstGot - 03.10.2014

Quote:
Originally Posted by OKStyle
Посмотреть сообщение
Там и считать нечего, выдаётся стандартное кол-во патронов, как в сингле: 10, 8 и т.п.
Более того, это уже реализовано в античите JunkBuster)
Что мешает просто взять это оттуда, так это наверное только то, что его уже нет на офф. форуме)