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

Спойлер предметов - известные проблемы


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

Использование

Заключите предмет в тэги

[item]название вашего предмета[/item]

Демонстрация в работе (для EQ2)

  • экип: [item]Покрытие отваги[/item]
  • скилл: [item]Дух-проводник[/item]
  • ресурсы: [item]Вощеная кожа[/item]
  • книги рецептов: [item]Энигма техномага, том 5[/item]

Известные проблемы (общее)

  • Отсутствует продвинутый механизм управления кэшем (аналогичный тому, что реализован в EQDkp-Plus).

Известные проблемы (EQ2)

  • В некоторых случаях не распознает предмет, описание которого не найдено в базе данных (что усложняет чистку кэша, предположительно проблема проявляется только в юникод-версии).
  • При наличии апострофа в названии предмета не выводит информацию о нем (при этом описание предмета кэшируется корректно). Предположительно апостроф вызывает сбой в работе overlib.js.
  • (fixed by WereWolf_ACE 07.05)Парсинг объектов требует доработки для очков достижений с таблицой (пример - [item]Вращение драгуна[/item]), для умений (пример - [item]Затухающий дух[/item]).
  • (добавлено 09.04) Парсинг объектов снаряжения из комплектов (примеры: [item]Сапоги меткого выстрела[/item], [item]Капелина искусного рассказчика[/item])
  • (добавлено 26.04) рес преобразования: [item]Кусок изумруда[/item]
  • (добавлено 08.08) длинные названия не обрабатываются - предположительно только в юни-версии спойлера - [item]Кристаллизованная сущность Заклинателя Пустоты[/item]

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

  • 1 месяц спустя...

[item]Кристаллизованная мана[/item]

спойлер не обрабатывает шаблон

правильно не отображает ни в системе дкп, ни на форуме

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

Функция обработки очков достижений (createAA) почти готова. Хоть убей, не могу иконку достижений туда засунуть. :blush:

В общем, я тебе в личку кину функцию, скопируешь ее в wiki.php и посмотришь.

__________________________________________________________________________________________

Все, иконку засунула. Но протестировать ни на чем, кроме Силы палача не могу. Так что смотри мое последнее личное сообщение - там готовая функция :)

З.Ы. Не забудь старую сохранить на всякий случай :rolleyes:

__________________________________________________________________________________________

Э-э... Что это "Вы не можете отправлять сообщения. Действует ограничение на период отправки двух сообщений подряд."??? Уже больше часа прошло... Ну и сиди без функций :girl_to_take_umbrage2:

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

По поводу ограничения на отправку писем - я теперь хоть убей не могу вспомнить где прописал настройки по мылу против флуда :)

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

  • 2 недели спустя...

Вот подправила чуть-чуть. Только не смейся :blush: ничего умнее не придумала... Так как картинка ОД у нас всегда jpg, то я просто проверяю: если .png - то мы ее не берем. Так что все в будущем загружаемые картинки для ОД должны быть ни в коем случае не png! Если не будет работать, кидай тапками :)

