Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Dismiss Notice

Туториал Система скинов на ксенфоро

Discussion in 'Руководства, инструкции, утилиты' started by duckmen, May 5, 2012.

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

    duckmen Гусибатор9000 Пользователь

    Trophy Points:
    173
    Skype:
    Duckmenn
    Имя в Minecraft:
    Duckmen
    ну вот , как и говорил , выкладываю туториал "Как сделать систему скинов , встроенную в ксенфоро!

    НЕ ЗАБУДЬТЕ ИЗМЕНИТЬ НЕКОТОРЫЕ ЗНАЧЕНИЯ НА СВОИ!!!

    1) надо сделать отдельную страницу (делаем по ЭТОМУ уроку(если у вас там что-то не получается - значит читайте тот урок заново))
    2)После того , как вы там все сделали , опять открываете сделанный шаблон (например EP_Tickets) и туда пишите вместо
    Code:
     
    ENTER STATIC ADVERTISING TEMPLATE INFORMATION HERE.
     
    

    вот такое


    PHP:
    <div align="center">
    <
    form action="1.php" method="post" enctype="multipart/form-data">
          
    Выбери скин на своем компьютере:
          <
    input type="file" name="filename"><br>
          <
    input name="nick" type="text" value="{$visitor.username}readonly><br>
          <
    input type="submit" value="Загрузить"><br>
    </
    form>
    <
    applet code="skinpreviewapplet.AppletLauncher" archive="./js/skinpreview.jar" codebase="." height="310px">
    <
    param name="url" value="./minecraft/skins/{$visitor.username}.png" /></applet>
    </
    div>

    3)Потом нам нужно создать файл 1.php с таким содержанием:


    вариант для нормальных хостингов:
    PHP:
    <?php
    $docRoot 
    getenv("DOCUMENT_ROOT");
        
    $imageinfo getimagesize ($_FILES['filename']['tmp_name']);
        if(
    $_FILES['filename']['type'] != "image/png") {
            echo(
    "\nЭтот файл не в формате png!");
            exit;
        } elseif(
    $imageinfo['mime'] != 'image/png') {
            echo(
    "\nЭтот файл не в формате png!");
            exit;
        } elseif(
    $imageinfo["0"] != '64') {
            echo(
    "\nСкин должен быть размером 64x32!");
            exit;
        } elseif(
    $imageinfo["1"] != '32') {
            echo(
    "\nСкин должен быть размером 64x32!");
            exit;
        } elseif (!
    preg_match("/\.(png)$/i"$_FILES['filename']['name'])){
            echo(
    "\nУ вас нет прав на закачку файла!");
            exit;
        }
      if(
    is_uploaded_file($_FILES["filename"]["tmp_name"]))
      {
        
    move_uploaded_file($_FILES["filename"]["tmp_name"], "$docRoot/minecraft/skins/tempskin.png");
        if (
    file_exists("$docRoot/minecraft/skins/".$_POST['nick'].".png"))
            {
        
    unlink ("$docRoot/minecraft/skins/".$_POST['nick'].".png");
            }
        
    rename"$docRoot/minecraft/skins/tempskin.png""$docRoot/minecraft/skins/".$_POST['nick'].".png" );
        print 
    "Скин успешно обновлен!";
      }
    else
        {
          echo(
    " Ошибка загрузки файла");
        }
    ?>
    вариант для хостингера:


    PHP:
    <?php
        $imageinfo 
    getimagesize ($_FILES['filename']['tmp_name']);
        if(
    $_FILES['filename']['type'] != "image/png") {
            echo(
    "\nЭтот файл не в формате png!");
            exit;
        } elseif(
    $imageinfo['mime'] != 'image/png') {
            echo(
    "\nЭтот файл не в формате png!");
            exit;
        } elseif(
    $imageinfo["0"] != '64') {
            echo(
    "\nСкин должен быть размером 64x32!");
            exit;
        } elseif(
    $imageinfo["1"] != '32') {
            echo(
    "\nСкин должен быть размером 64x32!");
            exit;
        } elseif (!
    preg_match("/\.(png)$/i"$_FILES['filename']['name'])){
            echo(
    "\nУ вас нет прав на закачку файла!");
            exit;
        }
    if(
    is_uploaded_file($_FILES["filename"]["tmp_name"]))
      {
        
    move_uploaded_file($_FILES["filename"]["tmp_name"], "/home/учетная_запись/public_html/minecraft/skins/tempskin.png");
        if (
    file_exists("/home/учетная_запись/public_html/minecraft/skins/".$_POST['nick'].".png"))
            {
        
    unlink ("/home/учетная_запись/public_html/minecraft/skins/".$_POST['nick'].".png");
            }
        
    rename"/home/учетная_запись/public_html/minecraft/skins/tempskin.png""/home/учетная_запись/public_html/minecraft/skins/".$_POST['nick'].".png" );
        print 
    "<div align='center'>Скин успешно обновлен!</div>";
      }
    else
        {
          print 
    "<div align='center'>НЕ удалось загрузить скин!</div>";
        }
    ?>
    <div align="center">
    <br><input type="button" id="indexButton1" onclick="history.back();return false;" name="" value="Назад" style="position:absolute;width:96px;height:25px;font-family:Arial;font-size:13px;">
    </div>
    4) Создаем в папке с ксенфоро папку minecraft а внутри нее создаем папку skins.
    5) Закидуем в созданную minecraft (у кого не работает - закидуйте в папку с ксенфоро) наш созданный 1.php и качаем архив skinpreview.zip .
    6)Содержимое архива закиньте в ./папка с ксенфоро/js/


    Нуууу... вроде бы все
    за скрипт спасибо _Dimk_O_
     

    Attached Files:

    asdfmember, Mik1313, TTATPuOT and 9 others like this.
  2. Хостинг MineCraft
    <
  3. Stepan4ek

    Stepan4ek Активный участник

    Trophy Points:
    88
    Skype:
    Stepan4ek
    Имя в Minecraft:
    Stepan4ek
    @duckmen, Спасибо давно следил за вашей темой ) рад что доделали
    но вопрос не отображаеться скин превью , все рабоет скин загружаеться , но не отображаеться
    вначале до загрузки ругался что не найден skinpreviewapplet.AppletLauncher
    После загрузки скина , просто серый фон
     
  4. Автор темы
    duckmen

    duckmen Гусибатор9000 Пользователь

    Trophy Points:
    173
    Skype:
    Duckmenn
    Имя в Minecraft:
    Duckmen
    разработчик скрипта не я , я лишь написал как его установить
     
    launcher likes this.
  5. Stepan4ek

    Stepan4ek Активный участник

    Trophy Points:
    88
    Skype:
    Stepan4ek
    Имя в Minecraft:
    Stepan4ek
    Вообщем исправил я у себя эту ошибку , причем взял оригинал код от @_Dimk_O_ :trf:
    Просто нужно было указывать полный адрес к скинам !
    И заработало :trf:
    Вот код
    PHP:
    <div align="center">
    <
    form action="1.php" method="post" enctype="multipart/form-data">
          
    Выбери скин на своем компьютере:
          <
    input type="file" name="filename"><br>
          <
    input name="nick" type="text" value="{$visitor.username}readonly><br>
          <
    input type="submit" value="Загрузить"><br>
    </
    form>
    <
    applet code="skinpreviewapplet.AppletLauncher" archive="./js/skinpreview.jar" codebase="." height="310px">
    <
    param name="url" value="http://*****.ru/minecraft/skins/{$visitor.username}.png" />
    </
    applet>
    </
    div>
     
    RVXman likes this.
  6. _Dimk_O_

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

    Trophy Points:
    123
    Skype:
    dimk__o
    Еще добавь что можно поколупать справку и сделать наподобие этого:
    [​IMG]

    При этом видоизменяется стандартная справка.

    Пойдем по порядку :)
    Для этого нужно:
    1. Изменить ссылку справки:
      Для этого нам нужно включить режим отладки:
      Чтоб включить режим отладки необходимо перейти в папку library и в файле config.php внизу вписать эту строку $config['debug'] = true; и сохраняем.

      Заходим в админку и идем РазработкаПрефиксы роутинга ищем там наш префикс help .
      Заходим в него и в первой строке вместо help пишем cabinet ну или как вам угодно)
      Жмем кнопку "Сохранить префикс"
      После этого у нас справка доступна по ссылке http://сайт/cabinet соответственно.
    2. Добавляем новый пункт в справку(точнее наш кабинет)!
      Ползем снова в папку library и в ней создаем папку для нашего пункта, а в ней создаем две папки ControllerPublic и Listener.
      В папке
      ControllerPublic создаем файл Help.php в который вписываем следующее:
      PHP:
      <?php

      class AnyFolder_ControllerPublic_Help extends XFCP_AnyFolder_ControllerPublic_Help
      {
      public function 
      actionYouaction()
      {
      return 
      $this->_getWrapper('youaction',
      $this->responseView('XenForo_ViewPublic_Help_Уouaction''help_youaction')
      );
      }
      }
      Где AnyFolder - это папка с названием вашего пункта.
      а youaction и Youaction - к примеру нужно заменить к примеру на skin и Skin соответственно.
      Для других пунктов будут другие названия!!!
      Не забываем сохранить файл!

      Топаем в папку
      Listener и в ней создаем файл LoadClassController.php в котором пишем следующее:
      PHP:
      <?php
      class AnyFolder_Listener_LoadClassController
      {
          public static function 
      extendHelpController($class, array &$extend)
          {
              if (
      $class == 'XenForo_ControllerPublic_Help')
              {
                  
      $extend[] = 'AnyFolder_ControllerPublic_Help';
              }
          }
      }
      И тут тоже заменяем AnyFolder на название папки с вашим пунктом.
      Сохраняем!
    3. Теперь переходим в РазработкаОбработчики событийЖмакаем кнопку "Создать новый обработчик"
      Заполняем поля:

      1- Обрабатывать событие: выбираем load_class_controller2- Выполнить обработчик: видим два поля
      -----1- поле: AnyFolder_Listener_LoadClassController
      -------------- И тут тоже заменяем AnyFolder на название папки с вашим пунктом.
      -----2- поле:
      extendHelpController
      Жмакаем кнопку "Сохранить обработчик события".
     
    ho0kJkee, andrew2509, Gvines and 5 others like this.
  7. _Dimk_O_

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

    Trophy Points:
    123
    Skype:
    dimk__o
    4. Самое главное готово :)
    Теперь создаем нашу страничку:
    Переходим по пути: Внешний видСтили Ваш стильШаблоны Тыкаем по кнопке Создать новый шаблон"
    Заполняем поля:
    Имя шаблона: help_skin где skin это и будет нашей ссылкой. Дальше увидите :)Ниже пишем код нашей страницы.
    Первой строкой обязательно впишите <xen:title>Название страницы</xen:title>
    Дальше пишите свой код :)
    html код работает на ура
    У меня все работает кроме одного, не работает php заключенный в <?php код ?>
    Он просто выводится в виде комментария в коде страницы.

    Короче никак не хотит :(
    Короче сохраняем и делаем дальше:D




    5. Теперь нам нужно отредактировать пути:
    Для этого переходим Внешний видСтили Ваш стильШаблоны и там находим шаблон navigation в нем находим это:

    PHP:
    <!-- help -->
            <
    xen:if is="{$tabs.help}">
                <
    li class="navTab help {xen:if $tabs.help.selected, 'selected', 'Popup PopupControl PopupClosed'}">
              
                    <
    a href="{$tabs.help.href}class="navLink" rel="help">{$tabs.help.title}</a>
                    <
    a href="{$tabs.help.href}class="SplitCtrl" rel="Menu"></a>
                  
                    <
    div class="{xen:if {$tabs.help.selected}, 'tabLinks', 'Menu JsOnly tabMenu'}">
                        <
    div class="primaryContent menuHeader">
                            <
    h3>{$tabs.help.title}</h3>
                            <
    div class="muted">{xen:phrase quick_links}</div>
                        </
    div>
                        <
    ul class="secondaryContent blockLinksList">
                        <
    xen:hook name="navigation_tabs_help">
                            <
    li><a href="{xen:link help/smilies}">{xen:phrase smilies}</a></li>
                            <
    li><a href="{xen:link help/bb-codes}">{xen:phrase bb_codes}</a></li>
                            <
    li><a href="{xen:link help/trophies}">{xen:phrase trophies}</a></li>
                        </
    xen:hook>
                        </
    ul>
                    </
    div>
                </
    li>
            </
    xen:if>
    И заменяем к примеру на это:

    PHP:
    <!-- help -->
            <
    xen:if is="{$tabs.help}">
                <
    li class="navTab help {xen:if $tabs.help.selected, 'selected', 'Popup PopupControl PopupClosed'}">
              
                    <
    a href="/cabinet" class="navLink" rel="help">Кабинет Лаунчер</a>
                    <
    a href="/cabinet" class="SplitCtrl" rel="Menu"></a>
                  
                    <
    div class="{xen:if {$tabs.help.selected}, 'tabLinks', 'Menu JsOnly tabMenu'}">
                        <
    div class="primaryContent menuHeader">
                            <
    h3>Личный кабинет</h3>
                            <
    div class="muted">{xen:phrase quick_links}</div>
                        </
    div>
                        <
    ul class="secondaryContent blockLinksList">
                        <
    xen:hook name="navigation_tabs_help">
                            <
    li><a href="/cabinet">Лаунчер</a></li>
                            <
    li><a href="/cabinet/skin">Скин</a></li>
                            <
    li><a href="/cabinet/cloac">Плащ</a></li>
                            <
    li><a href="/cabinet/craft">Рецепты крафта</a></li>
                        </
    xen:hook>
                        </
    ul>
                    </
    div>
                </
    li>
            </
    xen:if>
    Обратим внимание на это <li><a href="/cabinet/skin">Скин</a></li> это то как вы назвали ваш шаблон, у меня это help_skin. Соответственно и ссылка у меня оканчивается на /skin .

    Жмакаем на кнопку сохранить.
    Теперь на сайте вместо помощи у нас такое (мой пример :) ):


    [​IMG]

    6. Сделали, но сейчас все-равно когда переходим в кабинет у нас старая справка.
    Делаем следующее:
    Топаем по пути:
    Внешний видСтили Ваш стильШаблоны
    Там находим шаблон help_wrapper
    в нем редактируем наши ссылки которые у нас сбоку
    К примеру вот так:

    Было:

    PHP:
    <li class="section"><h4 class="heading">{xen:phrase help}</h4>
                    <
    ul>
                        <
    xen:hook name="help_sidebar_links">
                        <
    li><a href="{xen:link help/smilies}" class="{xen:if "{$selected} == 'smilies'", 'secondaryContent', 'primaryContent'}">{xen:phrase smilies}</a></li>
                        <!-- 
    slotpre_bb_codes -->
                        <
    li><a href="{xen:link help/bb-codes}" class="{xen:if "{$selected} == 'bbCodes'", 'secondaryContent', 'primaryContent'}">{xen:phrase bb_codes}</a></li>
                        <!-- 
    slotpre_trophies -->
                        <
    li><a href="{xen:link help/trophies}" class="{xen:if "{$selected} == 'trophies'", 'secondaryContent', 'primaryContent'}">{xen:phrase trophies}</a></li>
                        <!-- 
    slotpre_tos_url -->
                        <
    xen:if is="{$tosUrl}">
                            <
    li><a href="{$tosUrl}class="{xen:if "{$selected} == 'terms'", 'secondaryContent', 'primaryContent'}">{xen:phrase terms_and_rules}</a></li>
                        </
    xen:if>
                        </
    xen:hook>
                    </
    ul>
                </
    li>
    Стало:

    PHP:
    <li class="section"><h4 class="heading">{xen:phrase help}</h4>
                    <
    ul>
                        <
    xen:hook name="help_sidebar_links">
    <
    li><a href="{xen:link [COLOR=#ff0000]cabinet/skin[/COLOR]}" class="{xen:if "{$selected} == 'smilies'", 'secondaryContent', 'primaryContent'}">Скин</a></li>
        <
    xen:if is="{$tosUrl}">
                            <
    li><a href="{$tosUrl}class="{xen:if "{$selected} == 'terms'", 'secondaryContent', 'primaryContent'}">{xen:phrase terms_and_rules}</a></li>
                        </
    xen:if>
                        </
    xen:hook>
                    </
    ul>
                </
    li>
    Обратим внимание на ссылку: {xen:link cabinet/skin} это то как вы назвали ваш шаблон, у меня это help_skin.
    Короче как-то так.
    Я задолбался писать:D
    Есле чо не так, лучше спросите или скажете и я поправлю.
     
    arteZ, SuperHanz and piffk0_new like this.
  8. _Dimk_O_

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

    Trophy Points:
    123
    Skype:
    dimk__o
    Фигасе я написал :D
    В одно сообщение никак не вместилось... :why:

    Живой пример можно пощупать вот тутачки)
    http://madeinmc.ru/
     
  9. Автор темы
    duckmen

    duckmen Гусибатор9000 Пользователь

    Trophy Points:
    173
    Skype:
    Duckmenn
    Имя в Minecraft:
    Duckmen
    Оо


    хотя стоп , я же слез с ксенфоро xD
     
  10. _Dimk_O_

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

    Trophy Points:
    123
    Skype:
    dimk__o
    Эй!
    Я так не играю :D
     
  11. klarnet

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

    Trophy Points:
    173
    Skype:
    dalios7249
    Имя в Minecraft:
    klarnet
    Что желательно добавить, когда кликаешь на лк пароль не требуется, нужно поставить...
     
  12. Stepan4ek

    Stepan4ek Активный участник

    Trophy Points:
    88
    Skype:
    Stepan4ek
    Имя в Minecraft:
    Stepan4ek
    я сейчас в поиске кода , который не даст не зареганым пользователям зайти в раздел
     
  13. klarnet

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

    Trophy Points:
    173
    Skype:
    dalios7249
    Имя в Minecraft:
    klarnet
    Если вы включите этот лк в вашу систему, то многие будут благодарны.
     
    Nicolayka likes this.
  14. _Dimk_O_

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

    Trophy Points:
    123
    Skype:
    dimk__o
    А чем условия Xenforo не подходят?
    К примеру можно позволить смотреть страницу только некоторым юзверям
    PHP:
    <xen:if is="{$visitor.user_id}=='1'">
    Код который видит тот кому разрешили
    <xen:else />
    Тут пишем что низя ему сюда смотреть
    </xen:if>
    Эсли же юзверей несколько то можно писать так
    PHP:
    <xen:if is="{$visitor.user_id}=='1' or {$visitor.user_id}=='2' or {$visitor.user_id}=='3'">
    А чтоб напретить именно незарегистрированым то кажется код такой

    PHP:
    <xen:if is="{$visitor.user_id}">
    Кодкоторый видит тот кому разрешили
    <xen:elseif is="!{$visitor.user_id} " />
    Тут пишем что низя ему сюда смотреть
    </xen:if>
    Кажется так
     
    Stepan4ek likes this.
  15. Stepan4ek

    Stepan4ek Активный участник

    Trophy Points:
    88
    Skype:
    Stepan4ek
    Имя в Minecraft:
    Stepan4ek
    @_Dimk_O_, Спасибо разобрался :trf: пока понял как все это работает ,мозг сломал
     
  16. 4erep99

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

    Trophy Points:
    88
    У меня ошибка:
    Пожалуйста, введите корректное имя метода обработчика
    P.S уже все получилось
     
  17. MaksimKO

    MaksimKO Старожил

    Trophy Points:
    103
    как исправил то?)
     
  18. 4erep99

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

    Trophy Points:
    88
    Пункт перейменовал.
     
  19. mayor123

    mayor123 Старожил Девелопер Пользователь

    Trophy Points:
    173
    Ага, а то у нас не получается
     
  20. mayor123

    mayor123 Старожил Девелопер Пользователь

    Trophy Points:
    173
    Ага, в одном месте не переписал
     
    zuma2 likes this.
  21. MaksimKO

    MaksimKO Старожил

    Trophy Points:
    103
    а трофеи
    исчезают?
     

Share This Page