Назад

[Release] Black Jack (перевод)

Автор: Gremlin: Дата: 04.10.2010

Переведено на русский язык, изменены ставки.
[SPOILER="Blackjack"]

//===== eAthena Script ======================================= 
//= Black Jack
//===== By: ==================================================
//= kobra_k88
//===== Current Version: =====================================
//= 1.1
//===== Compatible With: =====================================
//= Любая ревизия
//===== Description: =========================================
//= Black Jack card game. Gameplay based off standard casino
//= black jack rules. Dealer must have at least 17 to stay and will
//= automatically stay at 17 and up. Player must have at least
//= 13 to stay. Aces counted as 11 or 1. Option to "Double Down".
//= Currently does not allow for "insurance", or "splitting"
//= of pairs.
//===== Additional Comments: =================================
//= Перевод от Gremlin'a специально для Joker-RO.
//= Заходите на Rus-ea.ru! Там вы можете найти много
//= полезного для eAthena
//============================================================


prontera,157,198,1 script Black Jack Dealer 57,{

mes "[Дилер]";
mes "Привет! Хочешь сыграть в Блекджек?";
M_Menu:
next;
menu "Расскажи правила",M_0, "Давай сыграем!",L_Play, "Нет, спасибо.",M_End;

M_0:
mes "[Дилер]";
mes "Что ты хочешь узнать?";
sM_Menu0:
next;
menu "Основное.",sM_0a, "Победа и проигрыш.",sM_0b, "'Удвоить ставку'.",sM_0c,
"Значение туза.",sM_0d, "Ничего.",M_Menu;

sM_0a:
mes "[Дилер]";
mes "Блэкджек это карточная игра в которой нужно набрать 21 очко или значение как можно ближе.";
mes "При переборе более 21 очка означает автоматический проигрыш.";
next;
mes "[Дилер]";
mes "Перед началом игры нужно сделать ставку";
mes "Далее дилер и игрок получают по две карты";
mes "В зависимости от своих очков и очков дилера выбери ^5533FF'хватит'^000000,";
mes "или ^5533FF'ещё'^000000.";
next;
mes "[Дилер]";
mes "Выбирая 'хватит', ты говоришь дилеру что тебе";
mes "бльше ну нужно карт. Дилер может продолжить набирать карты";
mes "если захочет. Чтобы остановиться тебе нужно ^FF3355минимум 13 очков^000000.";
mes "Дилер останавливается при ^FF3355 17 очках или более^000000.";
next;
mes "[Дилер]";
mes "Если вы выбираете 'ещё', вы говорите дилеру, что хотите взять";
mes "ещё одну карту. Набирая карты вы можете увеличить общее количество очков";
mes "Пока у вас^FF3355менее 21^000000 очка вы можете";
mes "набирать карты.";
goto sM_Menu0;
sM_0b:
mes "[Дилер]";
mes "Есть три параметра по которым можно выёграть или проиграть в Блекджек.";
next;
mes "[Дилер]";
mes "1.) Если в конце раунда у вас больше очков, чем у дилера";
mes "вы выигрываете раунд. Если у дилера больше - вы проигрываете";
next;
mes "[Дилер]";
mes "2.) Если у вас оказывается более 21 очка вы автоматически проигрываете раунд";
mes "Если у дилера перебор - вы выигрываете раунд.";
next;
mes "[Дилер]";
mes "3.) Если с первых двух карт у вас 21 очко";
mes "Вы автоматически выигрываете раунд. Это и есть пресловутый ^5533FF'Блэкджек'^000000";
mes "Так бывает, например когда вам попадается 'Туз' и равная по очкам '10' карта.";
mes "Если у дилера блекждек - он автоматически выигрывает раунд.";
next;
mes "[Дилер]";
mes "4.) Так же возможна ничья:";
mes "если и у вас, и у дилера поровну очков";
mes "вы не выигрываете и не проигрываете деньги";
next;
goto sM_Menu0;
sM_0c:
mes "[Дилер]";
mes "'Удвоить ставку' позволяет увеличить вашу тавку в 2 раза,";
mes "Но у вас будет возможность взять дополнительно";
mes "только одну карту";
next;
mes "[Дилер]";
mes "например, это полезно";
mes "когда в начале у вас 2 карты общим номиналом 11 очков,";
mes "у вас есть хороший шанс сщ следующей карты получить 20 или 21";
mes "В таких случаях полезно удваивать ставку.";
goto sM_Menu0;
sM_0d:
mes "[Дилер]";
mes "Карта 'Туз' отличается от других тем, что может иметь два значения";
mes "в пользу игрока она может считаться 11 или 1,";
mes "Например, 'Туз' и '4' могут давать в сумме";
mes "15 или 5 очков.";
next;
mes "[Дилер]";
mes "Подсчет ведётся в пользу игрока(или дилера)";
mes "То есть из 15 и 5, если вы остановитесь эта комбинация будет считаться 15 .";
next;
mes "[Дилер]";
mes "Фактически, это делает 'Туз' самой сильной картой в игре";
goto sM_Menu0;
M_End:
mes "[Дилер]";
mes "Приходи когда захочешь!";
close;

//================
L_Play:
mes "[Дилер]";
mes "Пожалуйста, делайте ставки...";
next;
menu "200.000z",M_1a, "1.000.000z",M_1b, "2.000.000z",M_1c, "10.000.000z",M_1d, "Оу.. я пас....",M_End;

M_1a:
if(Zeny < 200000) goto sL_NotEnuf;
set @bet, 200000;
goto L_Cont0;
M_1b:
if(Zeny < 1000000) goto sL_NotEnuf;
set @bet, 1000000;
goto L_Cont0;
M_1c:
if(Zeny < 2000000) goto sL_NotEnuf;
set @bet, 2000000;
goto L_Cont0;
M_1d:
if(Zeny < 10000000) goto sL_NotEnuf;
set @bet, 10000000;
goto L_Cont0;

sL_NotEnuf:
mes "[Дилер]";
mes "Простите, но у вас недостаточно денег.";
close;

L_Cont0:
mes "(Раздаются карты)";
next;
deletearray $@card[0],13;
set @dealerTurn, 0;
set @numP, 0;
set @numD, 0;
set @pAce, 0;
set @dAce, 0;
callsub sF_GetCards, @numP, @playCard[@numP], @playCard$[@numP], @pAce;
callsub sF_GetCards, @numP, @playCard[@numP], @playCard$[@numP], @pAce;
callsub sF_GetCards, @numD, @dealCard[@numD], @dealCard$[@numD], @dAce;
callsub sF_GetCards, @numD, @dealCard[@numD], @dealCard$[@numD], @dAce;

//==============
L_Start:
callsub sF_GetTot;

mes "- Карты ^FF5533Дилера^000000:";
if (@numD==2) callsub sF_D2cards;
if (@numD==3) callsub sF_D3cards;
if (@numD==4) callsub sF_D4cards;
if (@numD==5) callsub sF_D5cards;
mes " У дилера: ^FF5533"+@dealTot+"^000000 очков";
mes " ";
mes "- ^5533FFВаши^000000 карты:";
if (@numP==2) callsub sF_P2cards;
if (@numP==3) callsub sF_P3cards;
if (@numP==4) callsub sF_P4cards;
if (@numP==5) callsub sF_P5cards;
if(@pAce != 1 || @playTot == 21) mes " У вас: ^5533FF" +@playTot+ "^000000 очков";
if(@pAce == 1 && @playTot != 21) mes " У вас: ^5533FF" +@playTot+ "^000000, или ^5533FF" +(@playTot-10)+ "^000000 очков";
next;
if(@playTot==21 && @dealTot==21) goto sL_Push;
if(@numP==2 && @playTot == 21) goto sL_Win;
if(@numD==2 && @dealTot == 21) goto sL_Lose;
if(@playTot > 21) goto sL_Lose;
if(@dealTot > 21) goto sL_Win;
if(@numP==2 && @dealerTurn==0) menu "Ещё",M_Hit, "Хватит",M_Stay, "Удвоить",M_Double;
if(@dealerTurn == 0) menu "Ещё",M_Hit, "Хватит",M_Stay;

M_Stay:
mes "[Дилер]";
if(@playTot < 13) goto sL_PlayToLow;
if(@dealTot > 16) mes "Дилер остановился.";
if(@dealTot > 16 || @numD == 5) goto L_Check;
mes "Дилер берёт ещё одну карту";
next;
callsub sF_GetCards, @numD, @dealCard[@numD], @dealCard$[@numD], @dAce;
set @dealerTurn, 1;
goto L_Start;

sL_PlayToLow:
mes "Простите, но у вас недостаточно очков, чтобы остановиться. Вы должны взять ещё карту.";
next;
goto M_Hit;

M_Hit:
if(@numP == 5) goto M_Stay;
callsub sF_GetCards, @numP, @playCard[@numP], @playCard$[@numP], @pAce;
goto L_Start;
M_Double:
mes "[Дилер]";
mes "Игрок выбрал 'Удвоить'";
mes "Ставка будет увеличена в 2 раза и вам будет дана ещё одна карта.";
next;
set @dealerTurn, 1;
set @bet, @bet*2;
callsub sF_GetCards, @numP, @playCard[@numP], @playCard$[@numP], @pAce;
goto L_Start;

//=============
L_Check:
next;
if(@playTot < @dealTot) goto sL_Lose;
if(@playTot == @dealTot) goto sL_Push;

sL_Win:
mes "[Дилер]";
mes "поздравляем! Вы выиграли!";
next;
set Zeny, Zeny + @bet;
goto L_Play;
sL_Lose:
mes "[Дилер]";
mes "Простите, вы проиграли.";
set Zeny, Zeny - @bet;
next;
goto L_Play;
sL_Push:
mes "[Дилер]";
mes "Ничья.";
next;
goto L_Play;


//==================================
// Sub function for dealing/pulling the cards
sF_GetCards:
set @rnd, rand(1,13);
if($@card[@rnd] == 4) goto sF_GetCards;
set $@card[@rnd], $@card[@rnd] + 1;
set getarg(1), @rnd;
if(getarg(1) > 10) set getarg(1), 10;
if(getarg(1) == 1 && getarg(3) < 1) set getarg(1), 11;
if(getarg(1) == 11) set getarg(3), 1;
set getarg(2), " " + getarg(1) + " ";
if(@rnd == 10) set getarg(2), getarg(1);
if(@rnd == 1) set getarg(2), " A ";
if(@rnd == 11) set getarg(2), " J ";
if(@rnd == 12) set getarg(2), " Q ";
if(@rnd == 13) set getarg(2), " K ";
set getarg(0), getarg(0) + 1;
return;

//==================================
// Sub function for getting the total score for each hand
sF_GetTot:
set @i, 0;
set @dealTot, 0;
set @playTot, 0;

GetDealTot:
set @dealTot, @dealTot + @dealCard[@i];
set @i, @i + 1;
if(@i < @numD) goto GetDealTot;
if(@dAce == 1 && @dealTot > 21) set @dealTot, @dealTot - 10;
set @i, 0;
GetPlayTot:
set @playTot, @playTot + @playCard[@i];
set @i, @i + 1;
if(@i < @numP) goto GetPlayTot;
if(@pAce == 1 && @playTot > 21) set @pAce, 2;
if(@pAce > 0 && @playTot > 21) set @playTot, @playTot - 10;
return;

//=======================================
// Sub function for displaying the Cards
sF_D2cards:
mes " .-----. .-----. ";
mes " | "+@dealCard$[0]+" | | "+@dealCard$[1]+" | ";
mes " '-----' '-----' ";
return;
sF_P2cards:
mes " .-----. .-----. ";
mes " | "+@playCard$[0]+" | | "+@playCard$[1]+" | ";
mes " '-----' '-----' ";
return;
sF_D3cards:
mes " .-----. .-----. .-----. ";
mes " | "+@dealCard$[0]+" | | "+@dealCard$[1]+" | | "+@dealCard$[2]+" | ";
mes " '-----' '-----' '-----' ";
return;
sF_P3cards:
mes " .-----. .-----. .-----. ";
mes " | "+@playCard$[0]+" | | "+@playCard$[1]+" | | "+@playCard$[2]+" | ";
mes " '-----' '-----' '-----' ";
return;
sF_D4cards:
mes " .-----. .-----. .-----. ";
mes " | "+@dealCard$[0]+" | | "+@dealCard$[1]+" | | "+@dealCard$[2]+" | ";
mes " '-----' '-----' '-----' ";
mes " .-----. ";
mes " | "+@dealCard$[3]+" |";
mes " '-----' ";
return;
sF_P4cards:
mes " .-----. .-----. .-----. ";
mes " | "+@playCard$[0]+" | | "+@playCard$[1]+" | | "+@playCard$[2]+" |";
mes " '-----' '-----' '-----' ";
mes " .-----. ";
mes " | "+@playCard$[3]+" |";
mes " '-----' ";
return;
sF_D5cards:
mes " .-----. .-----. .-----. ";
mes " | "+@dealCard$[0]+" | | "+@dealCard$[1]+" | | "+@dealCard$[2]+" | ";
mes " '-----' '-----' '-----' ";
mes " .-----. .-----. ";
mes " | "+@dealCard$[3]+" | | "+@dealCard$[4]+" | ";
mes " '-----' '-----' ";
return;
sF_P5cards:
mes " .-----. .-----. .-----. ";
mes " | "+@playCard$[0]+" | | "+@playCard$[1]+" | | "+@playCard$[2]+" | ";
mes " '-----' '-----' '-----' ";
mes " .-----. .-----. ";
mes " | "+@playCard$[3]+" | | "+@playCard$[4]+" | ";
mes " '-----' '-----' ";
return;
}
[/SPOILER]

Автор: : Дата: 01.01.1970