Техническая поддержка сервиса Quadro.Boards

Объявление

Новости сервиса

О форуме

Quadro.Support – это форум технической поддержки различных проектов и сервисов Quadro.Systems LLC, на котором грамотные технические специалисты всегда смогут помочь вам в решении проблем, или же подсказать ответы на самые сложные вопросы. Так же на форуме собрана обширная база знаний по различным аспектам наших сервисов. Не забывайте пользоваться поиском ;)

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Техническая поддержка сервиса Quadro.Boards » Поток сознания » Скрипты по подгрузке API WoW


Скрипты по подгрузке API WoW

Сообщений 1 страница 20 из 129

1

Собственно, вот тут начали калабродить с подгрузкой аватар - http://forum.mybb.ru/viewtopic.php?id=34804
понаставили костылей, ща награды убраны, необходимо без костылей переписать скриптик.

на форуме есть поле fld1, которое заполняется вот так: сервер,Никнейм,1
например: подземье,Труер,1

скрипт должен брать из доп.поля название серва и имя перса.
потом подставлять это в ссылку на картинку и на оружейную.
потом заменять инфу на код картинки.

красное - название сервера
синее - имя персонажа
розовое - опционально подставляется в картинку для выделения аватарок

<a href="http://eu.battle.net/wow/ru/character/подземье/Труер/simple" title="оружейная"> <img alt="1" src="http://eu.battle.net/static-render/eu/deepholm/77/34083661-avatar.jpg"> </a>


саму картинку (аватарку) которую можно извлечь из файла с данными перса: http://eu.battle.net/api/wow/character/deepholm/Труер
ссылка персональная у игроков, добывается аналогичным образом: http://eu.battle.net/api/wow/character/название сервера/имя персонажа
в файле следующее:

{"lastModified":1414177732000,"name":"Труер","realm":"Deepholm","battlegroup":"Sturmangriff / Charge","class":3,"race":8,"gender":1,"level":90,"achievementPoints":17555,"thumbnail":"deepholm/77/34083661-avatar.jpg","calcClass":"Y","totalHonorableKills":15444}

вот тот самый кусок и приставляется к началу ссылки на аватар

последняя версия скрипта со всеми костылями была такой:

Код:
<!-- ссылки на контакты около ника + аватары батлнета -->
<script>
(function () {
      function awards_spoiler() {

function UniverСhange(selektor,changed,substitute){
$(selektor).each(function(){if ($(this).parent().html()!=null){if($(this).parent().html().indexOf(changed)!=-1){
$(this).parent().html($(this).parent().html().replace(changed,substitute));};};});}
UniverСhange(".pl-email a","Профиль","Посмотреть профиль");
UniverСhange(".pl-email a","ЛС","Написать Личное Сообщение");
UniverСhange(".pl-email a","E-mail","Отправить E-mail");
UniverСhange(".pl-website a","Вебсайт","Посмотреть Вебсайт");


$('#pun-viewtopic .post').each(function() {
  if($(this).find('.pl-email').length && GroupID != 3) {
    var a = $('<span class="platz"></span>').appendTo($(this).find('.pa-author a'));
    var apl = a.position().left+3, apt = a.position().top;
    $(this).find('.pa-author').after(' <span style="position:absolute;top:'+apt+'px;left:'+apl+'px; cursor:pointer;" class="open-p">&#9660</span><ul class="view-p"></ul>');
    $(this).find('.pl-email,.pl-website').attr('class', 'link').appendTo($(this).find('.view-p'));
    $(this).find('.open-p').click(function() {
      $(this).next().toggle();
    });
  }
});

$('.post-author').each(function() {
    $(this).find('.pa-avatar').remove();
    var title = $(this).find('.pa-title');
    var data1 = $(this).find('.pa-fld1');
    var data = data1.text().split(': ')[1];
    if(data1.length&&data.split(',').length>1){
    var realm = data.split(',')[0];
    var hero = data.split(',')[1];
    var tptl = $(this).find('.pa-title');
    var altN = data.split(',')[2];
    var alt=""; if(typeof(altN)!='undefined')alt='alt="'+altN+'"';
    $.get('http://s1.youbb.ru/gerda/wow.php', { r: realm, h: hero }, function(data) { if(data==null){title.after('<li class="pa-avatar" align=center><img src="/files/0012/ad/ab/72354.jpg"/></li>'); return}
      tptl.after('<li class="pa-bnet"><a href="http://eu.battle.net/wow/ru/character/'+realm+'/'+hero+'/simple" title="Оружейная" target="_blank"><img '+alt+' src="http://eu.battle.net/static-render/eu/'+data.thumbnail+'"></li>');
    });} else {
    title.after('<li class="pa-avatar" align=center><img src="http://blackteam.mmohost.ru/files/0012/ad/ab/72354.jpg"/></li>');}
  });

      }
      var t=0;  var time_func = setInterval(function(){ t++;
          if (t>100) { clearInterval(time_func); return; } 
          if ($(".pa-awards").length) { clearInterval(time_func); awards_spoiler() }
      },100);

}())
  </script>

форум - http://blackteam.mmohost.ru/

