Рейтинг темы:
  • 1 Голос(ов) - 5 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
PHP скрипты и просто код, который можно и нужно использовать на своем сайте
#1
Приветствую друзья,

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

Начну с небольшого скрипта, который позволит вывести текущий уровень персонажа, при этом вам не потребуется прописывать опыт и уровни в код как это требовалось в прошлом предлагаемом мною варианте, достаточно поместить вместе со скриптом файл player_experience_table.xml, который доступен по адресу:

Цитата:AL-Game\data\static_data\

Код класса PlayerInfo:
PHP код:
<?php 
/**
* Класс PlayerInfo
* @author PROGRAMMATOR <admin@zone-game.info>
* @link http://forum.zone-game.info/showthread.php?t=10110
* @copyright http://zone-game.info
*/
class PlayerInfo
{
/**
* Конструктор класса PlayerInfo
*/
public function __construct() {
// здесь может быть ваш код ;)
}

/**
* Метод определения текущего уровня персонажа
* @param <int> $experience количество exp
* @return <int> текущий уровень
*/
public function getCurrentLevel($experience) {
$expList = $this->getPlayerExperienceTable();
$maxLevel = sizeof($expList) - 1;

if (
$experience >= $expList[$maxLevel]) {
return
$maxLevel;
}

for (
$level = 0; $level < $maxLevel; $level ++) {
if (
$experience > $expList[$level] and $experience < $expList[$level + 2]) {
return ((
$experience - $expList[$level]) > ($expList[$level + 1] - $experience) ? $level + 1 : $level);
}
}
}

/**
* Метод разбора XML файла player_experience_table.xml
* @return <array> собранный массив $level => $exp
*/
private function getPlayerExperienceTable() {
$xml = simplexml_load_file(realpath(dirname(__FILE__)).'/player_experience_table.xml');
foreach (
$xml->exp as $key => $value) {
$playerExperienceTable[] .= $value;
}
return
$playerExperienceTable;
}
}

Использовать его очень просто, вначале сохраняете весь код в файл, например PlayerInfo.class.php и в необходимом месте подключаете его:

PHP код:
<?php 
require_once 'PlayerInfo.class.php';

И соответственно выводим текущий уровень персонажа:

PHP код:
<?php 
$playerInfo
= new PlayerInfo();
echo
$playerInfo->getCurrentLevel('здесь_количество_опыта');

На этом пока все, остальное по вашим просьбам. То есть в этой теме вы можете попросить написать скрипт, который будет полезен не только вам, но и другим участникам нашей Зоны. Сразу немного всяких "НО":

Цитата:[INDENT]
  • Не пишу хаки и модули для CMS Joomla.
  • Могу отказаться от написания не прокомментировав причину\ы.
  • Не пишу CMS, системы доната, панели управления.
[/INDENT]

Вообщем только разумные просьбы, за вас всю работу делать не буду, это уж точно. Wink
Ответ
#2
По просьбе в лс написал вывод игровых подсказок из файла (stringtable_tip.xml). Брать тут:

Цитата:RUS\Data\Strings\

Незабываем его пройти AIONdisasm. (готовый файл в аттаче)

PHP код:
<?php 
/**
* Метод вывода игровых подсказок из файла stringtable_tip.xml
* @return <string> случайную игровую подсказку
* @copyright http://forum.zone-game.info/showpost.php?p=87843&postcount=2
*/
public function getGameTips() {
$xml = simplexml_load_file(realpath(dirname(__FILE__)).'/stringtable_tip.xml');
foreach (
$xml->string_tip as $key => $value) {
$tipsList[] .= $value->body;
}

return
preg_replace('#<(.*)>#is', '<span style="color: #d89528;">&lt;\\1&gt;</span>', $tipsList[mt_rand(0, sizeof($tipsList))]);
}

В подсказках будут подсвечены все клавиши и названия интерфейсов, что выделены с помощью - < >

[Изображение: image-5A5B_4C8E8FAE.jpg]


Файлы вложений
.zip   stringtable_tip.zip (Размер: 9.82 KB / Загрузок: 2)
Ответ
#3
Я бы кое-что поправил.
1. Запросто может быть необходимость дергать getCurrentLevel() несколько раз за время выполнения скрипта для разных игроков, соотв. надо бы закешировать (в статик-поле) чтение xml-ки.
2. Искать в отсортированном массиве лучше все-таки бинарным поиском. Итераций меньше.

