Oxxy Опубликовано 5 мая, 2015 Жалоба Поделиться Опубликовано 5 мая, 2015 (изменено) не знал, как объяснить правильно.http://upaste.me/f0b718789d23fc687скрипт, соответсвенно, я уже весь мозг сломал, убейте, не помню, как сделать чтобы показало, например, 10 игроков, появилась кнопка NEXT, пошел следующие 10 игроков и т.д. C:-- З.Ы: Всем привет, 1.5 года не занимался РОшечкой :] Изменено 5 мая, 2015 пользователем Oxxy Ссылка на комментарий Поделиться на другие сайты Поделиться
Кеник Опубликовано 6 мая, 2015 Жалоба Поделиться Опубликовано 6 мая, 2015 Жесть какая. За полтора года прям все приципы программирования поменялись настолько кардинально чтоли? Почитай, что такое цикл, как он организуется. Составь алгоритм своими словами. Потом это дело в скрипт уже переноси. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Jarek Опубликовано 6 мая, 2015 Жалоба Поделиться Опубликовано 6 мая, 2015 Заменить next;на if (!((.@i+1)%10) && .@names$[.@i+1]) next; 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
Oxxy Опубликовано 6 мая, 2015 Автор Жалоба Поделиться Опубликовано 6 мая, 2015 (изменено) Жесть какая. За полтора года прям все приципы программирования поменялись настолько кардинально чтоли? Почитай, что такое цикл, как он организуется. Составь алгоритм своими словами. Потом это дело в скрипт уже переноси. Мой мозг перестал работать за полтора года, кекекек. На самом деле, забываешь очень много ;-) Заменить next; на if (!((.@i+1)%10) && .@names$[.@i+1]) next; Спасибо, проверю C: -- UPDATE: нпц виснет про твоем варианте, Джерек. Изменено 6 мая, 2015 пользователем Oxxy Ссылка на комментарий Поделиться на другие сайты Поделиться
Кеник Опубликовано 6 мая, 2015 Жалоба Поделиться Опубликовано 6 мая, 2015 Жесть какая. За полтора года прям все приципы программирования поменялись настолько кардинально чтоли? Почитай, что такое цикл, как он организуется. Составь алгоритм своими словами. Потом это дело в скрипт уже переноси. Мой мозг перестал работать за полтора года, кекекек. На самом деле, забываешь очень много ;-) Заменить next; на if (!((.@i+1)%10) && .@names$[.@i+1]) next; Спасибо, проверю C: -- UPDATE: нпц виснет про твоем варианте, Джерек. Проверь, что у тебя стоит &&, а не &. Если все так, то попробуй так: if ( ((.@i + 1) % 10) == 0 && .@names$[.@i + 1] != "" ) next; 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Oxxy Опубликовано 6 мая, 2015 Автор Жалоба Поделиться Опубликовано 6 мая, 2015 Жесть какая. За полтора года прям все приципы программирования поменялись настолько кардинально чтоли? Почитай, что такое цикл, как он организуется. Составь алгоритм своими словами. Потом это дело в скрипт уже переноси. Мой мозг перестал работать за полтора года, кекекек. На самом деле, забываешь очень много ;-) Заменить next; на if (!((.@i+1)%10) && .@names$[.@i+1]) next; Спасибо, проверю C: -- UPDATE: нпц виснет про твоем варианте, Джерек. Проверь, что у тебя стоит &&, а не &. Если все так, то попробуй так: if ( ((.@i + 1) % 10) == 0 && .@names$[.@i + 1] != "" ) next; Спасибо, все работает :-* Бтв, я догадывался, что нужен еще один луп, можешь объяснить эту строку? Конкретно первую часть. (.@i + 1) % 10) Это сравнение? Ссылка на комментарий Поделиться на другие сайты Поделиться
Jarek Опубликовано 6 мая, 2015 Жалоба Поделиться Опубликовано 6 мая, 2015 1) ((.@i + 1) % 10) == 0 Смотрим остаток от деления на 10 (проверяем является ли он каждым 10-м)2) .@names$[.@i + 1] != "" Смотрим, существует ли следующий элемент в списке (зачем? чтобы не было лишней кнопки некст если количество людей онлайн кратно 10) 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Oxxy Опубликовано 6 мая, 2015 Автор Жалоба Поделиться Опубликовано 6 мая, 2015 (изменено) 1) ((.@i + 1) % 10) == 0 Смотрим остаток от деления на 10 (проверяем является ли он каждым 10-м) 2) .@names$[.@i + 1] != "" Смотрим, существует ли следующий элемент в списке (зачем? чтобы не было лишней кнопки некст если количество людей онлайн кратно 10) люблю тебя спасибо Можно еще спросить? Как правильно объединить эти два запроса в один: 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$; Изменено 6 мая, 2015 пользователем Oxxy Ссылка на комментарий Поделиться на другие сайты Поделиться
Кеник Опубликовано 6 мая, 2015 Жалоба Поделиться Опубликовано 6 мая, 2015 1) ((.@i + 1) % 10) == 0 Смотрим остаток от деления на 10 (проверяем является ли он каждым 10-м) 2) .@names$[.@i + 1] != "" Смотрим, существует ли следующий элемент в списке (зачем? чтобы не было лишней кнопки некст если количество людей онлайн кратно 10) люблю тебя спасибо Можно еще спросить? Как правильно объединить эти два запроса в один: 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$; Зачем тебе второй запрос? Имена всех игроков онлайн у тебя в массиве .@names$, так? Соответственно количество элементов массива = количеству игроков в онлайне, так? Количество элементов в массиве у тебя в скрипте уже используется.. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Oxxy Опубликовано 6 мая, 2015 Автор Жалоба Поделиться Опубликовано 6 мая, 2015 (изменено) 1) ((.@i + 1) % 10) == 0 Смотрим остаток от деления на 10 (проверяем является ли он каждым 10-м) 2) .@names$[.@i + 1] != "" Смотрим, существует ли следующий элемент в списке (зачем? чтобы не было лишней кнопки некст если количество людей онлайн кратно 10) люблю тебя спасибо Можно еще спросить? Как правильно объединить эти два запроса в один: 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$; Зачем тебе второй запрос? Имена всех игроков онлайн у тебя в массиве .@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;} будет ли сильно грузится сервер и база при таком виде нпц? Изменено 6 мая, 2015 пользователем Oxxy Ссылка на комментарий Поделиться на другие сайты Поделиться
Кеник Опубликовано 6 мая, 2015 Жалоба Поделиться Опубликовано 6 мая, 2015 1 запрос в секунду - это фигня. Ничего не будет. Ссылка на комментарий Поделиться на другие сайты Поделиться
Oxxy Опубликовано 6 мая, 2015 Автор Жалоба Поделиться Опубликовано 6 мая, 2015 (изменено) 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'а сделаны для того, чтобы сервер распозновал это как переводимую строчку (кто знает новую систему языков Геркулеса, тот поймет) Изменено 6 мая, 2015 пользователем Oxxy Ссылка на комментарий Поделиться на другие сайты Поделиться
botka4aet Опубликовано 6 мая, 2015 Жалоба Поделиться Опубликовано 6 мая, 2015 Зачем тебе каждый раз выводить число игроков?И что за проверка в цикле? Ссылка на комментарий Поделиться на другие сайты Поделиться
Kubix! Опубликовано 6 мая, 2015 Жалоба Поделиться Опубликовано 6 мая, 2015 Можно же сделатьOnInit:while(1){удаление чатазапросвывод в чатслип1000;} Ссылка на комментарий Поделиться на другие сайты Поделиться
Oxxy Опубликовано 6 мая, 2015 Автор Жалоба Поделиться Опубликовано 6 мая, 2015 Зачем тебе каждый раз выводить число игроков?И что за проверка в цикле?выше смотри, там все есть.Можно же сделатьOnInit:while(1){удаление чатазапросвывод в чатслип1000;}особой разницы нет. Ссылка на комментарий Поделиться на другие сайты Поделиться
botka4aet Опубликовано 7 мая, 2015 Жалоба Поделиться Опубликовано 7 мая, 2015 Зачем тебе каждый раз выводить число игроков? И что за проверка в цикле? выше смотри, там все есть. Там ничего нет mes "^FF0000Всего игроков онлайн: "+getarraysize(.@names$)+"^000000";mes "["+(.@i+1)+"] "+.@names$[.@i]+": "+ .@loc$[.@i]+""; Тут 2 строки Потом деление на 1(Лолчто блиать) Какая-то проверка на пустоту(хотя в цикле есть проверка длины строки) Это конечно здорово, что тебе подсказывают умные люди, но не надо за ними бездумно повторять, а потом говорить Ссылка на комментарий Поделиться на другие сайты Поделиться
Кеник Опубликовано 7 мая, 2015 Жалоба Поделиться Опубликовано 7 мая, 2015 Зачем тебе каждый раз выводить число игроков? И что за проверка в цикле? выше смотри, там все есть. Там ничего нет mes "^FF0000Всего игроков онлайн: "+getarraysize(.@names$)+"^000000";mes "["+(.@i+1)+"] "+.@names$[.@i]+": "+ .@loc$[.@i]+""; Тут 2 строки Потом деление на 1(Лолчто блиать) Какая-то проверка на пустоту(хотя в цикле есть проверка длины строки) Это конечно здорово, что тебе подсказывают умные люди, но не надо за ними бездумно повторять, а потом говорить Лучше бы бездумно повторил. А то ведь повторить пытался, да еще и ошибку сделал. Ссылка на комментарий Поделиться на другие сайты Поделиться
Oxxy Опубликовано 7 мая, 2015 Автор Жалоба Поделиться Опубликовано 7 мая, 2015 (изменено) Зачем тебе каждый раз выводить число игроков? И что за проверка в цикле? выше смотри, там все есть. Там ничего нет mes "^FF0000Всего игроков онлайн: "+getarraysize(.@names$)+"^000000";mes "["+(.@i+1)+"] "+.@names$[.@i]+": "+ .@loc$[.@i]+""; Тут 2 строки Потом деление на 1(Лолчто блиать) Какая-то проверка на пустоту(хотя в цикле есть проверка длины строки) Это конечно здорово, что тебе подсказывают умные люди, но не надо за ними бездумно повторять, а потом говорить 1) ((.@i + 1) % 10) == 0 Смотрим остаток от деления на 10 (проверяем является ли он каждым 10-м) 2) .@names$[.@i + 1] != "" Смотрим, существует ли следующий элемент в списке (зачем? чтобы не было лишней кнопки некст если количество людей онлайн кратно 10) ПЛЕС. Изменено 7 мая, 2015 пользователем Oxxy Ссылка на комментарий Поделиться на другие сайты Поделиться
Кеник Опубликовано 7 мая, 2015 Жалоба Поделиться Опубликовано 7 мая, 2015 Зачем тебе каждый раз выводить число игроков? И что за проверка в цикле? выше смотри, там все есть. Там ничего нет mes "^FF0000Всего игроков онлайн: "+getarraysize(.@names$)+"^000000";mes "["+(.@i+1)+"] "+.@names$[.@i]+": "+ .@loc$[.@i]+""; Тут 2 строки Потом деление на 1(Лолчто блиать) Какая-то проверка на пустоту(хотя в цикле есть проверка длины строки) Это конечно здорово, что тебе подсказывают умные люди, но не надо за ними бездумно повторять, а потом говорить 1) ((.@i + 1) % 10) == 0 Смотрим остаток от деления на 10 (проверяем является ли он каждым 10-м) 2) .@names$[.@i + 1] != "" Смотрим, существует ли следующий элемент в списке (зачем? чтобы не было лишней кнопки некст если количество людей онлайн кратно 10) ПЛЕС. Сколько лет ты тут сидишь, а мозгов все не прибавилось, ага, я чекаю форумы часто C: Ладно бы я бездумно повторил, но я попросил объяснить, а ты видимо в глаза долбишься, раз не видишь, что написано. Ты в конечном скрипте ошибся. Вместо (.@i + 1) % 10) == 0 написал (.@i + 1) % 1) == 0 . Чуешь разницу? А он за это и зацепился. Ссылка на комментарий Поделиться на другие сайты Поделиться
Oxxy Опубликовано 7 мая, 2015 Автор Жалоба Поделиться Опубликовано 7 мая, 2015 Зачем тебе каждый раз выводить число игроков? И что за проверка в цикле? выше смотри, там все есть. Там ничего нет mes "^FF0000Всего игроков онлайн: "+getarraysize(.@names$)+"^000000";mes "["+(.@i+1)+"] "+.@names$[.@i]+": "+ .@loc$[.@i]+""; Тут 2 строки Потом деление на 1(Лолчто блиать) Какая-то проверка на пустоту(хотя в цикле есть проверка длины строки) Это конечно здорово, что тебе подсказывают умные люди, но не надо за ними бездумно повторять, а потом говорить 1) ((.@i + 1) % 10) == 0 Смотрим остаток от деления на 10 (проверяем является ли он каждым 10-м) 2) .@names$[.@i + 1] != "" Смотрим, существует ли следующий элемент в списке (зачем? чтобы не было лишней кнопки некст если количество людей онлайн кратно 10) ПЛЕС. Сколько лет ты тут сидишь, а мозгов все не прибавилось, ага, я чекаю форумы часто C: Ладно бы я бездумно повторил, но я попросил объяснить, а ты видимо в глаза долбишься, раз не видишь, что написано. Ты в конечном скрипте ошибся. Вместо (.@i + 1) % 10) == 0 написал (.@i + 1) % 1) == 0 . Чуешь разницу? А он за это и зацепился. хмхмхмхм, а, это было для теста, ссорьки, кек Ссылка на комментарий Поделиться на другие сайты Поделиться
Clown Опубликовано 7 мая, 2015 Жалоба Поделиться Опубликовано 7 мая, 2015 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Oxxy Опубликовано 7 мая, 2015 Автор Жалоба Поделиться Опубликовано 7 мая, 2015 ЛЕЛ, КЕКЕКЕКЕК. Бтв, давайте не флудить чтоли? Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения