The Daily Click ::. Forums ::. Klik Coding Help ::. 3 questions concerning TGF 1 [adventure game]
 

Post Reply  Post Oekaki 
 

Posted By Message

Lönnemyr



Registered
  30/06/2008
Points
  69
30th June, 2008 at 08:03:02 -

Hi everyone, I`m new here and I thought that since I started playing with TGF (better clarify, its TGF1 not TGF 2) again and it has been a loooong time since I used it. I might as well ask here about some things I don`t know how to do. Unfortunally I`ve forgotten most of what I knew when it comes to TGF, and I since it is kind of old I have only found a handfull of tutorials.

So here we go; first questeion!

Im currently creating a very simple aventure game and I`m using a bird perspective. Since my each level or "map" is bigger then the resolution scrolling is nessicary, so I added it. Another problem came up though, things like the healthbar and other counters which will be important for the player. Luckly they automatically follows the screen, which I guess is good but I don`t know were to place them to make them appear at the exakt same position (upper right corner for example) when entering another frame. It would look dumb if they moved around and I`m sure it would be irritating for the player.
I guess I could place it, test run level, replace it, test run level etc on every frame in the game but there most be a easier way to do this? Something that would give me a more exact result?
I came up with the idea of having a boarder which is always following the screen, it is cool becuse I can decorate it as well. But If I somehow manage to get it to follow the scrolling screen and not wander off I could maybe use it to help see were I am supposed to place the counters?

Also if you know how to make the counters appear in the right place everytime you enter a new frame in some other way, I would still appriciate if anyone knew how to make the boarder thing follow. As I said, it could be decorated

Another questsion then, it is something I guess most of you know how to do in your sleep but I could not find any tutorials on this. How can I create dialog? I`m sure there is many ways you could do this and since I dont know which one is best for my game I appriciate if you told me more then one way to do it.. if you know. Also, it would be nice if you could add different anwsers and make the player select one but thats not really needed for my game at this point.

And yet another question. I think this is possible in tgf 1, but I cant remember how to do it properly so please explain it if you can. The thing I want to do is make the game "remember". Like for an instance how much life the player has left or how much "cash" he has got when entering diffrent frames. I`m quite sure this has to do with "values" but I dont really remember much about those.
Another things which I think might be possible to do when you can make your game remember is a) save-load game, and b) give the player the option to enter a name in the beginning of the game, then make it appear in conversations etc. Both of those features would be great to add, even if the game could work without them. So again, if you know how to, please tell me or link me to a tutorial or anything that would help.

Well, I know I asked for quite alot and to be honest I`ll probably find more problemes along the way, even in this quite "simple" adventure game. But I really appriciate all help I get, thank you so much for reading!


Best regards, Illsnidig.

 
-

Jon Lambert

Administrator
Vaporware Master

Registered
  19/12/2004
Points
  8235

VIP MemberWii OwnerTDC Chat Super UserI am an April FoolSSBB 3265-4741-0937ACCF 3051-1173-8012360 Owner
30th June, 2008 at 08:26:37 -

For your first question, you could use the level editor's grid option to see how many grid spaces in each counter is, then move them accordingly in the other frames. Also remember that you can get an object to always follow the screen by unchecking the Follow the Frame property. That way it will always stay in that position relative to the window. For example, if you put a ball at 350 x 450 in the frame and uncheck Follow the Frame, and the window resolution is 300 x 400, it will always stay 50 pixels right and 50 pixels below the frame, never visible.

I don't know the answer to the second question.

The third question, use global values is all I can think of. There are only 26 though, if I remember correctly. I own TGF, but it is on my old hard drive which is currently in my old, non-working computer, so I wouldn't be able to send you any files to help.

 
Sandwich Time!Whoo!

JoyCheck & KeyCheck Widgets
For easy implementation of customizable joystick and keyboard controls.
http://www.create-games.com/download.asp?id=8364

Lönnemyr



Registered
  30/06/2008
Points
  69
30th June, 2008 at 09:22:08 -

Thank you for your help!

I dont quite understand your solution with the grind options though. Sure I can pinpoint things with more precission but I dont "know" exactly were the camera will be since I have it "center on PC at start of level", it will automatically "jump" to were it`s supposed to be and since the player will enter alot of diffrent areas from alot of diffrens positions on alot of diffrent maps this will be quite hard do figure out? Maybe I`m making it more complicated then it is, I`m not sure?
Anyway, if it was a simple platform game it would be more easy to make sure these boarders and counters follow but since I use a bird perspective the camera moves in alot more directions then just bacward-forward which makes me confused?

Concerning global values, which I "knew" was the anwser, is there anywere I can "read up on them"? Beucuse I dont remember much besides they are used for stuff like this. To bad about your computer, but maybe someone else who reads this still have tfg installed and will do it in your stead?

Also another thing which might be related to the scrolling, I just noticed this. When moving around in the landscape some things seems to "pop up", like for example a tree which is not visible untill "the whole tree" can fit on screen. I`m pretty sure I`ve done something wrong to create this problem. I guess the topic lies now since I added another questsion

Image Edited by the Author.

 
-

OMC

What a goofball

Registered
  21/05/2007
Points
  3516

KlikCast Musician! Guy with a HatSomewhat CrazyARGH SignLikes TDCHas Donated, Thank You!Retired Admin
30th June, 2008 at 10:02:38 -

For "remembering" you would use Global values and INI's... One way you can make sure the counters are in place is to make an object, set it atop the counter, make an event to check it's X and Y values, and then either count out the pixels one by one with the arrow keys () or set the position via events. It's funny, TGF is the one I use, and I can't remember whether it supports setting Counter X and Y values... I've never had to do dialog, I've got two ideas how I would do it, but I'm sure they're not the most efficient or easy ways, so I'll leave that to someone else.