0

2

Герда
Это происходит на странице топика? Или еще где надо?

0

3

ток на странице топика
после статуса.

0

4

Еще вопрос, название сервера в допполе написано кириллицей, а в ссылке - латиницей. Есть какой-то список соответствия?

0

5

sadhaka
а в ссылке тоже можно кирилицей

http://eu.battle.net/api/wow/character/подземье/Труер

0

6

о, и еще момент. который добавлся по ходу
если поле не заполнено или заполнено некорректно, должно отображаться:

<img src="http://blackteam.mmohost.ru/files/0012/ad/ab/72354.jpg" title="персонаж неизвестен" />

0

7

Герда написал(а):

саму картинку (аватарку) которую можно извлечь из файла с данными перса: http://eu.battle.net/api/wow/character/deepholm/Труер

а тут?

0

8

и тут естественно )
deepholm=подземье
я те эту сцыль на кирилицу переделанную и скинула выше:

Герда написал(а):

http://eu.battle.net/api/wow/character/подземье/Труер


сори, отвалилась - седня бешеный день. :)

Отредактировано Герда (07.11.2014 01:57:52)

0

9

Герда
Ок, просто подумала, что есть 2 ссылка - одна кириллическая, другая латиницей и их никак не заменить.
Посмотрю сегодня в течении дня.

0

10

Герда написал(а):

<a href="http://eu.battle.net/wow/ru/character/подземье/Труер/simple" title="оружейная"> <img alt="1" src="http://eu.battle.net/static-render/eu/deepholm/77/34083661-avatar.jpg"> </a>

Это должно быть вместо аватара?

0

11

Герда

function UniverСhange(selektor,changed,substitute){
$(selektor).each(function(){if ($(this).parent().html()!=null){if($(this).parent().html().indexOf(changed)!=-1){
$(this).parent().html($(this).parent().html().replace(changed,substitute));};};});}
UniverСhange(".pl-email a","Профиль","Посмотреть профиль");
UniverСhange(".pl-email a","ЛС","Написать Личное Сообщение");
UniverСhange(".pl-email a","E-mail","Отправить E-mail");
UniverСhange(".pl-website a","Вебсайт","Посмотреть Вебсайт");

Это я не знаю как сделать, кроме как с помощью css. Ренат обещал реализовать событие, которое будет происходить после того, как отработают модули квадры, но, полагаю, это вопрос не 1-2 дней.

Очередная поделка фовера исправляется так

$('#pun-viewtopic .post').each(function() {
  if($(this).find('.pl-email').length && GroupID != 3) {
    var a = $('<span class="platz"></span>').appendTo($(this).find('.pa-author a'));
    var apl = a.position().left+3, apt = a.position().top;
    $(this).find('.pa-author').after(' <span style="position:absolute;top:'+apt+'px;left:'+apl+'px; cursor:pointer;" class="open-p">&#9660</span><ul class="view-p"></ul>');
    $(this).find('.pl-email,.pl-website').addClass("link").appendTo($(this).find('.view-p'));
    $(this).find('.open-p').click(function() {
      $(this).next().toggle();
    });
  }
});


Дальше недописанный скрипт, который будет грузить аватарки. Публикую, чтобы дома доделать, не успею сейчас.
//этот кусок добавляет поле <li class="pa-avatar item3"></li> (стандартная ава скрывается) и ставить туда аватарку по умолчанию для тех, у кого не заполнено поле или заполнено неправильно.
//не стала заменять стандартную аву, ибо до того, как скрипт выполнится она будет отображаться (а она может быть больше, чем и все будет дергаться)

<style>
.pa-avatar.item2, .pa-fld2 {display: none;}
</style>
<script>
$(function() {
    var arrParam, urlParam, urlAva, allHtml;
    if(document.URL.indexOf("viewtopic.php")!=-1) {
        $(".pa-fld2").each(function() {
            $('<li class="pa-avatar item3"></li>').insertAfter($(this).siblings(".pa-title"));

            arrParam = $(this).text().split(":")[1].split(",");

            if(arrParam.length < 3) { $(".pa-avatar.item3").html('<img src="http://blackteam.mmohost.ru/files/0012/ad/ab/72354.jpg" title="персонаж неизвестен" />'); return; }
            urlParam = 'http://eu.battle.net/api/wow/character/'+arrParam[0]+'/'+arrParam[1];
        })
    }
});
</script>


//этот кусок реализует кроссдоменный аякс запрос к сайту баттлнета и возвращает ссылку на аву

<script>

var link = encodeURI("http://eu.battle.net/api/wow/character/подземье/Труер");
$.ajax({
    url: link,
    dataType: "jsonp",
    jsonp : "jsonp",
    success: function(data){
    console.log( "Прибыли данные: " + data.thumbnail )
  }
});
</script>


Осталось закешировать запрос (баттл.нет как медленно отвечает) и вывести итоговый код ссылки с авой. Доделаю сегодня, если не будет никаких форсмажоров.

0

12

sadhaka написал(а):

Это я не знаю как сделать, кроме как с помощью css.

