Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Серверная часть (https://forum.zone-game.info/forumdisplay.php?f=148)
-   -   PHP скрипты и просто код, который можно и нужно использовать на своем сайте (https://forum.zone-game.info/showthread.php?t=10110)

PROGRAMMATOR 13.09.2010 20:57

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

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

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

Цитата:

AL-Game\data\static_data\
Код класса PlayerInfo:
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 $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 код:

require_once 'PlayerInfo.class.php'

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

PHP код:

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

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

Цитата:

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

Вообщем только разумные просьбы, за вас всю работу делать не буду, это уж точно. ;)

PROGRAMMATOR 13.09.2010 23:55

Re: PHP скрипты и просто код, который можно и нужно использовать на своем сайте
 
Вложений: 1
По просьбе в лс написал вывод игровых подсказок из файла (stringtable_tip.xml). Брать тут:

Цитата:

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

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(0sizeof($tipsList))]);
    } 

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

http://img.zone-game.info/image-5A5B_4C8E8FAE.jpg

Blakkky 14.09.2010 00:07

Re: PHP скрипты и просто код, который можно и нужно использовать на своем сайте
 
Я бы кое-что поправил.
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;
    }
}  
?>


PROGRAMMATOR 14.09.2010 00:13

Re: PHP скрипты и просто код, который можно и нужно использовать на своем сайте
 
Спасибо и за ваше мнение, ему тоже есть место быть. :)
Но вот while и if elseif elseif elseif - это ужасно.

Blakkky 14.09.2010 00:24

Re: PHP скрипты и просто код, который можно и нужно использовать на своем сайте
 
Не знаю, чем не понравился while, с ним проблемы будут только если в xml-ке косяки и элементы не сортированные будут (экстремальные границы вроде как проверил). На всякий случай подправим еще getPlayerExperienceTable()
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 код:

        $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;
            }
        } 


undertrey 14.09.2010 00:52

Re: PHP скрипты и просто код, который можно и нужно использовать на своем сайте
 
Незнаю, может уже спрашивали.
но хотелось бы иметь маленький скриптик на сайте количество онлайна
т.е. место на сайте (квадратик размером к примеру 5х5px) которое будет обращатся к базе и показывать количество онлайна на сервере.
Еще раз извеняюсь, возможно где-то уже выкладывали, если не трудно тыкните ссыль.

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

З.Ы. извиняюсь за ресторан :)

PROGRAMMATOR 14.09.2010 00:56

Re: PHP скрипты и просто код, который можно и нужно использовать на своем сайте
 
Онлайн это не проблема, а со вторым может быть напишу, главное выбрать свободное время. Но опять же, интеграции во все и всяк сложно добиться, лучше указать свой двиг, чтобы знать куда оно интегрируется.

undertrey 14.09.2010 01:03

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

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

А вашпе было бы карамельно если б статистика ишла также как и получения вознаграждения за голосование на top.info
т.е. есть кнопка, на нее жмык и всплывает Ajax окно с контентом
но это наверно я уже загнул)))

PROGRAMMATOR 14.09.2010 07:00

Re: PHP скрипты и просто код, который можно и нужно использовать на своем сайте
 
Цитата:

Сообщение от undertrey
той или иной картинки зависимо от значения

Это вы что ли о проверке работы самого сервера ?

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

undertrey 14.09.2010 19:48

Re: PHP скрипты и просто код, который можно и нужно использовать на своем сайте
 
Цитата:

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

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

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

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

Цитата:

ps C сегодняшними JS фреймворками - Ajax плевое дело, но тема то не по JavaScript.
Очень жалко, круто бы было если оно красиво выкидывалось после клика на кнопку


Текущее время: 10:49. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot