13 сообщений в этой теме

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

- script BG Ranker -1,{

mes .name$;
mes "Я могу дать тебе БГ Ранговую информацию.";
mes "Выберите то, что Вы хотите знать.";
next;

set [email protected], select( implode( .menu$, ":" ) ) - 1;

query_sql "SELECT char_id, "+ .tables$[[email protected]] +" FROM char_bg ORDER BY "+ .tables$[[email protected]] +" DESC LIMIT "+ .maxsize , @char_id, @bgtop;

for (set [email protected],0; [email protected] < getarraysize(@char_id); set [email protected],[email protected]+1 )
set [email protected]_name$, [email protected]_name$ + " `char_id` = '"+ @char_id[[email protected]]+ "' OR ";

query_sql "SELECT `name` FROM `char` WHERE "+ [email protected]_name$, @char_name;

mes .name$;
mes .menu$[[email protected]];
for (set [email protected],0; [email protected] < .maxsize; set [email protected],[email protected]+1 )
mes "["+ ([email protected]+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)

0

Поделиться сообщением


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

Вероятно проблема в пропущенных обратных апострофах в первом запросе

0

Поделиться сообщением


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

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

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


for (set [email protected],0; [email protected] < getarraysize(@char_id); set [email protected],[email protected]+1 )
set [email protected]_name$, [email protected]_name$ + " `char_id` = '"+ @char_id[[email protected]]+ "' OR ";

query_sql "SELECT `name` FROM `char` WHERE "+ [email protected]_name$, @char_name;

на



for (set [email protected],0; [email protected] < getarraysize(@char_id); set [email protected],[email protected]+1 )
set [email protected]_name$, [email protected]_name$ + @char_id[[email protected]]+ ", ";

query_sql "SELECT `name` FROM `char` WHERE `char_id` in ("+ [email protected]_name$+ ")", @char_name;

1

Поделиться сообщением


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

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

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


for (set [email protected],0; [email protected] < getarraysize(@char_id); set [email protected],[email protected]+1 )
set [email protected]_name$, [email protected]_name$ + " `char_id` = '"+ @char_id[[email protected]]+ "' OR ";

query_sql "SELECT `name` FROM `char` WHERE "+ [email protected]_name$, @char_name;

на



for (set [email protected],0; [email protected] < getarraysize(@char_id); set [email protected],[email protected]+1 )
set [email protected]_name$, [email protected]_name$ + @char_id[[email protected]]+ ", ";

query_sql "SELECT `name` FROM `char` WHERE `char_id` in ("+ [email protected]_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
0

Поделиться сообщением


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

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

0

Поделиться сообщением


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

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

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

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

0

Поделиться сообщением


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

set [email protected]_name$, [email protected]_name$ + @char_id[[email protected]]+ (([email protected]+1==getarraysize(@char_id))?"":", ");

Что-то я тупанул ту же ошибку сделал, надо было implode сделать

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

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

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

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

0

Поделиться сообщением


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

Неправильный запрос. надо сначала выполнить

drop table login;

-1

Поделиться сообщением


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

- script BG Ranker -1,{

mes .name$;

mes "Я могу дать тебе БГ Ранговую информацию.";

mes "Выберите то, что Вы хотите знать.";

next;

set [email protected], select( implode( .menu$, ":" ) ) - 1;

query_sql "SELECT `char_id`, '"+ .tables$[[email protected]] +"' FROM `char_bg` ORDER BY '"+ .tables$[[email protected]] +"' DESC LIMIT "+ .maxsize , @char_id, @bgtop;

for (set [email protected],0; [email protected] < .maxsize; set [email protected],[email protected]+1 )

set [email protected]_name$, [email protected]_name$ + @char_id[[email protected]]+ (([email protected]+1==getarraysize(@char_id))?"":", ");

query_sql "SELECT `name` FROM `char` WHERE `char_id` in ("+ [email protected]_name$+ ")", @char_name;

mes .name$;

mes .menu$[[email protected]];

for (set [email protected],0; [email protected] < .maxsize; set [email protected],[email protected]+1 )

mes "["+ ([email protected]+1) +"] "+ ( (@char_name[[email protected]]) ? @char_name[[email protected]] : "^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

0

Поделиться сообщением


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

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

@char_name -> @char_name$

0

Поделиться сообщением


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

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

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

Поделиться сообщением


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

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас