>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Флейм http://forum.mozilla-russia.org/viewforum.php?id=14 >Нужна помощь гуру JavaScript http://forum.mozilla-russia.org/viewtopic.php?id=28221 |
Лаэда > 02-12-2008 01:13:33 |
Помню когда - то мне тоже требовалась помощь ява гуру, и тут мне очень сильно помогли. Надеюсь и в этот раз помогут :-) It is possible? |
DemonSat > 07-12-2008 21:29:22 |
Лаэда |
Лаэда > 09-12-2008 13:59:53 |
DemonSat |
Lain_13 > 09-12-2008 18:55:42 |
Обычно это делают при помощи URL. Вон, посмотрите на официальный и некоторые неофициальные калькуляторы талантов для WoW. Всё очень просто. Набираешь нужные значения и потом можешь скопировать сформированный URL с кодом. При переходе по такому URL этот код парсится и на основании распарсенных данных заполняются поля на экране. Можно и сам код передавать отдельно, без URL, но тогда нужно поле, в котором он будет генерироваться сделать редактируемым, что бы получивший этот код мог его туда вставить. Но, всё же, перейти по ссылке с кодом проще. Теперь о том, как формировать код. Тут много разных методов. Например, близзардовцы поступили очень просто. Так как данные представляют собой цифры от 0 до 5, то достаточно передать код класса и цепочку цифр вроде 1214350140534000030400050100. Для каждого класса определён порядок талантов, в согласии с этим порядком строка разбивается на отдельные цифры и эти значения присваиваются соответствующим талантам. Собственно это всё. На сколько я вижу в данном случае талантов довольно много, поэтому имеет смысл применить сжатие. Как я вижу все таланты кодируются числами от 0 до 7, т.е. одним байтом. Теперь посмотрим, что нам свободно доступно для кодирования -- это числа от 0 до 9 и 26 букв от a до z, причём с учётом регистра есть ещё 26 от A до Z. Т.е. в одном знакоместе мы можем хранить число от 0 до 61. Если добавить ещё, например, "-" и "_", то получим 64 возможных символа. Это у нас 2 в 6й степени (6 байт), что позволит нам кодировать по два таланта каждым символом, так как на число от 0 до 7 требуется не более трёх байт. Т.е. если у нас символы идут в последовательности "0..9a..zA..Z-_", то два таланта уровня 5 и 7 будут кодироваться так: 5 = 101 (двоичное число), 7 = 111 (тоже двоичное число), запишем их вместе (111101) и переведём в десятичное число (1 *32 + 1 *16 + 1 *8 + 1 *4 + 0 *2 + 1 *1 = 61). Получившееся число является номером символа в массиве "0..9a..zA..Z-_", это символ Z. Надеюсь как раскодировать объяснять не нужно. Нужно установить чёткий порядок следования талантов и обрабатывать их парами. Получившуюся строку символов приписываем к имени страницы как параметр и вперёд. |