Sorry about not helping much....I'll help once you have figured out how to decode the .sb file and put it into an array in JS.
Offline
midnightleopard wrote:
I can learn a single language in a few days. Which should I start?
PHP or JavaScript? Which do we need more right now?
PHP at the momment however me and many other already know this really well so prehaps JS would be better.
Offline
This is my code so far:
<?php
$file = array();
$objects = array();
foreach (str_split(file_get_contents($_GET["project"])) as $byte)
{
array_push($file,ord($byte));
}
if (read_header())
{
if (str_from(2) == 0)
{
die ("This project is too old!");
}
else
{
$byte = 0;
while ($byte . "" != "")
{
$byte = file_next();
echo $byte . "<br/>";
}
/*
GLITCHY!!!!!
echo "The project info is " . big_endian($file,10,4) . " bytes long.<br/>";
for ($i = big_endian($file,10,4) + 14; $i <= count($file); $i += big_endian($file,$i + 1,4))
{
echo $i . " ; " . count($file) . "<br/>";
array_push($objects,array($file[i],array_slice($file,$i + 5,i + big_endian($file,$i + 1,4))));
}
print_r($objects);*/
}
}
else
{
die("This file is not a Scratch file!");
}
function file_next()
{
static $i = 0;
$n = $GLOBALS["file"][$i];
$i++;
return $n;
}
function next_length($length)
{
$array = array();
for ($i = 1; $i <= $length; $i++)
{
array_push($array,file_next());
}
return $array;
}
function skip($length)
{
for ($i = 1; $i <= $length; $i++)
{
file_next();
}
}
function read_header()
{
return str_from(8) == "ScratchV";
}
function str_from($length)
{
$string = "";
foreach (next_length($length) as $byte)
{
$string = $string . chr($byte);
}
return $string;
}
function big_endian($length)
{
$int = 0;
$i = 1;
foreach (array_reverse(next_length($length)) as $byte)
{
$int += $byte * $i;
$i *= 256;
}
return $int;
}
?>Offline
MathWizz wrote:
This is my code so far:
Code:
<?php $file = array(); $objects = array(); foreach (str_split(file_get_contents($_GET["project"])) as $byte) { array_push($file,ord($byte)); } if (read_header()) { if (str_from(2) == 0) { die ("This project is too old!"); } else { $byte = 0; while ($byte . "" != "") { $byte = file_next(); echo $byte . "<br/>"; } /* GLITCHY!!!!! echo "The project info is " . big_endian($file,10,4) . " bytes long.<br/>"; for ($i = big_endian($file,10,4) + 14; $i <= count($file); $i += big_endian($file,$i + 1,4)) { echo $i . " ; " . count($file) . "<br/>"; array_push($objects,array($file[i],array_slice($file,$i + 5,i + big_endian($file,$i + 1,4)))); } print_r($objects);*/ } } else { die("This file is not a Scratch file!"); } function file_next() { static $i = 0; $n = $GLOBALS["file"][$i]; $i++; return $n; } function next_length($length) { $array = array(); for ($i = 1; $i <= $length; $i++) { array_push($array,file_next()); } return $array; } function skip($length) { for ($i = 1; $i <= $length; $i++) { file_next(); } } function read_header() { return str_from(8) == "ScratchV"; } function str_from($length) { $string = ""; foreach (next_length($length) as $byte) { $string = $string . chr($byte); } return $string; } function big_endian($length) { $int = 0; $i = 1; foreach (array_reverse(next_length($length)) as $byte) { $int += $byte * $i; $i *= 256; } return $int; } ?>
Based on the Java code, I suspect? (are you just gonna program the entire thing
)
The OUTPUT from my code so far is:
Going to load file (this may take a while) Reading Project "`test": Reading fixed-format class 24 Read Dictionary Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading fixed-format class 9 Read String/Symbol Reading fixed-format class 9 Read String/Symbol Reading fixed-format class 9 Read String/Symbol Reading fixed-format class 9 Read String/Symbol Reading fixed-format class 9 Read String/Symbol Reading fixed-format class 9 Read String/Symbol Reading fixed-format class 9 Read String/Symbol Reading fixed-format class 9 Read String/Symbol Reading fixed-format class 9 Read String/Symbol Reading fixed-format class 9 Read String/Symbol Reading fixed-format class 9 Read String/Symbol Reading fixed-format class 35 Read Form Reading fixed-format class 5 Read Int16 Reading fixed-format class 5 Read Int16 Reading fixed-format class 5 Read Int16 Reading fixed-format class 1 Read nil value Reading Object Reference Reading Object Reference Reading fixed-format class 9 Read String/Symbol Reading fixed-format class 14 Read UTF8 Reading fixed-format class 11 Read ByteArray Reading fixed-format class 20 Read Collection Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading fixed-format class 31 Read Color Reading fixed-format class 30 Read Color Reading fixed-format class 30 Read Color Reading fixed-format class 30 Read Color Reading fixed-format class 30 Read Color Reading fixed-format class 30 Read Color Reading fixed-format class 30 Read Color Reading fixed-format class 30 Read Color Reading fixed-format class 30 Read Color Reading fixed-format class 30 Read Color Reading fixed-format class 30 Read Color ******************************** ERROR: TypeError: arrayOfObject is undefined Raw byte data: ObjSStch���N}c��c��c����c��c��c��c��c�� ?�������� ... ********************************
Error....fail.
EDIT: Oh, wait, I forgot I had to read the file a second time
Last edited by nXIII (2010-10-08 11:15:23)
Offline
nXIII wrote:
MathWizz wrote:
This is my code so far:
Code:
<?php $file = array(); $objects = array(); foreach (str_split(file_get_contents($_GET["project"])) as $byte) { array_push($file,ord($byte)); } if (read_header()) { if (str_from(2) == 0) { die ("This project is too old!"); } else { $byte = 0; while ($byte . "" != "") { $byte = file_next(); echo $byte . "<br/>"; } /* GLITCHY!!!!! echo "The project info is " . big_endian($file,10,4) . " bytes long.<br/>"; for ($i = big_endian($file,10,4) + 14; $i <= count($file); $i += big_endian($file,$i + 1,4)) { echo $i . " ; " . count($file) . "<br/>"; array_push($objects,array($file[i],array_slice($file,$i + 5,i + big_endian($file,$i + 1,4)))); } print_r($objects);*/ } } else { die("This file is not a Scratch file!"); } function file_next() { static $i = 0; $n = $GLOBALS["file"][$i]; $i++; return $n; } function next_length($length) { $array = array(); for ($i = 1; $i <= $length; $i++) { array_push($array,file_next()); } return $array; } function skip($length) { for ($i = 1; $i <= $length; $i++) { file_next(); } } function read_header() { return str_from(8) == "ScratchV"; } function str_from($length) { $string = ""; foreach (next_length($length) as $byte) { $string = $string . chr($byte); } return $string; } function big_endian($length) { $int = 0; $i = 1; foreach (array_reverse(next_length($length)) as $byte) { $int += $byte * $i; $i *= 256; } return $int; } ?>Based on the Java code, I suspect? (are you just gonna program the entire thing
)
The OUTPUT from my code so far is:Code:
Going to load file (this may take a while) Reading Project "`test": Reading fixed-format class 24 Read Dictionary Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading fixed-format class 9 Read String/Symbol Reading fixed-format class 9 Read String/Symbol Reading fixed-format class 9 Read String/Symbol Reading fixed-format class 9 Read String/Symbol Reading fixed-format class 9 Read String/Symbol Reading fixed-format class 9 Read String/Symbol Reading fixed-format class 9 Read String/Symbol Reading fixed-format class 9 Read String/Symbol Reading fixed-format class 9 Read String/Symbol Reading fixed-format class 9 Read String/Symbol Reading fixed-format class 9 Read String/Symbol Reading fixed-format class 35 Read Form Reading fixed-format class 5 Read Int16 Reading fixed-format class 5 Read Int16 Reading fixed-format class 5 Read Int16 Reading fixed-format class 1 Read nil value Reading Object Reference Reading Object Reference Reading fixed-format class 9 Read String/Symbol Reading fixed-format class 14 Read UTF8 Reading fixed-format class 11 Read ByteArray Reading fixed-format class 20 Read Collection Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading fixed-format class 31 Read Color Reading fixed-format class 30 Read Color Reading fixed-format class 30 Read Color Reading fixed-format class 30 Read Color Reading fixed-format class 30 Read Color Reading fixed-format class 30 Read Color Reading fixed-format class 30 Read Color Reading fixed-format class 30 Read Color Reading fixed-format class 30 Read Color Reading fixed-format class 30 Read Color Reading fixed-format class 30 Read Color ******************************** ERROR: TypeError: arrayOfObject is undefined Raw byte data: ObjSStch���N}c��c��c����c��c��c��c��c�� ?�������� ... ********************************Error....fail.
EDIT: Oh, wait, I forgot I had to read the file a second time![]()
Are you just trying to tease me???
Offline
MathWizz wrote:
Are you just trying to tease me???
![]()
*deletes what's now like 500 lines of code from quote*
'Course not!
My code just failed ALL BECAUSE I READ ONE EXTRA INTEGER FROM IT!
Watch out, it's picky like that...
Offline
nXIII wrote:
MathWizz wrote:
Are you just trying to tease me???
![]()
*deletes what's now like 500 lines of code from quote*
'Course not!![]()
My code just failed ALL BECAUSE I READ ONE EXTRA INTEGER FROM IT!
Watch out, it's picky like that...
Lol. Of course I know It's picky!
Offline
MathWizz wrote:
nXIII wrote:
MathWizz wrote:
Are you just trying to tease me???
![]()
*deletes what's now like 500 lines of code from quote*
'Course not!![]()
My code just failed ALL BECAUSE I READ ONE EXTRA INTEGER FROM IT!
Watch out, it's picky like that...Lol. Of course I know It's picky!
![]()
Is the project info supposed to look like this?
output wrote:
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],24,history,9,2010-10-8 12:03:33 save `ScratchJS`Test`
,9,platform,9,Win32,9,language,9,en,9,os-version,9,NT,9,scratch-version,9,1.4 of 30-Jun-09,9,thumbnail,9,160,120,8,,[object Object],[object Object],35,author,9,,9,[object Object],11,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],20,[object Object],31,[object Object],30,[object Object],30,[object Object],30,[object Object],30,[object Object],30,[object Object],30,[object Object],30,[object Object],30,[object Object],30,[object Object],30,[object Object],30,[object Object],30,[object Object],30,[object Object],30,[object Object],30,[object Object],30
EDIT: Oh, wait, this looks more like it:
2010-10-8 12:03:33 save `ScratchJS`Test`
: platform
Win32: language
en: os-version
NT: scratch-version
1.4 of 30-Jun-09: thumbnail
160,120,8,,[ObjRef 16],[ObjRef 17]: author
: [object Object]
(not quite, though...)
Last edited by nXIII (2010-10-08 13:29:03)
Offline
I dunno whats in the project?
Offline
nXIII wrote:
MathWizz wrote:
nXIII wrote:
*deletes what's now like 500 lines of code from quote*
'Course not!![]()
My code just failed ALL BECAUSE I READ ONE EXTRA INTEGER FROM IT!
Watch out, it's picky like that...Lol. Of course I know It's picky!
![]()
Is the project info supposed to look like this?
Why are you asking me?
Offline
Its looks like the top 10 lines...
Offline
There may be such a thing as too much information
Going to load file (this may take a while) Reading Project "`ScratchJS`Test`": ********************************************* Reading fixed-format class 24 Read Dictionary Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading fixed-format class 9 Read String/Symbol Reading fixed-format class 9 Read String/Symbol Reading fixed-format class 9 Read String/Symbol Reading fixed-format class 9 Read String/Symbol Reading fixed-format class 9 Read String/Symbol Reading fixed-format class 9 Read String/Symbol Reading fixed-format class 9 Read String/Symbol Reading fixed-format class 9 Read String/Symbol Reading fixed-format class 9 Read String/Symbol Reading fixed-format class 9 Read String/Symbol Reading fixed-format class 9 Read String/Symbol Reading fixed-format class 35 Read Form Reading fixed-format class 5 Read Int16 Reading fixed-format class 5 Read Int16 Reading fixed-format class 5 Read Int16 Reading fixed-format class 1 Read nil value Reading Object Reference Reading Object Reference Reading fixed-format class 9 Read String/Symbol Reading fixed-format class 9 Read String/Symbol Reading fixed-format class 11 Read ByteArray Reading fixed-format class 20 Read Collection Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading Object Reference Reading fixed-format class 31 Read Color Reading fixed-format class 30 Read Color Reading fixed-format class 30 Read Color Reading fixed-format class 30 Read Color Reading fixed-format class 30 Read Color Reading fixed-format class 30 Read Color Reading fixed-format class 30 Read Color Reading fixed-format class 30 Read Color Reading fixed-format class 30 Read Color Reading fixed-format class 30 Read Color Reading fixed-format class 30 Read Color Reading fixed-format class 30 Read Color Reading fixed-format class 30 Read Color Reading fixed-format class 30 Read Color Reading fixed-format class 30 Read Color Reading fixed-format class 30 Read Color Reading fixed-format class 30 Read Color
(And that's only the info section!)
Last edited by nXIII (2010-10-08 14:40:58)
Offline
cant you repeat it?
Offline
do like 1 command and repeat it several times.
Offline
does anyone have any test codes that I could embed in the website for people to try out? They don't have to be complete, but maybe something that prints the contents of a .sb file that they upload?
Offline
Well MathWizz's can tell you if its a scratch project!
Offline
johnnydean1 wrote:
Well MathWizz's can tell you if its a scratch project!
I know, but it needs an upload dialog.
Offline
johnnydean1 wrote:
Can you make it?
I guess so. I'll do that.
EDIT: Never mind, I can do the upload dialog, but I can't figure out how to link it to MathWizz's code. nXIII?
Last edited by ScratchReallyROCKS (2010-10-08 17:28:35)
Offline
ScratchReallyROCKS wrote:
johnnydean1 wrote:
Can you make it?
I guess so. I'll do that.
EDIT: Never mind, I can do the upload dialog, but I can't figure out how to link it to MathWizz's code. nXIII?
Huh? What do you need to do?
Offline