Castle Paradox Forum Index Castle Paradox

 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 
 Gamelist   Review List   Song List   All Journals   Site Stats   Search Gamelist   IRC Chat Room

Problem with an active key when game starts
Goto page 1, 2  Next
 
Post new topic   Reply to topic    Castle Paradox Forum Index -> HELP!
View previous topic :: View next topic  
Author Message
bis_senchi




Joined: 08 Jun 2004
Posts: 460
Location: Reims, France

PostPosted: Sat Dec 10, 2011 12:26 am    Post subject: Problem with an active key when game starts Reply with quote

Hello! It's me again

I managed to solve my problem with the blank line on my menu by changing the order of the command lines! Thanks to mswguest for his suggestion which was the right one!

Now I would like to deal with another problem. I'm implemented a pause in my game using the num lock key (in which was also written pause in the od keyboards)

My problem is the following : when the player takes control just after the intro script, I get on screen the message "onkeypressed script, interpreter overload".

Indeed this is because my numlock key is active because I recently keyed in numbers with numpad.

If I unactivate manually the keylock key before the game starts everthing is fine and the problem disappears.

One of the solution to solve this would be to use another key of the keyboard : like the letter P but the problem would the same if the player for strange reasons presses P as the intro scripts runs.

My question is the following : is it possible to use the key commands to detects if num lock key is active and to skip the pause script? If I could do this the pause would not overload and the error message would disappear.
(even if and especially if the player let his/her numlock key active)

I only need to do this each time the player starts to play. Do you think it is possible to do that using plotscripting?

Thanks a lot in advance for your help!
_________________
It's time to make games!
Back to top
View user's profile Send private message Visit poster's website MSN Messenger
TMC
On the Verge of Insanity




Joined: 05 Apr 2003
Posts: 3240
Location: Matakana

PostPosted: Sat Dec 10, 2011 6:17 pm    Post subject: Reply with quote

You get this error because your onkeypress script contains a wait command. Get rid of it or change your script. Post your script here if you don't know how to do that.

Changing to a different key will not fully fix the problem, because it will still happen if the player holds down that key (which I admit is unlikely).

By the way, in recent versions you can use "key:Pause" instead of "key:Numlock", this new scancode isn't shared with the Numlock key.
_________________
"It is so great it is insanely great."
Back to top
View user's profile Send private message Send e-mail
bis_senchi




Joined: 08 Jun 2004
Posts: 460
Location: Reims, France

PostPosted: Wed Dec 14, 2011 10:15 pm    Post subject: Here is the script Reply with quote

As you request here is the script that is launched when the game start

Code:

plotscript, launch game, begin

  suspend player #the player shouldn't be able to move during the title, duh...
 
  show backdrop (0) #show absolutely nothing
  set variable (MyPicSet, get hero picture(me))  #permet d'enregistrer notre apparence
  set variable (MyPal, get hero palette(me))
  set hero picture (me, 0) # main hero became invisible mode and is placed near the menu
  set hero palette (me, 1)
 

  fade screen out
  wait(1) #this is to avoid the initial fade-in 

    do, begin
    if(wait and listen(15)) then (break)  #waiting a few seconds before displaying anything never hurts
    show backdrop (3)#  FooBar Studios
    wait(1)
    fade screen in
    if(wait and listen(30)) then (break)
    fade screen out
    show backdrop (6)# created with the OHR
    wait(1)
    fade screen in
    if(wait and listen(30)) then (break)
   end
 
  fade screen out

  show map # no screenshot for title screen needed. prevents from seeing the menu
  #play song(song:title) #play the title theme
  wait(1)

  fade screen in

  variable(waiting)
  waiting:= true
  while(waiting) do, begin #these simulate the regular behaviour of the title screen
  wait (1)
    if(key is pressed(28)) then (waiting:= false) #ENTER
    if(key is pressed(57)) then (waiting:= false) #SPACE
    if(key is pressed(1)) then (fade screen out, game over) #ESCAPE
  end 
 
 open menu (3)
end #end for the script



And here is my key is pressed script


Code:

#-----------------------------------------------------------
plotscript, keyispressed script, begin

if (key is pressed(key: numlock)) then, begin
if (pauseisactive==false) then, begin
pause script
end, else, begin

#thus, pauseisactive must be true
unpaused script
end #end of the first if
end #end of the second if

end #end for the script
 
