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

Веб webMCR 1.5 - ЛК | RCON-Консоль

@DuKKeR, вопросы и ответы - первое сообщение
 
@arionwt1997, Вроде нашел о чем речь, ноги копировались т.к. как правило они симметричны :) Вот архив для ассиметричных ног , но это на скорую руку, по хорошему надо ноги зеркалить от первой, а то даже стандартный скин имеет несимметричне ноги на самом деле и выглядит не очень адекватно .

Замени файл skin.php файлом из архива . И не забудь скинуть скин ассиметричный.

Скрипт написанный Вами на скорую руку не работает. Вы просто изменили координаты развертки, и нога стала отображать свой задний фон.

737266.png
​
Ноги ведь симметричны и правая нога - отражение левой. :) Мне кажется, что в этих строчке ничего менять не нужно - надо как-то зеркально это отобразить:
Код:
//Правая нога спереди
imagecopy($preview, $skin, 8, 20, 4, 20, 4, 12);
//Правая нога сзади
imagecopy($preview, $skin, 8, 20, 12, 20, 4, 12);

Нашел в просторах интернета такой код отражения изображения по вертикали:
Код:
$img1 = imagecreatefromjpeg( $filename );
$w = imagesx($img1);
$h = imagesy($img1);
$img2 = imagecreatetruecolor( $w, $h );
 
imagelayereffect( $img2, IMG_EFFECT_REPLACE);
for( $i = 0; $i < $h; $i++ ) {
    imagecopy( $img2, $img1, 0, $i, 0, $h - $i - 1, $w, 1 );
}
Но в преобразовании и обработки изображения в PHP нефига не понимаю :confused:
 
@arionwt1997, Да, эт я с просони, я ж говорю что не разбирался особо что сделал :) Ща поправлю, вспомнил по какой разметке раньше делал http://freeminecraftskins.com/wp-content/uploads/2010/10/Skinzones.png . И я просил выложить именно скин а не скРин того как выводится
 
Доброго времени суток. Возникла небольшая проблема. Сайт, клиент и сервер я настроил. Всё прекрасно работает. Но вот клиент у меня модифицированный (IC2 и BuildCraft), и лаунчер скачивая клиент с сайта, не качает моды соответственно. Пробовал залить фалы прямо в корень папки обновления, но эфекта это не дало. Так же по примеру одного из лаунчеров, сделал архив client.zip прописал его в список скачиваемых файлов. Архив он качает, но не распаковывает в рабочую папку. Есть идея прописать в скачиваемые файлы всё остальное, но сомневаюсь что это сработает. Помогите пожалуйста.
 
Доброго времени суток. Возникла небольшая проблема. Сайт, клиент и сервер я настроил. Всё прекрасно работает. Но вот клиент у меня модифицированный (IC2 и BuildCraft), и лаунчер скачивая клиент с сайта, не качает моды соответственно. Пробовал залить фалы прямо в корень папки обновления, но эфекта это не дало. Так же по примеру одного из лаунчеров, сделал архив client.zip прописал его в список скачиваемых файлов. Архив он качает, но не распаковывает в рабочую папку. Есть идея прописать в скачиваемые файлы всё остальное, но сомневаюсь что это сработает. Помогите пожалуйста.
У меня клиент.зип и качает и распаковывает, всё нормально... Лаунчер бухаровский.
 
А м
У меня клиент.зип и качает и распаковывает, всё нормально... Лаунчер бухаровский.
А можно ссылочку на исходник этого лаунчера? Попробую заковырять. Заранее спасибо :)
 
@Lancelot, в спойлере с вопросами и ответами
@qwertyYy, во всех нормальных браузерах они нормального размера - уменьшиш у себя, у других будут еще меньше. Разберись с браузером если речь идет о главной страничке сайта.
я о лаунчере, удаляю игру, качает лаунчер, запускается игра, буквы все большие :D
а до удалении игры все норм, где изменить настройки размеров?
и ещо, сперва в лаунчере звука нет, где то через минут 2 приходит, из за чего может быть?
 
Как сделать что бы при регистрации можно было использовать ник больше 8 символов?
 
@arionwt1997, Да, эт я с просони, я ж говорю что не разбирался особо что сделал :) Ща поправлю, вспомнил по какой разметке раньше делал http://freeminecraftskins.com/wp-content/uploads/2010/10/Skinzones.png . И я просил выложить именно скин а не скРин того как выводится
Кстати я нашел скрипт 2D просмотрщика с нормальным отображением правых руки и ноги, если вставите туда еще и отображение плаща, то цены Вам не будет! :p
function flip(&$img)
{
$size_x = imagesx($img);
$size_y = imagesy($img);
$temp = imagecreatetruecolor($size_x, $size_y);
$x = imagecopyresampled($temp, $img, 0, 0, ($size_x-1), 0, $size_x, $size_y, 0-$size_x, $size_y);
return $temp;
}

// File and new size
$filename = 'http://www.minecraft.net/skin/' . $_GET['user'] . '.png';

// Content type
header('Content-Type: image/png');

// Load
$rendered = imagecreatetruecolor(240, 480);
$source = imagecreatefrompng($filename);
$b = 120;
$s = 8;

// Fill the new image with pink and set pink as the transparent colour
$pink = imagecolorallocate($rendered, 255, 0, 255);
imagefilledrectangle($rendered, 0, 0, 240, 480, $pink);
imagecolortransparent($rendered, $pink);

// Create a flipped version of the image
$fsource = flip($source);

// Annatomy of an imagecopyresampled function
// $dst_image , $src_image , $dst_x , $dst_y , $src_x , $src_y , $dst_w , $dst_h , $src_w , $src_h

// Check if we want to render the back or front
if (isset($_GET['back']))
{
// Render the back

// Copy head
imagecopyresampled($rendered, $source, $b / 2, 0, $s * 3, $s, $b, $b, $s, $s);

// Copy the head accesory
imagecopyresampled($rendered, $source, $b / 2, 0, $s * 7, $s, $b, $b, $s, $s);

// Copy the body
imagecopyresampled($rendered, $source, $b / 2, $b, $s * 4, $s * 2.5, $b, $b * 1.5, $s, $s * 1.5);

// Copy the left arm
imagecopyresampled($rendered, $source, $b * 1.5, $b, $s * 6.5, $s * 2.5, $b / 2, $b * 1.5, $s / 2, $s * 1.5);

// Copy the right arm
imagecopyresampled($rendered, $fsource, 0, $b, $s * 1, $s * 2.5, $b / 2, $b * 1.5, $s / 2, $s * 1.5);

// Copy the left leg
imagecopyresampled($rendered, $source, $b * 1, $b * 2.5, $s * 1.5, $s * 2.5, $b / 2, $b * 1.5, $s / 2, $s * 1.5);

// Copy the right leg
imagecopyresampled($rendered, $fsource, 60, $b * 2.5, $s * 6, $s * 2.5, $b / 2, $b * 1.5, $s / 2, $s * 1.5);
}
else
{
// Render the front

// Copy head
imagecopyresampled($rendered, $source, $b / 2, 0, $s, $s, $b, $b, $s, $s);

// Copy the head accesory
imagecopyresampled($rendered, $source, $b / 2, 0, $s * 5, $s, $b, $b, $s, $s);

// Copy the body
imagecopyresampled($rendered, $source, $b / 2, $b, $s * 2.5, $s * 2.5, $b, $b * 1.5, $s, $s * 1.5);

// Copy the left arm
imagecopyresampled($rendered, $source, $b * 1.5, $b, $s * 5.5, $s * 2.5, $b / 2, $b * 1.5, $s / 2, $s * 1.5);

// Copy the right arm
imagecopyresampled($rendered, $fsource, 0, $b, $s * 2, $s * 2.5, $b / 2, $b * 1.5, $s / 2, $s * 1.5);

// Copy the left leg
imagecopyresampled($rendered, $source, 60, $b * 2.5, $s / 2, $s * 2.5, $b / 2, $b * 1.5, $s / 2, $s * 1.5);

// Copy the right leg
imagecopyresampled($rendered, $fsource, $b * 1, $b * 2.5, $s * 7, $s * 2.5, $b / 2, $b * 1.5, $s / 2, $s * 1.5);
}

// Output to the browser
imagepng($rendered);
 
@arionwt1997, То что ты скинул тоже кривой скрипт. Попробуй ка ему скормить например такой скин http://drop.catface.ru/img/stop/2.png и увидишь бяку.

Я просто исправил свои, теперь все работает как надо. На досуге еще проверю с кучей скинов, может что не углядел еще.

@QuadX, чуть позже добавлю патчик. Пока есть отдельная версия для DLE, в хранилище , но она устарела

@interno, Как я уже тебе и писал, очень даже красиво получилось. Кидал бы народ больше ссылок на проекты со своим дизайном, сделал бы список проектов сделаных на webMCR где нибудь отдельно.
 

Вложения:

  • skin.zip
    skin.zip
    Размер файла
    969 байт
    Просмотров
    10
И снова здравствуйте. Собственно попытался решить проблему разархивирования client.zip путём вставки кода из другого лаунчера.
/**
* Разархивирует файл client.zip из папки bin в .minecraft
* @author ddark008
* @throws PrivilegedActionException
*/
protected void UnZip() throws PrivilegedActionException
{
String szZipFilePath;
String szExtractPath;
String path = (String)AccessController.doPrivileged(new PrivilegedExceptionAction<Object>() {
public Object run() throws Exception {
return Util.getWorkingDirectory() + File.separator;
}
});
int i;

szZipFilePath = path + "bin" + File.separator + "client.zip";

File f = new File(szZipFilePath);
if(!f.exists())
{
System.out.println(
"\nNot found: " + szZipFilePath);
//System.exit(0);
}

if(f.isDirectory())
{
System.out.println(
"\nNot file: " + szZipFilePath);
//System.exit(0);
}

System.out.println(
"Enter path to extract files: ");
szExtractPath = path;

File f1 = new File(szExtractPath);
if(!f1.exists())
{
System.out.println(
"\nNot found: " + szExtractPath);
//System.exit(0);
}

if(!f1.isDirectory())
{
System.out.println(
"\nNot directory: " + szExtractPath);
//System.exit(0);
}

ZipFile zf;
Vector zipEntries = new Vector();

try
{
zf = new ZipFile(szZipFilePath);
Enumeration en = zf.entries();

while(en.hasMoreElements())
{
zipEntries.addElement(
(ZipEntry)en.nextElement());
}

for (i = 0; i < zipEntries.size(); i++)
{
ZipEntry ze =
(ZipEntry)zipEntries.elementAt(i);

extractFromZip(szZipFilePath, szExtractPath,
ze.getName(), zf, ze);
}

zf.close();
System.out.println("Done!");
}
catch(Exception ex)
{
System.out.println(ex.toString());
}
}

// ============================================
// extractFromZip
// ============================================
static void extractFromZip(
String szZipFilePath, String szExtractPath,
String szName,
ZipFile zf, ZipEntry ze)
{
if(ze.isDirectory())
return;

String szDstName = slash2sep(szName);

String szEntryDir;

if(szDstName.lastIndexOf(File.separator) != -1)
{
szEntryDir =
szDstName.substring(
0, szDstName.lastIndexOf(File.separator));
}
else
szEntryDir = "";

System.out.print(szDstName);
long nSize = ze.getSize();
long nCompressedSize =
ze.getCompressedSize();

System.out.println(" " + nSize + " (" +
nCompressedSize + ")");

try
{
File newDir = new File(szExtractPath +
File.separator + szEntryDir);

newDir.mkdirs();

FileOutputStream fos =
new FileOutputStream(szExtractPath +
File.separator + szDstName);

InputStream is = zf.getInputStream(ze);
byte[] buf = new byte[1024];

int nLength;

while(true)
{
try
{
nLength = is.read(buf);
}
catch (EOFException ex)
{
break;
}

if(nLength < 0)
break;
fos.write(buf, 0, nLength);
}

is.close();
fos.close();
}
catch(Exception ex)
{
System.out.println(ex.toString());
//System.exit(0);
}
}

// ============================================
// slash2sep
// ============================================
static String slash2sep(String src)
{
int i;
char[] chDst = new char[src.length()];
String dst;

for(i = 0; i < src.length(); i++)
{
if(src.charAt(i) == '/')
chDst = File.separatorChar;
else
chDst = src.charAt(i);
}
dst = new String(chDst);
return dst;
}


Но чего то не рабит. Подскажите в чём косяк. (кусок прикрутил нормально, при компиляции не ругается)
 
И снова здравствуйте. Собственно попытался решить проблему разархивирования client.zip путём вставки кода из другого лаунчера.
/**
* Разархивирует файл client.zip из папки bin в .minecraft
* @author ddark008
* @throws PrivilegedActionException
*/
protected void UnZip() throws PrivilegedActionException
{
String szZipFilePath;
String szExtractPath;
String path = (String)AccessController.doPrivileged(new PrivilegedExceptionAction<Object>() {
public Object run() throws Exception {
return Util.getWorkingDirectory() + File.separator;
}
});
int i;

szZipFilePath = path + "bin" + File.separator + "client.zip";

File f = new File(szZipFilePath);
if(!f.exists())
{
System.out.println(
"\nNot found: " + szZipFilePath);
//System.exit(0);
}

if(f.isDirectory())
{
System.out.println(
"\nNot file: " + szZipFilePath);
//System.exit(0);
}

System.out.println(
"Enter path to extract files: ");
szExtractPath = path;

File f1 = new File(szExtractPath);
if(!f1.exists())
{
System.out.println(
"\nNot found: " + szExtractPath);
//System.exit(0);
}

if(!f1.isDirectory())
{
System.out.println(
"\nNot directory: " + szExtractPath);
//System.exit(0);
}

ZipFile zf;
Vector zipEntries = new Vector();

try
{
zf = new ZipFile(szZipFilePath);
Enumeration en = zf.entries();

while(en.hasMoreElements())
{
zipEntries.addElement(
(ZipEntry)en.nextElement());
}

for (i = 0; i < zipEntries.size(); i++)
{
ZipEntry ze =
(ZipEntry)zipEntries.elementAt(i);

extractFromZip(szZipFilePath, szExtractPath,
ze.getName(), zf, ze);
}

zf.close();
System.out.println("Done!");
}
catch(Exception ex)
{
System.out.println(ex.toString());
}
}

