• Just a reminder that providing specifics on, sharing links to, or naming websites where ROMs can be accessed is against the rules. If your post has any of this information it will be removed.
  • Ever thought it'd be cool to have your art, writing, or challenge runs featured on PokéCommunity? Click here for info - we'd love to spotlight your work!
  • Our weekly protagonist poll is now up! Vote for your favorite Conquest protagonist in the poll by clicking here.
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

Help and Request Thread

Status
Not open for further replies.
Hi all,

i have an image, let?s say 64*64. It is a tileset with 16*16 tiles.
is there a tool who splits the image up into the single tiles and converts the background color (could be specified?) into transparency, so can easily import them into my tileset in sphere? *puuh, long sentence*
Hope at least some of you understand what I mean *l?lz*

Thanks,

Jonas
 
Last edited:
Sphere has an option to "Import image as tileset" where it will ask you for the size of the tiles and the transparent color, look closer at the menu ;)
 
Can anyone tell me the online script for RMXP? Yes, I have the full version.
 
and for the Sphere tile movement system you can just crate a new script called "tile_movement.js" with the following code:
RequireSystemScript("time.js");
/**
Tile movement script
To use you have to do:

RequireScript("tile_movement.js");
SetUpdateScript("UpdateMovement()");
*/
var g_still_to_move = -1;
var g_last_command = -1;
var g_allow_movement = true;
var g_tile_movement = true;
var g_keys_pressed = new Array();
function AddKey(key)
{
g_keys_pressed.push(key);
}

function RemoveKey(key)
{
for (var i = 0; i < g_keys_pressed.length; i++)
{
if (g_keys_pressed == key)
g_keys_pressed.splice(i, 1);
}
}

function UpdateTileMovement()
{
var person = GetInputPerson();
if(g_allow_movement)
{
if (g_keys_pressed.length > 0)
{
if(g_still_to_move <= 0 && IsCommandQueueEmpty(person))
{
var delta_x = 0;
var delta_y = 0;
var move_command = COMMAND_WAIT;
var face_command = COMMAND_WAIT;
if (g_keys_pressed[g_keys_pressed.length - 1] == KEY_UP) move_command = COMMAND_MOVE_NORTH;
if (g_keys_pressed[g_keys_pressed.length - 1] == KEY_RIGHT) move_command = COMMAND_MOVE_EAST;
if (g_keys_pressed[g_keys_pressed.length - 1] == KEY_DOWN) move_command = COMMAND_MOVE_SOUTH;
if (g_keys_pressed[g_keys_pressed.length - 1] == KEY_LEFT) move_command = COMMAND_MOVE_WEST;
switch (move_command)
{
case COMMAND_MOVE_NORTH:
face_command = COMMAND_FACE_NORTH;
delta_y = g_tile_movement ? (GetTileHeight() / GetPersonSpeedY(person)) : GetPersonSpeedY(person);
delta_y *= -1;
break;
case COMMAND_MOVE_EAST:
face_command = COMMAND_FACE_EAST;
delta_x = g_tile_movement ? (GetTileWidth() / GetPersonSpeedX(person)) : GetPersonSpeedX(person);
break;
case COMMAND_MOVE_SOUTH:
face_command = COMMAND_FACE_SOUTH;
delta_y = g_tile_movement ? (GetTileHeight() / GetPersonSpeedY(person)) : GetPersonSpeedY(person);
break;
case COMMAND_MOVE_WEST:
face_command = COMMAND_FACE_WEST;
delta_x = g_tile_movement ? (GetTileWidth() / GetPersonSpeedX(person)) : GetPersonSpeedX(person);
delta_x *= -1;
break;
}
if (move_command != g_last_command)
{
QueuePersonCommand(person, face_command, true);
g_last_command = move_command;
}
if( !IsPersonObstructed(person, GetPersonX(person) + delta_x, GetPersonY(person) + delta_y) )
{
g_still_to_move = Math.max(Math.abs(delta_x), Math.abs(delta_y));
}
}
}
}
if(g_still_to_move > 0 && IsCommandQueueEmpty(person))
{
switch(g_last_command)
{
case COMMAND_MOVE_NORTH:
QueuePersonCommand(person, COMMAND_FACE_NORTH, true);
QueuePersonCommand(person, COMMAND_MOVE_NORTH, false);
g_still_to_move -= 1;
break;
case COMMAND_MOVE_EAST:
QueuePersonCommand(person, COMMAND_FACE_EAST, true);
QueuePersonCommand(person, COMMAND_MOVE_EAST, false);
g_still_to_move -= 1;
break;
case COMMAND_MOVE_SOUTH:
QueuePersonCommand(person, COMMAND_FACE_SOUTH, true);
QueuePersonCommand(person, COMMAND_MOVE_SOUTH, false);
g_still_to_move -= 1;
break;
case COMMAND_MOVE_WEST:
QueuePersonCommand(person, COMMAND_FACE_WEST, true);
QueuePersonCommand(person, COMMAND_MOVE_WEST, false);
g_still_to_move -= 1;
break;
}
}
}

