ANTICHAT Forum
HOME FORUMS MEMBERS RECENT POSTS LOG IN  
НОВЫЕ ТОРГОВАЯ НОВОСТИ
loading...
Скрыть
Вернуться   ANTICHAT > ИНФО > Статьи
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #2  
Старый 13.08.2012, 07:21
XAMEHA
Новичок
Регистрация: 15.05.2010
Сообщений: 0
С нами: 8417113

Репутация: 0
По умолчанию



VI. BODY 2​



А сейчас я хотел бы опять перейти к неприступным играм на mail.ru, о которых в дальнейшем будет сказано ещё очень много и рассказать о назначении плагина FlashFireBug, предназначенного для AS3, который мы так же будем часто использовать.

Игра «Покер на костях».

Покер на костях — азартная игра в кости. В неё могут играть от двух человек и более, оптимальное число игроков*— четыре. Для игры используют 5 шестигранных кубиков с числовыми достоинствами от 1 до 6. Все кости выбрасываются одновременно. Цель игры*— набирать очки за выполнение определённых комбинаций.

​В варианте приведённом на mail.ru бросать кости можно три раза, при этом часть костей можно сохранять, и иметься возможность играть в блиц. Конечно в этой игре многое зависит от вероятности, однако игра есть игра, и нам нужно найти способ в неё выигрывать. Следуя теории вероятности, шанс сохранить к концу раунда 5 костей одного достоинства при 3 бросках значительно меньше чем при >3 бросках, а если мы сможем манипулировать выпадающими значением(1-6), мы будем выигрывать всегда, за исключением случая возникновения аналогичного нечестного игрока, который возможно сможет набрать кол-во очков, превосходящее возможное, а именно число (1 * 5) + (2 * 5) + (3 * 5) + (4 * 5) + (5 * 5) + (6 * 5) + (6 * 5) + (6 * 5) + (6 * 5) + 50 + 20 + 30 = 295

Перейдём от теории покера к самой игре.





Среднестатистическая партия в покер на костях.

Запускаем FlashFireBug:

Спешу вас обрадовать - интерфейс у плагина довольно простой и удобный, в главном разделе окна вы можете путешествовать по дереву элементов интерфейсов и редактировать параметры отдельных элементов, хотя не так хорошо, как это реализовано в De Monster Debugger. Иметься возможность выбора элемента щелчком мыши по нему. На сайте разработчика можно купить Pro версию.

Как видим, мы можем изменять любой элемент интерфейса, в том числе и его параметры. Нас интересует элемент SmallCup, кнопка при нажатии на которую происходит бросок оставленных костей, а точнее её Bool свойство visible, отвечающие за видимость.

А что если на сервере не проверяется кол-во бросков? Надо бы проверить, - бросаем кости 3 раза, вновь активируем кнопку и нажимаем на неё. И действительно, серверная часть не проверяет количество — теперь мы можем бросать кости неограниченное число раз, и выбрасывать любую нужную комбинацию. Теперь всегда можно набирать 295 очков, оставив далеко позади любого честного человека.

А что, если игрок играющий против нас, каким то способом наберёт 295очков, а вы — меньше, так как время на бросок ограничено, а нужные кости могут и не выпасть. А если он наберёт больше 295 очков? Невозможно, скажите вы? Для нас нет ничего невозможного

В большинстве игр работает очень простой способ проверки поступающих вам данных. Перед их получением вы отключаете сетевое соединение, и пытаетесь их получить. Если они пришли, значит они формируются на вашей стороне, или изначально там хранятся. Пробуем... Перед броском костей выполняем:

Код:
sudo ifconfig eth0 down
Бросаем... Значения костей выпадают(Как и при повторном броске), - значит нам нужно всего лишь их подменить, а заодно проверить возможность хранения кости числа больше 6.

В файлеdice-r1.swf, найденном черезCharles храниться любезно предоставленный разработчиками класс dice и package diceClasses где скорее всего находиться основная часть кода работы с костями, а именно:

Функция проверки на комбинацию:

[PHP]
[COLOR="#000000"]public static functiongetAvailableCombos(arg1:Array,arg2:Array):Array

{

var
loc2:*;

loc2=null;

var
loc3:*;

loc3=0;

var
loc4:*;

loc4=false;

var
loc5:*;

loc5=null;

var
loc6:*;

loc6=0;

var
loc1:*;

loc1= new Array(12);

diceClasses.rules.Rules.enNullArray(loc1);

loc3=0;

while (
loc3=4)

{

loc4=true;

br eak;

}

++
loc3;

}

loc1[6] =loc4?loc2.count* (loc3+1) +loc2.restSum:0;

}

if (
arg2[7] == -1)

{

loc4=false;

loc3=0;

while (
loc3[COLOR="#007700"]
 
Ответить с цитированием
 



Предыдущая тема Следующая тема

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


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.