PHP код:
<?php
/**
* Класс PlayerInfo
* @author PROGRAMMATOR <admin@zone-game.info>
* @link http://forum.zone-game.info/showthread.php?t=10110
* @copyright http://zone-game.info
*/
class PlayerInfo
{
const
PLAYER_EXPERIENCE_TABLE_FILE = 'player_experience_table.xml';
private static
$playerExperienceTable = array();
/**
* Конструктор класса PlayerInfo
*/
public function __construct() {
// здесь может быть ваш код ;)
}

/**
* Метод определения текущего уровня персонажа
* @param <int> $experience количество exp
* @return <int> текущий уровень
*/
public function getCurrentLevel($experience) {
$expList = self::getPlayerExperienceTable();
$maxLevel = sizeof($expList) - 1;

if (
$experience <= 0) {
return
1;
}
if (
$experience >= $expList[$maxLevel]) {
return
$maxLevel;
}

$iMin = 1;
$iMid = 0;
$iMax = $maxLevel;
while ((
$iMax - $iMin) > 1) {
$iMid = ($iMin + $iMax) >> 1;
if (
$experience == $expList[$iMid]) {
return
$iMid;
} elseif (
$experience > $expList[$iMid]) {
$iMin = $iMid;
} elseif (
$experience < $expList[$iMid]) {
$iMax = $iMid;
}
}
return
$iMin;
}

/**
* Метод разбора XML файла player_experience_table.xml
* @return <array> собранный массив $level => $exp
*/
private static function getPlayerExperienceTable() {
if (
sizeof(self::$playerExperienceTable) == 0) {
$xml = simplexml_load_file(realpath(dirname(__FILE__)) . '/' . self::PLAYER_EXPERIENCE_TABLE_FILE);
foreach (
$xml->exp as $key => $value) {
self::$playerExperienceTable[] = $value;
}
}
return
self::$playerExperienceTable;
}
}
?>
Ответ
#4
Спасибо и за ваше мнение, ему тоже есть место быть. Smile
Но вот while и if elseif elseif elseif - это ужасно.
Ответ
#5
Не знаю, чем не понравился while, с ним проблемы будут только если в xml-ке косяки и элементы не сортированные будут (экстремальные границы вроде как проверил). На всякий случай подправим еще getPlayerExperienceTable()
PHP код:
<?php 
private static function getPlayerExperienceTable() {
if (
sizeof(self::$playerExperienceTable) == 0) {
$xml = simplexml_load_file(realpath(dirname(__FILE__)) . '/' . self::PLAYER_EXPERIENCE_TABLE_FILE);
foreach (
$xml->exp as $key => $value) {
self::$playerExperienceTable[] = $value;
}
sort(self::$playerExperienceTable);
}
return
self::$playerExperienceTable;
}
C if-elseif-elseif согласен, лишки много, так красивее.
PHP код:
<?php 
$iMin
= 1;
$iMid = 0;
$iMax = $maxLevel;
while ((
$iMax - $iMin) > 1) {
$iMid = ($iMin + $iMax) >> 1;
if (
$experience >= $expList[$iMid]) {
$iMin = $iMid + 1;
} else {
$iMax = $iMid - 1;
}
}
Ответ
#6
Незнаю, может уже спрашивали.
но хотелось бы иметь маленький скриптик на сайте количество онлайна
т.е. место на сайте (квадратик размером к примеру 5х5px) которое будет обращатся к базе и показывать количество онлайна на сервере.
Еще раз извеняюсь, возможно где-то уже выкладывали, если не трудно тыкните ссыль.

Также хотелось бы иметь хорошую статистику
Уровень, Класс, Абис очки, Клан, Статус онлайн
знаю что на просторах интернета есть много, но все они гавно, возможно я просто нупь но интегрировать их в оболочку сайта очень трудно + дизайн не вклеивается. делать отдельную страницу для этого можно, но это бред и вид сайта теряется. Не плохо бы было написать такую статистику и чтоб на прозрачном фоне

З.Ы. извиняюсь за ресторан Smile
[SIGPIC][/SIGPIC]
Ответ
#7
Онлайн это не проблема, а со вторым может быть напишу, главное выбрать свободное время. Но опять же, интеграции во все и всяк сложно добиться, лучше указать свой двиг, чтобы знать куда оно интегрируется.
Ответ
#8
ну я себе это представляю так:

Таблица
в ней таблицы и колонки с данными, запросы через мускул, в таблице стоит скрипт подстановки той или иной картинки зависимо от значения, фон картинок и всей таблички - прозрачный, если можно (было бы не плохо) картинки пусть валяются в одтельной папке и каждый мог бы себе переделать как ему ближе к сайту, сами таблицы (html) создать не проблема, я даже могу нарисовать все (html + psd картинок рискнуть), проблема в скриптовке, у меня плохо Php и MySQL идут на таком уровне Smile

А вашпе было бы карамельно если б статистика ишла также как и получения вознаграждения за голосование на top.info
т.е. есть кнопка, на нее жмык и всплывает Ajax окно с контентом
но это наверно я уже загнул)))
[SIGPIC][/SIGPIC]
Ответ
#9
undertrey Написал:той или иной картинки зависимо от значения
Это вы что ли о проверке работы самого сервера ?

ps C сегодняшними JS фреймворками - Ajax плевое дело, но тема то не по JavaScript. Wink
Ответ
#10
Цитата:Это вы что ли о проверке работы самого сервера ?

Нет, например
Есть таблица
в ней контент
есть игрок с ником Admin (к примеру)
его строчка статистики будет такова

Ник Раса Abuss Уровень Класс Статус
Admin Elyos 100 38 Глад Offline

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

асли текстом удобнее и не так трудно - пусть будет текст, руки у меня есть буквы на img переделать Wink

Цитата:ps C сегодняшними JS фреймворками - Ajax плевое дело, но тема то не по JavaScript.

Очень жалко, круто бы было если оно красиво выкидывалось после клика на кнопку
[SIGPIC][/SIGPIC]
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  [шара]ingameshop и скрипты выдачи автобонусов MAZDIK 0 2,798 11-03-2011, 09:18 PM
Последний пост: MAZDIK
  Полезные php скрипты aion Nikoz 17 12,430 06-27-2011, 11:59 AM
Последний пост: Patifon
  Скил который не пропадает после смерти eleminator 6 2,868 05-17-2011, 02:01 PM
Последний пост: MetaWind
  Наработки! или просто "приколы" =) PEEERROGGGGG 42 13,789 04-24-2011, 05:13 PM
Последний пост: TieLay

Перейти к форуму:


Пользователи, просматривающие эту тему: 3 Гость(ей)