#-------------------------------------------------------
#Dans ce script on met le jeu en pause

plotscript, pause script, begin 

suspend player
suspend npcs
show text box (6) #pause
suspend box advance

day:= days of play
hour:= hours of play
minute:= minutes of play
savetime:= read general (54) #ToDo: make an official seconds of play command
pauseisactive:=true
wait(1)

end #end of the plotscript

#---------------------------------------------------------------------------
plotscript, unpaused script, begin

while (pauseisactive) do, begin
wait (1)
advance text box

write genera l(51, day) #ToDo: Make official set days of play, etc. commands
write general (52, hour)
write general (53, minute)
write general (54, savetime)

resume box advance
resume player
resume npcs

pauseisactive:=false
wait(2)
end #end of the while pause is active

end #end of the plotscript
#-----------------------------------------------------------


As you can see there are some wait commands but they are needed (just after turning false a global variable for example).

Any idea to create a new version of the script is welcome!
Have a nice day!
_________________
It's time to make games!
Back to top
View user's profile Send private message Visit poster's website MSN Messenger
TMC
On the Verge of Insanity




Joined: 05 Apr 2003
Posts: 3240
Location: Matakana

PostPosted: Wed Dec 28, 2011 2:41 am    Post subject: Reply with quote

Hi, sorry for the delay, largely because I was at a conference for a week, and CP has been down.

There's no reason to have wait commands in those scripts. Also, you should use key:Pause instead of key:Numlock (though I'm not sure key:Pause will work either), and keyval instead of keyispressed:


Code:
#-----------------------------------------------------------
plotscript, keyispressed script, begin

if (keyval(key: pause) >> 1) then, begin
if (pauseisactive==false) then, begin
pause script
end, else, begin

#thus, pauseisactive must be true
unpaused script
end #end of the first if
end #end of the second if

end #end for the script
 
#-------------------------------------------------------
#Dans ce script on met le jeu en pause

plotscript, pause script, begin 

suspend player
suspend npcs
show text box (6) #pause
suspend box advance

day:= days of play
hour:= hours of play
minute:= minutes of play
savetime:= read general (54) #ToDo: make an official seconds of play command
pauseisactive:=true

end #end of the plotscript

#---------------------------------------------------------------------------
plotscript, unpaused script, begin

while (pauseisactive) do, begin
advance text box

write genera l(51, day) #ToDo: Make official set days of play, etc. commands
write general (52, hour)
write general (53, minute)
write general (54, savetime)

resume box advance
resume player
resume npcs

pauseisactive:=false
end #end of the while pause is active

end #end of the plotscript
#-----------------------------------------------------------


I'm still not sure that this script will work. Maybe I should try it myself.
_________________
"It is so great it is insanely great."
Back to top
View user's profile Send private message Send e-mail
bis_senchi




Joined: 08 Jun 2004
Posts: 460
Location: Reims, France

PostPosted: Mon Jan 16, 2012 4:50 am    Post subject: Thanks for your help! Reply with quote

Hi, sorry for the delay, largely because I was at a conference for a week, and CP has been down.
-> please don't apoligise! You helped me so much. I don't mind waiting a week or two for an answer!

I've tested your script and it works very well! Thanks to this script it really look like the bitset "pause outside battle" had been implemented!.

Sorry but again I need you help to implement a game menu. It is the one of RPG Maker

Here is a screen
http://www.mediafire.com/i/?kx073t8swekvs72

I've managed to make all the left part (gold menu items...) but what I can't figure out is the right part and how to make appear the heroes datas. I've tried with a menu but the first line of the menu was always highlighted. I need to highlight changing the background color, not using the first menu line.

Hero portaits are with the small ennemy sprite command
Other things to be taken into account is that player datas will change all along the game...

Any suggestion is very welcome!

Anyway, Happy New Year 2012 to you and to everybody and have a nice day!
_________________
It's time to make games!


Last edited by bis_senchi on Tue Jan 24, 2012 9:58 pm; edited 1 time in total
Back to top
View user's profile Send private message Visit poster's website MSN Messenger
TMC
On the Verge of Insanity




Joined: 05 Apr 2003
Posts: 3240
Location: Matakana

PostPosted: Thu Jan 19, 2012 10:23 pm    Post subject: Reply with quote

Ah, good to hear that it works.

---

