xcoms Опубликовано 23 февраля, 2013 Жалоба Поделиться Опубликовано 23 февраля, 2013 (изменено) Друзя помогите разобраться....есть скрипт дуели ! Работает почти хорошо .. но есть проблема которую не могу решить ...в скрипте есть такой кусочеккоторый должен отключать запрос на дуель по выходу времени ! но ничего не происходит.. можете подсказать почему ?(//If 5 Minutes passed after the challenger registred and no one accepts it.OnTimer1: announce "Так и не нашелься суперник или вышло время, и к сожалению дуель была отменена .",bc_map|bc_blue; if((.char$ != "") && (attachrid (getcharid(3,.char$)))) { set Zeny,Zeny+(.zeny/2); set dueling,0; } if((.char2$ != "") && (attachrid (getcharid(3,.char2$)))) { set Zeny,Zeny+(.zeny/2); set dueling,0; }// detachrid; set .char$,""; set .char2$,""; set .gambling,0; set .waiting,0; set .zeny,0; stopnpctimer; end;вот скрипт//===== eAthena Script ======================================================================//= Duel Gambling//===== Original By =========================================================================//= Information//===== Edited By =========================================================================//= Kaushik//===== Current Version: ====================================================================//= 1.4 = Fixed everything by Kaushik//= 1.3 = Added Comments and some Functions//= 1.2 - Fix exploitable bug//= 1.1 - Small Fix//= 1.0 - Script Release//===== Compatible With: ====================================================================//= Tested in TXT Revision 12168 Trunk//===== Description: ========================================================================//= You have to set the duel_time_interval to 0//===== Comments and Credits ================================================================//= Thanks to Ruroniarc,AnnieRuru,David Boy and Yhn that help me on getitemname2 o.O(getitemname2?)//= Thanks to my friend, Joey for the typo things//=//===========================================================================================prontera,150,177,4 script Дуель на деньги 953,{ set @npcname$,"[Менеджер дуели]";L_mm: mes @npcname$; //If already a duel is going on if(.gambling) { mes "Дуель стартовала, пожалуйста дождитесь окончание"; close; } mes callfunc("F_Hi") + " " + strcharinfo(0); //If the challenger and the one accepting the duel have registred and the duel is ready to start if(.char$ == strcharinfo(0) && .char2$ != "") { mes "^0000FF" +.char2$+ "^000000 ждет Вас для начала дуели!"; if(.zeny) mes "Ставка дуели ^FF0000" +.zeny+ "^000000 zeny."; if(.item) mes "The player duel for a ^FF0000" + callfunc("F_getitemname2",.item2[0],.item2[1],.item2[2],.item2[3],.item2[4],.item2[5]) + "^000000"; mes "Что бы Вы хотели?"; next; menu "Начать дуель",L_sduel,"Закрыть дуель",L_cduel; } //If the one accept the duel is going to talk to the npc if(.waiting) { mes "Дуэль будет начата в ближайшее время!"; close; } //If the challenger has registred, speaks again to the npc and no one accepted it if(.char$ == strcharinfo(0)) { mes "Пожалуйста, подождите вашего соперника."; next; menu "Закрыть дуель",L_cduel,"Я подожду",-; close; } //If a challenger has registred, another person speaks to the npc and no one has accepted before if(.char$ != "") { mes "Игрок ждет на поединок"; mes "Что бы Вы хотели?"; next; menu "Игрок и информация дуели",-,"Отправить приглашение на дуэль игроку",L_iduel,"Дуель на деньги?",L_info; mes @npcname$; mes "Игрок который ждет поединок ^0000FF"+.char$+"^000000"; if(.zeny) mes "Дуелт за ^FF0000" +.zeny+ "^000000 зени."; if(.item) mes "Дуель за ^FF0000" + callfunc("F_getitemname2",.item[0],.item[1],.item[2],.item[3],.item[4],.item[5]) + "^000000"; next; goto L_mm; } //If no challenger is registred. else { mes "Ни один игрок не ждет дуели за деньги в настоящее время"; mes "Что бы вы хотели сделать?"; next; menu "Начать дуель",-,"Дуель за деньги?",L_info; set .zeny,callfunc("F_PDZeny",0); Initnpctimer; set .char$,strcharinfo(0); mes @npcname$; mes "Пожалуйста подождите соперника."; announce .char$+ " ждет азартного игрока который отправиться с ним на дуель со ставкой " +.zeny+ " зеней " ,bc_map|bc_blue; close; }//This party will run after someone accepted the challenge of a challengerL_iduel: set .zeny,callfunc("F_PDZeny",.zeny); set .char2$,strcharinfo(0); set .waiting,1; mes @npcname$; mes "Пожалусто подождите я проинформирую вашого соперника."; announce .char$+ ", у вас есть соперник!",bc_map|bc_blue; close;//After both players registred and the challenger starts the duel. L_sduel: mes @npcname$; mes "Мы начинаем дуель."; close2; attachrid getcharid(3,.char2$); warp "pvp_n_1-1",90,50; attachrid getcharid(3,.char$); set dueling,1; warp "pvp_n_1-1",110,50; atcommand "@duel " + .char2$; attachrid getcharid(3,.char2$); atcommand "@accept"; set dueling,1;// detachrid; set .gambling,1; announce .char$+ " начал дуель с " +.char2$+ "!",bc_map|bc_blue; end;//If only the challenger is registred and cancels or if both registred and the challenger cancels the duel. L_cduel: announce "Дуель была отменена игроком " +.char$,bc_map|bc_blue; mes @npcname$; mes "Очень жаль, " + callfunc("F_Bye"); set dueling,0; set Zeny,Zeny+(.zeny/2); close2; if((.char2$ != "") && (attachrid (getcharid(3,.char2$)))) { attachrid getcharid(3,.char2$); set Zeny,Zeny+(.zeny/2); set dueling,0;// detachrid; } set .char$,""; set .char2$,""; set .gambling,0; set .waiting,0; set .zeny,0; end;//If you click on information for the duel. L_info: mes @npcname$; mes "Я собираю двох игроков,"; mes "которые будуть биться на смерть,"; next; mes @npcname$; mes "Перед началом дуели игрок указывает суму,"; mes "за которую игроки будут сражаться."; mes "Победитель получат всё."; next; mes @npcname$; mes "Максимальное время ожидание дуали и дуелянта 5 минут."; next; goto L_mm;//If 5 Minutes passed after the challenger registred and no one accepts it.OnTimer1: announce "Так и не нашелься суперник или вышло время, и к сожалению дуель была отменена .",bc_map|bc_blue; if((.char$ != "") && (attachrid (getcharid(3,.char$)))) { set Zeny,Zeny+(.zeny/2); set dueling,0; } if((.char2$ != "") && (attachrid (getcharid(3,.char2$)))) { set Zeny,Zeny+(.zeny/2); set dueling,0; }// detachrid; set .char$,""; set .char2$,""; set .gambling,0; set .waiting,0; set .zeny,0; stopnpctimer; end;//When a player kills his oppenent. OnPCKillEvent: if(!dueling) end; set Zeny,Zeny+.zeny; atcommand "@leave"; announce strcharinfo(0)+" выиграл в дуели!!! Поздравляем!!",bc_map|bc_blue; warp "prontera",158,184; set dueling,0; attachrid killedrid; set dueling,0;// detachrid; set .char$,""; set .char2$,""; set .gambling,0; set .waiting,0; set .zeny,0; set .waiting,0; warp "prontera",158,184; end;//When a player dies.. (Just incase he doesnt get killed by his oppenent)OnPCDieEvent: if(!dueling) end; if (killerrid == 0) { announce "Дуель была завершена потому что игрок "+strcharinfo(0)+" умер", bc_map|bc_blue; if (strcharinfo(0) == .char$) { attachrid getcharid(3,.char2$); set Zeny,Zeny+.zeny/2; } if (strcharinfo(0) == .char2$) { attachrid getcharid(3,.char$); set Zeny,Zeny+.zeny/2; } atcommand "@leave"; set dueling,0;// detachrid; set .char$,""; set .char2$,""; set .gambling,0; set .waiting,0; set .zeny,0; set .waiting,0; end; }}//Function for gambling for ZenyFunction script F_PDZeny { If(!getarg(0)) { mes @npcname$; mes "Какую ставку вы желаете установить?"; next; input .@zeny; If(.@zeny > Zeny || !.@zeny) { mes "У вас недостаточно денег на ставку , пожалуйста приходите когда соверете нужную суму!"; mes "Или просто измените на более низкую!"; close; } set Zeny,Zeny-.@zeny; return .@zeny; } If(getarg(0) > Zeny) { mes "У Вас недостаточно денег на дуель , прихожите когда соберете достаточную суму !"; close; } else set Zeny,Zeny-getarg(0); set .@zeny,getarg(0)*2; return .@zeny; warp "prontera",158,184;} Изменено 24 февраля, 2013 пользователем xcoms Ссылка на комментарий Поделиться на другие сайты Поделиться
wl.illusion Опубликовано 24 февраля, 2013 Жалоба Поделиться Опубликовано 24 февраля, 2013 (изменено) Для начала. я бы порекомендовал вам пользоваться тэгом форума [code]По вашей ошибке, думаю что вам внутри OnTimer1 нужно использовать не announce, а mapannounce, т.к. announce требует, чтобы был прицеплен RID, а mapannounce — нет.Ну и OnTimer1 — неправильно, но думаю вы это знаете.И было бы неплохо выложить лог ошибки mapserv'а. Изменено 24 февраля, 2013 пользователем wl.illusion 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
xcoms Опубликовано 24 февраля, 2013 Автор Жалоба Поделиться Опубликовано 24 февраля, 2013 Логи выдают[Debug]: Data: string value="Так и не нашелься суперник или вышло время, и к сожалению дуель была отменена"[Debug]: Data: number value=17[Debug]: Source (NPC): Duel Gambling at prontera (150,177)всё что происходить ... функция не происходит и в чат сообщение не выбивает Ссылка на комментарий Поделиться на другие сайты Поделиться
xcoms Опубликовано 24 февраля, 2013 Автор Жалоба Поделиться Опубликовано 24 февраля, 2013 mapannounce "prontera","Так и не нашелься суперник или вышло время, и к сожалению дуель была отменена.",0;отлично!) помогло после полной перезагрузки сервера !! спасибо!!! Ссылка на комментарий Поделиться на другие сайты Поделиться
xcoms Опубликовано 24 февраля, 2013 Автор Жалоба Поделиться Опубликовано 24 февраля, 2013 Зародилься второй вопрос ... как вместо того чтобы НПЦ показывал ИД... он показывал название вещи !?//===== Athena Script =====================================//= Stop the Clock//===== By ================================================//= Tom94//===== Version ===========================================//= 1.0//=========================================================//= 1.0 - First release//===== Compatible With ===================================//= TXT and SQL. No idea which revisions xP//===== Description =======================================//= A minigame//=========================================================prontera,164,180,1 script Время 712,{if(.game == 1 && stopped != 1) {set stopped, 1;set @stopped, .i;message strcharinfo(0), "Вы остановили часы на "+@stopped+".";if(.lowest > @stopped) { set .lowest, @stopped; set .winner$, strcharinfo(0); }end;}else if(.game == 1) {message strcharinfo(0), "Вы уже остановили часы.";end;}set .name$, "[^ff0000Время^000000]";set .menu$, "Время:Информация:Подарок:Выйти";if(strcharinfo(0) == .winner$) {set stopped, 0;mes .name$;mes "Ваш подарок.";mes "Подарок -ID-: ^ff0000"+$prize_id+"^000000."; mes "Подарок -ID-: ^ff0000"+$prize_id($betitemid)+"^000000.";mes "Количество: ^ff0000"+$prize_amount+"^000000.";getitem $prize_id, $prize_amount;set .winner$, "";close;}if(stopped == 1) {set stopped, 0;mes .name$;mes "Вы зарегистрировали чара для участие в следующем раунде.";close;}if(getgmlevel() > 60) set .menu$, .menu$ + ":Начать игру:Установить подарок";mes .name$;mes "Добро пожаловать в ^ff0000игру Время^000000 .";switch(select(.menu$)) {case 1:mes "^ff0000Игра Время^000000 стартует каждого дня в 18:00. ";close;case 2:mes "^ff0000Время^000000 игра где вы должны нажимать на меня";mes "и кто будет ближе к 0 тот и победит.";next;mes .name$;mes "Точное время старта игры 17:59:50 -10 секунд до начала 18:00.";mes "В это время я отщитываю от 1000 до 0.";next;mes .name$;mes "Для победы, ты должен быть ближе к 0 покрайне мере ниже 50.";next;mes .name$;mes "Победитель получает подарок.";close;case 3:mes "Подарок: -ID- ^ff0000"+$prize_id+"^000000.";mes "Количество: ^ff0000"+$prize_amount+"^000000.";close;case 4:close;case 5:sleep2 100;close2;goto l_start;end;case 6:mes "Ведите ИД подарка:";input $prize_id;next;mes .name$;mes "Ведите количество подарков , которые получит победитель:";input $prize_amount;next;mes .name$;mes "Подарок -ID-: ^ff0000"+$prize_id+"^000000.";mes "Количество: ^ff0000"+$prize_amount+"^000000.";close;}OnClock1759:l_start:set .winner$, "";set .game, 1;set .lowest, 1000;for(set .i, 1000; .i > 300;set .i, .i - 100) { announce "В пронтере стартовала игра Время.",bc_blue; announce ":: "+.i+" ::",bc_blue|bc_area; misceffect 377; sleep2 1000; }for(set .i, 300; .i > 50;set .i, .i - 10) { announce ":: "+.i+" ::",bc_blue|bc_area; misceffect 377; sleep2 100; }for(set .i, 50; .i > 0;set .i, .i - 1) { announce ":: "+.i+" ::",bc_blue|bc_area; misceffect 377; sleep2 10; }set .game, 0;if(.winner$ == "") {announce "Никто не решилься остановить часы.Так что победителя нет ((.",bc_blue;end;}announce .winner$+" выиграл игру остановить часы.. Часы были остановлены в "+.lowest+".",bc_blue;sleep2 2500;announce .winner$+", нажмите на мне для получение подарка.",bc_blue;sleep2 2500;announce "Для участия в игре , нажмите на мне в следующий раз перед началом игры, юхууу.",bc_blue;end;} Ссылка на комментарий Поделиться на другие сайты Поделиться
Kubix! Опубликовано 24 февраля, 2013 Жалоба Поделиться Опубликовано 24 февраля, 2013 getitemname(id); 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
xcoms Опубликовано 24 февраля, 2013 Автор Жалоба Поделиться Опубликовано 24 февраля, 2013 всем спасибо за помощь! Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения