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

Создание списка - кнопка NEXT


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

не знал, как объяснить правильно.


http://upaste.me/f0b718789d23fc687

скрипт, соответсвенно, я уже весь мозг сломал, убейте, не помню, как сделать чтобы показало, например, 10 игроков, появилась кнопка NEXT, пошел следующие 10 игроков и т.д. C:

-- З.Ы: Всем привет, 1.5 года не занимался РОшечкой :]

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

Жесть какая. За полтора года прям все приципы программирования поменялись настолько кардинально чтоли?

Почитай, что такое цикл, как он организуется. Составь алгоритм своими словами. Потом это дело в скрипт уже переноси.

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

Жесть какая. За полтора года прям все приципы программирования поменялись настолько кардинально чтоли?

Почитай, что такое цикл, как он организуется. Составь алгоритм своими словами. Потом это дело в скрипт уже переноси.

Мой мозг перестал работать за полтора года, кекекек. На самом деле, забываешь очень много ;-)

Заменить next;

на if (!((.@i+1)%10) && .@names$[.@i+1]) next;

Спасибо, проверю C:

-- UPDATE: нпц виснет про твоем варианте, Джерек.

4KMb6FdN4hU.jpg

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

Жесть какая. За полтора года прям все приципы программирования поменялись настолько кардинально чтоли?

Почитай, что такое цикл, как он организуется. Составь алгоритм своими словами. Потом это дело в скрипт уже переноси.

Мой мозг перестал работать за полтора года, кекекек. На самом деле, забываешь очень много ;-)

Заменить next;

на if (!((.@i+1)%10) && .@names$[.@i+1]) next;

Спасибо, проверю C:

-- UPDATE: нпц виснет про твоем варианте, Джерек.

4KMb6FdN4hU.jpg

Проверь, что у тебя стоит &&, а не &. Если все так, то попробуй так:


if ( ((.@i + 1) % 10) == 0 && .@names$[.@i + 1] != "" ) next;

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

Жесть какая. За полтора года прям все приципы программирования поменялись настолько кардинально чтоли?

Почитай, что такое цикл, как он организуется. Составь алгоритм своими словами. Потом это дело в скрипт уже переноси.

Мой мозг перестал работать за полтора года, кекекек. На самом деле, забываешь очень много ;-)

Заменить next;

на if (!((.@i+1)%10) && .@names$[.@i+1]) next;

Спасибо, проверю C:

-- UPDATE: нпц виснет про твоем варианте, Джерек.

4KMb6FdN4hU.jpg

Проверь, что у тебя стоит &&, а не &. Если все так, то попробуй так:


if ( ((.@i + 1) % 10) == 0 && .@names$[.@i + 1] != "" ) next;

Спасибо, все работает :-*

Бтв, я догадывался, что нужен еще один луп, можешь объяснить эту строку? Конкретно первую часть. (.@i + 1) % 10) Это сравнение?

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

1) ((.@i + 1) % 10) == 0 Смотрим остаток от деления на 10 (проверяем является ли он каждым 10-м)

2) .@names$[.@i + 1] != "" Смотрим, существует ли следующий элемент в списке (зачем? чтобы не было лишней кнопки некст если количество людей онлайн кратно 10)

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

1) ((.@i + 1) % 10) == 0 Смотрим остаток от деления на 10 (проверяем является ли он каждым 10-м)

2) .@names$[.@i + 1] != "" Смотрим, существует ли следующий элемент в списке (зачем? чтобы не было лишней кнопки некст если количество людей онлайн кратно 10)

люблю тебя :D спасибо

Можно еще спросить? Как правильно объединить эти два запроса в один:


query_sql "SELECT `name`,`last_map` FROM `char` WHERE `online` > 0 ORDER BY `last_map`", .@names$, .@loc$;
query_sql "SELECT COUNT(name) FROM `char` WHERE `online` > 0", .@online;

попробовал так, в итоге выводит только 1 игрока онлайн(хотя их 2):


query_sql "SELECT COUNT(name),`name`,`last_map` FROM `char` WHERE `online` > 0 ORDER BY `last_map`",.@online, .@names$, .@loc$;

2mc0WtTfxsQ.jpg

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

1) ((.@i + 1) % 10) == 0 Смотрим остаток от деления на 10 (проверяем является ли он каждым 10-м)

2) .@names$[.@i + 1] != "" Смотрим, существует ли следующий элемент в списке (зачем? чтобы не было лишней кнопки некст если количество людей онлайн кратно 10)

люблю тебя :D спасибо

Можно еще спросить? Как правильно объединить эти два запроса в один:


query_sql "SELECT `name`,`last_map` FROM `char` WHERE `online` > 0 ORDER BY `last_map`", .@names$, .@loc$;
query_sql "SELECT COUNT(name) FROM `char` WHERE `online` > 0", .@online;

попробовал так, в итоге выводит только 1 игрока онлайн(хотя их 2):


query_sql "SELECT COUNT(name),`name`,`last_map` FROM `char` WHERE `online` > 0 ORDER BY `last_map`",.@online, .@names$, .@loc$;

2mc0WtTfxsQ.jpg

Зачем тебе второй запрос? Имена всех игроков онлайн у тебя в массиве .@names$, так? Соответственно количество элементов массива = количеству игроков в онлайне, так? Количество элементов в массиве у тебя в скрипте уже используется..

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

1) ((.@i + 1) % 10) == 0 Смотрим остаток от деления на 10 (проверяем является ли он каждым 10-м)

2) .@names$[.@i + 1] != "" Смотрим, существует ли следующий элемент в списке (зачем? чтобы не было лишней кнопки некст если количество людей онлайн кратно 10)

люблю тебя :D спасибо

Можно еще спросить? Как правильно объединить эти два запроса в один:


query_sql "SELECT `name`,`last_map` FROM `char` WHERE `online` > 0 ORDER BY `last_map`", .@names$, .@loc$;
query_sql "SELECT COUNT(name) FROM `char` WHERE `online` > 0", .@online;

попробовал так, в итоге выводит только 1 игрока онлайн(хотя их 2):


query_sql "SELECT COUNT(name),`name`,`last_map` FROM `char` WHERE `online` > 0 ORDER BY `last_map`",.@online, .@names$, .@loc$;

2mc0WtTfxsQ.jpg

Зачем тебе второй запрос? Имена всех игроков онлайн у тебя в массиве .@names$, так? Соответственно количество элементов массива = количеству игроков в онлайне, так? Количество элементов в массиве у тебя в скрипте уже используется..

ойойойой, как я протупил, правильно будет сделать getarraysize(.@names$), дыа?

--UPDATE: все, сделал, спасибо всем C:

Вопрос про нагрузку на базу и сервер:


celestiaj,60,71,6 script Players Online 100,{
query_sql "SELECT `name`,`last_map` FROM `char` WHERE `online` > 0 ORDER BY `last_map`", .@names$, .@loc$;
mes "Всего игроков онлайн: "+getarraysize(.@names$);
for(.@i = 0; .@i < getarraysize(.@names$); .@i++) {
mes "["+(.@i+1)+"] "+.@names$[.@i]+": "+ .@loc$[.@i]+"";
if ( ((.@i + 1) % 1) == 0 && .@names$[.@i + 1] != "" ) next;
}
close;

OnInit:
initnpctimer;
end;

OnTimer1000:
delwaitingroom;
query_sql "SELECT `name`,`last_map` FROM `char` WHERE `online` > 0 ORDER BY `last_map`", .@names$, .@loc$;
waitingroom "Players Online: "+getarraysize(.@names$),0;
stopnpctimer;
initnpctimer;
end;
}

будет ли сильно грузится сервер и база при таком виде нпц?

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

1 запрос в секунду - это фигня. Ничего не будет.

все тогда, решено, вот готовый нпц, если кому пригодится?


celestiaj,60,71,6 script Players Online 100,{
query_sql "SELECT `name`,`last_map` FROM `char` WHERE `online` > 0 ORDER BY `last_map`", .@names$, .@loc$;
for(.@i = 0; .@i < getarraysize(.@names$); .@i++) {
mes "^FF0000Всего игроков онлайн: "+getarraysize(.@names$)+"^000000";
mes "["+(.@i+1)+"] "+.@names$[.@i]+": "+ .@loc$[.@i]+"";
if ( ((.@i + 1) % 1) == 0 && .@names$[.@i + 1] != "" ) next;
}
close;

OnInit:
initnpctimer;
end;

OnTimer1000:
delwaitingroom;
query_sql "SELECT `name` FROM `char` WHERE `online` > 0 ORDER BY `last_map`", .@names$;
waitingroom _("Игроки онлайн: "+getarraysize(.@names$)),0;
stopnpctimer;
initnpctimer;
end;
}

Скобки после Waitingroom'а сделаны для того, чтобы сервер распозновал это как переводимую строчку (кто знает новую систему языков Геркулеса, тот поймет)

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

Зачем тебе каждый раз выводить число игроков?

И что за проверка в цикле?

выше смотри, там все есть.

Можно же сделать


OnInit:
while(1){
удаление чата
запрос
вывод в чат
слип1000;
}

особой разницы нет.

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

Зачем тебе каждый раз выводить число игроков?

И что за проверка в цикле?

выше смотри, там все есть.

Там ничего нет


mes "^FF0000Всего игроков онлайн: "+getarraysize(.@names$)+"^000000";
mes "["+(.@i+1)+"] "+.@names$[.@i]+": "+ .@loc$[.@i]+"";

Тут 2 строки

Потом деление на 1(Лолчто блиать)

Какая-то проверка на пустоту(хотя в цикле есть проверка длины строки)

Это конечно здорово, что тебе подсказывают умные люди, но не надо за ними бездумно повторять, а потом говорить

XWgccaP0_JQ.jpg

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

Зачем тебе каждый раз выводить число игроков?

И что за проверка в цикле?

выше смотри, там все есть.

Там ничего нет


mes "^FF0000Всего игроков онлайн: "+getarraysize(.@names$)+"^000000";
mes "["+(.@i+1)+"] "+.@names$[.@i]+": "+ .@loc$[.@i]+"";

Тут 2 строки

Потом деление на 1(Лолчто блиать)

Какая-то проверка на пустоту(хотя в цикле есть проверка длины строки)

Это конечно здорово, что тебе подсказывают умные люди, но не надо за ними бездумно повторять, а потом говорить

XWgccaP0_JQ.jpg

Лучше бы бездумно повторил. А то ведь повторить пытался, да еще и ошибку сделал.

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

Зачем тебе каждый раз выводить число игроков?

И что за проверка в цикле?

выше смотри, там все есть.

Там ничего нет


mes "^FF0000Всего игроков онлайн: "+getarraysize(.@names$)+"^000000";
mes "["+(.@i+1)+"] "+.@names$[.@i]+": "+ .@loc$[.@i]+"";

Тут 2 строки

Потом деление на 1(Лолчто блиать)

Какая-то проверка на пустоту(хотя в цикле есть проверка длины строки)

Это конечно здорово, что тебе подсказывают умные люди, но не надо за ними бездумно повторять, а потом говорить

XWgccaP0_JQ.jpg

1) ((.@i + 1) % 10) == 0 Смотрим остаток от деления на 10 (проверяем является ли он каждым 10-м)

2) .@names$[.@i + 1] != "" Смотрим, существует ли следующий элемент в списке (зачем? чтобы не было лишней кнопки некст если количество людей онлайн кратно 10)

ПЛЕС.

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

Зачем тебе каждый раз выводить число игроков?

И что за проверка в цикле?

выше смотри, там все есть.

Там ничего нет


mes "^FF0000Всего игроков онлайн: "+getarraysize(.@names$)+"^000000";
mes "["+(.@i+1)+"] "+.@names$[.@i]+": "+ .@loc$[.@i]+"";

Тут 2 строки

Потом деление на 1(Лолчто блиать)

Какая-то проверка на пустоту(хотя в цикле есть проверка длины строки)

Это конечно здорово, что тебе подсказывают умные люди, но не надо за ними бездумно повторять, а потом говорить

XWgccaP0_JQ.jpg

1) ((.@i + 1) % 10) == 0 Смотрим остаток от деления на 10 (проверяем является ли он каждым 10-м)

2) .@names$[.@i + 1] != "" Смотрим, существует ли следующий элемент в списке (зачем? чтобы не было лишней кнопки некст если количество людей онлайн кратно 10)

ПЛЕС. Сколько лет ты тут сидишь, а мозгов все не прибавилось, ага, я чекаю форумы часто C:

Ладно бы я бездумно повторил, но я попросил объяснить, а ты видимо в глаза долбишься, раз не видишь, что написано.

Ты в конечном скрипте ошибся. Вместо (.@i + 1) % 10) == 0 написал (.@i + 1) % 1) == 0 . Чуешь разницу? А он за это и зацепился.

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

Зачем тебе каждый раз выводить число игроков?

И что за проверка в цикле?

выше смотри, там все есть.

Там ничего нет


mes "^FF0000Всего игроков онлайн: "+getarraysize(.@names$)+"^000000";
mes "["+(.@i+1)+"] "+.@names$[.@i]+": "+ .@loc$[.@i]+"";

Тут 2 строки

Потом деление на 1(Лолчто блиать)

Какая-то проверка на пустоту(хотя в цикле есть проверка длины строки)

Это конечно здорово, что тебе подсказывают умные люди, но не надо за ними бездумно повторять, а потом говорить

XWgccaP0_JQ.jpg

1) ((.@i + 1) % 10) == 0 Смотрим остаток от деления на 10 (проверяем является ли он каждым 10-м)

2) .@names$[.@i + 1] != "" Смотрим, существует ли следующий элемент в списке (зачем? чтобы не было лишней кнопки некст если количество людей онлайн кратно 10)

ПЛЕС. Сколько лет ты тут сидишь, а мозгов все не прибавилось, ага, я чекаю форумы часто C:

Ладно бы я бездумно повторил, но я попросил объяснить, а ты видимо в глаза долбишься, раз не видишь, что написано.

Ты в конечном скрипте ошибся. Вместо (.@i + 1) % 10) == 0 написал (.@i + 1) % 1) == 0 . Чуешь разницу? А он за это и зацепился.

хмхмхмхм, а, это было для теста, ссорьки, кек

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

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