• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • 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.
  • 22
    Posts
    18
    Years
    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:

    [_DarkDragon_]

    FireDance Trainer
  • 836
    Posts
    19
    Years
    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 ;)
     

    [_DarkDragon_]

    FireDance Trainer
  • 836
    Posts
    19
    Years
    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.
     

    jasonresno

    [fight through it]
  • 1,663
    Posts
    19
    Years
    One question: How should I go about making a battle system? I have no idea how..for a pokemon game.
     

    jasonresno

    [fight through it]
  • 1,663
    Posts
    19
    Years
    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..
     

    Sorye HK

    Looking around here and there
  • 3,363
    Posts
    20
    Years
    • Seen Dec 1, 2021
    Maybe it's because you don't have the proper font for the game.
     

    Budgie_boy

    A bold new journey awaits
  • 586
    Posts
    19
    Years
    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:

    Datriot

    Tachikama!!!
  • 2,203
    Posts
    19
    Years
    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...
     

    Budgie_boy

    A bold new journey awaits
  • 586
    Posts
    19
    Years
    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?
     

    [_DarkDragon_]

    FireDance Trainer
  • 836
    Posts
    19
    Years
    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)
     

    [_DarkDragon_]

    FireDance Trainer
  • 836
    Posts
    19
    Years
    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
     

    [_DarkDragon_]

    FireDance Trainer
  • 836
    Posts
    19
    Years
    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.
     

    [_DarkDragon_]

    FireDance Trainer
  • 836
    Posts
    19
    Years
    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.
     
  • 22
    Posts
    18
    Years
    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