Global values... it's under the wrench icon. You can set a global value to something and retrieve it in another frame. INI's are a bit more complex. Do you have an AIM screen name or a Skype name? I suppose I could just type it out... The INI object creates "blahblah.ini" file in the C:\windows directory (unless you tell it otherwise, which I would. Set the INI file in the app directory), you can set strings and values into it to save games and information. For instance, to save the Player's position on a map, you would say,
"Set current item" in the event editor after you have made a condition. In the box set it to whatever you like, "player X" we'll say. Then say "set value" to player's X position. Then you can do that again for Y... "set current item" to "player Y" Set value to player's Y position. To retrieve it just make sure you set the current item to the thing you want before you get the ini's returned value. You can do this for strings too. (which is one of the ways you could do dialog, I suppose. But I wouldn't recommend it.) If that's not clear, say so, I was sort of in a hurry.

 

  		
  		

-MacAdaM-

Megaman Fosho

Registered
  12/02/2008
Points
  560
30th June, 2008 at 10:28:09 -

For the "Pop UP" problem, you can un-check "Inactive if too far from window" or something like that.
I don't know, I haven't used TGF1 in a really long time.
To add dialog, do you mean the "RPG"ish text, were it appears 1 by 1? or just text in general?
If you just want text, there is a string button were you choose active object, or background.

And for "remembering" things, I would use a INI object. At first they can be confusing, at least for me they were, but you can get used to them, just give them some time.

-AND- For some helpful stuff TDC has a search bar in the side
<<
You can look up articles that can help you with INIs or anything really.
as long as someone has wrote something about it somewhere.

Well i hope I helped at least a little bit

 
Your just jealous that you're not as awesome as me.
(And my megaman avatar )

Eternal Man [EE]

Pitied the FOO

Registered
  18/01/2007
Points
  2955

Game of the Week WinnerHero of TimeLOL SignI am an April Fool
30th June, 2008 at 12:15:41 -

About the first question;

To get the counters and such to stay in the right position relative to the players "camera" you position them in the top-left "screen" of the frame. The scrolling automatically "starts" from the inital top-left screen position, so if you place your counters and such in the top-left area they will always be correctly positioned relative to your "camera", that is if you uncheck the follow the frame tick. I think you right-click the objects and choose the scrolling properties or something... Yeah. Hope it makes some sense.

About the dialog, do a TDC search on "Dialog" or "Rpg dialog" or something like that. I know there's a really good one, either here on TDC or at clickteam.com.

 
Eternal Entertainment's Code'n'Art Man

E_E = All Indie


...actually Ell Endie, but whatever.
Image
Image

Lönnemyr



Registered
  30/06/2008
Points
  69
30th June, 2008 at 13:20:54 -

Great! I didn`t expect this much help.

I solved the first question by first unchecking the "follow frame property" as "Jon & George Lamert" said, then using "Eternal Entertainments" sugestion, it works like a charm. I just placed the border and the counters in the upper left corner and everything follows nicely, not even one event needed and its not much work at all.
That is perfect solution for a hopefully not so advanced adventure game as this is. Though, I appriciate all your other ideas too. I make some mental notes of those for future needs when this solution fails me.

And since you all are saying INI and global values is the way to go I trust you, I think I understand "how" they work but I`m not so sure if I can handle them yet, I try find some more faq about this in the forums, thanks.
Something I wonder about those though, if there only are 26 global values that means that the game can only remember 26 conditions? Or do the INI help increse the amount of conditions the game can remember?

The popup problem is also solved thanks to "MaxAdaM" tips, it`s been so many years that I forgotten all thost simple yet very important features that TGF has, thanks for helping me out.

To clarify, yes it is "RPG-ish" dialog text that I`m looking for. My vision of the in game dialog is that something like a "tiny black/blue window pops up and the text is written in it (the diffrent anwsers too if there will be any). If the player press.. lets say space key for example the dialog continues. Probably, if I`m not going to catch the lazy virus I want to have a small portrait right next to the box in which the dialog is so show who is talking at the moment(maybe possible to have 3 diffrent portraits for the main character to show emotions).
Thats alot of explanation for saying I want something like a normal rpg dialog window like they appear in most RPG games

I go search for a faq about that too in the forums but if anyone who know how to do it happens to read this, write a line or two about it in this thread, thanks.

Unfortunally, "Giant OldManClayton Panda" I do not have an AIM, neither do I have an Skype name. I`m not sure if I understand just yet, we`ll know after I`ve tried it. But you did make me understand a little more about how the INI files work, strings though sounds familiar but what are they for? I think I might have used them when working in MMF sometime but that too, wasn`t yesterday.

 
-

OMC

What a goofball

Registered
  21/05/2007
Points
  3516

KlikCast Musician! Guy with a HatSomewhat CrazyARGH SignLikes TDCHas Donated, Thank You!Retired Admin
30th June, 2008 at 13:41:35 -

Well, I woulda told you to just stick the counters in the right spot but I thought maybe you were starting from the middle of the frame where it'd be harder. I thought the solution was obvious if you were in the corner, so I assumed you were in the middle-- nevermind. I'd be happy to lend a hand in any troubles you have. I consider myself one of TDC's TGF assistants. Strings are used for various things, like saving what the user types in, sending information to servers, whatever you can think of that uses words. Didn't see that question about Actives, looks like it's been cleared up.

 

  		
  		

Jon Lambert

Administrator
Vaporware Master

Registered
  19/12/2004
Points
  8235

VIP MemberWii OwnerTDC Chat Super UserI am an April FoolSSBB 3265-4741-0937ACCF 3051-1173-8012360 Owner
30th June, 2008 at 13:53:34 -

If you really need more than 26 values, I can think of two options, both of which I've tried before, and one which I used unsuccessfully:

Firstly, you could use the global values very craftily, i.e. each frame uses the global values for it's own resources, and there might be an in-between frame that is used to save whatever values need saving, then reseting them for use by the next frame.

Secondly, you could go to http://www.clickteam.info/extensions and download the 1000 Global Values object or 1000 Global Strings object to use for additional conditions. However, if I wasn't just being noobish the last time I used it, these 1000 values and strings are limited to what can be saved to them.

Finally, you could just use the INI file to save things in some sort of "Temporary" group, or use two INI's, one for permanent values (save files) and another for temporary values (things that need to be carried across frames). A variation on that is that the temporary INI could be used for save files held in memory, e.g.:

A file is loaded with 10 HP, 5 MP, 1 magic potion, 1 sword, and 50 coins. These values come from the permanent file, and are copied to the temporary file.
Said file gains 5 HP, loses 5 MP, gets one extra potion, and gains 2 coins.
Right now, the temporary file has 15 HP, 0 MP, 2 potion, 1 sword, 52 coins.
The permanent file still has 10 HP, 5 MP, 1 potion, 1 sword, 50 coins.
If the player chooses to quit and save, the values from the temporary file are transferred to the permanent file, then reset.
If the player chooses to quit without saving, the temporary values are all reset and the permanent file goes unchanged.

That way, if something happens that the player doesn't like, they have the option of quitting without saving and completely abandoning everything they just did.

Wow, that seems complicated...

 
Sandwich Time!Whoo!

JoyCheck & KeyCheck Widgets
For easy implementation of customizable joystick and keyboard controls.
http://www.create-games.com/download.asp?id=8364

Lönnemyr



Registered
  30/06/2008
Points
  69
1st July, 2008 at 06:53:06 -

OldManClayton

Oh well, I have done some simple TGF:ing and MMF:ing in my past, nothing that required something as advanced as strings/INI:s though, I did try it a couple of times with MMF I think but it didn`t go well. Since that was a long time ago the little knoweleage I had is all gone, well mostly. So its probably better if you can see me like a beginner and assume I dont know about any things, even though sometimes, I might.

The player did begin in the "middle" of the map, but it worked anyway? Origianlly I tried to have the life and other counters in the upper right corner but if it`s so easy to have them in the left, I really dont mind that much. Might even look better since the counters go from left to right.

So strings are used for "text" only, INI:s store information for the game when the computer is off, and global values are used to remember "things" while you play, and can be used to transfer information to the INI:s? Heh, I would really love a "super simple self explaining total beginner guide" which explains everything step by step. I`m a little confused about how to make these things actually work. What was that question about Actives? Cant remember asking anything about that or did I?

Jon & George Lambert

I`ve seen that there are some diffrent values, like alterable values, global values and if I`m not mistaken I think I saw another type of value last night when I was clicking, but I´m not sure.. I was kind of tired. Anyhow, what I don`t really understand is "how much can the game remember", without using tricks. It would be great to know this before I get ahead of myself and plan out the game in detail.

I would very much appriciate an RPG/adventure example, and write it the way YOU would use the values. For example, if global values are better to remember things like quests and alterable value is better for something else, write it like you would have used them.

Something like thins maybe:


Save file

life --- takes XY global/alternative values to remember.
mana --- takes XY global/alternative values to remember.
item1 --- takes XY global/alternative values to remember.
item2 --- takes XY global/alternative values to remember.
item3 --- takes XY global/alternative values to remember.
item4 --- takes XY global/alternative values to remember.
position --- takes XY global/alternative values to remember.

In game information

live --- takes XY global/alternative values to remember.
mana --- takes XY global/alternative values to remember.
item1 --- takes XY global/alternative values to remember.
item2 --- takes XY global/alternative values to remember.
item3 --- takes XY global/alternative values to remember.
item4 --- takes XY global/alternative values to remember.
quest1 --- takes XY global/alternative values to remember.
quest2 --- takes XY global/alternative values to remember.
quest3 --- takes XY global/alternative values to remember.
quest4 --- takes XY global/alternative values to remember.

I`m not sure if I get it right, otherwise I`m sure you understand what I misunderstood and can correct it. If the game uses say XY.. uh..global values to remember a save file, will those be "occupied" and off limit to use when the game is running as well, becuse if that is so and it requires a value for each "thing" it has to remember, like position, each item, health etc then alot of values will be occupied and you can`t make the game remember much? Btw, Im not sure but I think of what I`ve seen when tinking with values yesterday that there is 16 globals and not 26!


------
And yet another "problem" has accured, even if I`m not sure that it really is that problematic. And accured is probably not the truth either, I think it has been that way since the beginning just that I didnt notice untill recently when I tested first map for a little longer. Still, not sure if this is a problem or not but when I move it seems to..um, blur some objects on the map while I move? Might just be an optical illusion since it does not show on print screens. Also it`s more blurred if I make the PC move faster.. so.. optical illusion? or lagg? or bug?

Thanks again, really good community.

 
-

OMC

What a goofball

Registered
  21/05/2007
Points
  3516

KlikCast Musician! Guy with a HatSomewhat CrazyARGH SignLikes TDCHas Donated, Thank You!Retired Admin
1st July, 2008 at 10:16:57 -

You using an lcd screen? Laptops especially will lag in visuals. CRT and newer lcd monitors don't have that trouble. Well, lag isn't the right word... it leaves a little shadowy trail...

Image Edited by the Author.

 

  		
  		

Lönnemyr



Registered
  30/06/2008
Points
  69
1st July, 2008 at 10:54:06 -

That explains it, I`m workin on an OLD laptop since my main computer is dead. Is this something that happens to all games you build in tgf or is it a problem with all games what so ever (I never play games on this computer since its so old)?

Good thing it wasn`t a big deal, I thought my game was laggy becuse my events and everything else is kind of messy. Mainly becuse I don`t know which way might be the best way to do all things.
Maybe its possible to post the gam file here at a later date and have people look at everything and say what they think about it, both the gameplay and the work done in the event editor. But right now I feel like I don`t have enough to show so I work on it a little more.

 
-

Jon Lambert

Administrator
Vaporware Master

Registered
  19/12/2004
Points
  8235

VIP MemberWii OwnerTDC Chat Super UserI am an April FoolSSBB 3265-4741-0937ACCF 3051-1173-8012360 Owner
1st July, 2008 at 12:57:43 -

It doesn't happen with all TGF games, just the ones that are either so big that they run slowly, because running them faster makes them skip frames. It could also occur if the screen is scrolling too quickly.

If you do post the gam file, I'll take a look at it. 16?! Wow, that is crazy, but I think I got twenty-six from MMF2, sorry.

There is no limit to how much you can save to an INI, but the more you save, the bigger it gets, and they already inherently have file sizes of 10-100 kb or more.

It is best to use alterable values for things like life, mana, coins, things that directly relate to the character. Global values are where quests go. Items should be either global values or temporarily saved to the INI. Anything on an alterable value should be necessary only for the current frame, or it will need to be transferred to the global values or an INI.

If you don't need to store a lot of information on the global strings, you could have TGF convert the values into strings for storage in the global strings, then convert them back for use later. I don't remember if it has that function, though.

If you aren't averted to extensions, then check these out. http://www.clickteam.info/extensions/extlist.php?prodtgf=ON&extendedlist=Go&cat=

Particularly the 1000 Global Strings, 1000 Global Values, Item Array, Dynamic Array 2, and String Conversion objects. All of those will allow you to store values and strings across frames.

 
Sandwich Time!Whoo!

JoyCheck & KeyCheck Widgets
For easy implementation of customizable joystick and keyboard controls.
http://www.create-games.com/download.asp?id=8364

OMC

What a goofball

Registered
  21/05/2007
Points
  3516

KlikCast Musician! Guy with a HatSomewhat CrazyARGH SignLikes TDCHas Donated, Thank You!Retired Admin
1st July, 2008 at 13:39:17 -

No that's not quite right. In my experience, every TGF game and every game whatsoever that has moving sprites has this effect on older laptop screens, particularly in DSTN (dual scan screens). Older LCD's are notorious for having slow responses. Sometimes it does matter what order you put events in for position lag, but this is likely not the case. You should be fine. My sister sometiems draws Balding Overweight Man graphics on her old thinkpad 560, and it won't even play the game.

Image Edited by the Author.

 

  		
  		

Lönnemyr



Registered
  30/06/2008
Points
  69
3rd July, 2008 at 10:02:19 -

Either way, it`s probably nothing I can do anything about then. Hopefully those with older laptops/lcd screens will buy new ones in the future if they have not already done so.. (including myself).

16? You mean 16 or 32? becuse if thats what you are asking my tgf is 32. Sure I upload the gam file as soon as I think I`ve done enough work on it for it to be worth to check out, currently I spend most time on sprites/grapic in GrapicGale. And I`m not a pixelPro so these things takes time. You`ll probably notice when I`ll upload it so stay tuned

I`m aware of extentions but I`ve always thought they seemed so advanced so I never used any of them. But I`ll take a look, how do I get them to work? like INI plus for example (which I`ve heard is supposed to be better then the usual INI somehow)?


 
-

OMC

What a goofball

Registered
  21/05/2007
Points
  3516

KlikCast Musician! Guy with a HatSomewhat CrazyARGH SignLikes TDCHas Donated, Thank You!Retired Admin
3rd July, 2008 at 12:24:48 -

Extensions are not too complicated at all. You just have to know what the specific extension's function is, and explore the events and conditions it has. I've never used INI+ I think I did determine what it was that was different than the normal one one day, but I've never used it. Most of my games don't use extensions, but every once in awhile you may need the advanced math object, fast loop object, or in the case of my educational software, the print object. Yes, if they have old laptops they have no business playing large click games. I have found that old laptops are EXTREMELY handy and awesome for other purposes, like typing, playing small klick applications, attempting to get skype to work... I would love to buy a new laptop, but money is always the killer of such dreams.

 

  		
  		

Lönnemyr



Registered
  30/06/2008
Points
  69
4th July, 2008 at 11:15:25 -

Thats the thing, I think most extensions (When I look at that page "Jon & George Lambert" posted) has a very bad faq. Lets take INI+ again for example "This extension does not work in MMF. It is provided for conversion purposes. TGF/CNC version download" - aha, now I know EXACTLY what it does and how to use it! Thanks alot!..NOT

Well, then again it was a long time since I was klicking and I´m not to familiar with the TGF anymore, if I was maybe I would know or easily find out what it does, but thats not the case for me it seems. I have actually forgotten more then I though I had, I find "new" functions all the time that I didn`t remember.

And yesterday a new question occured, I "compleated" the first frame And though I should move on the the second one when I noticed that I have no idea how to use the same objects as I used in frame 1 in frame 2. Hehe, I never though I would ask a simple question like this but how do I use the same objects in diffrent frames? And if I change it in one frame, will it change in all frames (if I add animations to an object for example)?

From what I remember I should just be able to chose among all the objects I`ve used in this game from the list with all the other libraries? There is a "level objects" libary and I`m damn sure it`s supposed to be a "game objects" as well.. Anyway it wasn`t there so I tried to copy some of the objects, ctrl+c for the win.. or so i though until the next problem occured!
I`m not sure what it is but for some reason the board/frame (one of the objects I copied, same one I mentioned in the first post) refuse to follow the main character (scroll) in the first frame now. I think it has to do with me chosing "copy all events related to this object" when tgf asked me. I thought it wouldn`t be a problem and it would save me some time, not have to do all the events for every frame but apperantly it made my tgf go "boooooO!" instead. ..the events are still there in the first frame so what is the problem here? And how DO I use my libary in all frames?


 
-

OMC

What a goofball

Registered
  21/05/2007
Points
  3516

KlikCast Musician! Guy with a HatSomewhat CrazyARGH SignLikes TDCHas Donated, Thank You!Retired Admin
4th July, 2008 at 12:17:58 -

On the object window, where all your objects are stored, there are little blue arrows at the top and bottom. Clicking these will allow you to access objects from other levels. If you add or change an animation in one frame, it will not change it in another. They are their own unique object. And remember you can use edit + copy to copy not only objects, but also entire levels if they're similar enough to want you want. I wouldn't recommend copying events unless you really know what you're doing, as it can bring along a few unwanted tagalongs with it. It may be because when you copy events, if an object in the events is not on the current level you're pasting to, it will replace it with a bomb icon, and nothing will happen until you replace it with another object. I think you had a couple other questions, but the review section is giving me Service Unavailable. Hold on.

 

  		
  		

OMC

What a goofball

Registered
  21/05/2007
Points
  3516

KlikCast Musician! Guy with a HatSomewhat CrazyARGH SignLikes TDCHas Donated, Thank You!Retired Admin
4th July, 2008 at 12:30:48 -

Oh, yes... extensions. You're most likely going to have to figure them out yourself or ask people for specific examples. I believe TGF has some sort of early implementation of global events and objects, but I've never personally used them, so I can't say for sure. It's best to either copy entire levels, build them from scratch, or only copy sections of code. Don't try to copy them via objects if there are alot, or by copying the entire code without the objects. Just copy the level from the storyboard editor. Hope I helped.

 

  		
  		

Jon Lambert

Administrator
Vaporware Master

Registered
  19/12/2004
Points
  8235

VIP MemberWii OwnerTDC Chat Super UserI am an April FoolSSBB 3265-4741-0937ACCF 3051-1173-8012360 Owner
4th July, 2008 at 12:52:57 -

What I usually do to learn how an extension works is I first put it in the extension folder, then load up the program (TGF in your case, MMF2 in mine) and either load up an existing game, or make a new one that I don't save. Then, I go to a new frame and place the new object in. I check its properties if it has any, then I go to the event editor and make a nonsense event, (a random event, like "Start of Frame" or "Timer equals 3 seconds") and use that to see what actions the object has. I also check to see what conditions the object has and try to get an idea of what I can do with the object from that.

TGF 1 does have global objects, you check the box for global in its properties, and then in every frame it pre-exists, but it isn't created unless you make an event for that.

When you copy events into frames with missing objects, you have to be careful, because if you have another object in that frame with the same name as an object in the events, that object will take that place in the events. So, if you have a ball in the first frame named "Active 6" and paste the events for the ball in another frame with a skateboard called "Active 6", the skateboard would take the place of the ball in the events.

 
Sandwich Time!Whoo!

JoyCheck & KeyCheck Widgets
For easy implementation of customizable joystick and keyboard controls.
http://www.create-games.com/download.asp?id=8364

AndyUK

Mascot Maniac

Registered
  01/08/2002
Points
  14586

Game of the Week WinnerSecond GOTW AwardHas Donated, Thank You!VIP Member
4th July, 2008 at 14:25:21 -


Originally Posted by OldManClayton
You using an lcd screen? Laptops especially will lag in visuals. CRT and newer lcd monitors don't have that trouble. Well, lag isn't the right word... it leaves a little shadowy trail...

Image Edited by the Author.



Ghosting?

 
.

OMC

What a goofball

Registered
  21/05/2007
Points
  3516

KlikCast Musician! Guy with a HatSomewhat CrazyARGH SignLikes TDCHas Donated, Thank You!Retired Admin
4th July, 2008 at 14:30:50 -

AH-HA! Ghosting. Yes, Jon & George was kind enough to fill in the parts I forgot. That's precisely what I meant by testing an extension, but stupid ol' me didn't explain it well enough.

 

  		
  		

Lönnemyr



Registered
  30/06/2008
Points
  69
5th July, 2008 at 18:40:34 -

Thanks, I mangaed to find my objects in the other frames now I think. I still haven`t fixed the "problem" which I caused by copying the events but before I get into that I decided to make myself a bit more familiar with TGF.. so, new questions ofc!

Ok, Sinve I wanted to be sure I know what I`m doing before messing up my project even more I`ve been experimenting with things, in a new application (planning to test some extentions in this new "test game" as well). I`m currently testing INI files a bit but can`t seem to get it to work, so there is something I`m not doing right.

What I`m trying to achive at the moment is temporary saving and loading a few counters (such as life, coins etc) and the players position. Lets say player moves around on my map, finds a house and wants to enter this house(which will lead him to another frame) I want the game to remember the counters(life and coins), not the position ofc since he will be on another map.
But, when he then exit the house I want the game to remember and load exactly were the player was standing on the map and what values the counters had.. also, if some values was changed inside the house(in the other frame) I want the game to save and load those changes.

So here is what I`ve been trying...

FRAME 1

Events:
1.Uppon pressing ENTER
Collision between "player" and "door" - Jump to level numer 2 - Save position of "player"(INI) ..(I guess I should save the values of the counters here to but I`m not sure which is the best way to do this).

FRAME 2

In this example, inside the house there is a foe which the player can destroy, when the foe has been destroyed the player will automatically get the loot (which is supposed to be saved to the INI) and then "jump" back to frame 1.

Events:
1.Collision between "player" and "foe" - destroy "foe" - Jump to level numer 1 - Activade group "Temporary INI save" ..(temporary INI save is a global event group I created for controlling the temporary INI file.. see more beneath)

TEMPORARY INI SAVE GROUP:

1.ALWAYS - Load position of "player".. (of course when I know how to save and load the counters, Im planning to have an "always" event for those too.. )
2.ALWAYS - Deactivate group "temporary INI save"


Well, um, when I look at it I`m not suprised that it doesn`t work, I`m guessing it has to do with the "always" deactivate event.. but I`m not sure, not sure about anything anymore. For this to work the group most be activated only when the INI loads the data then deactivated... otherwise the player would probably not be able to move.

If you can explain how to fix this.. or how to save load these temporary things in a much easier way(make sure you explain well then becuse I`m really lost when it comes to these INI objects it seems), please help.

And have in mind that these temporary saves I have do to to the INI isn`t the only ones, later I will try to make a SAVE/LOAD game function as well as make the game remember more stuff, like a few quests/quest progress.

Obviously I cant have a "start of level" condition for the INI becuse then it would load any save file there was, even if the player "just started a new game", and we cant have that, now can we?

I`m looking for the most simple, easy and user friendly solution since I`m not very skilled as you all know ..so try to keep it simple (both the solution and the explaning)

Oh, and while the topic is save, load and remember, how does "groups" work? I`ve read a bit about them on the forum but I cant say I understand much. I could use another INI file I guess, one for temporary and one for permanent saves, but if groups are simple enough, I rather use those.

Thanks for all the help so far, hope you can make me understand this as well.

Image Edited by the Author.

Image Edited by the Author.

 
-

OMC

What a goofball

Registered
  21/05/2007
Points
  3516

KlikCast Musician! Guy with a HatSomewhat CrazyARGH SignLikes TDCHas Donated, Thank You!Retired Admin
5th July, 2008 at 19:02:36 -

Lemmee make a quick screenshot

 

  		
  		

OMC

What a goofball

Registered
  21/05/2007
Points
  3516

KlikCast Musician! Guy with a HatSomewhat CrazyARGH SignLikes TDCHas Donated, Thank You!Retired Admin
5th July, 2008 at 19:15:26 -

Image
Ok, the circle is the player, the square is the door.
I've got so many things I'm trying to remember, that I'm going to forget some and Jon & George will have to fill in for me again.
That's to save everything.

Now, on the subject of the "start of frame" loading thing you supposedly couldn't do. What I'd do, is set a global value on the title screen, depending on whether they are loading an old file or making a new one. E.G. Value 1 = 0 for new file; Value 1 = 1 for file 1; Value 2 = 2 for file two... etc. Then, at the start of the level, use the INI's "set current file" function to the INI that holds data for the corresponding file. You probably don't want that universal code there... if you jump to this level from another place, it will load perhaps it if you don't want to. Also, it will load your position in the house, as well. Say your character is at the position 1024 x 768 on the level, and they jump into the house level. If the house level is only 640 x 480, your character will disappear! Now let me do some more screenshot goodness. Hold a moment.

 

  		
  		

OMC

What a goofball

Registered
  21/05/2007
Points
  3516

KlikCast Musician! Guy with a HatSomewhat CrazyARGH SignLikes TDCHas Donated, Thank You!Retired Admin
5th July, 2008 at 19:29:10 -

Here comes the fun part.
Image
NOTE that there may be a better way to do this, but this is the system that I've figured out.
First, see that I'm comparing the Global value? DON'T GET CONFUSED HERE. I did this wrong. If you have Global Value 1 comparing the save game number, you'll want to compare a different one for this. Anyway, that's there to symbolize that you've just come from the house. You can set the global value to 1 at the end of the house level. It knows that it needs to load stuff, so here we go: First, it sets the Global Value back to 0 to keep this from looping infinitely. The next dot you encounter is under the INI. I'm setting the item to "Player X". This may get confusing, sorry. I'm in a sort of a hurry. The next one you encounter is under another counter. I've entitled this the "load" counter, and it keeps track of what step we're on. It's being set to one here. The next line: Is the "load" counter equal to 1? Set the Player's X position to the returned INI value. the next dot is setting the INI to "Player Y" for the next run. Then add one to the load counter. The next line: Is it equal to 2? set the Player's Y to the returned INI value. Then we set the INI value to Money, add to the load counter and continue. Next line, set the money counter to the INI value, set the INI to Life, add one to the load counter, continue. Next line: set the Life counter to the INI value, and set the load counter to 0. Now, if this setup doesn't work, it's probably because I should set the values on the same line as when I load them in the INI... but it's been awhile so I can't remember. I can't test it because I don't have a working setup. I realize this is probably REALLY confusing and jumbled... I'm usually better at typing explanations, but I'm feeling a bit hurried. So, if this doesn't make sense, yell at me and I'll clarify if Jon & George doesn't do a simpler explanation. I'll put some more screenies up if you need 'em. I'm going to review your questions again in a second to see if there's anything I missed.

 

  		
  		

OMC

What a goofball

Registered
  21/05/2007
Points
  3516

KlikCast Musician! Guy with a HatSomewhat CrazyARGH SignLikes TDCHas Donated, Thank You!Retired Admin
5th July, 2008 at 19:34:36 -

Oh yes, groups. I've never used them, since everything I know in TGF is from pioneering, not reading... but I'd imagine it's just what it seems. Say you have group 1 and group 2. Then, you could Have a "player X" in both groups, and they'd be separate entities; you'd have to switch groups to get to whichever one you wanted. That's my educated guess. On the subject of the way I used a step system to load things-- I don't know if that's how everyone else does it, there may be a way to do it in one condition for all I know, but that's what I do. Hope I've been a help.

 

  		
  		

Jon Lambert

Administrator
Vaporware Master

Registered
  19/12/2004
Points
  8235

VIP MemberWii OwnerTDC Chat Super UserI am an April FoolSSBB 3265-4741-0937ACCF 3051-1173-8012360 Owner
6th July, 2008 at 15:47:42 -

I was in Kansas yesterday and just got back an hour ago.

So files in INIs would be used for things like "Save File 1" and "Save File 2". Then in the file, you name groups for things like "Stats", "Items", and "Quests". Then, respectively, your items would be "HP" "MP" etc., "Slot 1" "Slot 2" etc., and "Quest 1" "Quest 2" etc. You would probably use names in place of "Quest 1" "Quest 2".

The system is organized as so:

File <- Group <- Item <- Value

The value is specific to the item, which is specific to the group, which is specific to the file. So, look at these:

File 1 <- Stats <- HP <- 40
File 2 <- Stats <- HP <- 20

These are saved in different places, because their files differ. The first thing the frame should do is define the file, that way, the groups, items, and values don't get saved to the wrong file or overlap something they shouldn't. Also, remember that if you want to save to a different group, you need to make it switch to that group, same for items. If a file, group, or item does not already exist, it will automatically create it, and if it does, it will overlap it automatically. In other words, you have to manually switch it to each group.

When you say groups, you mean groups in INIs, correct? If so, it would be easier if you just made it change the File to "Temporary", save groups, items, and values to that, then make an in-between frame that moves the values to counters, then from the counters to the INI again.

I have to go now.

 
Sandwich Time!Whoo!

JoyCheck & KeyCheck Widgets
For easy implementation of customizable joystick and keyboard controls.
http://www.create-games.com/download.asp?id=8364

Knudde (Shab)

Administrator
Crazy?

Registered
  31/01/2003
Points
  5125

Has Donated, Thank You!Clickzine StaffKlikCast StarVIP MemberGhostbuster!Dos Rules!I donated an open source project
6th July, 2008 at 16:09:46 -

I had a weird issue with TGF and not wanting to use INI's correctly when I was running the game from withing TGF, I had to compile as a standalone everytime.

 
Craps, I'm an old man!

Lönnemyr



Registered
  30/06/2008
Points
  69
6th July, 2008 at 19:13:10 -

Ok, big thanks guys, I think I got the INI to work, at least for now. But to be sure I`ll post the gam file for this new toy project here soon, so if you want, you could see if I got it right (much better/easier then print screen)? But before that I have a few more questions, again..

Well first question is not really "how do i do", more like "how will this work"..

Say I have a huuuuge worldmap (which this new toy project has), and ìt`s diveded into a grid (50x50). To be exact the frame is 2000x2000 and that leaves us with 1600 zones which is 50x50.
Now the reason for this big level is I want to know if tgf can "handle" this, lets say this is a game were the player moves with a "snap to grid effect". To build this worldmap you use a couple of diffrent looking 50x50 active objects and place these, one in each "zone", when you have done this it will be 1600 active objects in the game+ the player objects and all the "other" stuff.

Will this many objects make the game crash or lag? If that`s the case, then if all the objects are set to "inactive object if far from window" will this help? Also, remember that this would be a snap to grid game so even if there would be a little lag, it probably wouldn`t be noticed sinte the player character would not need to move "smoothly"?

And, if the game could handle this, what if I were to add another object on top of each of these other active objects? Would tgf still handle it, and if so, were is the known "limit" (1600+1600= 3200active objects+other counters and stuff)?

Well that is the first questsion, the second question is a "how do I do this" question..

We use the above example. Same game, huuuuge map, snap to grid and all that, now to the question. How can I create random events and stuff? For example, what if I want the player to have a chance to enconter a random event each time he move to a "wood zone"? How can I achive this? Say I have 3 diffrent events, the "nothing happens" event, the "player gets attacked" event and.. um.. the "player finds a pot of gold" event. If possible, explain how to make it so they have a diffrent %chance of happening.. if its possible that is.

Also, what if I have a "battle frame" in this game, which is always the same frame and the player is transported to this frame each time a battle occur. How can I "generate" random monsters so the player don`t always meet a goblin but sometimes an ogre instead? .. And finally, how do I make this ogre or goblin drop a "random loot"?

Thats all for question two, which actually was more like 3 questions in one but they were about the same thing and might have the same/similar anwsers.

Now, the third question (which is actually 2 questions).

Still the same game.. now, when the player moves to a certain spot..or object on the worldmap, a city for example. If I want a "pop up window" to appear were the player will get several options to choose from(buttons to press). Like "go the the tavern and hear the latest gossip" and things like that. How would you guys do this?
Only way I can think of is creating a new active object in the center of the screen, then create each button on that object and so on and when the player moves all the new objects dissapear/are destroyed. I´m not sure if that is stable/recomended/best way though so I`m asking for your opinion about it.
The other part of question three is concerning dialogs, again! Well, I remember that you didn`t really know the best way to do a typical "rpg dialog" but what is the best way to "fake" an dialog then? If the dialog will be very simple and not have ALOT of diffrent anwsers more like information, text, story conversation which contains no real choices.. at the most maybe a accept/do not accept option for when a npc asks the player to perform a quest. This, I belive could be done in many ways, again, how would you do it?
My though about it is to just create a new "active object" which will be centerd in the screen. Somehow stop the player movements untill the conversation is over. Then create a new "text object" on the active object(which would work as a background for the text). When player presses "enter" the text is destroyed, a counter is set to 1(is this necessary?) and the next text appear triggerd by the counter and so on untill the conversation has ended. Then, the last text is destroyed along with the active object and the player regain the abillity to move around freely again.

Sorry about asking and asking but it`s the fastest way to learn. Experimenting during the day and asking questsions during the evening. Learning from people who already know about "stuff", at this pace, I can get back to my original project in no time.

Image Edited by the Author.

Image Edited by the Author.

 
-

Jon Lambert

Administrator
Vaporware Master

Registered
  19/12/2004
Points
  8235

VIP MemberWii OwnerTDC Chat Super UserI am an April FoolSSBB 3265-4741-0937ACCF 3051-1173-8012360 Owner
6th July, 2008 at 21:41:05 -

1600 will always crash TGF. I was making a game with a lot of objects and it stopped working. I asked Clickteam, and the result is:

Clickteam
The Games Factory can only handle up to 256 active objects.


Yeah, any more than that can only be handled by Multimedia Fusion and Multimedia Fusion 2, the latter more so than the former. Is it really necessary for every grid square to be an active object? If they are just asthetic, like trees and grass and such, they should just be backdrops and quick backdrops. Explain this world map further and maybe I can better help you.

For random things happening, the events should go as such:

Player lands on "Wood Zone"
+ Only one action when event loops
= Set Counter (or Alterable value) to Generate random value (2)+1

Counter equals 1
= nothing (this event doesn't need to exist if it wont say nothing happens)

Counter equals 2
= Jump to frame (whatever frame has the battle engine)
or
= Activate group "Battle Engine" (if it runs in the same frame)

Counter equals 3
= Add to Coins 500

The generate random number function can be found in the expression editor under System (the expression editor is the part where you enter numbers and equations). For the battle frame, at the start it should use the random number function to come up with a random number, then use events to make the frame know which badguy to fight when a certain number comes up.

For the window, you could make an object that is the window, then make the buttons and put them on top. Make them start invisible, then they become visible when necessary, and become invisible again when its done. At the start of the frame, the editor should make the objects come to front in order of bottom to top, then make them invisible. For different texts, just make it change the text of the button and question based on what space you are on.

For dialog, you can make an active object appear with a text object on top. Then you make the text set itself to strings stored in the alterable strings of the object (I don't remember if TGF has this feature, if not, then just type the texts into the event editor). They press enter to advance the text as many times as the alterable value of the object. Once it has been advanced that many times, pressing it once more will make the objects invisible until they need to be used again. When it gets to a choice moment, you could make it refuse to take input from Enter and press either up or down (or sub in your own keys) to continue the conversation.

You can choose whether these objects are destroyed and created every time, or if they become invisible and visible. The first option makes the game run faster overall, but it might slow or stop when things are created and destroyed alot. The second makes it run slower overall, but it might crash less because it isn't all of a sudden demanding too much from the system memory.

I have no problem helping you at all. It's actually pretty fun. However, I have to get off the computer now. I'll check tomorrow for any responses and help you further. My having to get off the computer is why I didn't explain all of this further than I did.

 
Sandwich Time!Whoo!

JoyCheck & KeyCheck Widgets
For easy implementation of customizable joystick and keyboard controls.
http://www.create-games.com/download.asp?id=8364

OMC

What a goofball

Registered
  21/05/2007
Points
  3516

KlikCast Musician! Guy with a HatSomewhat CrazyARGH SignLikes TDCHas Donated, Thank You!Retired Admin
7th July, 2008 at 08:39:06 -

Text gets treated as a backdrop, so do this first, unless you want the text box to be obscured by the Active Object text box holder thingy. Right click the text, Click "object preferences", click the "extra" tab, and then uncheck "display as background". (Or you could have the active objecy paste itself into the background, but that would be useless and messy ) In TGF, to add more text strings, right click the text object and click "edit Data strings". You can now add sentences.

QUOTE TIME!
J&G Lambert said:
"Player lands on "Wood Zone"
+ Only one action when event loops
= Set Counter (or Alterable value) to Generate random value (2)+1"

Just to be clear, he put the +1 on the end, because it will actually be able to return three different values: 0,1, and 2. +1 makes it still have three values, but then you can just have "When value equals 1" instead of having to add another qualifier for when zero has been randomly picked. (Say, you want it to jump to another level when the first value has been picked. If you left it so that it could return zero, you couldn't put "when value equals zero" or it would automatically jump to the next frame at the beginning of the level. See what I mean? This system allows you to put use all the returned values without getting a mess on your hands.) I'm not sure if that made sense, but just remember that when you enter a number in the random generator, it's actually going to be able to return one more value. Sometimes you need this, say if you're doing a random X position, but in most cases you're probably going to want to add one on there. Heh, you may have already known all that.

I too have enjoyed assisting you.

Image Edited by the Author.

 

  		
  		

Lönnemyr



Registered
  30/06/2008
Points
  69
7th July, 2008 at 15:46:27 -

Good that we are all enjoying ourselfs, thats the way it should be!

max 256 actives! Damn, does that apply even if there is only like 20 DIFFERENT active objects which have been copyed all over the map? And if that is so, then what about background objects? It would be a little more complicated setting all the events if they are backdrops but could I have 1600+ backdrop pictures?
My original idea was having a couple of diffrent titles and set events to them. Like for example, the forest title would have that random enconter event and I would only need to write it once since all forest titles on the map would actually be the same. Damn that was a sweet idea, thought it would go like a dream creating the world map

If I really cant have all those objects though, the only way I can think about doing it is way more complicated and takes alot more time. With the help of the XY conters that the player can see in the upper left corner decide what happens in that specific zone. However, then I would end up with over 1600+ events instead, that might not either be such a good thing..

No grid is "just asthetic", except most of the roads which is supposed to be "encounter free", still I might want to add some special events to the roads here and there..

Here is a list of what grids I have and what I want them to do.. for now.

tavern grids - save game and pay for rest(get back hp).

city grids - get quests/information, save game and rest (get back hp).

road grids - nothing, they are supposed to be "safe" to travel by so nothing should happen (with a few exceptions).

sea grids - not possible for player character to pass (this I have a big problem with becuse of my "snap to grid" movement).

river grids - chance of special random "river encounters".

mountain grids - chance of special random "mountain encounters".

grassland grids - chance of special random "grassland encounters".

woodland grids - chance of special random "woodland encounters".

Harbor grids - Not really decided if I`ll even keep these. But if I do they will allow player to ride a boat over the sea grids".

Temple grids - Get back hp for free, maybe something else, who knows.

And then there is the special grids..

fog of war grids - well these wont work since I was planning to have one of these in every grid. Got to think of something else.

fog grids - grids which are grey and "move" when player move, I`ve not given them much thought though. My idea was that they should be on top of the other grids, covering them. BUT, When the player move to the fog grid it would become transparent and reveal the "real" grid. When the player moves away again, then they would go back to be grey and foggy.


I took a screenshot of the project which also has some notes, feel free to help me solve this problem in anyway you can think of. Of course, if nessicary I can shrink the worldmap but I would like to keep it rather big. The big worldmap is the whole point of this "adventure game" test. Well well, thats that, here is a screenshot I took which shows how it looks, it got a bit messy..

[URL=http://img229.imageshack.us/my.php?image=helpmefc5.png][IMG]http://img229.imageshack.us/img229/9784/helpmefc5.th.png[/IMG][/URL]

I`ll see if I can make sence of your ideas of the conversation and pop up window in tgf now, I probably check back again tomorrow if I got the oppertunity to do so.

 
-

OMC

What a goofball

Registered
  21/05/2007
Points
  3516

KlikCast Musician! Guy with a HatSomewhat CrazyARGH SignLikes TDCHas Donated, Thank You!Retired Admin
7th July, 2008 at 16:00:41 -

Well the pic didn't seem to work. I only had time to skim what you wrote-- so I'll just say this and reread it in a bit. You are limited to 256 objects, they could all be the same object and the limit would still be there. As far as I know (which is pretty far. ) You can have as many backdrops as you like, because at runtime it blops all the backdrops into one image. I'll see if there was anything else you wanted in a bit.

EDIT: Well, I got the pic: http://img229.imageshack.us/my.php?image=helpmefc5.png But I don't have time to read it. Sorry. I'm sure J&G will help you.

Image Edited by the Author.

 

  		
  		

OMC

What a goofball

Registered
  21/05/2007
Points
  3516

KlikCast Musician! Guy with a HatSomewhat CrazyARGH SignLikes TDCHas Donated, Thank You!Retired Admin
7th July, 2008 at 16:17:44 -

Also, had this to say: I think you could detect what type of gridspace the character is on by keeping it in a "databank" if you will. Arrays, INI's (I guess), Values, all could work. You could compare the gridspace's number to a certain entry in the databank, and then it would do the correct action. (1 could be river, 2 could be grass, 3 could be road... etc.) That would, however require you to manually enter in each grid's type. I'm absolutely positive what you're wanting to do is possible, but I can't devote too much brain energy on it right now. It's probably something simple.

 

  		
  		

Jon Lambert

Administrator
Vaporware Master

Registered
  19/12/2004
Points
  8235

VIP MemberWii OwnerTDC Chat Super UserI am an April FoolSSBB 3265-4741-0937ACCF 3051-1173-8012360 Owner
7th July, 2008 at 17:48:18 -

I'm going to answer this more fully later. I cant now because a thunderstorm has appeared and I'm stuck using a PSP. I'll post my own idea later, but to variate on OldManClayton's idea, you could use an array to put 1600 values, each representing a grid square. If you set the player's hot spots to the top corner, then you can have an event that takes the X and Y positions and divides them by 50 to know which square they're in. But that and the idea I haven't yet posted seem too complicated.

 
Sandwich Time!Whoo!

JoyCheck & KeyCheck Widgets
For easy implementation of customizable joystick and keyboard controls.
http://www.create-games.com/download.asp?id=8364

Jon Lambert

Administrator
Vaporware Master

Registered
  19/12/2004
Points
  8235

VIP MemberWii OwnerTDC Chat Super UserI am an April FoolSSBB 3265-4741-0937ACCF 3051-1173-8012360 Owner
7th July, 2008 at 20:11:06 -

I read this and thought of a way for you to implement it the way you wanted it.

Then I decided it wasn't that great.

Firstly, make one active for each tile. Then make backdrop versions of each tile that has a lot in one area (tiles that will exist as more than one adjacent, for example, sea tiles will have a lot of tiles adjacent to each other). Now you make the events that define what happens when you land on each tile. In each of these events you should also have it activate a flag on the character, and for every step it takes, unless it lands on a different kind of tile, it should continue to assume that it is stepping on the same tile.

Attach active objects to the character so that you can make it impossible to move in the direction of that object if it overlaps a sea tile. That is the only good part of my original idea.

If the map gets so big it can't accomodate even this or the other methods mentioned by me and OldManClayton, maybe you could make multiple world map frames, and when the player goes too far off the edge of one map, it shows some cool looking loading or transition frame, then moves to another world map. Maybe graphics will help:

Storyboard
|----|
1| | World Map 1 -----
|----| |
___________________ |
|----| |
2| | World Map 2 <| |
|----| | |
___________________ | |
|----| | |
3| | Transition |<---|
|----|
___________________

When you walk off the right edge of World Map 1 (Frame 1) the game jumps to Transition (Frame 3). Transition contains either a simple loading screen, or maybe a graphic of the character walking down a road or something. Once the transition is done (maybe you can also use the transition frame to temporary save, or do work with global values and strings), the game jumps to World Map 2 (Frame 2) as the character walks in from the left. That way you can have more objects and a bigger world map.




 
Sandwich Time!Whoo!

JoyCheck & KeyCheck Widgets
For easy implementation of customizable joystick and keyboard controls.
http://www.create-games.com/download.asp?id=8364

OMC

What a goofball

Registered
  21/05/2007
Points
  3516

KlikCast Musician! Guy with a HatSomewhat CrazyARGH SignLikes TDCHas Donated, Thank You!Retired Admin
7th July, 2008 at 20:55:25 -

If I read what Jon & George Lambert said correctly, he had an idea similar to one I had... Have big chunks of adjacent grid tiles that are the same in one object. You could possibly do it in active object fashion in this way if it cuts the number down enough. Also, I just realized that you could try to have randomly generated world map, a la Pixelthief's recent game whose name I've alredy forgotten. However, to make the maps not ridiculous, it would probably employ some complicated stuff to make it sensical. Ya know, like a river tile has another one next to it, with another, and another... and all the road tiles have road tiles next to them, etc. The level jumping suggestion is a very plausible solution, many good games have employed a Zelda-esque map scrolling system.

Jon & George, do you mind if I just call you "J&G"? It's awfully time consuming to type "Jon & George Lambert."

Oh and, Lonnemyr, I thought I'd just say that from the screenshot and the concepts you're trying to make, I think your game will shape up nicely. You definitely have the mindset for it.

 

  		
  		

Lönnemyr



Registered
  30/06/2008
Points
  69
8th July, 2008 at 07:42:37 -

Arrays is something I`m not familiar with at all, not even sure what they do.. Same goes for flags. The more then one frame worldmap idea could work, but it would require more loading and saveing though. If I were to do it wouldn`t the best way to do it be to finish one part of the map, with all events the game requires to run, then copy that frame and adjust those things which would need to be fixed/changed?

However, about the "backdrop ideas" you are both suggesting. How will I be able to set events?`The only thing I can think of using is an event that says something like "if X counter is blabla and Y counter is blablabla - Then this..." and that would leave me with.. um, one event for each grid? I`m sure what you wrote was something smarter then that, but I didnt get all of it becuse of the "array" and "flags".
Jon & George Lambert`s second idea was kind of confusing, it would be great if you could explain it in further detail. I didn`t even get the "how player won`t be able to move on top of water tile" part.

At the moment me movement and XY values work like this;

Uppon pressing"up arrow" - set player position at (0,-50) from player - subtract 1 from Y counter.

And then I have one of these events for each arrow key, I thought that would be the most simple way do to it.

The randomly generated worldmap is another intersting idea, it has crossed my mind but I decided that I would leave it be untill I finish the "static" worldmap. Then, if I still feel like it, I could add another option in the main meny which said "random generated worldmap" ..or something.
The static could be like a story mode or something like that if I were to add it? But I`m sure randomized maps isn`t as easy so I start out with this not so randomized huge worldmap and get it to work. First things first as they say!

OldManClayton

Oh, and thank you. I`ll hope you`r right. Try my best to make this a good game even though it was meant as a test.

 
-

Jon Lambert

Administrator
Vaporware Master

Registered
  19/12/2004
Points
  8235

VIP MemberWii OwnerTDC Chat Super UserI am an April FoolSSBB 3265-4741-0937ACCF 3051-1173-8012360 Owner
8th July, 2008 at 12:02:00 -


Originally Posted by Lönnemyr
If I were to do it wouldn`t the best way to do it be to finish one part of the map, with all events the game requires to run, then copy that frame and adjust those things which would need to be fixed/changed?


That is probably the best way, it's simple enough and less work.


Originally Posted by Lönnemyr
However, about the "backdrop ideas" you are both suggesting. How will I be able to set events?


Flags are like on/off switches for active objects. They exist on the same menu as the alterable values when you are defining actions in the event editor. You can use them to make certain things happen only when a flag is on or a flag is off. So, what you should do with the flags is this:

"Player" overlapped "Grassland Tile"
+ Only one action when event loops
= Set counter to random value (2)+1
Turn flag 1 on
Turn flag 2 off
Turn flag 3 off
Turn flag 4 off
Turn flag 5 off
Turn flag 6 off
Turn flag 7 off
Turn flag 8 off
Turn flag 9 off
Turn flag 10 off

"Player" is stopped (or whatever defines that they aren't moving in your engine)
+ X "Player" is overlapping "Group 0"
+ Flag 1 is on
+ Only one action when event loops
= Set counter to random value (2)+1

The X in front of the second condition in the second event is to show that you should negate it. The "Group 0" is representative of a group containing all the kinds of tiles. That way, you don't have to put each tile individually. Repeat the first event for each tile, with the different effects, then the second event for each flag. Use different flags for each tile. You have to make sure to turn off the other flags in each event to make sure that they don't accidentally activate multiple events at once.


Originally Posted by Lönnemyr
I didn`t even get the "how player won`t be able to move on top of water tile" part.


Your movement works that when they press a key, they get moved 50 pixels one way or the other, so create four new actives that are 50 pixels by 50 pixels and add this event and this condition to it:

The new event:

Always
= Set "Up Block" position to (0,-50) from "Player"
= Set "Down Block" position to (0,50) from "Player"
= Set "Left Block" position to (-50,0) from "Player"
= Set "Right Block" position to (50,0) from "Player"
To the original event:

+ Up Block is not overlapping "Sea tile" (change the name of each block to the respective direction and add this to the event to move each direction)

That way, when one of them overlaps a tile that the player isn't supposed to be able to walk over, the engine refuses to let them move in that direction.


Originally Posted by OldManClayton
Jon & George, do you mind if I call you "J&G"?


Go ahead, if it was me, I don't think I could type that out every time either. Also, did you check your smiley thread?

 
Sandwich Time!Whoo!

JoyCheck & KeyCheck Widgets
For easy implementation of customizable joystick and keyboard controls.
http://www.create-games.com/download.asp?id=8364

Lönnemyr



Registered
  30/06/2008
Points
  69
9th July, 2008 at 07:40:44 -

What I`m still unsure about is how do I set the "Player" overlapping "Grassland Tile" event?
I would know how to do it if the grassland tile was an active object, but you said I should make
them into backdrops?
As far as I know, there is no way to choose a specifik backdrop object in the event meny, is there?
All I see is following options;

Collisions

Another object (refering to an specific active objects)
Overlapping another object (refering to an specific active objects)
backdrop (refering to ALL backdrops)
overlapping an backdrop (refering to ALL backdrops)

unless there is something I`m missing this is how it works, so if my tiles were to be backdrops I could not use the collisoin
event to specify a tile, becuse if I selected lets say "overlapping an backdrop" it would run the event
no matter which backdrop the player were to step on, be it land, sea, monutain of forests.

The "active block" objects were a great idea though, works like a charm. But like all the other objects
it will only work if the sea tile is an active object? Sure I could "build a frame" of active sea objects and
put backdrop sea tiles inside (is this what you have been hinting at?). It sure is a possibility to do this with all places were a
big area is covered in the same tile, however. It would still require alot of actives, not to mention, I would
have to count them all of the time to make sure I don`t place to many (still got to have room for at least 15+
"other" actives as well, just in case I need it.

I`ve been counting and if I were to use active objects on all grids I could only do frames about the size of
750x750 (or 800x600) which is really tiny. Hence to make it an epic worldmap I would need ALOT of frames and it would
still not seem so epic since it would be hacked to pieces and the player would not get a good overview of the world.
If I were to hack the map in pieces I prefer 4 frames of equal size. Still, it would rob the player of the abillity to see the
whole map which would be a really cool feature.

Now, lets say I used the "put backdrops inside a frame of actives idea" when I cover big areas in the same
tile. It would probably increase the size of the frames a little, maybe they would be able to be twice the size in some cases.
But, all frames should be the same size if you split your worldmap in pieces, otherwise it might be confusing
for the player.
Becuse some areas of the worldmap might have "big" areas of woodland or a big sea while other might have
more detailed landscape you would end up using 200 actives in some frames and maybe 50 in another.
So, even if some frames had the capabillity to be really big I would still need to adapt the frame to a size which
would work for every other worldmap frame.. so all it takes is that one piece of the map got some details and, *poffs*,
the frame size didn`t get that much bigger anyway! :/

What about these two ideas then..

First idea; I dont know if this is possible but it might be. Say you had this big worldmap but had some way do create/destroy actives
that are outside the screen. then all objects could be actives which would make it easy to set events and such. BUT, there would
have to be an event for each grid that decides when the tile should be created/destroyed. And it would be kind of hard to build the
worldmap as well.

...something tells me that all those events and all those objects being destroyed and created all the time would
have e big impact on the performance.

The second idea might be a better one, compared to the first.

What if I made all the tile:s backdrops and made one event for each frame using the XY counters in the upper left corner.
Sure, I would need to be halfcrazy to try it since it would take forever, but would it work? Would all the events make tgf go into
"crashnburn mode" or run laggy? If I`m correct, they would not all be running at the same time would they?

This last option would however, if it worked, let me create a worldmap in whatever size I wanted. Also I could use active objects for
citys and such. Even if it would take time, would you recommend this option or would there be complications? To many events?

Might be a bit early to discuss another question since we`ve not found a solution the the tile problem yet. But if possible
I would like to have a "fog of war" effect on tiles that the player have not yet visited and I can think of 2 ways to do this.

a) if all objects on the frame would be actives (which would give me a really small frame) I could have all tiles play a animation
which would be just a black box, uppon moving to this tile it would change the animation.

b) if I used mixed tiles, the "frame" idea, I could have the active objects play animation and have another "fog of war" backdrop
on top of all the backdrop tiles and destroy them when player moved there.

But there is a "problem" with both ways, if all grassland active objects are the same, then wouldn`t they all change animation? And
for the backdrop objects I would need 1 object for EACH grid, otherwise when one is destroyed, wouldn`t it happen to them all? Maybe
that wouldn`t happen to the backdrops? Um, well ideas about how to do this? Thought I might as well mention it becuse it is connected
to the size of the worldmap, in a way.

[EDIT; just noticed, stupid me. You cant destroy a specific backdrop! O__o]

And another thing I`ve been wondering about, whats the diffrent between the "run this event once" and the "only one action when event loops" conditions?

Image Edited by the Author.

 
-

Jon Lambert

Administrator
Vaporware Master

Registered
  19/12/2004
Points
  8235

VIP MemberWii OwnerTDC Chat Super UserI am an April FoolSSBB 3265-4741-0937ACCF 3051-1173-8012360 Owner
9th July, 2008 at 09:35:56 -

For the player overlapping Grassland tile event, I assumed you would either be using all actives or actives and frames.

About the frame of the sea, that is what I was hinting at.

You could give the illusion of a full map by making the character continue walking off the map automatically and the frame goes straight to the other map so it looks like it is one map.

The first one, if it didn't crash, would indeed be a big impact on performance.

The second one might work better, but as you said, it would take forever and you would have to be crazy or incredibly patient to do that.

Maybe if you made the fog of war work in larger general areas, like maybe nine by nine or covering new entire areas, maybe a mountain, and when you take one step on the mountain, the entire mountain is revealed.

"Run this event once" works so that the event can happen only once in the entire frame, only if you restart it can it happen again. "Only one action when event loops" means that it will only do what it should once while what causes it is happening, e.g. "Player" overlaps "Grassland Tile", the actions you put will keep happening while it overlaps the tile, but if you put "Only one action when event loops", then the actions will happen once while you overlap the tile, and wont happen again until you stop overlapping the tile and overlap it again. "Repeat" will do an event a certain amount of times in a row each time the event takes place. "Restrict actions" will make the event impossible for a certain amount of time after the frame starts.

 
Sandwich Time!Whoo!

JoyCheck & KeyCheck Widgets
For easy implementation of customizable joystick and keyboard controls.
http://www.create-games.com/download.asp?id=8364

Lönnemyr



Registered
  30/06/2008
Points
  69
9th July, 2008 at 12:56:05 -

Ok, I think I`ve decided. This is a toy project so I shouldn`t think to much about it, I`m making it to learn anyway.

This is how I`ll do it.. Each frame will be 800x600, same size as the screen resulotion. I`ll use active objects in every grid, except sea and road tiles. For the sea I will build a frame of actives around some backdrops (mainly becuse I dont think I will have much events occuring on the sea even if the player would be able to move there somehow, and for he road I will just use backdrops since they will mainly be "event free". And then I could set those "special" events by using the XY counters if it`s just for those few grids.

there will be 196 grids in each screen, 196 active objects (- 20-30 becuse each frame will probably have some roads and sea tiles). Add to this 24 other active objects which will be black boxes the size of 150x150, these will work as "fog of war tiles".

I will probably skip the in between loading screen and make the player go straight to the next fame, which would hopefully give the illusion that the camera just moved a bit.

Hence, each frame will be build with 220 active objects (- 20-30 thanks to backdrops). I will then have about space for about 50 more actives which would be more then enough for the player, the four block objects, some dialog and maybe some fog tiles.

Thing is, will this be laggy becuse I`ll use so many actives? or is 256 just a "magical line" which tgf just wont handle? Remember this will be a snap to grid movement so a little lag would probably be OK.

If it turns out laggy I`ll use the "frame of actives+flag" idea on more places and further decrese the amount of actives on the screen, but I rather not. I like actives and actives like me

Jon & George Lambert

Thanks for the explanation, I thought it might be something like that but I wanted to make sure.


Now I get back to clicking, but I`m sure there is still some things which I need to ask about later on. Meanwhile, thanks for the help all of you.


[EDIT; well I got another problem again, heh.. This time it got to do with the fog of war and player position when player jumps to another frame. See, I have one fog of war object which is created all over the map at the start of the level, it looks and work well within the frame, BUT when the player leaves the frame how am I supposed to make the game remember what the player have explored? I will have to enter some data into an INI object, that I understand but I cant figure out exactly how I`m supposed to do this.

second question is, how am I supposed to make it so if player exit the map at location X800 Y6 he will enter the next frame at x801 Y6? This is probably not so complicated as I make it, as usual.]

Image Edited by the Author.

Image Edited by the Author.

 
-

Jon Lambert

Administrator
Vaporware Master

Registered
  19/12/2004
Points
  8235

VIP MemberWii OwnerTDC Chat Super UserI am an April FoolSSBB 3265-4741-0937ACCF 3051-1173-8012360 Owner
9th July, 2008 at 14:53:31 -

If each frame is going to be 800 x 600, then wouldn't the player appear at (0,6)? Unless the frames are using 1600 x 600 and only using 800 x 600 of that space. Anyway, if you aren't using all the global values, then you can make the last two values (or any other two values, but the last two and first two are easiest to remember) to store the position information. For example, if your map looks like one big square cut into four corners, then you can just set the values as so:

Moving off the right side:
First value: Y position of Player
Second value: 2

Moving off the left side:
First value: Y position of Player
Second value: 2

Moving off the top side:
First value: X position of Player
Second value: 1

Moving off the bottom side:
First value: X position of Player
Second value: 1

Assuming there will only be four maps, and the maps make a square (not a line, or zigzag or anything), then the following method will work. Setting the values the above way will work as such.

From now on, assume that your map is situated this way:


Each disk represents one frame of your four frame world map.

When the second value equals 2, that means that the player will enter from the horizontal side, so when moving to the right, it sets the X position to 0 and the Y position to the first value. When moving to the left, it sets the X position to 750 (800 minus 50, because your character moves 50 pixels at a time, correct?) and the Y position to the first value.

When the second value equals 1, that means that the player will enter from the vertical side, so when moving to the top, it sets the Y position to 550 (600 minus 50) and the X position to the first value. When moving to the bottom, it sets the Y position to 0 and the X position to the first value.

For the fog of war question, you'll have to give each fog of war tile a number, then save it in the INI this way:

Set Group to "Fog of War"
Set Item to Number of Tile (as in, which fog of war tile it is, this is like 1, 2, etc.)
Set Value to 0 (if the fog is there) or 1 (if the fog isn't there)

To give each fog of war tile their own number that will always be the same, in a Start of Frame event, move over to the Fog of War object and choose to set Alterable Value A to Spread Value 1. I don't remember how to do this in TGF1, sorry, but it can be done. Then, in an event like Timer equals 1 second, make the INI go through all the items in the group "Fog of War" and for each value that is 1, it destroys the fog tile.

 
Sandwich Time!Whoo!

JoyCheck & KeyCheck Widgets
For easy implementation of customizable joystick and keyboard controls.
http://www.create-games.com/download.asp?id=8364

Lönnemyr



Registered
  30/06/2008
Points
  69
10th July, 2008 at 13:32:22 -

Jon & George Lambert

You might be right, at the new frame it will be 0,6. I were thinking like alla the frames were like one and the same, you understood though which is good. I dont think I`m using all Global values, but the more I work on the small details the more values I find myself using, it`s like "for this to work I need that, and then I need that too..."

I think I`ll try to make it 9 frames now that each one got so small (it is alot of grids but the map looks really small when you look at it. So unless I find some reason not do, the map will look like this;





I found myself having some problem with the dialog yesterday, it`s kind of complicated to describe the problems this time since I`m not relly sure what`s wrong(or right either for that matter). So, any idea were I can upload the gam file so you guys could see it? It`s a bit messy but at least I named all tiles and event groups, it would be a big help.

For the fog of war tile, then I cant copy the same tile then if I have to name them? I will have to have 24 unqie tiles for each frame, am I correct (which mean it will be even more objects to scroll by in the event editor)?

 
-

Jon Lambert

Administrator
Vaporware Master

Registered
  19/12/2004
Points
  8235

VIP MemberWii OwnerTDC Chat Super UserI am an April FoolSSBB 3265-4741-0937ACCF 3051-1173-8012360 Owner
10th July, 2008 at 15:05:10 -

You don't need 24 unique tiles, just 24 tiles, then spread value 1 in Alterable Value A. Spreading is an action that gives each of a certain object a number starting at the youngest of the objects to the oldest. So if you have 5 of one object in this order of 1 being oldest and 5 youngest: 1 2 3 4 5, and decide to spread value 1, their values will be in respective order 5 4 3 2 1. It starts with the youngest (5) which is set to the spread value (1) and moves to each one with one higher value than the last. That way, the 24 tiles will be number 1 to 24 from youngest to oldest and will always be number the same way, making it possible for each to be treated differently if refered to by their Alterable Value A. If you can understand that...

For your file, you could upload it to Mediafire, zshare, box, filedropper, or if you have a Google account (Gmail or other products) you could upload it to a Google Page, which you can create with the Google Page Creator at labs.google.com

 
Sandwich Time!Whoo!

JoyCheck & KeyCheck Widgets
For easy implementation of customizable joystick and keyboard controls.
http://www.create-games.com/download.asp?id=8364

Lönnemyr



Registered
  30/06/2008
Points
  69
13th July, 2008 at 08:28:23 -

I`m not sure if I understand what you meant with spreading ALterable Value A?

Anyway, here is the gam file. If you have time please take a look at it.
http://lonnemyr.googlepages.com/home

Let me explain about a few changes in project so you wont be confused. First of all I found some "old" pixelart I did a while ago(but I`ve not put in in there yet, sorry) which I thought I could save me some time if I used it for this project. But this made me change the game "theme" from medieval fantasy to fallout like game world.

The main idea is the same though, besides the artwork there is only one more thing I changed and that is the worldmap
concept. Yes I changed it AGAIN, heh. Well, I came up with another way to create my "huge" one frame worldmap so I couldn`t resist trying it out, I`m doing this to learn anyway. Now the worldmap is 2600x2600 which I consider a good size for this gameworld.
Instead of using alot of actives I`ve been using backdrops to paint the entire map. The exceptions are the water which I have build a "frame" of actives around and then placed backdrops inside.

So for the random encounters then? well I figured that since I changed the worldmap settings I could try using "danger zones" instead of "tiles zones". Since the worldmap is more like a big wasteland now I thought the danger zone idea would fit this type of game well. Basically the "danger zones" are active objects of diffrent sizes, each one are pretty big, like ~500x500. This way I won`t end up using alot of actives to set my encounters, besides the danger zones I will use some small zones for special encounters and so on (which I can afford to do now).

Still, a bigger frame will come with sacrifices. A big map require alot more fog of war, so unfortunally, to make it work I had to make the fog of war tiles bigger, they went from 150x150 to 250x250 to make this big map possible. However, since tha map is so much bigger in my opinion it ok since there will still be as much to explore (still the same amount of fog of war tiles to "remove").

At the moment the worldmap has this many actives;

Active water 2: 15
Active water 1: 27
Player : 1
Block objects : 4
Textbox : 1
Status Bar : 1 =49

Danger Zones:

Danger zone A : 1
Danger zone B : 5
Danger zone B2 : 2
Danger zone C : 2
Danger zone D : 1
Danger zone D2 : 1
Danger zone E : 5
Danger zone F : 1 = 18

FogOfWar Objekt(250x250) : 121st

Which comes to a total of 188 active objects out of the 256 possible. This leaves alot of room for me to use actives for special events/locations which I mentioned earlier. Of course I have no idea about how laggy this will be but I think it should be ok, if not I could in worst case sceniaro make the fog of war 300x300 and/or "clean up" the danger zones and the water tiles a bit (I think I was kind of "generous" when I placed them, it could probably be done alot better and with less actives).

Well that concludes this post, I left some comments in the "World Map" frame, make sure to check it out becuse thats were
all the "action" is. Oh! And don`t bother about the "character creation" frame, "load game" frame, "intro" frame, "main meny"
frame etc.. these are not finished and especially the "character creation" frame might not even happen, just there to make me
remember to give it a try if everything else goes well.

I made a big post again.


Image Edited by the Author.

 
-

OMC

What a goofball

Registered
  21/05/2007
Points
  3516

KlikCast Musician! Guy with a HatSomewhat CrazyARGH SignLikes TDCHas Donated, Thank You!Retired Admin
13th July, 2008 at 10:17:01 -

Hey guys, I'm not spending much time around TDC lately because of the server issues... I may pop into this topic once in awhile, but I'll probably leave the service unavailable frustration to you guys until it's fixed. Just wanted you to know I didn't abandon you randomly.

 

  		
  		

Jon Lambert

Administrator
Vaporware Master

Registered
  19/12/2004
Points
  8235

VIP MemberWii OwnerTDC Chat Super UserI am an April FoolSSBB 3265-4741-0937ACCF 3051-1173-8012360 Owner
13th July, 2008 at 14:25:33 -

For your movement blocking, the problem is simply that you have the holding events wrong. The right block should be at 50,0 to the player, the left block at -50,0. You have them reversed. Negative X values move to the left, positive values are to the right.

For the battle frame, the global value forces the player back to the battle frame again. To fix this, make the game set the global value 11 to 0 at the start of the battle frame.

For your dialog box, it is in the wrong position. Either make the game set it's position to 200,194 at the start of the frame, or place it there yourself in the level editor. Next, place it in the inside corner (against the edge of the stripe border).

Adding "plus #", where "#" is any number lower than the first will make it randomize for values between and including the two, so (5)+1 gets values 1,2,3,4, and 5.

In fixing the battle area problem, your engine has a new problem: when you return to the frame, your position starts at 0,0.

To make a string object invisible in TGF1, make the action "Change alterable string" and set it to "" (the default). If you change the string or set it to a paragraph, it will automatically become visible.

Here is the new gam. file. I have put comments in the world map events where I have changed things. http://jonhlamb.googlepages.com/Enigma10save.gam

 
Sandwich Time!Whoo!

JoyCheck & KeyCheck Widgets
For easy implementation of customizable joystick and keyboard controls.
http://www.create-games.com/download.asp?id=8364

Lönnemyr



Registered
  30/06/2008
Points
  69
3rd August, 2008 at 17:09:43 -

I`ve been terrible busy with work (and still am), but I noticed that a bug in the version of the gam file I got from Jon & George Lambert. The movement blocking seems to "crash" after the first random event has occured? I doubble checked the block events and if I`m not blind, there is nothing wrong there.

Also, as you said the player seems to spawn at a diffrent location, 0,0. I don`t have the access the the game on the computer I`m on right now so I can`t give more detailed information about it. However I do know that the game is supposed to load temporary save information from the INI, which I have a event for. It worked when I tested it earlier, maybe some other event is preventing it or maybe I just deleted something I should`t have by accident when I was cleaning in the event editor.

I have not been able to work on this project besides looking at the notes you left me and some new grapic, so the file you uploaded is till the most recent save.


I have more questions but I`m in a hurry, so I make another post another day. I`m still hanging around even if I dont have time to klick as much right now as I had earlier this summer

 
-
   

Post Reply



 



Advertisement

Worth A Click