function TileWarp(x, y, layer, map)
{
var width = 0;
var height = 0;
if (IsInputAttached())
{
var person = GetInputPerson();
var base = GetPersonBase(person);
width = base.x2 - base.x1;
height = base.y2 - base.y1;
}
x = (GetTileWidth() * x) + (GetTileWidth() / 2) + Math.floor( (width/2) - (GetTileWidth() / 2));
y = (GetTileHeight() * y) + (GetTileHeight() / 2) + Math.floor( (height/2));
Warp(x, y, layer, map, x, y);
}

function Warp(x, y, layer, map, x, y)
{
var person = GetInputPerson();
ClearPersonCommands(person)
if (IsInputAttached())
{
if (typeof(map) == typeof("string")) ChangeMap(map);
if (typeof(layer) == typeof(0) && layer >= 0) SetPersonLayer(person, layer);
if(GetPersonDirection(person) == "north")
{
if (typeof(x) == typeof(0)) SetPersonX(person, x);
if (typeof(y) == typeof(0)) SetPersonY(person, y);
}
else if(GetPersonDirection(person) == "south")
{
if (typeof(x) == typeof(0)) SetPersonX(person, x);
if (typeof(y) == typeof(0)) SetPersonY(person, y + (GetPersonSpeedY(person)/2));
}
else if(GetPersonDirection(person) == "west")
{
if (typeof(x) == typeof(0)) SetPersonX(person, x + (GetTileWidth() / 2));
if (typeof(y) == typeof(0)) SetPersonY(person, y - (GetTileHeight() /2));
}
else if(GetPersonDirection(person) == "east")
{
if (typeof(x) == typeof(0)) SetPersonX(person, x - (GetTileWidth() / 2) + (GetPersonSpeedX(person)/2));
if (typeof(y) == typeof(0)) SetPersonY(person, y - (GetTileHeight() /2));
}
}
}

function Move(name, command, tiles, immediate)
{
switch (command)
{
case COMMAND_MOVE_NORTH:
QueuePersonCommand(name, COMMAND_FACE_NORTH, immediate);
for (var i = 0; i < GetTileHeight() * tiles; ++i)
QueuePersonCommand(name, command, false);
break;
case COMMAND_MOVE_SOUTH:
QueuePersonCommand(name, COMMAND_FACE_SOUTH, immediate);
for (var i = 0; i < GetTileHeight() * tiles; ++i)
QueuePersonCommand(name, command, false);
break;
case COMMAND_MOVE_EAST:
QueuePersonCommand(name, COMMAND_FACE_EAST, immediate);
for (var i = 0; i < GetTileWidth() * tiles; ++i)
QueuePersonCommand(name, command, false);
break;
case COMMAND_MOVE_WEST:
QueuePersonCommand(name, COMMAND_FACE_WEST, immediate);
for (var i = 0; i < GetTileWidth() * tiles; ++i)
QueuePersonCommand(name, command, false);
break;
}
}

function FacePlayer(person_name)
{
var directions = ["north", "northeast", "east", "southeast",
"south", "southwest", "west", "northwest"];
var opposite_directions = ["south", "southwest", "west", "northwest",
"north", "northeast", "east", "southeast"];
var direction_index = -1;
if (IsInputAttached())
{
var player_direction = GetPersonDirection(GetInputPerson());
for (var i = 0; i < directions.length; ++i)
{
if (directions == player_direction)
direction_index = i;
}
if (direction_index > -1)
{
SetPersonDirection(person_name, opposite_directions[direction_index]);
}
}
return (direction_index > -1);
}

function RandomMovement()
{
var person = GetCurrentPerson();
var random_movement = Math.floor(Math.random() * 4);
var random_tiles = Math.round(Math.random() * 5);
switch(random_movement)
{
case 0:
Move(person, COMMAND_MOVE_NORTH, random_tiles, true);
break;
case 1:
Move(person, COMMAND_MOVE_SOUTH, random_tiles, true);
break;
case 2:
Move(person, COMMAND_MOVE_EAST, random_tiles, true);
break;
case 3:
Move(person, COMMAND_MOVE_WEST, random_tiles, true);
break;
}
}