// функция обработки ОД

	function createAA($data, $item) 

	{

		// получаем адрес иконки

		preg_match_all('#<img(.*?)src="(.*?)"#i', $data, $match, PREG_SET_ORDER);

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//////////////////////////// Вот туточки я добавила вместо $item['icon'] = $match[1][2];  /////////////

		if(preg_match('#(.*?).png#i', $match[1][2]))

		{

			$item['icon'] = "";

		}

		else

		{

			$item['icon'] = $match[1][2];

		}		

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////

		// выправляем ссылки

		$data = str_replace('src="/w/', 'src="http://norrath.ru/w/', $data);

		$data = str_replace('href="/w/', 'href="http://norrath.ru/w/', $data);



		$match = array();

		preg_match('#<table cellpadding="0" border="0" width="100%" style="border:3px solid black; margin:0px;" class="examinewindow" cellspacing="0">(.*?)</table>#s', $data, $match); 


		$item['html'] = $match[0];


		// вытаскиваем табличку значений

		$match = array();

		preg_match('#<table border="1"(.*?)</table>#s', $data, $match);


		$effbyrk = $match[0];

		$effbyrk = str_replace("<td ", '<td style=" ', $effbyrk);


		$effbyrk = str_replace('<th style="', '<td style="color: black; ', $effbyrk);

		$effbyrk = str_replace("<th", "<td", $effbyrk);

		$effbyrk = str_replace("</th>", "</td>", $effbyrk);

		$effbyrk = str_replace('<table border="1"', '<table border="1" class="effbyrk"', $effbyrk); // присваиваем таблице класс

		$effbyrk = preg_replace("#<caption(.*?)<\/caption>#s", "", $effbyrk);

		$effbyrk = preg_replace('#cellpadding="(.*?)"#s', "", $effbyrk);

		$effbyrk = preg_replace('#style="#s', 'style="padding: 10px; ', $effbyrk, 1);

		$effbyrk = '<tr><td colspan="3">'.$effbyrk."</td></tr>"; 



		// удаляем картинки:

		$item['html'] = $this->remove_images($item['html']);



		// удаляем ссылки

		$item['html'] = preg_replace("/<a(.*?)>/s", "", $item['html']);		

		$item['html'] = preg_replace("/<\/a>/s", "", $item['html']);	



		$item['html'] = str_replace("border=\"1\"", "border=\"0\"", $item['html']);		  //  >  

		$item['html'] = str_replace("border:3px solid black; ", "", $item['html']);  //  >  убираем некрасивый бордер и бкг 


		$item['html'] = preg_replace("#</table>#s", $effbyrk."</table>", $item['html']);



		$template_html = trim(file_get_contents(dirname(__FILE__) . '/../templates/' . FILE_TEMPLATE));

		$item['html'] = str_replace('{ITEM_HTML}', $item['html'], $template_html);




		$item['html'] = str_replace("\"", "'", $item['html']);

		$item['html'] = str_replace("[nln]", "\n", $item['html']);			// возвращаем переводы каретки


		$item['id']=0;

		$item['lang'] = 'en';

		$item['color'] = STR_AA_COLOR;


		if (debug_mode == true) echo('-- AA found, stop getitem --<br />');

		return $item;

	}

И еще по какой-то причине при создании таблицы скиллов вызывается не функция createSkill, а функция createItem. По какой это причине может быть? Если я исправлю функцию createItem, ничего не сломается?

Эм... createItem вызывают также экипировка, ресурсы и книги рецептов. (Причем ресурсы как-то плохо работают...). Что мне делать?

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

Вот. Тестируй. Особенно умения. Чего не хватает - говори

wiki_conf.php

<?php


/*

 * ParseWiki

 * 27/07/2008

 *

 * Автор: Бурыкин Руслан 

 * e-mail: Heckffy@gmail.com

 *

 * 

 *

 */


// --------------- РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ -------------------

define('REG_NEXIST', "/В настоящий момент текст на данной странице отсутствует/"); //

define('REG_ISSKILL', '/Категория:Умения/');

define('REG_ISAA', '/Информация об очках достижений/');

define('REG_ISRES', '/<b>Информация&nbsp;о&nbsp;ресурсе<\/b>/');

define('REG_ISTECHRES', '/Ресурсы преобразования/');

define('REG_TABLE_EFFS', "/<table border\=\"1\"(.*?)<\/table>/");

// --------------- /РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ ------------------



// ----------------------------- СТРОКИ --------------------------------

define('STR_ITEM_FIN', "<tr>[nln]<td align=\"center\">[nln]</td></tr></table>[nln]</td></tr></table>\n{ITEMSTATS_LINK}");

define('STR_ITEM_FIN_SHORT', "</table>\n{ITEMSTATS_LINK}");

define('STR_GRADS_TH_STYLE', "width: 60px; padding: 0; color: #000000; border:1px solid #888888; text-align:center; ");

define('STR_AA_COLOR', "bluename");			// цвет од

define('STR_RES_COLOR', "bluename");			// цвет есурсов

define('STR_TECHRES_COLOR', "bluename");			// цвет ресурсов техномагии

define('STR_ITEM_COLOR', "bluename");		// цвет предметов

define('STR_SKILL_COLOR', "bluename");		// цвет скилов

// ----------------------------- /СТРОКИ-------------------------------



// ------------------------ ФАЙЛЫ -------------------------------------

define('FILE_TEMPLATE', "popup_wiki.tpl");

// ------------------------ /ФАЙЛЫ ------------------------------------


?>
Функция обработки ресурсов
//функция обработки ресурсов

	function createRes($data, $item) 

	{

		// получаем правильное имя

		preg_match("/<h1 class\=\"firstHeading\">(.*?)<\/h1>/", $data, $match);

		$name=$match[1];


		// получаем класс иконки

		preg_match("/<span class\=\"(.*?)\"/", $data, $match);

		$icoclass = $match[1];

		$icoclass = str_replace(' ', '_', $icoclass);


		// если иконка есть

		if($icoclass != '')

		{

			$icon = "wiki/%D0%98%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5:$icoclass.gif";

			$icon_html = itemstats_read_url("http://norrath.ru/$icon"); // здесь можно найти адрес иконки

			preg_match("/<div class\=\"fullImageLink\"(.*?)<img/", $icon_html, $match);

			$icon_html = $match[1];

			preg_match("/href\=\"(.*?)\"/", $icon_html, $match);

			$item['icon'] = $match[1];

		}


		// составляем тултип

		preg_match_all("#<table(.*?)<\/table>#s", $data, $match);

		$item['html'] = $match[0][1];


		// удаляем картинки:

		$item['html'] = $this->remove_images($item['html']);


		$item['html'] = preg_replace("/<caption(.*?)<\/caption>/", "", $item['html']);


		// удаляем ссылки

		$item['html'] = preg_replace("/<a(.*?)>/", "", $item['html']);		

		$item['html'] = preg_replace("/<\/a>/", "", $item['html']);		


		$item['html'] = str_replace("border=\"1\"", "border=\"0\"", $item['html']);

		$item['html'] = str_replace("border: 1px solid #000;", "", $item['html']);

		$item['html'] = preg_replace("/style\=\"background-color(.*?);/", "", $item['html']);


		// выправляем ссылки

		$data = str_replace("src=\"/w/", "src=\"http://norrath.ru/w/", $data);

		$data = str_replace("href=\"/w/", "href=\"http://norrath.ru/w/", $data);


		// вставляем имя

		$item['html'] = preg_replace("/<tr>/", "<tr><th colspan=\"3\" class=\"ew-title-block\"><font class=\"ew-title\">$name</font></th></tr><tr>", $item['html'], 1);


		$template_html = trim(file_get_contents(dirname(__FILE__) . '/../templates/' . FILE_TEMPLATE));

		$item['html'] = str_replace("\"", "'", $item['html']);

		$item['html'] = str_replace('{ITEM_HTML}', $item['html'], $template_html);


		$item['html'] = str_replace("[nln]", "\n", $item['html']);			// возвращаем переводы каретки


		$item['id']=0;

		$item['lang'] = 'en';

		$item['color'] = STR_RES_COLOR;

		if (debug_mode == true) echo('-- resource found, stop getitem --<br />');

		return $item;

	}
Функция обработки умений
// функция обработки умений

	function createSkill($data, $item) 

	{

		// выправляем ссылки

		$data = str_replace('src="/w/', 'src="http://norrath.ru/w/', $data);

		$data = str_replace('href="/w/', 'href="http://norrath.ru/w/', $data);

		//получаем картинку умения

		preg_match_all('#<img(.*?)src\="(.*?)"#i', $data, $match, PREG_SET_ORDER);

		$item['icon'] = $match[2][2];


		// получаем правильное имя

		preg_match("/<h1 class\=\"firstHeading\">(.*?)<\/h1>/", $data, $match);

		$name=$match[1];


		preg_match("#<table class=\"ew-extras\" border=\"1\" width=\"500px\">(.*)<\/table>#s", $data, $match);

		$match[0] = preg_replace("#<p><font size=\"1\">(.*)#s", "", $match[0], 1);

		$data = str_replace("width=\"500px\"", "", $match[0]);

		$item['html'] = $match[0];


		if (stristr($data , "развитие умения")) {

			preg_match("/<table class\=\"ew-extras\"(.*?)(.*?<\/table>){7}/", $data, $match);

			$item['html']=$match[0];

			$item['html'] = str_replace("<table border=\"1\"", "<table class=\"skilline\" border=\"1\"", $item['html']);	// добавляем классы стилей к линейке скилов

			$item['html'] = str_replace("class=\"ew-extras\"", "class=\"ew-extras-skilline\"", $item['html']);



			preg_match("/<table class\=\"skilline\"(.*?)<\/table>/", $item['html'], $match);

			$skilline = $match[0];

			$skilline = preg_replace("/style\=\"(.*?)\"/", "", $skilline);

			$skilline = str_replace("th width=\"15%\"", "th", $skilline);

			$item['html'] = preg_replace("/<table class\=\"skilline\"(.*?)<\/table>/", $skilline, $item['html']);


			$item['html'] = str_replace("<table class=\"skilline\"", "<table class=\"skilline\" style=\"color: black;\"", $item['html']);


		}

		else

		{

			preg_match("/<table class\=\"ew-extras\"(.*?)(.*?<\/table>){6}/", $data, $match);

			$item['html']=$match[0];

			   if(stristr($item['html'] , "<i><b>series</b></i> определена, но "))

			{

				$item['html'] = preg_replace("/<td align\=\"right\" valign\=\"bottom\" rowspan\=\"3\"> <i><b>series<\/b><\/i>(.*?)<\/td>/", "", $item['html']);

				$item['html'] = str_replace("<td width=\"65%\" align=\"left\" valign=\"top\">[nln]<table  border=\"0\" cellpadding=\"1\" cellspacing=\"0\" width=\"100%\">",

							"<td colspan=\"3\" width=\"65%\" align=\"left\" valign=\"top\">[nln]<table  border=\"0\" cellpadding=\"1\" cellspacing=\"0\" width=\"100%\">",

							$item['html']);


			}

		}


		// удаляем ссылки

		$item['html'] = preg_replace("/<a(.*?)>/", "", $item['html']);		

		$item['html'] = preg_replace("/<\/a>/", "", $item['html']);	


		// удаляем картинки:

		$item['html'] = $this->remove_images($item['html']);


		// и ячейки под ними

		$item['html'] = preg_replace("#<td rowspan\=\"2\"(.*?)(.*?<\/td>){3}#s", "", $item['html']);

		$item['html'] = str_replace("border=\"1\"", "border=\"0\"", $item['html']);		  //  >  

		$item['html'] = str_replace("border:1px solid black;", "", $item['html']);  //  >  убираем некрасивый бордер и бкг 

		$item['html'] = str_replace("border-top:2px solid black;", "", $item['html']);  

		$item['html'] = str_replace("border-right:1px solid black;", "", $item['html']); 

		$item['html'] = preg_replace("#style\=\"background(.*?)\"#s", "", $item['html']);


		$item['html'] = str_replace("<table class=\"examinewindow\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">",

									"<table class=\"examinewindow\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\"><tr><td class=\"ew-title-block\"><font class=\"ew-title\">$name</font></td></tr>", $item['html']);


		$item['html'] = preg_replace("/<caption(.*?)<\/caption>/", "", $item['html']);



		$template_html = trim(file_get_contents(dirname(__FILE__) . '/../templates/' . FILE_TEMPLATE));

		$item['html'] = str_replace('{ITEM_HTML}', $item['html'], $template_html);

		$item['html'] = str_replace("\"", "'", $item['html']);


		$item['html'] = str_replace("[nln]", "\n", $item['html']);			// возвращаем переводы каретки

		$item['id']=0;

		$item['lang'] = 'en';

		$item['color'] = STR_SKILL_COLOR;


		if (debug_mode == true) echo('-- skill found, stop getitem --<br />');


		return $item;

}

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

  • 3 недели спустя...
Это вы к чему спрашиваете?

да к тому что хочу на форум свой сделать такую прибамбасину, а форум у меня на юкозе

