Назад

Математик

Автор: nomn: Дата: 02.06.2011

[COLOR="Indigo"]Подходишь, регистрируешься, выбираешь параметры: кол-во раундов(n), диапазон значений(x), желаемый противник. Вносишь ставку ждешь.
Идет n раундов, математические операции (сложение\вычитание\деление\умножение) с числами от 1 до x. Кликаешь на НПСа и говоришь верный ответ.
Победитель получает обе ставки.[/COLOR]


//===== eAthena Script =======================================
// Auto Event
//===== Автор ================================================
// nomn
//===== Текущая версия =======================================
// 1.0
//===== Совместимость ========================================
// All eAthena Rev 13+
//===== Описание =============================================
// Авто эвент "Математик".
//===== Изменения ============================================
// v1.0 - Первый релиз. [nomn]
//============================================================

Lunette,127,104,4 script Математик 47,{

if ($@math_temp == 1) {
mes "[Математик]";
mes "Подожди пару секунд...";
close;
}

if (@math_payandrady == 1 && $@math_battle == 1) {
mes "[Математик]";
mes "Дождитесь, пока кто-нибудь примет твой вызов!";
close;
}

if ($@math_battle == 1) {
mes "[Математик]";
mes "Желаешь принять вызов и сразиться в математическом тестировании?";
mes "Цена вопроса - ^0000FFJust Coin^000000, победитель получает обратно свою ставку и ставку противника!";
mes "Помни, если ты покинишь игру, после подачи заявки, то не сможешь учавствовать в своем же тестировании!";
if (select("Согласен!","Нет") == 2 || $@math_battle == 2 || countitem(19052) < 1) {
close;
}
set $@math_battle, 2;
set @math_payandrady, 1;
set $@math_2nd, getcharid(3);
delitem 19052, 1;
close2;
announce "[Тестирование] '"+strcharinfo(0)+"' принял вызов! Участникам необходимо подойти ко мне!",bc_all;
sleep2 3000;
donpcevent "Математик::OnMathStart";
end;
}

if ($@math_battle == 2 && @math_payandrady == 1) {
mes "[Математик]";
if ($@math_unswer == 0) {
mes "Потерпи, сейчас задам новый вопрос!";
close;
}
mes "Скорее, скорее вводи ответ!!";
input @math_tuswer;
if (@math_tuswer == $@math_unswer) {

if($@math_1st == getcharid(3)) {
set $@math_top1, $@math_top1 + 1;
} else {
set $@math_top2, $@math_top2 + 1;
}
areaannounce "Lunette",98,112,131,74,"[Тестирование] Верно! '"+strcharinfo(0)+"' ответил верно ("+$@math_unswer+")!",bc_all;
set $@math_unswer, 0;
set $@math_play, $@math_play+1;
stopnpctimer;
donpcevent "Математик::OnMathStart";
close;
end;
} else {
mes "Не верно!";
close;
}
}

if ($@math_battle > 1) {
mes "[Математик]";
mes "Дождитесь конца тестирования, тогда вы сможете подать новую заявку.";
close;
}

mes "[Математик]";
mes "Приветствую тебя, "+strcharinfo(0)+".";
mes "Я Профессор Петров, доктор Физико-Математических наук.";
mes "Спросишь что я здесь делаю? ^0000FFПровожу тестирования конечно^000000!";
switch(select("Начать тестирование","Узнать подробнее","Уйти")){
case 1:
next;
mes "[Петров]";
mes "Уверены, что хотите начать регистрацию на Тестирование?";
if (select("Уверен","Неа") != 1) {
mes "Чтож, удачи тебе.";
close;
}
next;
mes "[Петров]";
mes "Начнем!";
next;

m_ROUND:
mes "[Петров]";
mes "Сколько раундов должно длиться тестирование?";
mes " ";
mes "<от ^0000FF3^000000 до ^0000FF11^000000>";
input @math_round;

if (@math_round < 3 || @math_round > 11) {
mes "Внимательнее, от ^0000FF3^000000 до ^0000FF11^000000!";
next;
goto m_ROUND;
}
next;

m_HARD:
mes "[Петров]";
mes "Какой диапазон значений будет у чисел?";
mes "Введите максимальное число, но не больше ^0000FF99^000000 и не меньше ^0000FF10^000000";
input @math_hard;
if (@math_hard > 99 || @math_hard < 10) {
mes "Внимательнее, от ^0000FF10^000000 до ^0000FF99^000000!";
next;
goto m_HARD;
}
next;

m_PLAY:
mes "[Петров]";
mes "Хотите-ли бросить вызов кому-нибудь конкретно?";
mes "Но учтите, участие в тестировании - добровольное, к тому же, у этого человека может не быть Монет или он может быть занят\вне игры.";
if (select("Да, указать ник","Нет, кто угодно") == 1) {
next;
mes "[Петров]";
mes "Введи ник человека, которого ты хочешь вызвать.";
mes "Минимум ^0000FF4 символа^000000.";
input @math_name$;
next;
mes "[Петров]";
mes "Ник - ^0000FF"+@math_name$+"^000000 - верно?";
mes "Если хочешь изменить или отказаться от выбора соперника, нажми 'нет'.";
if (select("Да","Нет") == 2 || getstrlen(@math_name$) < 4) {
next;
goto m_PLAY;
}
}

next;
mes "[Петров]";
mes "Итог:";
mes "Раундов - [^0000FF"+@math_round+"^000000]";
mes "Значения - до [^0000FF"+@math_hard+"^000000]";
if (getstrlen(@math_name$) > 3) {
mes "Соперник - [^0000FF"+@math_name$+"^000000]";
}
mes "Всё верно?";
mes "^0000FFПомни^000000, если ты покинишь игру, после подачи заявки, то не сможешь учавствовать в своем же тестировании,";
mes "И любой, кто решит принять твой вызов без труда выйграет.";
if (select("Да, оплатить!","Нет, обнулить всё.") == 2 || countitem(19052) < 1) {
set @math_round, 0;
set @math_hard, 0;
set @math_name$, "";
next;
mes "[Петров]";
mes "Приходи, если надумаешь.";
mes "И имей при себе 1 Just Coin.";
close;
}

if ($@math_battle > 0) {
next;
mes "[Петров]";
mes "Прости, кто-то тебя опередил. Не расстраивайся! Пройдешь тестирование позже!";
set @math_round, 0;
set @math_hard, 0;
set @math_name$, "";
close;
}

set $@math_battle, 1;
set $@math_names$, "";
set $@math_2nd, 0;
set $@math_1st, getcharid(3);
delitem 19052, 1;
set @math_payandrady, 1;
set $@math_rounds, @math_round;
set $@math_hards, @math_hard;
if (getstrlen(@math_name$) > 3) {
set $@math_names$, @math_name$;
}

announce "[Тестирование] Внимание! ["+strcharinfo(0)+"] активировал тестирование!",bc_all;
set $@math_temp, 1;
close2;
sleep 3000;
announce "[Тестирование] Принять вызов может каждый!",bc_all,0xd1d9fd;
sleep 3000;
if (getstrlen($@math_names$) > 3) {
announce "[Тестирование] Но уточним, что желаемый противник - ["+$@math_names$+"]!",bc_all,0xd1d9fd;
sleep 3000;
}
announce "[Тестирование] Если через 1 минуту никто не примет вызов - тестирование будет отменено!",bc_all,0xd1d9fd;
sleep 3000;
announce "[Тестирование] Я нахожусь в Столице (Lunette,127,104)",bc_all,0xd1d9fd;
set $@math_temp, 0;
initnpctimer;
end;
close;

case 2:
next;
mes "[Петров]";
mes "^0000FFТестирование^000000 - метод проверки ваших знаний, а так же, способ заработать на них! Регистрируясь";
mes "вы выбираете сложность теста и вносите вклад - ^0000FFJust Coin^000000";
mes "После того, как кто-нибудь принимает ваш вызов на тестирование, я начинаю задавать вопросы.";
mes "После последнего вопроса обе монеты достаются тому, кто быстрее отвечал на вопросы.";
mes "Вопросы математического характера. На сложение, вычитание, умножение и деление.";
close;

case 3:
close;
}




OnTimer60000:
if ($@math_battle != 2) {
announce "[Тестирование] Никто не принял вызов! Тестирование остановлено!",bc_all;
if (attachrid($@math_1st) != 0) {
attachrid($@math_1st);
getitem 19052, 1;
}
set $@math_battle, 0;
} else if ($@math_battle == 2) {
areaannounce "Lunette",98,112,131,74,"[Тестирование] Похоже этот вопрос оказался слишком сложен для вас, хе!",bc_all,0xd1d9fd;
set $@math_unswer, 0;
stopnpctimer;
donpcevent "Математик::OnMathStart";
stopnpctimer;
}
stopnpctimer;
end;

OnMathStart:
sleep 4000;
if ($@math_play == $@math_rounds) {
announce "[Тестирование] Подведем итоги!",bc_all;
set $@math_battle, 3;
sleep 3000;
announce "[Тестирование] со счетом ["+$@math_top1+" - "+$@math_top2+"] побеждает...",bc_all,0xd1d9fd;
sleep 3000;
if ($@math_top1 > $@math_top2) {
if (attachrid($@math_1st) != 0) {
attachrid($@math_1st);
getitem 19052, 2;
announce "[Тестирование] '"+strcharinfo(0)+"' - наш победитель! Поздравляем!",bc_all,0xd1d9fd;
}

if (attachrid($@math_1st) == 0) {
announce "[Тестирование] Победитель вышел из игры. Коины остаются у меня, хе-хе!",bc_all,0xd1d9fd;
}

} else if ($@math_top1 < $@math_top2) {
if (attachrid($@math_2nd) != 0) {
attachrid($@math_2nd);
getitem 19052, 2;
announce "[Тестирование] Да, '"+strcharinfo(0)+"' - наш победитель! Поздравляем!",bc_all,0xd1d9fd;
}

if (attachrid($@math_1st) == 0) {
announce "[Тестирование] Победитель вышел из игры. Коины остаются у меня, хе-хе!",bc_all,0xd1d9fd;
}

} else {
announce "[Тестирование] Силы оказались равны! Монеты возвращаются к своим хозяевам",bc_all,0xd1d9fd;
attachrid($@math_1st);
getitem 19052, 1;

attachrid($@math_2nd);
getitem 19052, 1;
end;
}

set $@math_battle, 0;
set $@math_rounds, 0;
set $@math_1st, 0;
set $@math_2nd, 0;
set $@math_top1, 0;
set $@math_top2, 0;
end;
}

set $@math_count1, rand(1,$@math_hards);
set $@math_count2, rand(1,$@math_hards);

switch(rand(1,4)){
case 1:
set $@math_unswer, $@math_count1 + $@math_count2;
areaannounce "Lunette",98,112,131,74,"[Тестирование] Внимание вопрос!!",bc_all,0xd1d9fd;
sleep 2000;
areaannounce "Lunette",98,112,131,74,"[Тестирование] Чему равна 'сумма' чисел: ["+$@math_count1+"] и ["+$@math_count2+"]?",bc_all,0xd1d9fd;
initnpctimer;
end;
break;

case 2:
areaannounce "Lunette",98,112,131,74,"[Тестирование] Внимание вопрос!!",bc_all,0xd1d9fd;
sleep 2000;
m_MINUS:
if ($@math_count1 > $@math_count2) {
set $@math_unswer, $@math_count1 - $@math_count2;
if ($@math_unswer == 0) {
goto m_MINUS;
}
areaannounce "Lunette",98,112,131,74,"[Тестирование] Чему равна 'разность' чисел: ["+$@math_count1+"] и ["+$@math_count2+"]?",bc_all,0xd1d9fd;
} else {
set $@math_unswer, $@math_count2 - $@math_count1;
if ($@math_unswer == 0) {
goto m_MINUS;
}
areaannounce "Lunette",98,112,131,74,"[Тестирование] Чему равна 'разность' чисел: ["+$@math_count2+"] и ["+$@math_count1+"]?",bc_all,0xd1d9fd;
}
initnpctimer;
end;
break;

case 3:
set $@math_unswer, $@math_count1 * $@math_count2;
areaannounce "Lunette",98,112,131,74,"[Тестирование] Внимание вопрос!!",bc_all,0xd1d9fd;
sleep 2000;
areaannounce "Lunette",98,112,131,74,"[Тестирование] Чему равно 'произведение' чисел: ["+$@math_count1+"] и ["+$@math_count2+"]?",bc_all,0xd1d9fd;
initnpctimer;
end;
break;

case 4:
areaannounce "Lunette",98,112,131,74,"[Тестирование] Внимание вопрос!!",bc_all,0xd1d9fd;
sleep 2000;
if ($@math_count1 > $@math_count2) {
set $@math_unswer, $@math_count1 / $@math_count2;
areaannounce "Lunette",98,112,131,74,"[Тестирование] Чему равно 'частное' чисел: ["+$@math_count1+"] и ["+$@math_count2+"] (целое, без остатка)?",bc_all,0xd1d9fd;
} else {
set $@math_unswer, $@math_count2 / $@math_count1;
areaannounce "Lunette",98,112,131,74,"[Тестирование] Чему равно 'частное' чисел: ["+$@math_count2+"] и ["+$@math_count1+"] (целое, без остатка)?",bc_all,0xd1d9fd;
}
initnpctimer;
end;
break;
}

}

Автор: Ragen: Дата: 02.07.2011

Молодец Раф,хоть что то новое внес в мир мингарда )))
действительно теперь надо сделать нпца с правилами русского языка,ответил первым и прально получил ставки))) вот тогда школота начнет учиться))

Автор: Sanasol: Дата: 02.07.2011

мир мингарда

Это где такой мир?

Автор: Swizz: Дата: 02.07.2011

Тоже хотел бы узнать, может в этом мире есть что то прилестное.)

Автор: Jarek: Дата: 02.07.2011

Цитата Sanasol;32857:
Это где такой мир?


Мб он имел в виду The World of Rune Midgard ?

Автор: Swizz: Дата: 02.07.2011

Ошибки, очень важный принцип для Санасола.)))

Автор: Renegade: Дата: 02.07.2011

ничего, мы его и таким любим :P