Для повышения друже-любности механизма игры к игрокам, нужно
пере-направлять карты монстров, включаяя карты элементов, в буфер_для_коробок.
Когда игрок открывает, например, синюю коробку, то открывается отдельное окошко,
и там показаны подарки - это и есть, буфер для коробок.
Есть пара деталей - авторы игры могут гибко их настроить..
1. Игнорирование настроек групы на дроп, потому-что карты выдаёт рука бога.
При этом, игрок, которому выпала карта в буфер, может не брать её оттуда сразу,
и факт выпадения останется в тайне.
2. Особая галочка блокератора переноса карты в нормальный рюкзак, если на момент
попадания карты в буфер, нужный отдел рюкзака не имел свободных слотов.
Блокератор с карты снимается, если расширить любой раздел рюкзака.
Блокератор изначально не ставится, если нужный раздел рюкзака _полностью расширен.
// --- Далее, мысли, близкие к техническим заморочкам
Процедура дропа, от факта смерти монстра, как обычно, выясняет _какая_пати
получит доступ к дропу из этого монстра (один игрок == тоже пати).
Далее, предметы дропа порождаются ... но кейс порождения карт монстров,
выносим в отдельную процедуру, например, drop_card_mob.
// номер предмета, и масив на 8 игроков групы, которая нанесла больше урона.
bool drop_card_mob( int id_card, t_player* params[] )
{
// фантазирую внутрености _руки_фортуны // надо узнать _кому_выпало
int k = 0;
t_player* p8[ 8];
for(i < 8) if( params[ i] ) p8[ k++] = params[ i]; // с ноля по семёрку
// утрамбовать указки, чтобы все не-нолевые стали подряд.
if( k < 1 ) // нет даже одного игрока ...
return 0; // никому не досталось - вызов процедуры подозрительный.
else if( k != 1 ) // если много игроков, то рулетка.
k = random( 1, k); // хотя, этот выбор можно усложнить.
t_player* p = p8[ k -1]; // первый счастливчик.
if( p->card_gift_ok( id_card) ) // содержимое процы чуть ниже.
return 1; // удалось выдать.
// можно переделать процу, чтобы не удачная выдача карты первому счастливчику,
// пыталась крутануть рулетку _оставшимся игрокам групы.
return 0;
}
bool t_player:: card_gift_ok( int id_card)
{
if( this->bag_extra__on_use() ) // не разгружен буфер_для_коробок.
return 0; // игрок не хочет новых подарков.
t_item* card = game_create_item( id_card); // создать предмет-карту.
if( card ) // если получилось создать предмет-карту.
{
int bloker = 0;
if( ! this->bag3_don_max ) // если раздел рюкзака не максимален
{
if( this->bag3_next_empty_slot < 0 ) // if( не нашли пустого места )
bloker = 1; // надо ставить блокератор на карту,
// который сбросим, когда игрок _расширит рюкзак.
}
if( this->bag_extra__add_item( card) ) // выставили в буфер_для_коробок
{
card->bloker_move_to_bag = bloker;
card->spec_on_gift(); // в статистику сервера, что карта была выбита
return 1; // удалось выдать.
}
card->destroy(); // не доставайся никому - карта не была выбита.
}
return 0;
}
// в событии расширения рюкзака
bool t_player:: on_bag_up()
{
t_item* first = this->bag_extra__on_use();
if( first )
{
if( first->type as card_mob || first->type as card_mob_elem )
first->bloker_move_to_bag = 0; // обноляем, чтобы игрок мог перенести
}
// и остальная часть события
}
Рука фортуны и Карты монстров
#1
Отправлено 06 December 2016 - 01:57 AM
#2
Отправлено 06 December 2016 - 06:08 AM
#3
Отправлено 06 December 2016 - 06:29 AM
Учись пользоваться CamelCase'ом, иначе очень сложно читать что-либо.
#4
Отправлено 06 December 2016 - 08:22 AM
1. Не хочу заботиться подбором лута, а если выпадет карта, пусть она сразу будет моя.
2. Не хочу, чтобы сопартийцы знали о выбитой мной карте.
И если цель первого хотя бы понятна, то второе - совсем не понятно зачем и очень спорно.
А попытки написать код выглядят странно. Ты что, думаешь, разработчики будут копировать этот код, что ли? А читать с этим куском кода (совершенно банального) только труднее.
#5
Отправлено 06 December 2016 - 08:41 AM
Есть подозрение, что ТСу нужно срочно сдать курсовок. Вот и выложил, замаскировав слегка: вдруг кто-нибудь невзначай отладит неработающий кусок?А читать с этим куском кода (совершенно банального) только труднее.
#6
Отправлено 06 December 2016 - 10:01 AM
курсовок
на курсовик чет вообще не похоже, говно какое-то
#7
Отправлено 06 December 2016 - 10:16 AM
интересно, если он обычные слова пишет с ошибками, что там в коде творится?
#8
Отправлено 06 December 2016 - 10:44 AM
интересно, если он обычные слова пишет с ошибками, что там в коде творится?
Да ничего там особенного не творится. Написана банальщина, и по-дилетантски написана. Но в принципе, если добавить сюда недостающие куски (что правда раз в 10 может быть больше уже написанного) может и заработать.
#9
Отправлено 06 December 2016 - 10:51 AM
Идея фиг-ня
#10
Отправлено 06 December 2016 - 16:36 PM
Личинка быдлокодера?
Ну и сами по себе предложения, зачем они?
#11
Отправлено 29 December 2016 - 16:18 PM
#12
Отправлено 29 December 2016 - 21:00 PM
Мне одному что-ли понравилась идея?
1 пользователей читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей