Board index » Present Evidence » Games

Page 13 of 42[ 1674 posts ]
Go to page Previous  1 ... 10, 11, 12, 13, 14, 15, 16 ... 42  Next
 


Re: The PyWright Casemaker Thread - beta 10.7 (nov30)Topic%20Title
User avatar

I'd say

Gender: Male

Location: Belgium

Rank: Moderators

Joined: Thu May 29, 2008 10:49 am

Posts: 2480

Saluk, Got a couple of thingsto discuss with you.
Got msn, irc or something similair?
Re: The PyWright Casemaker Thread - beta 10.7 (nov30)Topic%20Title
User avatar

Gender: Male

Rank: Prosecutor

Joined: Thu Mar 06, 2008 8:36 pm

Posts: 770

msn: saluk@flashmail.com
irc: #pywright on irc.freenode.net
Creator of PyWright, the lovable case construction system!
Also visit the PyWright post.
Re: The PyWright Casemaker Thread - beta 10.7 (nov30)Topic%20Title
User avatar

Gender: Male

Rank: Prosecutor

Joined: Thu Mar 06, 2008 8:36 pm

Posts: 770

Progress report on beta11:

I very optimistically had this idea that I would be able to finish the release in 2 weeks, that didn't happen, but I don't feel too bad about it. KSA was right, I was too code master guru before, so I am trying to be more diligent from now on. I am basically doing major surgery, drilling deep into the engine, ripping out bad code and replacing it with a better design. Nothing is accessible from wrightscript yet, but I am almost to the point of hooking things together again and "sowing the patient up".

So far I have:
  • A better viewport system - Why stop at just 2? An unlimited number of viewports are technically supported by the pywright engine. Each viewport does not have to be 256x192 in size, and they can be of different sizes to each other. Viewports can be placed anywhere. Want to have the 2 screens in a horizontal layout instead of a vertical one? It's possible. And of course, there is no viewport "bleeding" (objects appearing on multiple viewports) like there was in beta 10. And it's set up to allow games that take viewports into account to work in either 1 or 2 viewport mode.
  • Better sprites - The "image.txt" file format has a new set of commands making image loading much more flexible. A single animated object can be made up of frames from any location in the original image, or even from multiple images. A sprite can contain more than one animation, and switching animations is possible. Character talk/blink states are now a builtin feature, using animation switching, rather than a special case.
  • Object positioning - objects can be placed according to the upper left corner as before, but they can also be placed by the center or other corners on the image. Objects can be scaled, as well as rotated or flipped.
  • Smarter image loading - It is now possible to switch from software mode to opengl mode in realtime, thanks to the fact that images are loaded as they are drawn, to match which format they need to draw in. Having a preload option is still possible, but this should help keep memory low because the only images kept around are what's needed to draw.
  • A more unified event system - This will be good when I hook it into wrightscript and let writers handle events. At the moment, it's not much "better" in feature terms than it was before, but it simplifies a lot of things. An event, for those who don't know, is something like clicking the mouse on an object, or pressing a key. Before, all of the objects had to define their own functions for determining whether the mouse had clicked on them, now there is one piece of code that handles everything for free.
  • Automated tests - I have about 80 tests for all of the above systems, and every time I add code, I run the tests. I know instantly when something that used to work no longer does. I still anticipate unanticipated bugs to squeeze through into a release, but it should not be as bad.

My plan is to make as much of these low level details accessible from wrightscript as possible, while letting most people use the default settings or macros that I make to keep normal casewritng simple. Most likely, beta 11 will not make previous scripts obsolete, but I am not 100% sure about that yet.

