Перейти к содержанию

Поиск сообщества

Показаны результаты для тегов '[MANUAL]'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип контента


Форумы

  • Информационный раздел
    • Новости портала
    • Техническая поддержка
    • Приватный форум
  • CRMP 0.3е
    • Помощь по Скриптингу
    • Ошибки
    • Готовые сервера
    • Дополнительные скрипты
    • Мануалы/Уроки
    • Модификации
    • Поиск
    • Архив Вопросов/Проблем/Ошибок
    • Файловый архив
    • Другое
  • SAMP/CRMP 0.3.7
    • Помощь по Скриптингу
    • Ошибки
    • Готовые сервера
    • Плагины
    • Поиск
    • Документация
  • Другое
    • Флейм

Поиск результатов в...

Поиск результатов, которые содержат...


Дата создания

  • Начало

    Конец


Дата обновления

  • Начало

    Конец


Фильтр по количеству...

Найдено: 1 результат

  1. Здравствуйте, ув.пользователи. Сегодня хотелось бы разобрать способ защиты от накрутки денег на Вашем игровом сервере. Теория: Как вы знаете, функция GivePlayerMoney существует для выдачи определенного количества денег. Разберем ее работу подробнее. Данная функция добавляет/отнимает числа от самого текстдрава денег. А функция же GetPlayerMoney возвращает данное значение. Исход из этого: байты могут быть заменены при помощи обычных программ, таких как ArtMoney и т.п. Что с этим можно сделать? Заменить байт на ПК пользователя труда не составит, а вот изменить переменную в процессе на сервере (удаленно) практически нереально. Я думаю, понятно, к чему я клоню. Практика: Создадим массив, который будет хранить кол-во денег отдельно для каждого игрока: new realmoney[MAX_PLAYERS]; Далее создадим функцию, по которой значение из GetPlayerMoney будет сверяться с переменной realmoney. В случае несоответствия - обнуление и кик: stock GiveMoneyAntiCheat(playerid, money) { if(GetPlayerMoney(playerid) > realmoney[playerid])//сверяем данные { //если чит, то: ResetPlayerMoney(playerid);// обнуляем GivePlayerMoney(playerid, realmoney[playerid]);//возвращаем SendClientMessage(playerid, 0xBBBBBBAA, "Вы были кикнуты за попытку накрутки денег."); Kick(playerid);//кикаем return 1; } else { //иначе выдаем все по стандарту: GivePlayerMoney(playerid, money); realmoney[playerid] = GetPlayerMoney(playerid); } return 1; } При дисконнекте игрока проверим деньги. Для этого в OnPlayerDisconnect достаточно поставить проверку и вызвать функцию: if(GetPlayerMoney(playerid) > realmoney[playerid]) { GiveMoneyAntiCheat(playerid, PlayerInfo[playerid][pMoney]); } Естественно, теперь все GivePlayerMoney нужно заменить на GiveMoneyAntiCheat. Спасибо.
×

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.