Break Опубликовано 22 августа, 2013 Жалоба Поделиться Опубликовано 22 августа, 2013 Всё никак не могу понять почему не работает скрипт...- script BG Ranker -1,{mes .name$;mes "Я могу дать тебе БГ Ранговую информацию.";mes "Выберите то, что Вы хотите знать.";next;set .@selection, select( implode( .menu$, ":" ) ) - 1;query_sql "SELECT char_id, "+ .tables$[.@selection] +" FROM char_bg ORDER BY "+ .tables$[.@selection] +" DESC LIMIT "+ .maxsize , @char_id, @bgtop;for (set .@a,0; .@a < getarraysize(@char_id); set .@a,.@a+1 )set .@fetch_name$, .@fetch_name$ + " `char_id` = '"+ @char_id[.@a]+ "' OR ";query_sql "SELECT `name` FROM `char` WHERE "+ .@fetch_name$, @char_name;mes .name$;mes .menu$[.@selection];for (set .@a,0; .@a < .maxsize; set .@a,.@a+1 )mes "["+ (.@a+1) +"] "+ ( (@char_name) ? @char_name : "^FF0000Пусто^000000" );close;/*[=========================================================]Server Configuration Settings[=========================================================]*/OnInit:set .name$, "[^0000FFСтатистика БГ^000000]";setarray .menu$[0], "Топ побед","Топ ничьих","Топ проигрышей","Топ лидеров в победах","Топ лидеров в ничьих","Топ лидеров в проигрышах";setarray .tables$[0], "win","tie","lost","leader_win","leader_tie","leader_lost";set .maxsize, 5; //Amount of player that will appearend;}/*[=========================================================]Duplicates[=========================================================]*/prontera,165,165,5 duplicate(BG Ranker) BG Ranker#1 55Вот что выдаёт мап сервер. Подскажите, что не так?: DB error - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1[Debug]: at script.c:14657 - SELECT `name` FROM `char` WHERE `char_id` = '3345' OR `char_id` = '3238' OR `char_id` = '3237' OR `char_id` = '3236' OR `char_id` = '3231' OR[Debug]: Source (NPC): BG Ranker#1 at prontera (165,165) Ссылка на комментарий Поделиться на другие сайты Поделиться
Jarek Опубликовано 22 августа, 2013 Жалоба Поделиться Опубликовано 22 августа, 2013 Вероятно проблема в пропущенных обратных апострофах в первом запросе Ссылка на комментарий Поделиться на другие сайты Поделиться
Sanasol Опубликовано 22 августа, 2013 Жалоба Поделиться Опубликовано 22 августа, 2013 Запрос говно - во-первыхВо-вторых ошибка оптому что запрос говноfor (set .@a,0; .@a < getarraysize(@char_id); set .@a,.@a+1 )set .@fetch_name$, .@fetch_name$ + " `char_id` = '"+ @char_id[.@a]+ "' OR ";query_sql "SELECT `name` FROM `char` WHERE "+ .@fetch_name$, @char_name;наfor (set .@a,0; .@a < getarraysize(@char_id); set .@a,.@a+1 )set .@fetch_name$, .@fetch_name$ + @char_id[.@a]+ ", ";query_sql "SELECT `name` FROM `char` WHERE `char_id` in ("+ .@fetch_name$+ ")", @char_name; 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Break Опубликовано 22 августа, 2013 Автор Жалоба Поделиться Опубликовано 22 августа, 2013 (изменено) Запрос говно - во-первыхВо-вторых ошибка оптому что запрос говноfor (set .@a,0; .@a < getarraysize(@char_id); set .@a,.@a+1 )set .@fetch_name$, .@fetch_name$ + " `char_id` = '"+ @char_id[.@a]+ "' OR ";query_sql "SELECT `name` FROM `char` WHERE "+ .@fetch_name$, @char_name;наfor (set .@a,0; .@a < getarraysize(@char_id); set .@a,.@a+1 )set .@fetch_name$, .@fetch_name$ + @char_id[.@a]+ ", ";query_sql "SELECT `name` FROM `char` WHERE `char_id` in ("+ .@fetch_name$+ ")", @char_name;И вот что пишет теперь: DB error - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1[Debug]: at script.c:14657 - SELECT `name` FROM `char` WHERE `char_id` in (1, 27, 37, 46, 53, )[Debug]: Source (NPC): BG Ranker#1 at prontera (165,165) Изменено 22 августа, 2013 пользователем Break Ссылка на комментарий Поделиться на другие сайты Поделиться
Jarek Опубликовано 22 августа, 2013 Жалоба Поделиться Опубликовано 22 августа, 2013 set .@fetch_name$, .@fetch_name$ + @char_id[.@a]+ ((.@a+1==getarraysize(@char_id))?"":", "); 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Break Опубликовано 22 августа, 2013 Автор Жалоба Поделиться Опубликовано 22 августа, 2013 set .@fetch_name$, .@fetch_name$ + @char_id[.@a]+ ((.@a+1==getarraysize(@char_id))?"":", ");Ошибок теперь нет, но ничего не показывает. Ссылка на комментарий Поделиться на другие сайты Поделиться
Jarek Опубликовано 22 августа, 2013 Жалоба Поделиться Опубликовано 22 августа, 2013 Если @char_name массив, то какого вы к нему без индекса обращаетесь? Ссылка на комментарий Поделиться на другие сайты Поделиться
Break Опубликовано 22 августа, 2013 Автор Жалоба Поделиться Опубликовано 22 августа, 2013 Если @char_name массив, то какого вы к нему без индекса обращаетесь?for (set .@a,0; .@a < .maxsize; set .@a,.@a+1 )mes "["+ (.@a+1) +"] "+ ( (@char_name[.@a]) ? @char_name[.@a] : "^FF0000Пусто^000000" );close;Ничего не изменилось =/ Ссылка на комментарий Поделиться на другие сайты Поделиться
Sanasol Опубликовано 22 августа, 2013 Жалоба Поделиться Опубликовано 22 августа, 2013 set .@fetch_name$, .@fetch_name$ + @char_id[.@a]+ ((.@a+1==getarraysize(@char_id))?"":", ");Что-то я тупанул ту же ошибку сделал, надо было implode сделатьЕсли @char_name массив, то какого вы к нему без индекса обращаетесь?for (set .@a,0; .@a < .maxsize; set .@a,.@a+1 )mes "["+ (.@a+1) +"] "+ ( (@char_name[.@a]) ? @char_name[.@a] : "^FF0000Пусто^000000" );close;Ничего не изменилось =/скинь скрипт который у тебя получился и дамп таблицы с данными Ссылка на комментарий Поделиться на другие сайты Поделиться
ph1047 Опубликовано 22 августа, 2013 Жалоба Поделиться Опубликовано 22 августа, 2013 Неправильный запрос. надо сначала выполнитьdrop table login; 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Break Опубликовано 22 августа, 2013 Автор Жалоба Поделиться Опубликовано 22 августа, 2013 - script BG Ranker -1,{mes .name$;mes "Я могу дать тебе БГ Ранговую информацию.";mes "Выберите то, что Вы хотите знать.";next;set .@selection, select( implode( .menu$, ":" ) ) - 1;query_sql "SELECT `char_id`, '"+ .tables$[.@selection] +"' FROM `char_bg` ORDER BY '"+ .tables$[.@selection] +"' DESC LIMIT "+ .maxsize , @char_id, @bgtop;for (set .@a,0; .@a < .maxsize; set .@a,.@a+1 )set .@fetch_name$, .@fetch_name$ + @char_id[.@a]+ ((.@a+1==getarraysize(@char_id))?"":", ");query_sql "SELECT `name` FROM `char` WHERE `char_id` in ("+ .@fetch_name$+ ")", @char_name;mes .name$;mes .menu$[.@selection];for (set .@a,0; .@a < .maxsize; set .@a,.@a+1 )mes "["+ (.@a+1) +"] "+ ( (@char_name[.@a]) ? @char_name[.@a] : "^FF0000Пусто^000000" );close;/*[========================================================]Server Configuration Settings[========================================================]*/OnInit:set .name$, "[^0000FFСтатистика БГ^000000]";setarray .menu$[0], "Топ побед","Топ ничьих","Топ проигрышей","Топ лидеров в победах","Топ лидеров в ничьих","Топ лидеров в проигрышах";setarray .tables$[0], "win","tie","lost","leader_win","leader_tie","leader_lost";set .maxsize, 5; //Amount of player that will appearend;}/*[========================================================]Duplicates[========================================================]*/prontera,165,165,5 duplicate(BG Ranker) BG Ranker#1 55http://rghost.ru/48298838 Ссылка на комментарий Поделиться на другие сайты Поделиться
Sanasol Опубликовано 22 августа, 2013 Жалоба Поделиться Опубликовано 22 августа, 2013 массив должен быть "строковый"@char_name -> @char_name$ Ссылка на комментарий Поделиться на другие сайты Поделиться
Break Опубликовано 11 сентября, 2014 Автор Жалоба Поделиться Опубликовано 11 сентября, 2014 (изменено) массив должен быть "строковый"@char_name -> @char_name$Не помогло. Есть еще варианты?: DB error - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1[Debug]: at script.c:14643 - SELECT `name` FROM `char` WHERE `char_id` in (0, 0, 0, 0, 0, )[Debug]: Source (NPC): BG Ranker#1 at bat_room (157,146)Данную проблему решил, в нужном месте кавычки поставил.Возникла новая - отображает ник во всех топах одного и того же персонажа. Изменено 11 сентября, 2014 пользователем Break Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения