EN
Вход Форум Игры Поиск
Внутри сети городских игр Encounter / Техническая разработка и поддержка

HTML дизайн, обмен опытом, помощь новичкам.

10 11 12 13 14 15 16
Kh.d:
hatabi4:
з.ы. изначально хотелось тикающие часы обратного отсчета) щас не могу вспомнить на каком домене видел

Пример "тикающих часов обратного отсчета" дашь?)

17 сентября в 18:55
Kh.d:
Kh.d:
hatabi4:
з.ы. изначально хотелось тикающие часы обратного отсчета) щас не могу вспомнить на каком домене видел

Пример "тикающих часов обратного отсчета" дашь?)

Имел ввиду хотя бы описание, что, как и где должно считать.

18 сентября в 09:35
][oTTaбыч: найти домен не смог(где видел). Часы сделаны по формату: 00:00:00 и идет обратный отсчет до начала игры ближайшей
18 сентября в 09:44
multfilm ejov:
hatabi4: найти домен не смог(где видел). Часы сделаны по формату: 00:00:00 и идет обратный отсчет до начала игры ближайшей
Не что-то подобное: https://kostroma.en.cx/GameScenario.aspx?gid=44065#1?
Тогда прямая дорога на https://www.timegenerator.ru/
Он уже выдаст скрипт, который нужно будет вставить в анонс/движок/оформление.

18 сентября в 10:29
Kh.d: Вставлять каждый раз счетчик - не очень удобно, как мне кажется.

2 hatabi4 :

<!-- Простой счётчик времени до следующей игры -->
<table style="cellspacing: 0; cellpadding: 0; width: 100%;"><tbody><tr><td style="text-align: center; font-size: 120%; color: #ffff00; padding-bottom:10px;padding-top:10px">Следующая игра через:</td></tr><tr><td id="next-game-timer" style="text-align: center; font-size: 150%; color: #ffffff;">&nbsp;</td></tr></tbody></table>
<script>
var ngd = new Date($("[id$=lblYourTime]:first").text().replace(/^(\d+)\.(\d+\.)(\d+)/,"$3.$2$1"))
var NGTimer = function(){var d = Math.ceil((ngd - Date.now()) / 1000);$("#next-game-timer").text(isNaN(ngd.getDate())?"целую вечность....":(Math.floor(d/86400) + "д. " + Math.floor(d%86400/3600) + "ч. " + Math.floor(d%3600/60) + "м. " + d%60 + "с.").replace(/ (\d\D)/ig," 0$1"));setTimeout(NGTimer, 1000);}
NGTimer();
</script>

Это самый простенький вариант. К секундам, минутам, часам добавляется ведущий ноль, если анонсов нет вообще - вместо времени выводится фраза "через целую вечность".

Если интересует что-то, что будет выглядеть, как счетчик, который генерируется по ссылке - пишите) Посижу, сделаю что-нибудь на таком же уровне анимации.

P.S. Это написано под правую колонку, для того, чтобы вставить счетчик по центру вверху, ПЕРЕД анонсами, придётся чуть-чуть переделать. Опять таки, будет нужно - пишите)

UPD: Не корректно отображается на некоторых страницах, чуть позже исправлю.

