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

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

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем duckmen, 5 май 2012.

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

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

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

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

    1) надо сделать отдельную страницу (делаем по ЭТОМУ уроку(если у вас там что-то не получается - значит читайте тот урок заново))
    2)После того , как вы там все сделали , опять открываете сделанный шаблон (например EP_Tickets) и туда пишите вместо
    Код:
     
    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_
     

    Вложения:

    • skinpreview.zip
      Размер файла:
      25,5 КБ
      Просмотров:
      221
    asdfmember, Mik1313, TTATPuOT и 9 другим нравится это.
  2. Хостинг MineCraft
    <
  3. Stepan4ek

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

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

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

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

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

    Баллы:
    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 нравится это.
  6. _Dimk_O_

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

    Баллы:
    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 и 5 другим нравится это.
  7. _Dimk_O_

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

    Баллы:
    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 и piffk0_new нравится это.
  8. _Dimk_O_

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

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

    Живой пример можно пощупать вот тутачки)
    http://madeinmc.ru/
     
    Likeobot, arteZ, SuperHanz и ещё 1-му нравится это.
  9. Автор темы
    duckmen

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

    Баллы:
    173
    Skype:
    Duckmenn
    Имя в Minecraft:
    Duckmen
    Оо


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

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

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

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

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

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

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

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

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

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

    Баллы:
    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 нравится это.
  15. Stepan4ek

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

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

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

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

    MaksimKO Старожил

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

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

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

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

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

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

    Баллы:
    173
    Ага, в одном месте не переписал
     
    zuma2 нравится это.
  21. MaksimKO

    MaksimKO Старожил

    Баллы:
    103
    а трофеи
    исчезают?
     

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