Назад

Русская рулетка

Автор: Kill Spirit: Дата: 07.05.2010

Помогите исправить:

//by poiuty
//Автоэвент Русская Рулетка. | v1.1 (от 20-11-09)
//link: http://land-game.ru/forum/index.php?showtopic=3417
//icq:450-420-625
/*
В эвенте могут принять неограниченное кол-во участников.
На мой взгляд скрипт работает достаточно стабильно.И быстро.
Есть предложения,критика,пожелания,благодарности и т.д.? пишите на форуме piratro.ru link саппорт темы я дал выше.
Прошу не стирать мои копирайты.Многие очень любят это делать,а потом выдавать скрипты за свои.
Баги так же пишем в теме поддержки.
Ах да,заходите к нам на piratro.ru >__<
*/

function script rus_event_time_start {
sleep 1000*60*3;//Время ожидание 3 минут.
set $rus_start,1; //Выключаем регистрацию.
announce "Регистрация закончена.",8;
sleep 2000;
if($rus_priz==1){announce "Приз в этот раз: "+$rus_kolich*$rus_players+" zeny!",8;}
if($rus_priz==2){announce "Приз в этот раз: "+$rus_kolich*$rus_players+" bronze coins!",8;}
sleep 2000;
announce"Собирайтесь в пронте,чуть правее фонтана,возле меня.",8;
sleep 2000;
announce"На сбор даю 30 секунд.",8;
sleep 30*1000;
announce"Начинаем!",8;
callfunc("rus_event");
end;
}

//OnClock
- script rus_event_par -1,{
OnInit:
set $rus_start,1; //Выключаем регистрацию!
end;
OnClock1200:
OnClock2253:
set $rus_players,0;
set $rus_shans,rand(2,3); // либо 1 к 2 либо 1 к 3
set $rus_priz,rand(1,2);
announce"Эвент русская рулетка начинается!",8;
sleep 2000;
announce"Регистрация в пронтере у фонтана.",8;
sleep 2000;
announce"На сбор и регистрацию 3 минут.",8;
sleep 2000;
if($rus_shans==2){announce"Шанс: 1 к 2 ",8;}
if($rus_shans==3){announce"Шанс: 1 к 3 ",8;}
if($rus_priz==1){ //zeny
set $rus_kolich,rand(1,3); //Количество
set $rus_kolich,$rus_kolich*1000000;
set $rus_start,0; //Включаем регистрацию.
sleep 2000;
announce"Для участия надо заплатить "+$rus_kolich+" zeny",8;
callfunc("rus_event_time_start");//запускаем.
end;
}
if($rus_priz==2){
set $rus_kolich,rand(3,10); //Количество
set $rus_start,0; //Включаем регистрацию.
sleep 2000;
announce"Для участия надо заплатить "+$rus_kolich+" bronze coins",8;
callfunc("rus_event_time_start");//запускаем.
end;
}
}

//Регистратор.
prontera,171,200,6 script Русская Рулетка 107,{
if($rus_start==1){mes"Эвент еще не начинался";next;mes"Рассписание вы можете посмотреть на сайте.";close;}
mes"Привет!Я записываю";
mes"На эвент русская рулетка!";
mes"Чтобы принять в нем участие";
if($rus_priz==1){mes"Надо заплатить "+$rus_kolich+" zeny";}
if($rus_priz==2){mes"Надо заплатить "+$rus_kolich+" bronze coins";}
next;
switch(select("Хорошо","Расскажите подробнее")){
case 1:
set .a,0; //Обнулили переменную
//Чтобы не регистровались повторно.
query_sql "SELECT `char_id` FROM `rus_event` WHERE `account_id` = '"+getcharid(3)+"'",.a;
if(.a>0){mes"Вы уже записаны на эвент.";close;}
//Чтобы не регистровались повторно.
//Проверки на предметы.
if($rus_priz==1){
if(zeny<$rus_kolich){mes"Не хватает zeny";close;}
set zeny,zeny-$rus_kolich;
}
if($rus_priz==2){
if(countitem(673)<$rus_kolich){mes"У вас не хватает bronze coins";close;}
delitem 673,$rus_kolich;
}
//Записываем.
set $rus_players,$rus_players+1;
query_sql "INSERT INTO `rus_event` (`account_id`,`char_id`,`state`) VALUES ('"+getcharid(3)+"','"+getcharid(0)+"','1')";
mes"записали!!";
close;

case 2:
mes"Подробнее на сайте";
close;
}
}