18 сентября в 12:27
][oTTaбыч: Kh.d,
спасибо! вот именно такой скрипт и искал

18 сентября в 12:44
multfilm ejov:
Kh.d: Вставлять каждый раз счетчик - не очень удобно, как мне кажется.
Я ответил на то, что понял из вопроса.
Понял неверно, видимо. (:

18 сентября в 13:23
Kh.d: Поправил счетчик. Теперь работает корректно, во всяком случае, похоже на то.

<!-- Простой счётчик времени до следующей игры -->
<table style="cellspacing: 0; cellpadding: 0; width: 100%;"><tbody><tr><td style="text-align: center; font-size: 120%; color: #ffff00; padding-bottom:10px;padding-top:10px">Следующая игра через:</td></tr><tr><td id="next-game-timer" style="text-align: center; font-size: 150%; color: #ffffff;">?д. ?ч. ?м. ?с.</td></tr></tbody></table>
<script>
var NGTimerInit = function(ttng){var NGTimer = function(ttng){setTimeout(NGTimer, 1000, ttng-1);$("#next-game-timer").text(ttng?(Math.floor(ttng/86400) + "д. " + Math.floor(ttng%86400/3600) + "ч. " + Math.floor(ttng%3600/60) + "м. " + ttng%60 + "с.").replace(/ (\d\D)/ig," 0$1"):"...............");};NGTimer(ttng)};if (document.location.pathname.match(/^\/Default\.aspx$|^\/$/)){NGTimerInit(Math.ceil((new Date($("[id$=lblYourTime]:first").text().replace(/^(\d+)\.(\d+\.)(\d+)/,"$3.$2$1")) - Date.now()) / 1000));}else{$.get("/Default.aspx").done(function(r){var t = $(r).find("[id$=_EnterGameTimerHolder] [id^=TimerTexttime]:first").text().match(/\d+ /gi);NGTimerInit(t?t[0]*86400+t[1]*3600+t[2]*60+t[3]*1:undefined);})}
</script>

18 сентября в 13:37
][oTTaбыч:
Kh.d: Поправил счетчик. Теперь работает корректно, во всяком случае, похоже на то.

<!-- Простой счётчик времени до следующей игры -->
<table style="cellspacing: 0; cellpadding: 0; width: 100%;"><tbody><tr><td style="text-align: center; font-size: 120%; color: #ffff00; padding-bottom:10px;padding-top:10px">Следующая игра через:</td></tr><tr><td id="next-game-timer" style="text-align: center; font-size: 150%; color: #ffffff;">?д. ?ч. ?м. ?с.</td></tr></tbody></table>
<script>
var NGTimerInit = function(ttng){var NGTimer = function(ttng){setTimeout(NGTimer, 1000, ttng-1);$("#next-game-timer").text(ttng?(Math.floor(ttng/86400) + "д. " + Math.floor(ttng%86400/3600) + "ч. " + Math.floor(ttng%3600/60) + "м. " + ttng%60 + "с.").replace(/ (\d\D)/ig," 0$1"):"...............");};NGTimer(ttng)};if (document.location.pathname.match(/^\/Default\.aspx$|^\/$/)){NGTimerInit(Math.ceil((new Date($("[id$=lblYourTime]:first").text().replace(/^(\d+)\.(\d+\.)(\d+)/,"$3.$2$1")) - Date.now()) / 1000));}else{$.get("/Default.aspx").done(function(r){var t = $(r).find("[id$=_EnterGameTimerHolder] [id^=TimerTexttime]:first").text().match(/\d+ /gi);NGTimerInit(t?t[0]*86400+t[1]*3600+t[2]*60+t[3]*1:undefined);})}
</script>
ага. первый вариант работал только на главной странице, на всех остальных писал (всех страницах домена) - "ждем вечность..."
18 сентября в 15:56
][oTTaбыч: и все же не все гладко...( на произвольных страницах вместо цифр многоточие, ну и еще на нескольких системных
19 сентября в 11:25
Kh.d: Пример такой системной страницы?

UPD Произвольные страницы - как я понимаю, все страницы с шаблоном "стандартный"?

UPD 2 Проверил на произвольной странице с шаблоном "стандартный" - скрипт внедряется в правую колонку, работает.
Проверил на произвольной странице с шаблоном "простой" - скрипт внедряется в саму страницу, работает.

19 сентября в 13:42
Kh.d: Ошибку нашёл, исправил. Итак, 3 (UPD 3.5) версия :

<!-- Простой счётчик времени до следующей игры -->
<table style="cellspacing: 0; cellpadding: 0; width: 100%;"><tbody><tr><td style="text-align: center; font-size: 120%; color: #ffff00; padding-bottom:10px;padding-top:10px">Следующая игра через:</td></tr><tr><td id="next-game-timer" style="text-align: center; font-size: 150%; color: #ffffff;">?д. ?ч. ?м. ?с.</td></tr></tbody></table>
<script>
var NGTimerInit = function(ottng){var tst = Date.now();var NGTimer = function(){setTimeout(NGTimer, 500); var ttng = ottng - Math.floor((Date.now()-tst)/1000);$("#next-game-timer").text(ttng?(Math.floor(ttng/86400) + "д. " + Math.floor(ttng%86400/3600) + "ч. " + Math.floor(ttng%3600/60) + "м. " + ttng%60 + "с.").replace(/ (\d\D)/ig," 0$1"):"...............");};NGTimer()};if (document.location.pathname.match(/^\/Default\.aspx$|^\/$/)){NGTimerInit(Math.ceil((new Date($("[id$=lblYourTime]:first").text().replace(/^(\d+)\.(\d+\.)(\d+)/,"$3.$2$1")) - Date.now()) / 1000));}else{$.get("/Default.aspx").done(function(r){var t = $(r).find("[id$=_EnterGameTimerHolder] [id^=TimerTexttime]:first").text();NGTimerInit(t?(t.match(/.*?(\d+)\s*дн*/)||[0,0])[1]*86400+(t.match(/.*?(\d+)\s*час*/)||[0,0])[1]*3600+(t.match(/.*?(\d+)\s*мин*/)||[0,0])[1]*60+(t.match(/.*?(\d+)\s*сек*/)||[0,0])[1]*1:undefined);
})}
</script>

UPD: Убрал постепенно появляющуюся погрешность, теперь время считается относительно точно.

19 сентября в 14:28
][oTTaбыч: да, был косяк с произвольными страницами со стандартным шаблоном
19 сентября в 15:15
многабукафф: А есть ли скрипт, который закрывал бы сектора в нескольких разных уровнях одновременно?
22 сентября в 20:18
strangeman: Кстати вот какой вопрос возник, может кто сталкивался, или администрация соизволит ответить... Развлекаюсь я тут помаленьку со сторонней обвязкой к движку. JavaScript не знаю толком (да и запретить его когда-то обещали), поэтому решаю задачу в лоб, отдельным веб-приложением. Есть желание с этого веб-приложения бить код в движок.
Сама реализация-то не проблема, вопрос в другом: меня движок не заблокирует по ip как бота, если будет играть, допустим, 10-20 команд (соответственно авторизации в движке и вводы кодов будут идти с одного ip)?
23 сентября в 04:34
Kh.d: 2 strangeman:
А почему не возвращать код на клиент, и пусть он его сам отправляет?
23 сентября в 07:21
strangeman:
Kh.d: 2 strangeman:
А почему не возвращать код на клиент, и пусть он его сам отправляет?
Cross-domain? Но это же обычно запрещено. Или я неправильно понял?
23 сентября в 07:56
Kh.d:
strangeman:
Kh.d: 2 strangeman:
А почему не возвращать код на клиент, и пусть он его сам отправляет?
Cross-domain? Но это же обычно запрещено. Или я неправильно понял?

Почему X ? Делаешь аджакс к своему бэкенду, в зависимости от логики возвращаешь то, что тебе нужно и КОД. И потом отправляешь код с фронтенда - просто симулируешь "вбитие" кода клиентом. На клиенте придется использовать джаваскрипт, но чисто символически.

23 сентября в 09:09
Anfield Cat: прямо помощь новичками)
23 сентября в 09:59
strangeman:
Kh.d: Почему X ? Делаешь аджакс к своему бэкенду, в зависимости от логики возвращаешь то, что тебе нужно и КОД. И потом отправляешь код с фронтенда - просто симулируешь "вбитие" кода клиентом. На клиенте придется использовать джаваскрипт, но чисто символически.
А, через AJAX. Ну да, вариант, спасибо.
23 сентября в 10:37