Yes, custom menus aren't very flexible. You would need to use a scripted slice-based menu system. Actually I want to extend custom menus to be slice based, allowing that sort of menu, and had been working on that a couple of months ago. I might try to implement that in the new few days, but since the menu contents would have to be generated by script anyway, it might not save you much work. I'll have to get back to you about that, hope you don't mind waiting.
_________________
"It is so great it is insanely great."
Back to top
View user's profile Send private message Send e-mail
bis_senchi




Joined: 08 Jun 2004
Posts: 460
Location: Reims, France

PostPosted: Tue Jan 24, 2012 9:57 pm    Post subject: No problems! Reply with quote

No problems at all with waiting a week or two!

When you think the line codes are efficient fell free to add them into the wip version and leave a message here.

Speaking about custom, I noticed that a new line "slice collection" has appeared. Could you please tell me why menu have been implemented?

Thanks for your help and have a nice day!
_________________
It's time to make games!
Back to top
View user's profile Send private message Visit poster's website MSN Messenger
TMC
On the Verge of Insanity




Joined: 05 Apr 2003
Posts: 3240
Location: Matakana

PostPosted: Thu Jan 26, 2012 12:38 am    Post subject: Reply with quote

The slice collection editor has been there quite a long time; since before Zenzizenzic. It's used to layout slices which you can then load in-game using the 'load slice collection' command. If you don't know what slices are, look at the 'Slices' page on the wiki. The slice collection editor is most useful for things like menus. If you want some examples, I suggest looking through the slice collections in Mr. The Hamster's Math Class
_________________
"It is so great it is insanely great."
Back to top
View user's profile Send private message Send e-mail
bis_senchi




Joined: 08 Jun 2004
Posts: 460
Location: Reims, France

PostPosted: Sat Feb 11, 2012 9:05 pm    Post subject: And once again... a question Reply with quote

Thanks for making me noticing this game! Slice Collection seems to be very interesting. I don't know if I'm going to use them but it worths nothing it exists.

Once again I've got a problem with a "call chain script" which means my scripts overloading.

When I had this problem with the menu I found a way to prevent it using the following line

handle:= find menu ID (1)
if (handle) then (close menu (handle))

I was giving Hspeak the menu number, it checked if the menu was opened or not, andn if it was opened, I asked to close it.

I would like to do the same for my slice

if (player menu) then (free slice (player menu))
(player menu creating with player menu:= create rect (200, 150, 0))

and for my sprites
if (sl) then (free sprite (sl))
#sprites created with sl := load small enemy sprite (1,3)

if (sl2) then (free sprite (sl2))
#sprites created with sl2 := load small enemy sprite (2,1)

My question is the following : what is the equivalent for slices and sprites
of "find menu ID"?

As always thanks a lot in advance for your help!
_________________
It's time to make games!
Back to top
View user's profile Send private message Visit poster's website MSN Messenger
bis_senchi




Joined: 08 Jun 2004
Posts: 460
Location: Reims, France

PostPosted: Fri Feb 24, 2012 10:33 pm    Post subject: So any idea? Reply with quote

So? Does anybody has an idea about this? Is it possible to do it?
_________________
It's time to make games!
Back to top
View user's profile Send private message Visit poster's website MSN Messenger
TMC
On the Verge of Insanity




Joined: 05 Apr 2003
Posts: 3240
Location: Matakana

PostPosted: Sat Feb 25, 2012 2:44 am    Post subject: Reply with quote

Oh! Sorry, I never noticed your last message!

There is a command to check whether a slice handle exists, "slice is valid". Using this command, you can avoid causing error messages to be displayed. However there is a problem: once a slice is deleted, its handle can be reused for a different slice! So if you write
Code:
if (slice is valid (player menu)) then (free slice (player menu))

then you might actually be deleting a completely different slice!

One solution is to do the following instead:
Code:
if (slice is valid (player menu)) then (
  free slice (player menu)
  player menu := 0
)

Since no slice ever has a slice handle of 0. And anywhere else where you delete the 'player menu' slice, also add "player menu := 0".

There is another option that is less error-prone and more similar to "find menu ID". You can assign a unique lookup code to a slice. You can edit lookup codes in the slice collection editor by editing any slice and pressing Enter on "Lookup Code". Add a "Player Menu" lookup code, then export the .HSI file for the game.

Code:
player menu:= create rect (200, 150, 0)
set slice lookup (player menu, sli:Player menu)