function script rus_event {
while(1){
sleep 4000;
set .rus_event_account_id,0;
//Проверяем есть ли хоть какая-то запись в таблице.Если нет - останавливаем цикл
set .rus_proverka,0;
query_sql "SELECT `account_id` FROM `rus_event` WHERE `state` = '1'",.rus_proverka;
query_sql "SELECT `account_id` FROM `rus_event` WHERE `state` = '2'",.rus_proverka;
if(.rus_proverka==0){ break;} //заканчиваем цикл.
//Проверяем есть ли хоть какая-то запись в таблице.Если нет - останавливаем цикл
set .rus_proverka_one,0;
set .rus_proverka_two,0;
sleep 1000;
//Проверка - определяем остался сколько юзверов осталось.Если остался один - выдаем приз.
query_sql "SELECT sum(`state`) FROM `rus_event` WHERE `state` = '1'",.rus_proverka_one;
query_sql "SELECT sum(`state`) FROM `rus_event` WHERE `state` = '2'",.rus_proverka_two;
if(.rus_proverka_two>0){
set .rus_proverka_two,.rus_proverka_two/2; //Здесь 1
}
//Выдаем приз
if((.rus_proverka_one==1 && .rus_proverka_two==0) || (.rus_proverka_one==0 && .rus_proverka_two==1)){
query_sql "SELECT `account_id` FROM `rus_event` WHERE `state` = '1'",.rus_event_account_id;
attachrid(.rus_event_account_id);
if(sex==0){set .rus_say$,"Она";}else{set .rus_say$,"Он";}
query_sql "DELETE FROM `rus_event` WHERE `account_id` = '"+.rus_event_account_id+"'";

if($rus_priz==1){
announce "Победил "+strcharinfo(0)+" "+.rus_say$+" получает "+$rus_kolich*$rus_players+" zeny!",8;
set .j,zeny+$rus_kolich*$rus_players;
if(.j>=1000000000){
announce "Он получит их в банке.",8;
set #BANK,#BANK+$rus_kolich*$rus_players;
}else{set zeny,zeny+$rus_kolich*$rus_players;}
}
if($rus_priz==2){
announce "Победил "+strcharinfo(0)+" "+.rus_say$+" получает "+$rus_kolich*$rus_players+" bronze coins!",8;
if (checkweight(673,$rus_kolich*$rus_players) == 0 ){
announce "Он получит их в банке.",8;
set RUS_EVENT_COINTS,RUS_EVENT_COINTS+$rus_kolich*$rus_players;
}else{
getitem 673,$rus_kolich*$rus_players;
}
}
break;//Заканчиваем цикл
}

//Проверка - определяем остался сколько юзверов осталось.Если остался один - выдаем приз.
set .rus_event_state,0;
if($rus_event_state==1){
query_sql "SELECT sum(`state`) FROM `rus_event` WHERE `state` = '2'",.rus_event_state;
set .rus_event_one,2; set .rus_event_two,1;//переменные .rus_event_one - ищем .rus_event_two - записываем
if(.rus_event_state==0){set $rus_event_state,0;}
}else{
query_sql "SELECT sum(`state`) FROM `rus_event` WHERE `state` = '1'",.rus_event_state; //Получаем запись 1 из state.Если ее нет,значит .rus_event_state==0
set .rus_event_one,1; set .rus_event_two,2; //переменные .rus_event_one - ищем .rus_event_two - записываем
if(.rus_event_state==0){set $rus_event_state,1;} //Если .rus_event_state==0 значит пора записывать и искать по-другому
}//Важная часть.
query_sql "SELECT `account_id` FROM `rus_event` WHERE `state` = '"+.rus_event_one+"'",.rus_event_account_id;
if(.rus_event_account_id>0){
//Проверка на онлайн
if(!attachrid(.rus_event_account_id)){
query_sql "SELECT `char_id` FROM `rus_event` WHERE `account_id` = '"+.rus_event_account_id+"'",.rus_charid;
query_sql "SELECT `name` FROM `char` WHERE `char_id` = '"+.rus_charid+"'",.rus_announce$;
query_sql "DELETE FROM `rus_event` WHERE `account_id` = '"+.rus_event_account_id+"'";
announce .rus_announce$+" Исключен из эвента.Прична - чара нет в онлайне.",8;
continue;
}
//Проверка на чар айди.Если чар айди другой - удаляем.
query_sql "SELECT `char_id` FROM `rus_event` WHERE `account_id` = '"+.rus_event_account_id+"'",.rus_charid;
if(.rus_charid!=getcharid(0)){
query_sql "SELECT `char_id` FROM `rus_event` WHERE `account_id` = '"+.rus_event_account_id+"'",.rus_charid;
query_sql "SELECT `name` FROM `char` WHERE `char_id` = '"+.rus_charid+"'",.rus_announce$;
query_sql "DELETE FROM `rus_event` WHERE `account_id` = '"+.rus_event_account_id+"'";
announce .rus_announce$+" Исключен из эвента.Прична - сменил чара.",8;
continue;
}
//Rand`ом определяем,кого убивать,а кого нет.
set .i,rand(1,$rus_shans); //шанс
if(.i==1){
query_sql "SELECT `char_id` FROM `rus_event` WHERE `account_id` = '"+.rus_event_account_id+"'",.rus_charid;
query_sql "SELECT `name` FROM `char` WHERE `char_id` = '"+.rus_charid+"'",.rus_announce$;
announce .rus_announce$+" Твоя очередь!",8;
sleep 1000;
announce "Бабах!",8;
sleep 1000;
if(attachrid(.rus_event_account_id)){
specialeffect2 32; //огонь
sleep2 300;
specialeffect2 56; //зеленый каст
sleep2 300;
specialeffect2 266; //полоски во все стороны
sleep2 300;
specialeffect2 183; //взрыв
percentheal -100,-100;
}
announce .rus_announce$+" тебе сегодня не повезло (>.<)",8;
//Удаляем запись.
query_sql "DELETE FROM `rus_event` WHERE `account_id` = '"+.rus_event_account_id+"'";
continue;
}else{
query_sql "SELECT `char_id` FROM `rus_event` WHERE `account_id` = '"+.rus_event_account_id+"'",.rus_charid;
query_sql "SELECT `name` FROM `char` WHERE `char_id` = '"+.rus_charid+"'",.rus_announce$;
announce .rus_announce$+" Твоя очередь!",8;
sleep 1000;
announce "Клац!",8;
if(attachrid(.rus_event_account_id)){
atcommand "@effect 65 22";//Даем эффект.
}
sleep 1000;
announce .rus_announce$+" тебе сегодня везет! xD",8;
//Если повезло поменяем state,чтобы перейти к другому игроку.
query_sql "UPDATE `rus_event` set `state` = '"+.rus_event_two+"' WHERE `account_id` = '"+.rus_event_account_id+"'";
continue;
}
}
}
}


