000182. Колода карт в GTA San Andreas

#Колода карт в GTA San Andreas

В этом уроке мы рассмотрим возможности работы с игровыми картами.

Привет! Будем играть в карты? Маловероятно, так как написать хорошую карточною игру обычным скриптингом проблематично. Тем не менее, некоторые возможности для работы с колодой у нас есть. Их мы и рассмотрим.

У нас доступны только 2 опкода, которые относятся к теме. Рассмотрим первый:

059D: shuffle_card_decks 1

Этот опкод включает возможность перемешивания карт. За что отвечает параметр "1" мне точно не известно. Скорее всего - это количество карт, которые не будут повторятся, когда будет взята карта с колоды. Или этот параметр отвечает за тип колоды, которая может использоваться для той или иной игры.

Я смог узнать только допустимые значения. Разрешено использовать параметр от 0 до 6 включительно. Если установить значение выше, то игра у меня вылетала.

После включения генератора колоды можно уже получить карту, используя опкод:

059E: get_card_to 0@

В переменную 0@ будет записан текущий идентификатор карты. По-сути: это обычное число от 1 до 52 включительно. Идентификаторы располагаются в таком порядке:

Т 2 3 4 5 6 7 8 9 10 В Д К

По цвету масти сортировка следующая:

Трефы (♣) Бубны (♦) Пики (♠) Червы (♥)

Чтобы было легче ориентироваться в этой паутине идентификаторов, я сгруппировал всё в одной картинке через скрипт:

title

Собственно, на этом можно было и закончить. Но я решил написать пример использования, чтобы статья не была такой бесполезной. Давайте дадим игроку 6 карт и позволим ему выбрать одну из них. В зависимости от выбранной карты игроку будут начислены деньги:

Вот такой небольшой скрипт у нас получился. Результат такой:

title

Спасибо за внимание!

× Примечание: я использовал идентификаторы согласно оригинальному MAIN.SCM. Возможно, они только декоративные и по-сути колода является только генератором простых чисел от 1 до 52 включительно.

Last updated

Was this helpful?