Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление
  2. Данный раздел создан исключительно для релизов! Вопросы по лаунчеру или обвязке задавайте ТОЛЬКО в соответсвующей теме автора. Любые другие темы будут удалены, а авторы понесут наказание.

Веб Класс для работы со скинами.

Тема в разделе "Веб-обвязки и лаунчеры", создана пользователем DoctorBooooom, 8 май 2014.

  1. Автор темы
    DoctorBooooom

    DoctorBooooom Активный участник Пользователь

    Баллы:
    78
    Имя в Minecraft:
    DoctorBooooom
    Здравствуйте уважаемые форумчане.
    Недавно мне потребовались скины для личного кабинета и так как скрипт не представляет коммерческой тайны я делюсь им с вами)

    Скачать: CSkin.zip

    Настройка:

    В функциях GetSkinPath и GetCloakPath указать ссылки до скинов игроков. (переменная $local)
    в самом начале класса CSkin задать путь к скину по умолчанию (переменная $defaultSkin)

    Класс отлично задокументирован, однако я приложу пример использования:
    HTML:
    <img src='getSkin.php?LOGIN=DoctorBooooom'>
    Файл getSkin.php
    PHP:
    <?
    require_once 
    'CSkin.php';

    $login htmlspecialchars($_GET['LOGIN']);//Получаем логин игрока

    $obSkin = new \LastWorld\CSkin($login);// создаем экземпляр класса инициализируя его нужным игроком.

    if ($obSkinReady $obSkin->getFrontCloak())//проверяем что нам действительно вернулся объект готового скина
    {
        
    header ("Content-type: image/png");
        
    $obSkinReady->resizeImage(256)->getImage(); //Сначала установим максимальную высоту изображения, после чего выведем его на экран
    }
    Несколько замечаний:
    1. resizeImage устанавливает высоту скина или плаща. Ширина подстраивается автоматически.
    2. Вывод изображения осуществляется функцией getImage()

    Доступные функии (над классом CSkin):
    • getFrontHead() - получить лицо игрока
    • getBackHead() - получить затылок игрока
    • getFrontSkin() - получить полный скин игрока спереди
    • getBackSkin() - получить полный скин игрока сзади
    • getFrontCloak() - получить плащь игрока спереди
    • getBackCloak() - получить плащ игрока сзади

    ВНИМАНИЕ: все функции возвращают объект со скином(CSkinReady) или false если построить скин не удалось.

    Жду ваших комментариев и пожеланий.


    FAQ:
    Мой скрипт грузит скин игрока (с вашего сайта, а если его нет то проверяет официальный), после чего строит из него картинку (голову, плащ, скин) и позволяет изменить ее размер/вывести в браузер/сохранить.
     
    Последнее редактирование: 8 май 2014
    Hephest, kurvaGUN, Shockwave и 4 другим нравится это.
  2. Хостинг MineCraft
    <
  3. book777

    book777 Старожил Пользователь

    Баллы:
    123
    Skype:
    nikolia0612
    Не понял для чего служит этот скрипт. Каково его предназначение?
     
    Naviom нравится это.
  4. Igor_22

    Igor_22 Старожил Пользователь

    Баллы:
    123
    Skype:
    igor_04041991
    Имя в Minecraft:
    Oddshot
    класс для загрузки и отображения скина а куда ты его уже прилепишь ограничивается только фантазией.....
     
    DoctorBooooom нравится это.
  5. Хома

    Хома Активный участник Пользователь

    Баллы:
    68
  6. Автор темы
    DoctorBooooom

    DoctorBooooom Активный участник Пользователь

    Баллы:
    78
    Имя в Minecraft:
    DoctorBooooom
    Да, конечно.
     
  7. Хома

    Хома Активный участник Пользователь

    Баллы:
    68
    Код вполне вменяемый , мне поравилось, спасибо )
     
    DoctorBooooom нравится это.
  8. Evan

    Evan Старожил Пользователь

    Баллы:
    123
  9. Автор темы
    DoctorBooooom

    DoctorBooooom Активный участник Пользователь

    Баллы:
    78
    Имя в Minecraft:
    DoctorBooooom
  10. book777

    book777 Старожил Пользователь

    Баллы:
    123
    Skype:
    nikolia0612
    Разве найдя местоположение скрипта я подстановкой другого логина не смогу сменить кому угодно скин?
     
  11. Автор темы
    DoctorBooooom

    DoctorBooooom Активный участник Пользователь

    Баллы:
    78
    Имя в Minecraft:
    DoctorBooooom
    Сменить? Мой скрипт никуда ничего не загружает. Вывести скин другого игрока - да. А вот сменить - нет.

    Предлагаю вам сначала изучить PHP и ООП, а потом задавать вопросы
     
    ПриветОтЛайки нравится это.
  12. book777

    book777 Старожил Пользователь

    Баллы:
    123
    Skype:
    nikolia0612
    $_GET['LOGIN']
    Судил по выделенному тексту. Скрипт не качал
     
  13. Автор темы
    DoctorBooooom

    DoctorBooooom Активный участник Пользователь

    Баллы:
    78
    Имя в Minecraft:
    DoctorBooooom
    Мой скрипт грузит скин игрока (с вашего сайта, а если его нет то проверяет официальный), после чего строит из него картинку (голову, плащ, скин) и позволяет изменить ее размер/вывести в браузер/сохранить.
     
  14. Igor_22

    Igor_22 Старожил Пользователь

    Баллы:
    123
    Skype:
    igor_04041991
    Имя в Minecraft:
    Oddshot
    получаем логин игрока для вывода его скина
    Все остальное нужно делать своими ручками в том числе и загрузку
     
  15. Автор темы
    DoctorBooooom

    DoctorBooooom Активный участник Пользователь

    Баллы:
    78
    Имя в Minecraft:
    DoctorBooooom
    У меня была цель сделать вывод скина в лк. Это означает что вы можете получить картинку, которая отображает скин в одном из ракурсов. Если вам нужна загрузка или что либо еще придется писать самим.

    Кроме того у скрипта есть побочный эффект. Его можно использовать для получения скина в клиенте:
    Скин: \LastWorld\CSkin::GetSkinPath($player);
    Плащ: \LastWorld\CSkin::GetSkinPath($player);
    Эти 2 метода объявлены статичными, соответственно создавать экземпляр класса не нужно.
     
  16. BlackSun

    BlackSun Активный участник Пользователь

    Баллы:
    78
    Немного валидационной магии.
    Код:
    Width: 64 Height: 32 - pass
    Width: 64 Height: 64 - failed
    Width: 64 Height: 128 - failed
    Width: 128 Height: 64 - pass
    Width: 128 Height: 32 - failed
    Width: 256 Height: 32 - failed
    Width: 32 Height: 128 - failed
    Width: 1 Height: 128 - failed
    Width: 128 Height: 1 - failed
    Width: 1 Height: 1 - failed
    
    Width: 60 Height: 30 - pass
    Width: 120 Height: 60 - pass
    Width: 100 Height: 50 - pass
    PHP:
    <?php
        
    class Validation_Test {
            public 
    $width;
            public 
    $height;
         
            public function 
    isValid () {
                if (!
    $skinRatio = (int)$this->width 64)
                    return 
    false;
             
                
    $validWidth $this->width $skinRatio == 64;
                
    $validHeight $this->height $skinRatio == 32;
             
                return (
    $validWidth && $validHeight) ? true false;
            }
        }
     
        
    // [ width, height ]
        
    $tests = [
            [
    6432],
            [
    6464],
            [
    64128],
            [
    12864],
            [
    12832],
            [
    25632],
            [
    32128],
         
            [
    1128],
            [
    1281],
            [
    11],
         
            [
    6030],
            [
    12060],
            [
    10050]
        ];
     
        
    $validator = new Validation_Test();
        foreach (
    $tests as $test) {
            list (
    $width$height) = $test;
            
    $validator->width $width;
            
    $validator->height $height;
         
            echo 
    'Width: '$width' Height: '$height' - ',
                (
    $validator->isValid()) ? 'pass' 'failed',
                
    '<br />';
        }
    ?>

    PS: imageCopyAlpha стоило бы переписать по нормальному, не дело ворочать подобные массивы средствами пыха. Уж больно медленно.
     
    Последнее редактирование: 8 май 2014
  17. Автор темы
    DoctorBooooom

    DoctorBooooom Активный участник Пользователь

    Баллы:
    78
    Имя в Minecraft:
    DoctorBooooom
    Забыл взять выражение в скобки после (int). Исправил и перезалил.

    Всем кому лень перекачивать надо в функции:
    validSkin() заменить $this->skinRatio = (int)$this->width($this->skin) / 64; на $this->skinRatio = (int)($this->width($this->skin) / 64);
    validCloak()
    заменить $this->cloakRatio = (int)$this->width($this->cloak) / 22; на $this->cloakRatio = (int)($this->width($this->cloak) / 22);
     
  18. kurvaGUN

    kurvaGUN Новичок

    Баллы:
    8
    Например для аватарок на сайтах (это способ применения)
     
  19. Программист

    Программист Новичок Пользователь

    Баллы:
    8
    Имя в Minecraft:
    Xaker
    А не мог бы ты сделать, чтобы со скинов вместе плащ показывало?
    строка 282 :D
    АХАХАХАХА:D
    * Магия оставшаяся от предыдущих шаманов.
    PHP:
    function SkinView($obj$type 0)// для ленивых жоп
    {
        
    $func = ["getFrontSkin""getBackSkin""getFrontHead""getBackHead""getFrontCloak""getBackCloak"];
        
    /* нижн 5.5
            $func = array("getFrontSkin", "getBackSkin", "getFrontHead", "getBackHead", "getFrontCloak", "getBackCloak");
        */
        
    for ($i 0$i count($func); $i++)
        {
            if (
    $type == $i) return $obj->$func[$i]();
        }
    }
    [DOUBLEPOST=1399586465,1399584472][/DOUBLEPOST]Памарочка...
    Скины не 22х17
    а 64х32
    http://skins.minecraft.net/MinecraftCloaks/Notch.png
     
    Последнее редактирование: 9 май 2014
  20. Автор темы
    DoctorBooooom

    DoctorBooooom Активный участник Пользователь

    Баллы:
    78
    Имя в Minecraft:
    DoctorBooooom
    Скины вместе с плащем сделаю.
    Странно. Раньше плащи были вырезаны прям по контуру...
     
  21. Программист

    Программист Новичок Пользователь

    Баллы:
    8
    Имя в Minecraft:
    Xaker
    Им видимо предали те же размеры, что и скинам, дабы упростить работу и уменьшить код.
     

Поделиться этой страницей