Назад

Игра "Лотерея"

Автор: Leydor: Дата: 03.12.2011

Мой первый опыт в скриптописании :) Кирпичами не бросаться. Предложения\замечания\адекватная критика приветствуються.

// Игра "Лотерея"
// v1.1 Поправлены переменные и диалоги. (спасибо Shavkatik)
// Автор: Leydor

// Игроки, могут за некоторое кол-во зени, принять участие в лотерее.
// Автомат выдаёт случайное число. Если число не выйгрышное,
// сумма отправляеться в банк. Если выигрышное -
// игрок забирает весь банк, банк обнуляеться.
// Чтобы отредактировать шанс выйгрыша, отыщите строку set $@lt_num, rand(0,10)
// и измените 10 на любое удобное вам число.

prontera,154,128,3 script Автомат 910,{
//Конфигурация
OnInit:
set .lt_name$,"[ ^A4A4A4Лотерея^000000 ]"; //Имя NPC
set .lt_cost,500000; //Стоимость одной игры.
set .lt_win,22; //Выйгрышное число

mes .lt_name$;
mes "Добро пожаловать.Перед вами уникальное изобретение: ''Лотерейный Автомат''. Желаете испытать свою удачу? ";
next;
switch(select("Принять участие.","Узнать подробней.","Какова сумма джекпота?","Уйти.")) {
next;
case 1:
mes .lt_name$;
mes "Ну что же, начнём.. ";
next;
if (Zeny < .lt_cost) { // Проверка на зени.
mes .lt_name$;
mes "У вас недостаточно зени.";
close;
}
set Zeny,Zeny - .lt_cost; // Если зени хватает, забираем их у игрока.
next;
mes .lt_name$;
mes "*вы слышите скрипт механических деталей";
mes "и прочие странные звуки*";
next;
set @lt_num, rand(0,33); // Выбрасываем случайное число.
if ( @lt_num == .lt_win) { // Победа
Emotion e_heh;
mes .lt_name$;
mes "Удивительно! Вам удалось! Вы - победитель!";
set Zeny,Zeny + $lt_jack;
announce "Лотерея: Игрок "+strcharinfo(0)+" только что выиграл в лотерею! Он получает "+$lt_jack+"z",0,0x99FFCC;
set $lt_jack,0; //Обнуляем джекпот
next;
close;
} // Неудача
Emotion e_swt;
mes .lt_name$;
mes "У вас не вышло, возможно в следующий раз удастся!";
mes "Вам выпало число: "+@lt_num+"";
set $lt_jack,$lt_jack + .lt_cost; // Добавляем сумму к джекпоту.
close;
break;

case 2:
mes .lt_name$;
mes "Правила игры просты:";
mes "Вы отдаёте мне "+.lt_cost+"z.";
mes "Я выдаю вам случайное число.";
next;
mes .lt_name$;
mes "Если ваше число - "+.lt_win+",";
mes "то вы - победитель и получаете весь текущий джекпот.";
next;
mes .lt_name$;
mes "В обратном случае, ваша сумма добавляется к общему призу.";
next;
mes .lt_name$;
mes "На этом всё.";
close;
break;

case 3:
mes .lt_name$;
mes "Текущая сумма джекпота:";
mes ""+$lt_jack+"z";
next;
close;
break;

case 4:
mes .lt_name$;
mes " Удачного дня.";
next;
close;
break;
}
}





Заметил что постоянно спрашивают про табы, хоть их тут и всего несколько, во вложении скрипт с расставленными.

Автор: Leydor: Дата: 03.12.2011

спасибо, завтра исправлю. с переменными работал с готовых примеров, поэтому не сильно освоился.

ах, да и вот ещё вопрос знающим: я рассчитывал эту штуку под хайрейт, где зеней понятно что много. ограничение на сервере составляет 1ккк, и есть какой-то шанс что сумма может перевалить. тогда игрок получит ровно до 1ккк остальное потеряеться. как это можно обойти либо проверить и додать?

Автор: Shavkatik: Дата: 03.13.2011

mes "Удивительно! Вам удалось! Вы - победитель!";
set @jack,Zeny + $lt_jack;
if (@jack > 1000000000) {
set jackcash,@jack - 1000000000;
set Zeny,1000000000;
announce "Лотерея: Игрок "+strcharinfo(0)+" только что выиграл в лотерею! Он получает "+$lt_jack+"z",0,0x99FFCC;
set $lt_jack,0; //Обнуляем джекпот
close;
}
set Zeny,Zeny + $lt_jack;
announce "Лотерея: Игрок "+strcharinfo(0)+" только что выиграл в лотерею! Он получает "+$lt_jack+"z",0,0x99FFCC;
set $lt_jack,0; //Обнуляем джекпот
close;

Отсюда все что не додалось будет храниться на персонаже в jackcash

Ну и потом достаточно в начале при разговоре с НПЦ:

mes .lt_name$;
if (jackcash > 0) {
mes "У вас на счету остались зени, которые вы не смогли получить с выигрышем, хотите их забрать?";
next;
switch(select("Да","Нет","Сколько осталось?","Не хочу забирать, хочу играть")) {
case 1:
mes "Получите, распишитесь";
set Zeny,Zeny+jackcash;
set jackcash,0;
close;

case 2:
mes "Ой, да как хочешь";
close;

case 3:
mes "У вас осталось "+jackcash+"зеней.";
close;

case 4:
next;
}
}
mes "Добро пожаловать.Перед вами уникальное изобретение: ''Лотерейный Автомат''. Желаете испытать свою удачу? ";
next;
switch(select("Принять участие.","Узнать подробней.","Какова сумма джекпота?","Уйти.")) {


Ну и т.п., тут еще можно поставить опять же проверку влезут ли ему эти деньги снова или нет.

p.s. "спасибо" есть кнопочка, не обязательно писать :)

Автор: Cole McCormick: Дата: 03.13.2011

Не забываем, в тегах кода).

Автор: Said: Дата: 03.13.2011

Цитата Leydor;35996:
спасибо, завтра исправлю. с переменными работал с готовых примеров, поэтому не сильно освоился.

ах, да и вот ещё вопрос знающим: я рассчитывал эту штуку под хайрейт, где зеней понятно что много. ограничение на сервере составляет 1ккк, и есть какой-то шанс что сумма может перевалить. тогда игрок получит ровно до 1ккк остальное потеряеться. как это можно обойти либо проверить и додать?


как вариант давать выигрыш монетами которые персонаж может обменять в банке на заени.:cool:

Ну и ставка монетами .
так веселей, жетончик "кинул" снял "мелочь" )

Автор: Leydor: Дата: 03.23.2011

Обновил скрипт :)

Said: На разных серверах разной ценности монеты, а зение есть везде, я от этого отталкивался.