and later:

Code:
variable (sl)
sl :=  lookup slice (sli:Player menu)
if (sl) then (free slice (sl))


In fact, now you don't even need the "player menu" variable anymore! You could replace "player menu" with "lookup slice (sli:Player menu)" everywhere.

It's not necessary to name a lookup code in the slice collection editor, but it's a good idea. You can use defineconstant instead.

-----

I said that we wanted to make all menus slice-based, which would make them easier to customise with scripts. Well, after discussing it on the developer mailing list for two weeks, I'm ready to start work on it. But it would not make the menu that you want much easier to create; it would still require scripting to create. So just go ahead with scripting it.

However, I'll give you a suggestion for creating the menu. Create the layout of the individual menu items in the slice collection editor. Tag each part of it (like the portrait, and the HP text slice) with lookup codes, like this:





Then use a script something like this to create each menu item:

Code:
script, add hero to menu, who, begin
  variable (collection, sl)
  collection := load slice collection (##)

  sl := lookup slice (sli: hero menu name, collection)
  get hero name (0, who)
  set slice text (sl, 0)

  sl := lookup slice (sli: hero menu HP, collection)
  $0 = "HP: "
  append number (0, get hero stat (who, stat:hp, current stat))
  $0 + "/"
  append number (0, get hero stat (who, stat:hp, maximum stat))
  set slice text (sl, 0)

  # Also set the portrait and whatever else
  # ...

  set slice parent (collection, MENU CONTAINER)
end


I should put this on the wiki...
_________________
"It is so great it is insanely great."
Back to top
View user's profile Send private message Send e-mail
bis_senchi




Joined: 08 Jun 2004
Posts: 460
Location: Reims, France

PostPosted: Thu Mar 01, 2012 10:14 pm    Post subject: I managed to use the slice collection menu Reply with quote

I managed to use the slice collection menu! To make appear the slice I've created I need set slice look up right?

How does this command works? Do I need to get right of the line global variable (player menu)

Isn't it a problem to have 2 things with the same name?

set slice lookup (player menu, sli:Player menu)
set slice look up (global variable, name/ id on the slice collection menu?)

Thanks a lot for your help!
_________________
It's time to make games!
Back to top
View user's profile Send private message Visit poster's website MSN Messenger
TMC
On the Verge of Insanity




Joined: 05 Apr 2003
Posts: 3240
Location: Matakana

PostPosted: Sat Mar 03, 2012 7:34 am    Post subject: Reply with quote

Lookup codes are used only by the "lookup slice" command. Currently they have no other use. I used lookup codes to find slices in the slice collection which I wanted to modify.

Lookup slice has a second argument, which allows you to restrict the search just to the child (and grandchild and great-grandchildren...) of a particular slice. It's OK to give multiple slices the same lookup code if you use this.

No, you don't need to get rid of "global variable (player menu)". I was just suggesting that it's possible.
_________________
"It is so great it is insanely great."
Back to top
View user's profile Send private message Send e-mail
bis_senchi




Joined: 08 Jun 2004
Posts: 460
Location: Reims, France

PostPosted: Wed Mar 07, 2012 3:42 am    Post subject: I've managed to create a collection but Reply with quote

Following your advice I've managed to create a slice collection but I can't make appear my portrait above my menu .
The one I've made is kept under the slice used for the menu body.
I also have this pb with my text slice.

Could you please tell me how am I supposed to make appear my sprite slice above my rect slice?

Thanks a lot in advance for your help!
_________________
It's time to make games!
Back to top
View user's profile Send private message Visit poster's website MSN Messenger
TMC
On the Verge of Insanity




Joined: 05 Apr 2003
Posts: 3240
Location: Matakana

PostPosted: Sat Mar 10, 2012 3:29 pm    Post subject: Reply with quote

Child slices are always drawn on top of their parent. Normally to cause a slice to be drawn over a rect slice, you would make the slice a child of the rect slice, like this:

Code:
variable (rect, slice)
rect := create rect (...)
slice := load portrait sprite (...)
set parent (slice, rect)


You can also make one slice appear above another by moving it afterwards the other in the slice tree, but sharing the same parent. You can use the "move slice above" command for that.
_________________
"It is so great it is insanely great."
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic    Castle Paradox Forum Index -> HELP! All times are GMT - 8 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You can post new topics in this forum
You can reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group