Перейти к содержанию

BG Ranker


Рекомендуемые сообщения

Всё никак не могу понять почему не работает скрипт...

- 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 appear
end;

}

/*
[=========================================================]
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)

Ссылка на комментарий
Поделиться на другие сайты

Запрос говно - во-первых

Во-вторых ошибка оптому что запрос говно


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;

  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

Запрос говно - во-первых

Во-вторых ошибка оптому что запрос говно


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)

Изменено пользователем Break
Ссылка на комментарий
Поделиться на другие сайты

Если @char_name массив, то какого вы к нему без индекса обращаетесь?

for (set .@a,0; .@a < .maxsize; set .@a,.@a+1 )
mes "["+ (.@a+1) +"] "+ ( (@char_name[.@a]) ? @char_name[.@a] : "^FF0000Пусто^000000" );
close;

Ничего не изменилось =/

Ссылка на комментарий
Поделиться на другие сайты

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;

Ничего не изменилось =/

скинь скрипт который у тебя получился и дамп таблицы с данными

Ссылка на комментарий
Поделиться на другие сайты

- 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 appear

end;

}

/*

[========================================================]

Duplicates

[========================================================]

*/

prontera,165,165,5 duplicate(BG Ranker) BG Ranker#1 55

http://rghost.ru/48298838

Ссылка на комментарий
Поделиться на другие сайты

  • 1 год спустя...

массив должен быть "строковый"

@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)

Данную проблему решил, в нужном месте кавычки поставил.

Возникла новая - отображает ник во всех топах одного и того же персонажа.

Изменено пользователем Break
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...
Яндекс.Метрика