//Пример вывода койнов.
//Аналогично зени.(напишите сами)(подсказка если вы юзаете банк(который в еа лежит) посмотрите какая там переменная # и замените на нее все переменные #BANK в скрипте)
prontera,154,180,6 script Bronze coin#111 88,{
mes"На счете bronze "+RUS_EVENT_COINTS;
next;
switch(select("Вывести","Расскажите подробнее","Нечего")){
case 1:
input .rus_l;
if(.rus_l>RUS_EVENT_COINTS){mes"У вас нет сколько bronze coins";close;}
if (checkweight(673,.rus_l) == 0 ){mes"Освободите свой инвентарь";close;}
set RUS_EVENT_COINTS,RUS_EVENT_COINTS-.rus_l;
getitem 673,.rus_l;
mes"На счете койнов "+RUS_EVENT_COINTS;
close;
case 2:
mes"Привет!";
mes"В общем, я выдаю bronze coins";
mes"которые вы получаете выйграв эвент [Русская Рулетка]!";
close;
case 3:
end;
}
}


В базе данных, таблица для неё есть...

Так вот, когда проходит 1 круг, нпц вобще отказывается работать, а когда смотрю в таблицу, там остается только айди участника который был последним в круге 0_о

Вобщем, как сделать всё по нормальному?

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

у поюти нормально все написано. поставь чистый скрипт

Автор: Kill Spirit: Дата: 07.06.2010

Это чистый скрипт, с ea.ws...

На ланд гейме регатся...сообщения набивать....

Сан если не сложно, выложи скрипт с ланд гейма

Автор: Kill Spirit: Дата: 07.06.2010

Ап....
Извини незнал, что можно апать раз в день...

Автор: Kill Spirit: Дата: 07.07.2010

АП(((