// ============================================
// extractFromZip
// ============================================
static void extractFromZip(
String szZipFilePath, String szExtractPath,
String szName,
ZipFile zf, ZipEntry ze)
{
if(ze.isDirectory())
return;

String szDstName = slash2sep(szName);

String szEntryDir;

if(szDstName.lastIndexOf(File.separator) != -1)
{
szEntryDir =
szDstName.substring(
0, szDstName.lastIndexOf(File.separator));
}
else
szEntryDir = "";

System.out.print(szDstName);
long nSize = ze.getSize();
long nCompressedSize =
ze.getCompressedSize();

System.out.println(" " + nSize + " (" +
nCompressedSize + ")");

try
{
File newDir = new File(szExtractPath +
File.separator + szEntryDir);

newDir.mkdirs();

FileOutputStream fos =
new FileOutputStream(szExtractPath +
File.separator + szDstName);

InputStream is = zf.getInputStream(ze);
byte[] buf = new byte[1024];

int nLength;

while(true)
{
try
{
nLength = is.read(buf);
}
catch (EOFException ex)
{
break;
}

if(nLength < 0)
break;
fos.write(buf, 0, nLength);
}

is.close();
fos.close();
}
catch(Exception ex)
{
System.out.println(ex.toString());
//System.exit(0);
}
}

// ============================================
// slash2sep
// ============================================
static String slash2sep(String src)
{
int i;
char[] chDst = new char[src.length()];
String dst;

for(i = 0; i < src.length(); i++)
{
if(src.charAt(i) == '/')
chDst = File.separatorChar;
else
chDst = src.charAt(i);
}
dst = new String(chDst);
return dst;
}


Но чего то не рабит. Подскажите в чём косяк. (кусок прикрутил нормально, при компиляции не ругается)
В методе extractJars() вызови метод unZip()
 
Увы не помогло. Возможно как то не так вызвал метод?
protected void extractJars(String path)
throws Exception
{
state = 5;

UnZip();

float increment = 10.0F / urlList.length;

for (int i = 0; i < urlList.length; i++) {
percentage = (55 + (int)(increment * (i + 1)));
String filename = getFileName(urlList);

if (filename.endsWith(".pack.lzma")) {
subtaskMessage = ("Extracting: " + filename + " to " + filename.replaceAll(".lzma", ""));
extractLZMA(path + filename, path + filename.replaceAll(".lzma", ""));

subtaskMessage = ("Extracting: " + filename.replaceAll(".lzma", "") + " to " + filename.replaceAll(".pack.lzma", ""));
extractPack(path + filename.replaceAll(".lzma", ""), path + filename.replaceAll(".pack.lzma", ""));
} else if (filename.endsWith(".pack")) {
subtaskMessage = ("Extracting: " + filename + " to " + filename.replace(".pack", ""));
extractPack(path + filename, path + filename.replace(".pack", ""));
} else if (filename.endsWith(".lzma")) {
subtaskMessage = ("Extracting: " + filename + " to " + filename.replace(".lzma", ""));
extractLZMA(path + filename, path + filename.replace(".lzma", ""));
}
}
}
 
Увы не помогло. Возможно как то не так вызвал метод?
protected void extractJars(String path)
throws Exception
{
state = 5;

UnZip();

float increment = 10.0F / urlList.length;

for (int i = 0; i < urlList.length; i++) {
percentage = (55 + (int)(increment * (i + 1)));
String filename = getFileName(urlList);

if (filename.endsWith(".pack.lzma")) {
subtaskMessage = ("Extracting: " + filename + " to " + filename.replaceAll(".lzma", ""));
extractLZMA(path + filename, path + filename.replaceAll(".lzma", ""));

subtaskMessage = ("Extracting: " + filename.replaceAll(".lzma", "") + " to " + filename.replaceAll(".pack.lzma", ""));
extractPack(path + filename.replaceAll(".lzma", ""), path + filename.replaceAll(".pack.lzma", ""));
} else if (filename.endsWith(".pack")) {
subtaskMessage = ("Extracting: " + filename + " to " + filename.replace(".pack", ""));
extractPack(path + filename, path + filename.replace(".pack", ""));
} else if (filename.endsWith(".lzma")) {
subtaskMessage = ("Extracting: " + filename + " to " + filename.replace(".lzma", ""));
extractLZMA(path + filename, path + filename.replace(".lzma", ""));
}
}
}
В закачку добавил файл?
 

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

Назад
Верх