I have a few changes that I am planning for wrightscript, to allow most of the interface to be written there instead of in the engine code itself. More than just that, it will allow more than just phoenix wright games to be written in PyWright. (Makes me wonder about the name, but it's too late to change it now!) The two major wrightscript features I am planning at the moment are selectors and events. Later I'll write about the new selector syntax, which will give you much more control of everything in a scene.

A preview release of beta11 may be finished by the end of next week, it depends on how much the holdiay rush slows me down.
Creator of PyWright, the lovable case construction system!
Also visit the PyWright post.
Re: The PyWright Casemaker Thread - beta 10.7 (nov30)Topic%20Title

Two more games coming up soon

Gender: Male

Location: Paris

Rank: Prosecutor

Joined: Thu Feb 28, 2008 2:45 pm

Posts: 929

Hey saluk!
Finally downloaded beta 10.7 and I must say, it's improved quite a lot.
Two questions though:
- how do you stop displaying evidence in the corner? I tried "delete nameoftheevidence" but it doesn't seem to work in this version.
- is it possible to have a location such as this one (http://www.court-records.net/places/DS/campingsitea.png and http://www.court-records.net/places/DS/campingsiteb.png) which allows the player to scroll between the two screens? I tried a Gui button, but it couldn't find the right label. Of course I could always use the "move" menu, but it wouldn't be very elegant nor would it look like the real game.
Creator of Apollo Justice Case 5: Turnabout Substitution: Trailer - Download
Co-creator of New Year's Turnabout, Turnabout Revolution, and At Dawn's Break
Re: The PyWright Casemaker Thread - beta 10.7 (nov30)Topic%20Title
User avatar

Gender: Male

Rank: Prosecutor

Joined: Thu Mar 06, 2008 8:36 pm

Posts: 770

Hey Ping. Yeah, the two campingsites, you ought to be able to just place campingsiteb at x=256, and it will show the button for scrolling between them. It's built in. Also, if it still doesn't recognize that there are two screens, as long as you have an addregion that is in both areas, it will show it.

Can you show me the code for the gui button that you tried? It's possible that gui Button is broken in the latest release, if so I'll work out a quick fix.

An alternative to gui Button is to use an examine menu, where you define regions that match buttons you draw on a background. Unfortnately, my code which shows the border to look more like an official game will break this hack a bit, but it may be more flexible than gui Button.

Beta 11 fortunately is going to have much better support for buttons with the event system, but for now the buttons or examine menu are the best choices.
Creator of PyWright, the lovable case construction system!
Also visit the PyWright post.
Re: The PyWright Casemaker Thread - beta 10.7 (nov30)Topic%20Title

Two more games coming up soon

Gender: Male

Location: Paris

Rank: Prosecutor

Joined: Thu Feb 28, 2008 2:45 pm

Posts: 929

The gui Button was something like "gui Button backgroundb Scroll" (the syntax might be all wrong, which would explain everything) with a "backgroundb" label later in the script. The Scroll button appeared but nothing happened when you pressed it.

"You ought to be able to just place campingsiteb at x=256" --> by "place", you mean which command exactly? (sorry I'm so clueless... it's just that I haven't used PyWright for months now)
EDIT: nevermind, it works now that I added the adequate regions.

Also, what about the "stop displaying evidence" problem?

Thanks for the help ^^
Creator of Apollo Justice Case 5: Turnabout Substitution: Trailer - Download
Co-creator of New Year's Turnabout, Turnabout Revolution, and At Dawn's Break
Re: The PyWright Casemaker Thread - beta 10.7 (nov30)Topic%20Title

Gender: None specified

Rank: Prosecutor

Joined: Fri Sep 05, 2008 9:18 pm

Posts: 821

So, beta 11 is mostly internal changes?
Re: The PyWright Casemaker Thread - beta 10.7 (nov30)Topic%20Title
User avatar

Gender: Male

Rank: Prosecutor

Joined: Thu Mar 06, 2008 8:36 pm

Posts: 770

Ping' wrote:
The gui Button was something like "gui Button backgroundb Scroll" (the syntax might be all wrong, which would explain everything) with a "backgroundb" label later in the script. The Scroll button appeared but nothing happened when you pressed it.


Here is the gui code from games/beta10/gui, which does as you described. As far as I know it works. Check that you named the label correctly in both places, and that there are no spaces after the label line. (Spaces shouldn't matter, but it's possible)
Spoiler: "games/beta10/gui/intro.txt"
macro hello
"Hello, World!"
set next guis
endmacro

label guis
clear
bg black
gui Button {hello} x=0 y=0 HELLO TO YOU
gui Button goodbye x=50 y=50 GOODBYE CRUEL WORLD
gui Wait
goto $next

label goodbye
"Goodbye, World!"


Ping wrote:
"You ought to be able to just place campingsiteb at x=256" --> by "place", you mean which command exactly?

I meant something like this:
bg campingsite a
bg campingsite b x=256 stack
But you already got it working so it's all good :)

Ping wrote:
Also, what about the "stop displaying evidence" problem?

Make sure not to press tab when the evidence is already showing :) But yeah, I should probably do another bugfix release and fix that. Just feels wrong to do a release with only one fix, lol.

MrCheeze wrote:
So, beta 11 is mostly internal changes?

So far. The new viewports will make it easier for user cases to be able to make use of the second screen while not making their game unplayable in single screen mode. Also, the resolution will be a bit more flexible, (Nothing stopping you from making a game with new higher res art). Sprites will be easier to add - you can use the old image editing mode to align everything perfectly, or the new declarative method which is much better for working with previous art. Access to the animation system for more than just character emotion changes will make cutscenes or custom interfaces easier.

So, most of it is internal at the moment, but it does enable things that weren't going to be possible with the old model. On the external part there will be quite a lot of changes too though. Selectors will make it easier to manage what objects you want commands to be applied to, as well as let you set variables on a specific object. This was handled with the "name=" argument before, but selectors are a bit more powerful than that. Events will let you have more control over interface type stuff. They will be the main update that allows me to add things like percieve or evidence examine in wrightscript. They also will be good for cutscenes. I will also be taking a look at ways to make wrightscript code shorter, simpler, or more general. But I also want to keep backwards compatibility high. So I don't want to change too much. I think for the most part, on the user side PyWright is almost as good as it can get, without the editor perfected. And that's a whole different aspect, which I don't have a lot of interest in right now. PyWright's main lack currently is really the game engine.
Creator of PyWright, the lovable case construction system!
Also visit the PyWright post.
Re: The PyWright Casemaker Thread - beta 10.7 (nov30)Topic%20Title

Two more games coming up soon

Gender: Male

Location: Paris

Rank: Prosecutor

Joined: Thu Feb 28, 2008 2:45 pm

Posts: 929

Here's another problem: saving no longer works.
Whenever I try to save the game I get this error message in the log:
Code:
Traceback (most recent call last):
  File "PyWright.py", line 4, in <module>
  File "core\libengine.py", line 1651, in run
    f.write(assets.save().replace("\n","..--..")+"\n")
  File "core\core.py", line 537, in save
    return pickle.dumps([self._track,self._loop,self.character,self.px,self.py,self.pz,self.ev,self.items,self.variables,self.lists])
AttributeError: 'Assets' object has no attribute 'ev'

Would you know whether this is me or PyWright malfunctioning?
Creator of Apollo Justice Case 5: Turnabout Substitution: Trailer - Download
Co-creator of New Year's Turnabout, Turnabout Revolution, and At Dawn's Break
Re: The PyWright Casemaker Thread - beta 10.7 (nov30)Topic%20Title

Gender: None specified

Rank: Prosecutor

Joined: Fri Sep 05, 2008 9:18 pm

Posts: 821

So animated bg and fg are possible now, custom interfaces are being upgraded, and code maybe simplified? Those are all good.
Re: The PyWright Casemaker Thread - beta 10.7 (nov30)Topic%20Title
User avatar

Gender: Male

Rank: Prosecutor

Joined: Thu Mar 06, 2008 8:36 pm

Posts: 770

Ping' wrote:
Here's another problem: saving no longer works.
Would you know whether this is me or PyWright malfunctioning?


Sorry Ping, It's PyWright malfunctioning. The complexity of the engine grew too fast for saving to keep up. I could have fixed it but it seemed low priority until games are closer to being finished. With beta 11, saving will just be a few lines for me and not so prone to error, so it will be back soon. It also will not be likely to need changing when other features are added, whereas previously, any new thing I did would need new code for saving.

MrCheeze, animated fg and bg are already possible. How do you think I did the psyche locks? But you will have more control over the animations of everything in beta 11, such as stopping an animation, making something that normally loops not loop, or switching between different animations.
Creator of PyWright, the lovable case construction system!
Also visit the PyWright post.
Re: The PyWright Casemaker Thread - beta 10.7 (nov30)Topic%20Title

Gender: None specified

Rank: Prosecutor

Joined: Fri Sep 05, 2008 9:18 pm

Posts: 821

Oh right. I'm not in a thinking mood today.
Re: The PyWright Casemaker Thread - beta 10.7 (nov30)Topic%20Title
User avatar

Argent Sunfly

Gender: None specified

Rank: Suspect

Joined: Thu Nov 27, 2008 9:23 pm

Posts: 47

Sounds like a good update. This has much improved since I first used it.

How do you make a character disappear so nobody is there?
Oh, and there's a bug where Oldbag disappears for a frame in her blinking pose, dunno if it happens with the rest of the characters...
Image
Re: The PyWright Casemaker Thread - beta 10.7 (nov30)Topic%20Title
User avatar

Gender: Male

Rank: Prosecutor

Joined: Thu Mar 06, 2008 8:36 pm

Posts: 770

Do you know which emotion oldbag has a frame missing?

For character disappearing, it kind of depends what you want to happen after. Here is one way:
Spoiler: "Keep nametag"
char freddy name=freddy
"I'll give you a cookie."
delete name=freddy
"(click!) Yep, found a cookie in this here cupboard"


If you don't want a nametag:
Spoiler: "No Nametag"
char Jean name=j
"But I want TWO cookies, not just one!"
delete name=j
nt
"Jean and Freddy never forgot the day that Freddy only gave Jean one cookie"

Creator of PyWright, the lovable case construction system!
Also visit the PyWright post.
Re: The PyWright Casemaker Thread - beta 10.7 (nov30)Topic%20Title

Gender: None specified

Rank: Suspect

Joined: Sat Nov 08, 2008 3:09 pm

Posts: 42

saluk wrote:
Ping' wrote:
Here's another problem: saving no longer works.
Would you know whether this is me or PyWright malfunctioning?


Sorry Ping, It's PyWright malfunctioning. The complexity of the engine grew too fast for saving to keep up. I could have fixed it but it seemed low priority until games are closer to being finished. With beta 11, saving will just be a few lines for me and not so prone to error, so it will be back soon. It also will not be likely to need changing when other features are added, whereas previously, any new thing I did would need new code for saving.

Saving is gonna work!Yeeesss
Re: The PyWright Casemaker Thread - beta 10.7 (nov30)Topic%20Title
User avatar

Argent Sunfly

Gender: None specified

Rank: Suspect

Joined: Thu Nov 27, 2008 9:23 pm

Posts: 47

saluk wrote:
Do you know which emotion oldbag has a frame missing?

For character disappearing, it kind of depends what you want to happen after. Here is one way:
Spoiler: "Keep nametag"
char freddy name=freddy
"I'll give you a cookie."
delete name=freddy
"(click!) Yep, found a cookie in this here cupboard"


If you don't want a nametag:
Spoiler: "No Nametag"
char Jean name=j
"But I want TWO cookies, not just one!"
delete name=j
nt
"Jean and Freddy never forgot the day that Freddy only gave Jean one cookie"


I said blinking pose, but I forgot to mention which. It's the normal emotion blinking pose. Thanks!

With that code, the person just disappears, they don't fade. Is there any way to do this? Also, is there a way to do this without stating the character's name twice?
Image
Re: The PyWright Casemaker Thread - beta 10.7 (nov30)Topic%20Title
User avatar

Gender: Male

Rank: Prosecutor

Joined: Thu Mar 06, 2008 8:36 pm

Posts: 770

GolemdX wrote:
I said blinking pose, but I forgot to mention which. It's the normal emotion blinking pose. Thanks!

Ok, cool. I'll look into it when I have time.

GolemdX wrote:
With that code, the person just disappears, they don't fade. Is there any way to do this? Also, is there a way to do this without stating the character's name twice?

No, you have to give them an id. Without giving them an id there is no way to refer to a specific character object. Beta 11 fixes this problem by assigning default ids to everything, but it is still most likely a few weeks away.

You can fade the character before deleting it with the "fade" command, which I just realized is not listed in doc.txt!
Code:
char phoenix name=a
"I will just fade away into the night"
fade name=a start=100 end=0
delete name=a


You can also give fade a speed= argument which changes the speed of the fade. I think speed=2 would mean 2x faster etc. Actually, the command "char someone fade" is really just a shorter way to type "char someone; fade start=0 end=100".
Creator of PyWright, the lovable case construction system!
Also visit the PyWright post.
Re: The PyWright Casemaker Thread - beta 10.7 (nov30)Topic%20Title
User avatar

Argent Sunfly

Gender: None specified

Rank: Suspect

Joined: Thu Nov 27, 2008 9:23 pm

Posts: 47

Thanks... and for some reason Oldbag doesn't disappear like that anymore...
Image
Re: The PyWright Casemaker Thread - beta 10.7 (nov30)Topic%20Title
User avatar

Gender: Male

Rank: Prosecutor

Joined: Thu Mar 06, 2008 8:36 pm

Posts: 770

It may have been some of the other parts of the script making her go away instead of a problem in the sprite itself. I haven't seen any empty frames myself. Sometimes the fade effect can cause glitches of this nature.
Creator of PyWright, the lovable case construction system!
Also visit the PyWright post.
Re: The PyWright Casemaker Thread - beta 10.7 (nov30)Topic%20Title
User avatar

Gender: Male

Rank: Prosecutor

Joined: Thu Mar 06, 2008 8:36 pm

Posts: 770

Just released 10.80 fixes save again. I haven't tested it in all cases, but I have tested it extensively on turnabout substitution.

Beta 11 progress -
Core - 80%
Sprites (animated graphic thingies) are finished
Objects (Something you can put in a scene to position, move around, add events to) are done
Text is done
Events are only partly finished - these are what control everything else and allow player input
Script - 0%
Getting old commands to work with new system
Adding the selection system to make referring to things snappier
Exposing events to the script
Updating of macros/interfaces
Total - ~50%

The editor probably will not be updated to beta 11 right away, but the documentation is getting a major facelift. The current editor was just an experiment, I have learned some things that I will put into the new editor when I attempt it, but I am not working on that at the moment.

The script portion of the work is mostly to expose the changes that I am making in the core to the user, so I anticipate it being a much shorter step. I'm not doing any major refactoring of the interpreter, just adding some more commands, it should take less time. I will do as much as I can this week, and then next week I start school. I might release a preview of beta 11 at the end of the week that has missing features, depending on how things go. It's not likely that I will be able to complete everything by then.

Don't get too excited about the new features. The main thing that will make beta 11 better is I am writing automated tests for everything as I go, so there will be much less bugs, and any bugs that are fixed have a much greater chance of staying fixed. The version after beta 11 will build on the more solid base with more user visible features, and that is the version to look forward to. I don't have an ETA on that though :)
Creator of PyWright, the lovable case construction system!
Also visit the PyWright post.
Re: The PyWright Casemaker Thread - beta 10.7 (nov30)Topic%20Title

Gender: None specified

Rank: Suspect

Joined: Sat Nov 08, 2008 3:09 pm

Posts: 42

Hey,congratulations for all the save-stuff!
Ok,I found a problem;while playing the game,I tried to save and I obtained this as a result(in the log)
Spoiler:
Traceback (most recent call last):
File "PyWright.py", line 4, in <module>
File "core\libengine.py", line 1652, in run
f.write(assets.save().replace("\n","..--..")+"\n")
File "core\core.py", line 553, in save
pickle.dumps(self.items)
File "pickle.pyc", line 1366, in dumps
File "pickle.pyc", line 224, in dump
File "pickle.pyc", line 286, in save
File "pickle.pyc", line 600, in save_list
File "pickle.pyc", line 615, in _batch_appends
File "pickle.pyc", line 331, in save
File "pickle.pyc", line 419, in save_reduce
File "pickle.pyc", line 286, in save
File "pickle.pyc", line 649, in save_dict
File "pickle.pyc", line 663, in _batch_setitems
File "pickle.pyc", line 306, in save
File "copy_reg.pyc", line 69, in _reduce_ex
TypeError: can't pickle Surface objects

Any ideas?
Re: The PyWright Casemaker Thread - beta 10.7 (nov30)Topic%20Title
User avatar

Gender: Male

Rank: Prosecutor

Joined: Thu Mar 06, 2008 8:36 pm

Posts: 770

What was the state of the game when this happened?

I think it may be a problem that only shows up in software mode. I'll do some testing.

Thanks for congratulating me even when it didn't work, lol.
Creator of PyWright, the lovable case construction system!
Also visit the PyWright post.
Re: The PyWright Casemaker Thread - beta 10.7 (nov30)Topic%20Title
User avatar

Xin Eohp.png

Gender: None specified

Rank: Suspect

Joined: Sat Nov 22, 2008 6:43 am

Posts: 5

I can't understand the doc.txt. :sadshoe:

Last edited by Reiji_kun on Tue Dec 30, 2008 8:56 am, edited 1 time in total.
Re: The PyWright Casemaker Thread - beta 10.7 (nov30)Topic%20Title
User avatar

Xin Eohp.png

Gender: None specified

Rank: Suspect

Joined: Sat Nov 22, 2008 6:43 am

Posts: 5

I'm stiil having problems with the usage of PyWright.I don't know how to show the characters and anything.Basically, I'm clueless. :larry:
Can someone explain the basics of PyWright?I can't understand doc.txt. It's too complicated for me. :payne:
Re: The PyWright Casemaker Thread - beta 10.7 (nov30)Topic%20Title
User avatar

Gender: Male

Rank: Prosecutor

Joined: Thu Mar 06, 2008 8:36 pm

Posts: 770

The best is to read one of the example games. If you play the game "test" and the case "ports" in that game, that case is only about showing characters and making them talk. So you should download that game with the updater. After playing it, to see what it does, look at the code for it under games/test/ports/intro.txt. It will show you the code for what you just saw. Looking at the other test games, or even studying Ping's ts_demo source code, is a good way to learn.

I am working on better documentation for the future.
Creator of PyWright, the lovable case construction system!
Also visit the PyWright post.
Re: The PyWright Casemaker Thread - beta 10.7 (nov30)Topic%20Title
User avatar

Gender: Male

Rank: Prosecutor

Joined: Thu Mar 06, 2008 8:36 pm

Posts: 770

- 10.81: fixed saving in software mode

Work continues on beta 11, now working on the parser (the code that deals with reading wrightscript and figuring out what it means. I am adding selections, which are a new way to refer to objects in the system and do things to them. Instead of having to rely on hardcoded commands like scroll to make things happen, you will be able to manipulate every property of every object as you see fit. Animations like scroll will become macros that modify properties, so you can keep using the old methods, or do new things that I didn't plan for.

If you are still having problems Reiji_kun, here is a simple example:

Spoiler: "How you might think of a script"
Set the scene for phoenixes office.
Show maya
maya: Hello phoenix, what is up?
phoenix: Um, we are out of money again.
(maya looks shocked, and the screen shakes)
maya: How can we be out of money? I haven't eaten in a week!
phoenix: What about the flat screen you bought...
(maya looks embarassed)
maya: ooooo, right...


Spoiler: "The same scene in wrightscript"
bg phoenixoffice
char maya
"Hello phoenix, what is up?"
char phoenix hide
"Um, we are out of money again."
char maya e=surprised
"{s}How can we be out of money? I haven't eaten in a week!"
char phoenix hide
"What about the flat screen you bought..."
char maya e=sad
"ooooo, right..."


Also, you may try joining me in irc chat: server irc.freenode.net, channel #pywright
I can help you with more specific problems if you have any.
Creator of PyWright, the lovable case construction system!
Also visit the PyWright post.
Re: The PyWright Casemaker Thread - beta 10.7 (nov30)Topic%20Title
User avatar

Gender: Male

Rank: Prosecutor

Joined: Thu Mar 06, 2008 8:36 pm

Posts: 770

Very basic scripts now work again in beta11, (and I mean VERY basic). There are two commands, set, and object, to either add objects or set variables. The only variables available to be set before were global variables, now attributes of objects can also be set. Here is an example:

Code:
object art/port/apollo/confident name=apollo
set [apollo]x 50


This will add a generic object that happens to load its sprite from the given path, and then move it to the right 50 pixels. Some of this functionality was present in prior releases through specific commands to do specific actions, in beta11 there will be general ways which allow anything to be done, and specialized ways which build on those general things to make things simpler and keep backwards compatibility.

In beta11, code that looks like this:
Code:
char apollo x=70
"Hello"

will internally expand to something more complicated like this:
Code:
object art/port/apollo/default name=apollo x=70
object art/general/textboxback y=100 name=next
object fonts/main x=2 y=102 name=text
print [text] hello
when clickon [next] continue
pausescript

Users of pywright won't need to care that this is what is happening, and can continue to write the simpler code.

In the above examples, the [] is called a selector, and scans the scene for any objects that match the given identifier, and the command "when" will link some condition (in this case clicking on the textbox) to some action (continuing the script). The complicated code above is very unfinal, but just an example of the direction I'm heading. Also, very rarely will the complicated part of the code need to be understood by users, you can keep using wrightscript in mostly the same way you use it now. However, the two big additions, selectors, and events, will probably be used by most coders.

Selectors are basically a replacement for name= arguments. They are a way to refer to things in the scene. You can refer to more than one thing, so for example if you add 4 evidence icons onscreen at once and want to delete them all, you could use the command "delete [ev1 ev2 ev3 ev4]". They can be used to set more than one variable to some initial value with the command "set [str mag def] 5" And, as in the first example, you can set an individual object's property with "set [bill]nametag ???"

Events will be the new way to handle user input, but they can also be useful for animation. The "when" command will tell pywright to run a macro when a set of conditions is matched. The most useful way will be to tell pywright what you want to happen when buttons are pressed, but there are also conditions which check for variable states, or times. You can schedule something to happen in future (when 5 seconds pass, play a ding noise), or make a bullet moving across the screen trigger the death animation from the sprite it hits (when x of bullet equals the x of the man, set the man animation to dying).

Selectors are 90% complete, there are still a few more tests which need to be written for them. For events, mouseclick is all I have implemented so far, the other events I will probably not add immediately, as current games will run fine without them.

It all might seem too complicated, fortunately I am working on tutorials and documentation which will all be in html format on my website. The release for these materials would be close to the main beta11 release. Hopefully the better documentation will offset the added complexity, time will tell.

In the next weeks, I plan to continue finishing the updated code and making the current command set work. I am still aiming for a preview release soon, which would have some of the new features while not necessarily being complete enough to run a game.
Creator of PyWright, the lovable case construction system!
Also visit the PyWright post.


Last edited by saluk on Thu Jan 01, 2009 5:22 pm, edited 1 time in total.
Re: The PyWright Casemaker Thread - beta 10.7 (nov30)Topic%20Title
User avatar

I hate Klaviema >_>

Gender: Male

Location: UK

Rank: Ace Attorney

Joined: Sat Aug 16, 2008 4:17 pm

Posts: 1938

Will the old way still work? This seems like it does the same thing, in a much more confusing way...
ImageImage
ImageImage
Re: The PyWright Casemaker Thread - beta 10.7 (nov30)Topic%20Title
User avatar

Xin Eohp.png

Gender: None specified

Rank: Suspect

Joined: Sat Nov 22, 2008 6:43 am

Posts: 5

When I tried the test some of them errored and I coudn't able to see the characters.
Especially the Psyche-Locks.
Re: The PyWright Casemaker Thread - beta 10.7 (nov30)Topic%20Title

Gender: None specified

Rank: Suspect

Joined: Sat Nov 08, 2008 3:09 pm

Posts: 42

Hi,how's it going?
You know,some musicsmake the game crash,or maybe it' just me?
Re: The PyWright Casemaker Thread - beta 10.7 (nov30)Topic%20Title
User avatar

Gender: Male

Rank: Prosecutor

Joined: Thu Mar 06, 2008 8:36 pm

Posts: 770

ProsecutorEdgeworth wrote:
Hi,how's it going?
You know,some musicsmake the game crash,or maybe it' just me?

Which music? No music has made the game crash for me. It REALLY helps when posting bug reports to include a log file and a more detailed description of what happened when it crashed. It could be your computer, the specific file you tried to play, or something else entirely.

Reiji_kun wrote:
When I tried the test some of them errored and I coudn't able to see the characters.
Especially the Psyche-Locks.

Yes, the base of pywright doesn't come with any characters. You have to use updater to download them individually. I guess this is what you meant when you said you were confused and couldn't make characters appear...

RandomJibberish wrote:
Will the old way still work? This seems like it does the same thing, in a much more confusing way...

Beta11 will be mostly backwards compatible. I can't be sure at this time, but 100% compatible may be possible.
What makes it better than before is the functionality is less fixed. If you want to make a textbox that goes on the top instead of the bottom, there will be ways of doing so, without talking to me about it. If you want to make a textbox that doesn't go away when you click on it, there will be ways of doing that too, just as a side effect of having the low-level commands. The main commands you already know will be there, so don't fret. Ease of use is still important.
Creator of PyWright, the lovable case construction system!
Also visit the PyWright post.
Re: The PyWright Casemaker Thread - beta 10.7 (nov30)Topic%20Title
User avatar

I hate Klaviema >_>

Gender: Male

Location: UK

Rank: Ace Attorney

Joined: Sat Aug 16, 2008 4:17 pm

Posts: 1938

Ahh, Okay...

So this is just optional ifyou want a specific line to appear differently?

Because I was worried that it would take twice as long if you have to code every line like that...
ImageImage
ImageImage
Re: The PyWright Casemaker Thread - beta 10.7 (nov30)Topic%20Title
User avatar

Gender: Male

Rank: Prosecutor

Joined: Thu Mar 06, 2008 8:36 pm

Posts: 770

Yeah that would be terrible. If you wanted to make your textboxes different, you would make a macro that has a lot of commands that look like that, and then even your new textbox would be an easy one line command.
Creator of PyWright, the lovable case construction system!
Also visit the PyWright post.
Re: The PyWright Casemaker Thread - beta 10.7 (nov30)Topic%20Title
User avatar

I hate Klaviema >_>

Gender: Male

Location: UK

Rank: Ace Attorney

Joined: Sat Aug 16, 2008 4:17 pm

Posts: 1938

Well, that's....


:cards: FAAAAABULOUS!!!
ImageImage
ImageImage
Re: The PyWright Casemaker Thread - beta 10.7 (nov30)Topic%20Title
User avatar

I hate Klaviema >_>

Gender: Male

Location: UK

Rank: Ace Attorney

Joined: Sat Aug 16, 2008 4:17 pm

Posts: 1938

Sorry to Double Post, but...

Often, When I've been working on a case in the editor, it works fine, but then later I try it again and I get an error message when I select the script...

The log:

Spoiler:
Code:
Traceback (most recent call last):
  File "editor.py", line 3, in <module>
  File "core\libedit.py", line 451, in <module>
    quit = root.handle_events(pygame.event.get())
  File "core\gui.py", line 94, in handle_events
    self.event("click_down_over",evt.pos)
  File "core\gui.py", line 67, in event
    done = w.event(name,p2,*args)
  File "core\gui.py", line 67, in event
    done = w.event(name,p2,*args)
  File "core\gui.py", line 73, in event
    func(*args)
  File "core\gui.py", line 375, in click_down_over
    getattr(tob,f)()
  File "core\libedit.py", line 360, in Create
    os.mkdir(pth+"/art")
WindowsError: [Error 3] The system cannot find the path specified: 'games/Turnabout Test/Talking /art'
Traceback (most recent call last):
  File "editor.py", line 3, in <module>
  File "core\libedit.py", line 448, in <module>
    root.draw(screen)
  File "core\gui.py", line 60, in draw
    if self.visible: [x.draw(dest) for x in self.children]
  File "core\gui.py", line 60, in draw
    if self.visible: [x.draw(dest) for x in self.children]
  File "core\gui.py", line 483, in draw
    surf = super(self.__class__,self).render()
  File "core\gui.py", line 420, in render
    w.draw(surf)
  File "core\libedit.py", line 123, in draw
    super(textbox_line,self).draw(dest)
  File "core\gui.py", line 432, in draw
    dest.blit(self.render(),self.rpos)
  File "core\gui.py", line 420, in render
    w.draw(surf)
  File "core\libedit.py", line 97, in draw
    self.tb.update()
  File "core\core.py", line 1276, in update
    char = self.text[len(self.written)]
IndexError: string index out of range
Traceback (most recent call last):
  File "editor.py", line 3, in <module>
  File "core\libedit.py", line 448, in <module>
    root.draw(screen)
  File "core\gui.py", line 60, in draw
    if self.visible: [x.draw(dest) for x in self.children]
  File "core\gui.py", line 60, in draw
    if self.visible: [x.draw(dest) for x in self.children]
  File "core\gui.py", line 483, in draw
    surf = super(self.__class__,self).render()
  File "core\gui.py", line 420, in render
    w.draw(surf)
  File "core\libedit.py", line 123, in draw
    super(textbox_line,self).draw(dest)
  File "core\gui.py", line 432, in draw
    dest.blit(self.render(),self.rpos)
  File "core\gui.py", line 420, in render
    w.draw(surf)
  File "core\libedit.py", line 97, in draw
    self.tb.update()
  File "core\core.py", line 1276, in update
    char = self.text[len(self.written)]
IndexError: string index out of range
Traceback (most recent call last):
  File "editor.py", line 3, in <module>
  File "core\libedit.py", line 448, in <module>
    root.draw(screen)
  File "core\gui.py", line 60, in draw
    if self.visible: [x.draw(dest) for x in self.children]
  File "core\gui.py", line 60, in draw
    if self.visible: [x.draw(dest) for x in self.children]
  File "core\gui.py", line 483, in draw
    surf = super(self.__class__,self).render()
  File "core\gui.py", line 420, in render
    w.draw(surf)
  File "core\libedit.py", line 123, in draw
    super(textbox_line,self).draw(dest)
  File "core\gui.py", line 432, in draw
    dest.blit(self.render(),self.rpos)
  File "core\gui.py", line 420, in render
    w.draw(surf)
  File "core\libedit.py", line 97, in draw
    self.tb.update()
  File "core\core.py", line 1276, in update
    char = self.text[len(self.written)]
IndexError: string index out of range
Traceback (most recent call last):
  File "editor.py", line 3, in <module>
  File "core\libedit.py", line 451, in <module>
    quit = root.handle_events(pygame.event.get())
  File "core\gui.py", line 125, in handle_events
    window.focused.enter_pressed()
  File "core\libedit.py", line 33, in enter_pressed
    self.reparse()
  File "core\libedit.py", line 31, in reparse
    self.replace(makeob(self.parent.val()))
  File "core\libedit.py", line 27, in replace
    index = ourcontainer.children.index(ourpanel)
ValueError: list.index(x): x not in list
Traceback (most recent call last):
  File "editor.py", line 3, in <module>
  File "core\libedit.py", line 451, in <module>
    quit = root.handle_events(pygame.event.get())
  File "core\gui.py", line 94, in handle_events
    self.event("click_down_over",evt.pos)
  File "core\gui.py", line 67, in event
    done = w.event(name,p2,*args)
  File "core\gui.py", line 67, in event
    done = w.event(name,p2,*args)
  File "core\gui.py", line 73, in event
    func(*args)
  File "core\gui.py", line 375, in click_down_over
    getattr(tob,f)()
  File "core\libedit.py", line 259, in _choose_
    self.lgame(d)
  File "core\libedit.py", line 265, in lgame
    root.add_child(script_edit(s))
  File "core\libedit.py", line 227, in __init__
    self.edit_pane = script(self.script.scriptlines)
  File "core\libedit.py", line 188, in __init__
    o = makeob(l)
  File "core\libedit.py", line 136, in makeob
    makeob.nt = line.split(" ")[1].strip()+"\n"
IndexError: list index out of range
Traceback (most recent call last):
  File "editor.py", line 3, in <module>
  File "core\libedit.py", line 451, in <module>
    quit = root.handle_events(pygame.event.get())
  File "core\gui.py", line 94, in handle_events
    self.event("click_down_over",evt.pos)
  File "core\gui.py", line 67, in event
    done = w.event(name,p2,*args)
  File "core\gui.py", line 67, in event
    done = w.event(name,p2,*args)
  File "core\gui.py", line 73, in event
    func(*args)
  File "core\gui.py", line 375, in click_down_over
    getattr(tob,f)()
  File "core\libedit.py", line 259, in _choose_
    self.lgame(d)
  File "core\libedit.py", line 265, in lgame
    root.add_child(script_edit(s))
  File "core\libedit.py", line 227, in __init__
    self.edit_pane = script(self.script.scriptlines)
  File "core\libedit.py", line 188, in __init__
    o = makeob(l)
  File "core\libedit.py", line 136, in makeob
    makeob.nt = line.split(" ")[1].strip()+"\n"
IndexError: list index out of range
Traceback (most recent call last):
  File "editor.py", line 3, in <module>
  File "core\libedit.py", line 451, in <module>
    quit = root.handle_events(pygame.event.get())
  File "core\gui.py", line 94, in handle_events
    self.event("click_down_over",evt.pos)
  File "core\gui.py", line 67, in event
    done = w.event(name,p2,*args)
  File "core\gui.py", line 67, in event
    done = w.event(name,p2,*args)
  File "core\gui.py", line 73, in event
    func(*args)
  File "core\gui.py", line 375, in click_down_over
    getattr(tob,f)()
  File "core\libedit.py", line 259, in _choose_
    self.lgame(d)
  File "core\libedit.py", line 265, in lgame
    root.add_child(script_edit(s))
  File "core\libedit.py", line 227, in __init__
    self.edit_pane = script(self.script.scriptlines)
  File "core\libedit.py", line 188, in __init__
    o = makeob(l)
  File "core\libedit.py", line 136, in makeob
    makeob.nt = line.split(" ")[1].strip()+"\n"
IndexError: list index out of range
Traceback (most recent call last):
  File "editor.py", line 3, in <module>
  File "core\libedit.py", line 451, in <module>
    quit = root.handle_events(pygame.event.get())
  File "core\gui.py", line 94, in handle_events
    self.event("click_down_over",evt.pos)
  File "core\gui.py", line 67, in event
    done = w.event(name,p2,*args)
  File "core\gui.py", line 67, in event
    done = w.event(name,p2,*args)
  File "core\gui.py", line 73, in event
    func(*args)
  File "core\gui.py", line 375, in click_down_over
    getattr(tob,f)()
  File "core\libedit.py", line 259, in _choose_
    self.lgame(d)
  File "core\libedit.py", line 265, in lgame
    root.add_child(script_edit(s))
  File "core\libedit.py", line 227, in __init__
    self.edit_pane = script(self.script.scriptlines)
  File "core\libedit.py", line 188, in __init__
    o = makeob(l)
  File "core\libedit.py", line 136, in makeob
    makeob.nt = line.split(" ")[1].strip()+"\n"
IndexError: list index out of range
Traceback (most recent call last):
  File "editor.py", line 3, in <module>
  File "core\libedit.py", line 451, in <module>
    quit = root.handle_events(pygame.event.get())
  File "core\gui.py", line 94, in handle_events
    self.event("click_down_over",evt.pos)
  File "core\gui.py", line 67, in event
    done = w.event(name,p2,*args)
  File "core\gui.py", line 67, in event
    done = w.event(name,p2,*args)
  File "core\gui.py", line 73, in event
    func(*args)
  File "core\gui.py", line 375, in click_down_over
    getattr(tob,f)()
  File "core\libedit.py", line 259, in _choose_
    self.lgame(d)
  File "core\libedit.py", line 265, in lgame
    root.add_child(script_edit(s))
  File "core\libedit.py", line 227, in __init__
    self.edit_pane = script(self.script.scriptlines)
  File "core\libedit.py", line 188, in __init__
    o = makeob(l)
  File "core\libedit.py", line 136, in makeob
    makeob.nt = line.split(" ")[1].strip()+"\n"
IndexError: list index out of range
Traceback (most recent call last):
  File "editor.py", line 3, in <module>
  File "core\libedit.py", line 451, in <module>
    quit = root.handle_events(pygame.event.get())
  File "core\gui.py", line 94, in handle_events
    self.event("click_down_over",evt.pos)
  File "core\gui.py", line 67, in event
    done = w.event(name,p2,*args)
  File "core\gui.py", line 67, in event
    done = w.event(name,p2,*args)
  File "core\gui.py", line 73, in event
    func(*args)
  File "core\gui.py", line 375, in click_down_over
    getattr(tob,f)()
  File "core\libedit.py", line 259, in _choose_
    self.lgame(d)
  File "core\libedit.py", line 265, in lgame
    root.add_child(script_edit(s))
  File "core\libedit.py", line 227, in __init__
    self.edit_pane = script(self.script.scriptlines)
  File "core\libedit.py", line 188, in __init__
    o = makeob(l)
  File "core\libedit.py", line 136, in makeob
    makeob.nt = line.split(" ")[1].strip()+"\n"
IndexError: list index out of range
Traceback (most recent call last):
  File "editor.py", line 3, in <module>
  File "core\libedit.py", line 451, in <module>
    quit = root.handle_events(pygame.event.get())
  File "core\gui.py", line 94, in handle_events
    self.event("click_down_over",evt.pos)
  File "core\gui.py", line 67, in event
    done = w.event(name,p2,*args)
  File "core\gui.py", line 67, in event
    done = w.event(name,p2,*args)
  File "core\gui.py", line 73, in event
    func(*args)
  File "core\gui.py", line 375, in click_down_over
    getattr(tob,f)()
  File "core\libedit.py", line 259, in _choose_
    self.lgame(d)
  File "core\libedit.py", line 265, in lgame
    root.add_child(script_edit(s))
  File "core\libedit.py", line 227, in __init__
    self.edit_pane = script(self.script.scriptlines)
  File "core\libedit.py", line 188, in __init__
    o = makeob(l)
  File "core\libedit.py", line 136, in makeob
    makeob.nt = line.split(" ")[1].strip()+"\n"
IndexError: list index out of range
Traceback (most recent call last):
  File "editor.py", line 3, in <module>
  File "core\libedit.py", line 451, in <module>
    quit = root.handle_events(pygame.event.get())
  File "core\gui.py", line 94, in handle_events
    self.event("click_down_over",evt.pos)
  File "core\gui.py", line 67, in event
    done = w.event(name,p2,*args)
  File "core\gui.py", line 67, in event
    done = w.event(name,p2,*args)
  File "core\gui.py", line 73, in event
    func(*args)
  File "core\gui.py", line 375, in click_down_over
    getattr(tob,f)()
  File "core\libedit.py", line 259, in _choose_
    self.lgame(d)
  File "core\libedit.py", line 265, in lgame
    root.add_child(script_edit(s))
  File "core\libedit.py", line 227, in __init__
    self.edit_pane = script(self.script.scriptlines)
  File "core\libedit.py", line 188, in __init__
    o = makeob(l)
  File "core\libedit.py", line 136, in makeob
    makeob.nt = line.split(" ")[1].strip()+"\n"
IndexError: list index out of range
Traceback (most recent call last):
  File "editor.py", line 3, in <module>
  File "core\libedit.py", line 451, in <module>
    quit = root.handle_events(pygame.event.get())
  File "core\gui.py", line 94, in handle_events
    self.event("click_down_over",evt.pos)
  File "core\gui.py", line 67, in event
    done = w.event(name,p2,*args)
  File "core\gui.py", line 67, in event
    done = w.event(name,p2,*args)
  File "core\gui.py", line 73, in event
    func(*args)
  File "core\gui.py", line 375, in click_down_over
    getattr(tob,f)()
  File "core\libedit.py", line 259, in _choose_
    self.lgame(d)
  File "core\libedit.py", line 265, in lgame
    root.add_child(script_edit(s))
  File "core\libedit.py", line 227, in __init__
    self.edit_pane = script(self.script.scriptlines)
  File "core\libedit.py", line 188, in __init__
    o = makeob(l)
  File "core\libedit.py", line 136, in makeob
    makeob.nt = line.split(" ")[1].strip()+"\n"
IndexError: list index out of range
Traceback (most recent call last):
  File "editor.py", line 3, in <module>
  File "core\libedit.py", line 722, in <module>
    quit = root.handle_events(pygame.event.get())
  File "core\gui.py", line 93, in handle_events
    self.event("click_down_over",evt.pos)
  File "core\gui.py", line 66, in event
    done = w.event(name,p2,*args)
  File "core\gui.py", line 66, in event
    done = w.event(name,p2,*args)
  File "core\gui.py", line 72, in event
    func(*args)
  File "core\gui.py", line 389, in click_down_over
    getattr(tob,f)()
  File "core\libedit.py", line 525, in _choose_
    self.lgame(d)
  File "core\libedit.py", line 531, in lgame
    root.add_child(script_edit(s))
  File "core\libedit.py", line 492, in __init__
    self.edit_pane = script(self.script.scriptlines)
  File "core\libedit.py", line 480, in __init__
    o = makeob(l,self)
  File "core\libedit.py", line 423, in makeob
    g = gfxblock(line)
  File "core\libedit.py", line 333, in __init__
    self.build()
  File "core\libedit.py", line 392, in build
    s.interpret()
  File "core\libengine.py", line 359, in interpret
    func(*args)
  File "core\libengine.py", line 887, in _char
    p = assets.add_portrait(character+"/"+e,fade=("fade" in args),stack=("stack" in args),hide=("hide" in args))
  File "core\core.py", line 520, in add_portrait
    p = portrait(name,hide)
  File "core\core.py", line 1068, in __init__
    loadfrom(assets.game+"/art/port/"+charname)
  File "core\core.py", line 1041, in loadfrom
    self.talk_sprite.load(shrink(path+available[0]))
  File "core\core.py", line 801, in load
    self.base = assets.open_art(name,key)
  File "core\core.py", line 390, in open_art
    return self._open_art_(name+".png",key)
  File "core\core.py", line 367, in _open_art_
    img.append(texture.subsurface([[x,y],[incx,incy]]))
ValueError: subsurface rectangle outside surface area

ImageImage
ImageImage
Re: The PyWright Casemaker Thread - beta 10.7 (nov30)Topic%20Title

Gender: None specified

Rank: Suspect

Joined: Sat Nov 08, 2008 3:09 pm

Posts: 42

saluk wrote:
ProsecutorEdgeworth wrote:
Hi,how's it going?
You know,some musicsmake the game crash,or maybe it' just me?

Which music? No music has made the game crash for me. It REALLY helps when posting bug reports to include a log file and a more detailed description of what happened when it crashed. It could be your computer, the specific file you tried to play, or something else entirely.

Yep,it was!I tried playing it on another computer and it worked...Thanks!
Re: The PyWright Casemaker Thread - beta 10.7 (nov30)Topic%20Title
User avatar

Gender: Male

Rank: Prosecutor

Joined: Thu Mar 06, 2008 8:36 pm

Posts: 770

ProsecutorEdgeworth:
Was it a specific music file that made it crash, or do all music files make it crash? I would still like to see the log, it should print an error message and continue instead of crashing.

RandomJibberish:
Is that specific script now completely unloadable in the editor, or is this a random crash that sometimes happens and sometimes doesn't?
Creator of PyWright, the lovable case construction system!
Also visit the PyWright post.
Re: The PyWright Casemaker Thread - beta 10.7 (nov30)Topic%20Title
User avatar

I hate Klaviema >_>

Gender: Male

Location: UK

Rank: Ace Attorney

Joined: Sat Aug 16, 2008 4:17 pm

Posts: 1938

It permanently doesn't work now...
ImageImage
ImageImage
Re: The PyWright Casemaker Thread - beta 10.7 (nov30)Topic%20Title

Gender: None specified

Rank: Suspect

Joined: Sat Nov 08, 2008 3:09 pm

Posts: 42

No,the log doesn't show nothing...It's just a music,of course!
Don't worry,it's fine!
Re: The PyWright Casemaker Thread - beta 10.7 (nov30)Topic%20Title
User avatar

Gender: Male

Rank: Prosecutor

Joined: Thu Mar 06, 2008 8:36 pm

Posts: 770

RandomJibberish: does the case only not work in the editor? The log file leads me to believe there is some artwork that can't be loaded, which would mean the case shouldn't run in the engine either. Also, could you post the script (or pm if you want to keep it secret).

Beta 11 news: I'm not done! Wow, imagine that!

The engine is mostly done, text works but doesn't display properly, events are still not fully fleshed out, and there are some corner issues I haven't tackled yet. It is done enough though that I am focusing on the rest of the system.

The interpreter is making some progress. Both selectors and events work well from the interpreter. I am working through turnabout substitution as I go, using that as a guide for what features to implement. The new model requires more of the system to be built in wrightscript. I have reimplemented the speech list fully in wrightscript code, mostly using the new event model. Currently, most of turnabout substitution can be played, but the engine is nowhere near release-ready. It is missing key features, and some of the working features don't look good at all.

To make things worse, I am starting school this week, so will have even less time than before! Still, the engine is forming up really well, with a good base, and so far >150 automated tests to verify that things work they way I think they do. It's 70%-80% of the way there, but as I have found in other projects, the last 20% is the hard part!

Don't fear though, it's a matter of when rather than if it will be finished. My best guess is sometime this month.

Here's wishing everyone, developers and gamers, a great 2009.
Creator of PyWright, the lovable case construction system!
Also visit the PyWright post.
Page 13 of 42 [ 1674 posts ] 
Go to page Previous  1 ... 10, 11, 12, 13, 14, 15, 16 ... 42  Next
 
Display posts from previous:  Sort by  

 Board index » Present Evidence » Games

Who is online
Users browsing this forum: No registered users and 29 guests

You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum
Jump to:  
News News Site map Site map SitemapIndex SitemapIndex RSS Feed RSS Feed Channel list Channel list
Powered by phpBB

phpBB SEO