а переходить на платник не хочу , пусть 150 р не так много , но это тоже деньги.

и если бы это было бесплатно , уверен много бы народу перешло на екдкр и форум на твоём хосте)

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

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

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

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

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

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

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

по поводу юкоза понятно)

что значит точный расчет?

дык ни одно рекламное вложение не имеет точного расчета или понимания о доходности)

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

ведь как мне кажеться сейчас задача(проблема) Норрата в заполненности и активности проекта.

заполненность неплоха , но ведь по сути норрат сейчас является инфо базой и не больше.

и отток заинтересованных игроков к Сэти наверняка не лучшим образом сказался на проекте! (хотя я могу и ошибаться)

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

но тут уж тебе лучше знать чего ты сам хочешь от того что делаешь)

кстати а что там с идеей переброски полного форума на твой хост с юкоза?

у меня зам оплатил какое то время и место на норрат , в смысле ДКП и форум , но вот что с этим делать теперь и сам не знает))) (поспешил конечно , не подготовился)

я против переезда на пустой форум , слишком много там всего , да и ДКП у Сэти в целом устраивает , но мысли по поводу создания собственной независимой базы есть , да и возможности юкоза уже не устраивают.

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

и отток заинтересованных игроков к Сэти

Заинтересованных в чем?

кстати а что там с идеей переброски полного форума на твой хост с юкоза?

Я на сайте задавал вопрос о возможности переезда с укоза - мне нужно было знать, нужно ли это кому-нибудь, нужен был пределенный минимум потенциальных клиентов, чтобы тратиться за заказ скрипта и потом на его поддержку. Там до сих пор нет ни одного комментария. Нет спроса - нет предложения.

ведь как мне кажеться сейчас задача(проблема) Норрата в заполненности и активности проекта.

Дык все в ваших руках. И даже я. Есть список задач, с которыми требуется помощь. Если наша деятельность приносит вам пользу - подключайтесь. Все просто и понятно, или вы еще чего-то ждете?

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

дык ни одно рекламное вложение не имеет точного расчета или понимания о доходности)

В данном случае речь идет об оценке рентабельности показа рекламы вместо абонентской платы. Хотя бы ориентировочной.Нельзя допустить, чтобы этот шаг оказался нерентабельным. Не зная броду - я не полезу в воду.

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

заинтересованных в дкп системе , своем форуме , общении и организованности)

я склонен считать , что само собой ничего не делается

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

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

Им нужна помощь , им нужен совет , но не нарушая их независимости)))

Посмотри пример Сэти она организовала игроков и у неё действительно живое общение. Но что мешает тебе сделать схожие условия?

Я извиняюсь если давлю на мозоль , но мне просто обидно что человек с таким потенциалом и такими тех возможностями не привлекает игроков !!!

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

Посмотри пример Сэти она организовала игроков и у неё действительно живое общение. Но что мешает тебе сделать схожие условия?

Наверное, отсутствие практикующего РЛа в данном случае.

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

  • 4 месяца спустя...

Возник следующий вопрос.

У нас на форуме (Русская версия IP.Board 2.3.3 © 2009 IPS, Inc.), установлен уже спойлер для ВоВ. По размышлению хотим запихнуть туда же спойлер для ЕК, но вот знающие люди говорят, что у двух спойлеров будет конфликт.

Не подскажете будет ли таки конфликт?

Есть ли какие-то возможности по совместной их установке или все уже наработано так, что никаких конфликтов между ними на одной площадке не будет?

Вопросы предложения? :)

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

Да, установить без дополнительной возни не получится, поскольку для спойлера EQ2 использован тот же скрипт, что и для wow-спойлера.

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

  • 1 месяц спустя...

Возможно ли заставить спойлер отображать в тултипе уровень предмета (ItemLevel)? Имеется ввиду World of Warcraft. Спойлер ведь работает через оружейную Там есть уровень предметов, в тултипе нет.

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

До конца года будет представлен другой спойлер для WoW, о нем говорилось в соседней теме, там это будет.

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

  • 4 месяца спустя...

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...