function GetPlayerTileName()
{
if (!IsInputAttached())
return "";
var player = GetInputPerson();
var pixel_x = GetPersonX(player);
var pixel_y = GetPersonY(player);
var layer = GetPersonLayer(layer);
var tile_x = pixel_x / GetTileWidth();
var tile_y = pixel_y / GetTileHeight();
if (x < 0 || y < 0) return "";
if (x >= GetLayerWidth(layer) || y >= GetLayerHeight(layer)) return "";
var tile_index = GetTile(x, y, layer);
var tile_name = GetTileName(tile_index);
return tile_name;
}

Then create a new spriteset and delete the unused directions (SE,NE,SW and NW) and on your "main.js" script put:
RequireScript("tile_movement.js");
function game() {
CreatePerson("name", "spriteset.rss", false);
AttachInput("name");
AttachCamera("name");
BindKey(KEY_UP, "AddKey(KEY_UP)", "RemoveKey(KEY_UP)");
BindKey(KEY_DOWN, "AddKey(KEY_DOWN)", "RemoveKey(KEY_DOWN)");
BindKey(KEY_LEFT, "AddKey(KEY_LEFT)", "RemoveKey(KEY_LEFT)");
BindKey(KEY_RIGHT, "AddKey(KEY_RIGHT)", "RemoveKey(KEY_RIGHT)");
SetUpdateScript("UpdateTileMovement()");
MapEngine("startingmap.rmp", 60);
}
that's really the basics, the original tile_movement.js was written by Flikky, I added things such as the tile warp, etc (which flikky helped me doing as well) so credit goes to me and to him. You can find the original tile_movement script on the spheredev forums.
 
One question: How should I go about making a battle system? I have no idea how..for a pokemon game.
 
well, first you don't specify te software you are using and second it takes a book to explain how to make a battle system.
 
NVM I figured it out, I'm using RMXP.

Now my other question is:

When I go to enter my hero's name in the game none of the text appears..
 
Maybe it's because you don't have the proper font for the game.
 
stuff that you have created

Here's a question (not to be cheeky):

How can you prove you have made stuff without people saying that you have stolen someone elses resources?

It's just that I'm being *accused* (strong word, I know) of stealing one of the most famous tilesets known and passing it off as my own. I have only ripped my own and put it in the layout of that persons resources.

I am sincerely sorry if anyone feels offended by this post.
 
Last edited:
Hm...well, for ripped resources I don't think there's any solid proof if you've stolen it or not.
Because let's say for example person A and B.
Person A ripped all the Sonic grapics from Sonic Battle.
Person B then wanting Sonic Battle graphics ripped the graphics without knowing it's already been done, then he might share it, but people will think he just stolen it from the previous person A.
So yeah, is there really a way to prove it? I'm not sure...
 
ye, the thing is if most of your tiles are in the same location as the other tilesets tiles then it seems suspicious.
 
Oh right I get it now, so if I copy the exact same layout as someone else then it would be more difficult to prove that My resource are my own?

Ok, does it mean I will need to do a personalized layout for every resource I create so that it doesn't look like a stolen version of someone elses resource?
 
nonononono, what I mean is that imagine u use the RMXP layout, if for example first row has
[grass][weed][rock][whatever][bla][more bla][blabla]

then the second row has something else

if the other tileset has the same order of tiles then people will think that you stole it. I always prove that sprites are mine by placing a sequence of pixels of a certain color somewhere in the sprite so that people don't notice it but I know exactly where to search (for example use colors very similar to white so people don't see it but it's there)
 
ye, but as for proving that the tileset you gave me is yours I have no idea how you can do it, maybe there's some software that analyses 2 images and tells you the % of similarity between them XD
 
I assume you are talking about RPG Maker XP, there should be something on the menu to import resources, you need to import charsets, you can find some on the resource thread, they must be RMXP charsets, not RM2K or RM2K3. Then after you import them and define the transparent color go to database and edit the first character so that its sprite is the charset you want. If you want to put people around you ust create an event using a charset that you imported.
 
if you are going to make a pokemon game in sphere you have to leanr javascript and make your own battle system, the only 2 people here who know javascript well is me and boodasack and only booda has a battlesystem (I haven't made mine yet) and he's not gonna give it to you. If you are expecting to make a game just by using other people's script then you can give up on sphere now.
 
i think i can program and code in javascript, because I have 5 years of experience using it. The only thing I must learn is the Sphere Javascript API. I didn?t found any tutorials/refernces about that yet, so I want to look at the scripts of some other people, so I understand the API and can make my own Scripts.
 
Status
Not open for further replies.
Back
Top