это уже запилилено отдельно в универсальный скрипт замены: http://blackteam.mmohost.ru/

ща на форуме отключены награды, шоб не конфликтовало с скриптами, трогающими .pl-email

sadhaka написал(а):

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

а у нас поле аватары в сообщениях все равно скрыто.
когда есть батл нет аватарки, дополнительные ни к чему.
заменено на "фото" и отображается тока в развернутом профиле. =)

0

13

Герда
Ну идея поставить стандартную Авву сразу у всех, а потом заменять(У тьву она есть, но мы ставили позже, если не нашли на Батле) в новое поле для Аввы, вроде не плоха, т.е страница будет дергаться меньше. (Ксать я забыл, зачем новое поле для Аввы?(это ранее она использовалось для вписывания ссылки от руки, а чичас, при загрузке можно впихнуть и в оригинальное поле Аватара.

Отредактировано Deff (07.11.2014 19:53:10)

0

14

ну, главное шоб стандартные авы не отображались :)
моя аудитория их вкорячивать не умеет.
как и не разбирается в интерфейсе форума, например, пока не заменили название поля при регистрации с "Имя" на "Логин", все очень старались зарегистрироваться как миша/михаил - и не понимали, че у них не получается.

0

15

Герда
А можно еще какое-нибудь сочетание

Герда написал(а):

подземье,Труер,1

работающие

0

16

sadhaka
на форуме почти у всех юзеров рабочее :)
вот, цепанула посвежее и разнообразней:

разувии,Миндей
свежеватель-душ,Курвёныш
подземье,Бинарный,2
гордунни,Кавайныйпух
ревущии-фьорд,Люциферкс

0

17

Герда написал(а):

разувии,Миндей
свежеватель-душ,Курвёныш
подземье,Бинарный,2
гордунни,Кавайныйпух
ревущии-фьорд,Люциферкс


%) кириллица вынесет мне мозг напрочь

0

18

sadhaka написал(а):

%) кириллица вынесет мне мозг напрочь

ну, куда деваться, близы решили, что на ру-серверах будет русский язык :)
можно составить список замены с английскими названиями серверов, но смысл, если и так открываются ссылки?
например:
http://eu.battle.net/wow/ru/character/подземье/Симпатичная/simple
http://eu.battle.net/api/wow/character/подземье/Симпатичная

0

19

Герда
В общем, я пока не уверена, что это будет хорошо работать, поэтому не занималась оптимизацией.
Потестируй + если что не так - тоже говори. Завтра уже на свежую голову посмотрю.

Код:
<style>
	.pa-avatar.item2, .pa-fld2 {display: none;}
</style>
<script>

function createCookie(name,value,days) {
    if (days) { var date = new Date(); date.setTime(date.getTime()+(days*24*60*60*1000)); var expires = "; expires="+date.toGMTString();  }
    else var expires = "";  document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) { var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}
function getUrlAva(id, aux, url, placeAva) {
     $.ajax({
    	    url: url,
    	    dataType: "jsonp",
    	    jsonp : "jsonp",
    	    async : false,
    	    success: function(data){
    	    	urlAva = data.thumbnail;
    	    	createCookie(id, urlAva, 30);    
    	    	$(placeAva).append('<a href="'+url+'/simple" title="оружейная"> <img alt="'+aux+'" src="http://eu.battle.net/static-render/eu/'+urlAva+'"> </a>');    	
	  }
	});

}
$(function() {
    var arrParam, urlParam, tailAva, newAva, idParam;

    if(document.URL.indexOf("viewtopic.php")!=-1) {
        $(".pa-fld2").each(function() {

            	arrParam = $(this).text().split(":")[1].split(",");
             newAva = $('<li class="pa-avatar item3"></li>').insertAfter($(this).siblings(".pa-title"));
             idParam = $(this).parents(".post").find(".pl-email a[href*='profile.php']").attr('href').split('id=')[1];               

                if(arrParam.length < 2) { $(newAva).html('<img src="http://blackteam.mmohost.ru/files/0012/ad/ab/72354.jpg" title="персонаж неизвестен" />'); return; }
                urlParam = encodeURI('http://eu.battle.net/api/wow/character/'+arrParam[0]+'/'+arrParam[1]);

                if(!arrParam[2]) arrParam[2] = "0";

                tailAva = readCookie(idParam);

                if(tailAva) $(newAva).append('<a href="'+urlParam+'/simple" title="оружейная"> <img alt="'+arrParam[2]+'" src="http://eu.battle.net/static-render/eu/'+tailAva+'"> </a>'); 
                else  getUrlAva(idParam, arrParam[2], urlParam, newAva);
        })
    }
});
</script>

У меня вот тут работает http://sadhaka.rusff.ru/viewtopic.php?id=21#p218 и вроде как довольно шустро

0

20

ну, пока никакого эффекта

http://blackteam.mmohost.ru/viewtopic.php?id=5&p=2

0


Вы здесь » Техническая поддержка сервиса Quadro.Boards » Поток сознания » Скрипты по подгрузке API WoW


Рейтинг форумов | Создать форум бесплатно © 2007–2016 «QuadroSystems» LLC