Posts by ffomega

Welcome to our brand new Clickteam Community Hub! We hope you will enjoy using the new features, which we will be further expanding in the coming months.

A few features including Passport are unavailable initially whilst we monitor stability of the new platform, we hope to bring these online very soon. Small issues will crop up following the import from our old system, including some message formatting, translation accuracy and other things.

Thank you for your patience whilst we've worked on this and we look forward to more exciting community developments soon!

Clickteam.

    I know that this topic is several years old, but I accidentally posted it in the forum for Multimedia Fusion 2 when I should have discussed it here in Clickteam Fusion 2.5. This question was brought up with some suggestions as to how it could be made possible. However I learn through example so I was wondering if anyone had an example of this or could explain to me how to achieve this result:

    It is possible to retrieve the RGB of a pixel at x, y cordinates of objects. And I know it is possible to do so by get RGBAt x, y of window frame. However, if I try to do this, the result is always offset by weird coordinates. Someone said it was because 'get RGBAt' was collecting its data from the frame relative to the entire screen, and if any windows appeared on top of the coordinate being checked, it would throw off the reading and produce the wrong pixel result.

    In the same thread, someone mentioned using the surface object to 'blit' the application frame onto it and then get RGBAt from the x, y coordinates of the surface object instead of the actual screen. The problem with this is that I do not know the parameters required to make that possible. In the expression editor, the only parameter that is given is "0 for whole desktop", which essentially is the same as pressing the print screen key on the keyboard. That being said, GetRGBAt x, y of surface object still produces the weird offset problem. I tried this, even moving the surface object to a different location within the frame, and GetRGBAt was still looking at the application frame starting at 0, 0 as if the surface object were still at 0, 0 within the frame (I know this because I was able to collect RGB index values (via counter) from the little red CF2.5 icon that appears in the upper left-handed corner of Clickteam Fusion when the program is at full screen).

    Somneone said that it would be easy to read the correct coordinates so that GetRGBAt x, y would correctly read the actual x, y coordinates of the game's frame rather than where it was relative to the entire screen resolution, but I have tried to replicate what I thought worked and have come back empty-handed.

    Does a simple example exist where you can blit a section of the game frame into the surface object, and then read RGB values from the surface object without any weird offsets? Or perhaps could someone guide me on the way RGBAt works when it comes to absolute coordinates as opposed to those relative to an object?

    I know this post is several years old, but I need to know how the surface object blitting works. I want to blit just the frame of my application onto the surface object so I can get pixel data from it. However the only parameter the expression editor gives me is "0: whole desktop" (which is the entire screen). I don't know what expression grabs just the frame of the application. I actually only need to capture a tiny area (where I will be making alterations to a palette).

    Hi guys! I figured I would include my little program, made using Clickteam Fusion 2.5, that can convert RGB values into their corresponding color index (for those who don't know, the standard spectrum of colors in a computer is 16 million, but there are actually 16,777,215 colors available within the computer's color spectrum.

    With this program, you can use the sliders to create any color using the standard RGB method, and the counter will convert those values to color index (from 0 = R 0 G 0 B 0 or black all the way to 16,777,215 = R 255 G 255 B 255 or white). All you have to do from there is press the copy button and the value will be copied to the clipboard for use in CF2.5 or wherever else you may need that value.

    This would be especially handy for those of you who wish to use blending coefficients in your projects, or who need to know the index of a color quickly and easily.

    Please login to see this attachment.

    Please login to see this attachment.

    SolarB, I've been looking for an engine a lot like this one :3 it might serve my needs if there were two slight changes i could make:

    1. The first is the ability to change the size of the collision between the character and obstacles. For instance, I have tiles that are 360 in size, but my character is far from that wide. The size of the character only takes up around 64 pixels of that large 360 space. The way the engine is now, the character collides well with the bottom left and bottom right sides of the walls, but when moving behind it (top left and or top right), the character collides with the obstacles substantially farther away. I realize it is because the engine only understands the base size of each 'grid' coordinate to be whatever I set it to (in this case the tiles' sizes - 360), but the character is nowhere near that size. Is there a way to solve this?

    2. The size of the lighting. While I understand that the lighting is dependent on the tiles themselves, is there any way to change the size or shape of the lighting effect? Like for instance if i wanted to use the shape of a floor tile (a diamond), can the effect itself be scaled down?

    I have no problems at all providing concept screenshots of these examples to give you a visual representation of what I want to achieve

    I don't know if this tip was ever mentioned before, but I figured whether or not it was I should for those interested.

    So, I used to always run into a problem with the String Object and counter/alterable/global values. I would create a String that had multiple paragraphs within it, create an alterable value (or a counter), and, in the event editor, create an event like this:

    <if condition is met>
    ---<String Object> set paragraph to <Counter> 'current value'

    OR

    <if condition is met>
    ---<String Object> Set paragraph to <Alterable value A> 'value'

    ...and this NEVER worked. So, I often worked around this by using arrays or INIs which would never fail.

    But, if you set the events like this:


    <if condition is met>
    ---<String Object> set paragraph to 1+ <Counter> 'current value'

    OR

    <if condition is met>
    ---<String Object> Set paragraph to 1+ <Alterable value A> 'value'

    Then, it worked 100% without fail.

    Anybody have any ideas on why this happens? xD

    I actually tested it out using the event editor vs. the behavior editor. I use the behavior editor a lot...in fact I tend to favor the behavior editor over the frame event editor because I can move objects between frames without needing to copy/paste events from frame to frame. When working in the frame event editor, I had no trouble loading frames into an active object. However, I found that when I try loading external frames into an active object from the object's behavior editor it didn't work. In previous builds this never gave me an issue before.

    FYI: I was using the expression apppath$"+"folder\filename.ext" when loading images into the active object frames.

    I'm not sure what's going on but I have run into a problem that I'm not sure can be classified as a bug (which is why I have not posted it to the bug report yet).

    I have never run into this issue before until now, but I have tried to reproduce this issue with random results.

    In the event editor, I have set up a condition "at the start of frame" to load an external image into the active object.

    At start of frame:
    Load <image.png> into frame 0 at x 0, y 0;m x 0 (action point), y 0 (action point), transparent background (0,0,0).

    Within CF 2.5, this works just fine. But when you build the application and run the exe file, it does not load images into the active object. As I said I tried to reproduce this issue, but it was random....Sometimes it works and sometimes it doesn't.

    Has anyone else run into this issue before, and if so (and have figured out a way to fix it) please tell me what you did.

    Okay, so I finally decided to give the Iso Grid object a chance and I like it way better for what I am trying to do. My original movement engine was over 65 MB in size, had literally thousands of actives in the frame, and I had to use fast loops just to boost framerate. With the Iso Grid object, I only need one active and my filesize is now around 550 KB. Anyway, I created two crude images in photoshop to basically explain what I'm having trouble with:


    Image 1: Changing the properties of the active object depending on its current animation frame to make impassable areas
    Please login to see this picture.

    Image 2: Enhancing 3D depth illusion by making objects larger than the player appear semi-transparent by being behind them.
    Please login to see this picture.

    I think I might be able to figure out issue two but I will not know for certain until I play around with the code some more. As for issue one, I am asking about this one because I had a similar problem with creating objects (Active B)alongside the actives (Active A) used to create the 'meat' of the level, when I placed (Active A) tiles the extra created actives (Active B) came up perfectly, but when I loaded the saved file, it created an active B object on top of every instance of the active A object. I have since created many extra frames within the original active A object and will use "level stacking" for each object. This will actually give me far more flexibility with tile combinations than I had before.

    This level editor is perfect for me!! With some slight modifications, I was able to create levels for my own map editor. Originally I used excel and converted the xml files with sketchy's array editor, but since the recent patch his program no longer shows string arrays.

    What you are asking for is called "Masking", which I heard from someone is not possible in Fusion 2.5. I could be wrong, and hope I am because I had asked the forum for a similar thing in my game, in which you had a solid active object which, when the player walked underneath of it, would turn a circular portion of that active object semi-transparent so you could see the player behind it. The reply I got was that it's not possible in CF 2.5.

    I don't know if this is an issue or not, or if anyone among the click community is aware of this, but I was messing around with CF today and had a random thought:

    I can use a counter to return the color index value of a pixel's color (say, within an active object). So, I wondered the same thing about a system color (say, from the system box object[s]). However, and I don't know if it's because system colors are dynamic and can vary from system to system, but the counter always returns a negative value of -999999999.

    I created an .mfa to show this off.

    Any thoughts on why this happens?

    I somehow managed to get my levels to load using the sub-application extension so I don't have hundreds of 'level frames' in one application. However, all the game's data is stored in an array file (and I mean everything...there are about 15 different 'z' pages within a single array file). This was an option I decided upon instead of using literally hundreds of global values and strings. Hated the idea of having to hunt them all down and working in an array is much easier.

    My situation is this:

    I have my main application, which has just 2 objects: an array object, and the sub-application object (where all my levels will load from).

    Within each sub-application, I also have an array object. Both with the same name, both set to be global throughout the application...but what I want to do is load the array's data from the main application into the array in the sub-application. How can I have CF 2.5 do that effectively, and load the data directly, without saving the data to an external file and reloading it from the sub-application? I want to load it without bogging down memory or with minimal load time issues. Can it be done or will I have to save externally then reload from the sub-app?

    [Update]

    I have found a solution that has minimal events required to run.

    I have two list objects...List A, and List B.

    [size=+1]Populate List[/size]
    At start of frame:
    * <Special Conditions> Start Loop "list" 500 times.

    On loop "list"
    * <List A> Add line str$(random(5)) to List A.

    << This populates List A 500 times with random values between 0 and 5.

    [size=+1]Populating List B[/size]
    At start of frame:
    * <special conditions> Start Loop "store" List Nb Lines ("List(List A)") times.
    *<List B> Delete Line 1.

    Upon pressing "Space Bar"
    * <special conditions> Start Loop "store" List Nb Lines ("List(List A)") times.
    *<List B> Reset

    << These lines are designed to delete the entire list before repopulating it, It must be here in order to allow an internal "refresh" without the need to save to a file, reopen, and delete the source.

    On Loop "store"
    <Special Conditions<Compare two general values>>List Line Text$( "List (Item Count)", LoopIndex("1" ) ) < > Str$(0 )
    *<List B> Add a line Str$(LoopIndex("1" ) )

    << This line checks the contents of each line within List A during each loop and, if the value during the loop is different than 0, it populates List B with the line number.


    Upon pressing "Space Bar"
    *<List B> Delete Line 1.

    <<This event resets the whole string of code, and encloses all the events within the keystroke.

    Since Fusion handles all lines of code at once per condition, essentially what I am doing here and placing all the code within a single keystroke. At runtime you only see the lists refresh and repopulate. I have a different set of events that repopulate List A in its behavior properties. I tried to set it up to populate a random number everytime I pressed space bar but it woule either not populate List A, or not populate List B....so for now I had to use the fast loop to create the list and then, upon pressing spacebarr, individually change each line with a random number. But the rest of this code works exactly how I wanted it to work.

    Thanks fo out to Snail On for the video on youtube "Basic List Editing". I used a lot of trial and error in order to get this to work perfectly (the way I wanted).

    Let me know if I should upload an MFA of this example.

    I am getting a lot of frequent crashes in the expression editor and the software is updated too. It happens at random in the expression editor, either when typing an expression, or editing a currently established expression. I have been forced to type out all expressions I wish to use within a text editor and then paste them in because the expression editor is, in my honest opinion, too unstable to edit in directly. I hope you guys can find a solution for it. I never had this many crashes in MMF2.