help with DSAs!
Moderator: Zyx
Forum rules
Please read the Forum rules and policies before posting.
Please read the Forum rules and policies before posting.
- Paul Stevens
- CSBwin Guru
- Posts: 4319
- Joined: Sun Apr 08, 2001 6:00 pm
- Location: Madison, Wisconsin, USA
yay! thank you for that! now I can teleport monsters from:
-opened doors,
-closed pits,
-opened and closed fake walls, visible and invicible
wchich was undoable, because ordinary teleporter couldn`t lay on them
-opened doors,
-closed pits,
-opened and closed fake walls, visible and invicible
wchich was undoable, because ordinary teleporter couldn`t lay on them
Spoiler
(\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/)
Spoiler
(@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@)
Spoiler
(>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<)
- Paul Stevens
- CSBwin Guru
- Posts: 4319
- Joined: Sun Apr 08, 2001 6:00 pm
- Location: Madison, Wisconsin, USA
If this is a duplicate, I apologize. I cannot find
the original post anywhere.
Adamo wrote privately:
You cannot simply place the DSA somewhere in the
dungeon and expect it to move monsters around.
You must trigger the DSA. An easy way is to put an
invisible pressure pad at location A, operated by a
monster, and directed to the DSA as a target. When the
monster steps on the pad a message will be sent to the
DSA and the monster will be moved from A to B. Does
that make sense?
Moreover, you put a "Swap Empty Flask To Potion"
DSA there. Not a "Move Monster" DSA. So there are a
couple of thing that need repair.
the original post anywhere.
Adamo wrote privately:
I'll reply publicly because it might help someone else.DSA "move_monster from A to B" doesn`t work.
You cannot simply place the DSA somewhere in the
dungeon and expect it to move monsters around.
You must trigger the DSA. An easy way is to put an
invisible pressure pad at location A, operated by a
monster, and directed to the DSA as a target. When the
monster steps on the pad a message will be sent to the
DSA and the monster will be moved from A to B. Does
that make sense?
Moreover, you put a "Swap Empty Flask To Potion"
DSA there. Not a "Move Monster" DSA. So there are a
couple of thing that need repair.
- Paul Stevens
- CSBwin Guru
- Posts: 4319
- Joined: Sun Apr 08, 2001 6:00 pm
- Location: Madison, Wisconsin, USA
Adamo wrote:
Adamo: For some reason, you copied a Mummy Generator
from 11(16,24) on top of your Giggler Generator. That is
why Mummies are generated there. Your DSA "Monster_
Leaves_Objects" did the damage when I killed the Giggler.
of the Giggler Generator. The Mummy Generator was last
on the list and had no graphic. If you want the graphic to
remain then you need to add a graphic to your Mummy
Generator. Watch out!!!!! The floor graphics have different
indexes on different levels!!!! You may need to put a
'Square Drain' graphic on the Mummy Generator in order
to get a 'Firepot' graphic on a different level.
Again, a public reply to clear up any confusion.sometemes giggler (one) generator generates mummies
(four) instead of one giggler.
Adamo: For some reason, you copied a Mummy Generator
from 11(16,24) on top of your Giggler Generator. That is
why Mummies are generated there. Your DSA "Monster_
Leaves_Objects" did the damage when I killed the Giggler.
Same problem. You copied a Mummy Generator on topWhen a giggler dies in a place with a floor decoration, that decoration disappears.
of the Giggler Generator. The Mummy Generator was last
on the list and had no graphic. If you want the graphic to
remain then you need to add a graphic to your Mummy
Generator. Watch out!!!!! The floor graphics have different
indexes on different levels!!!! You may need to put a
'Square Drain' graphic on the Mummy Generator in order
to get a 'Firepot' graphic on a different level.
- Paul Stevens
- CSBwin Guru
- Posts: 4319
- Joined: Sun Apr 08, 2001 6:00 pm
- Location: Madison, Wisconsin, USA
Adamo wrote privately:
inconsistent sizes. I think you confused width in pixels versus
width in bytes. At any rate it is a factor of 2 too large.
CSBwin 9.959 (in CSBwin-CSBuild.zip) checks for this
being too large and simply draws trash instead of crashing.
recording and send the recordnnn.log file along with
everything else. Then I am pretty much guaranteed to
be able to reproduce the problem.
Your Pushbutton at 4(16,36) has a wall decoration withSometimes game crashes on level 4 near the stairs
inconsistent sizes. I think you confused width in pixels versus
width in bytes. At any rate it is a factor of 2 too large.
CSBwin 9.959 (in CSBwin-CSBuild.zip) checks for this
being too large and simply draws trash instead of crashing.
It would help greatly if you would simply turn onI cannot guarantee that bug wil appear. At least on my computer it happens
sometimes
recording and send the recordnnn.log file along with
everything else. Then I am pretty much guaranteed to
be able to reproduce the problem.
- Paul Stevens
- CSBwin Guru
- Posts: 4319
- Joined: Sun Apr 08, 2001 6:00 pm
- Location: Madison, Wisconsin, USA
Adamo wrote:
"Monster_Leaves_Objects" put it there. I even told you
where it copied it from. Have you done
any debugging? Turn on 'Timer Trace' and 'DSA Trace'
just as you are about to kill the giggler on that Firepot.
Then turn it off again, save, and quit. Look at the trace file
and you will see what your DSA has done. It copied that
Mummy Generator on top of the Giggler Generator.
I really don't want to debug your DSA for you.
As I said in my previous reply...Your DSA namedI don`t have any idea how "mummy generator" comes there. When I open my dungeon.dat file by the editor, there is only "giggler (0) generator (fire pot)" actuator at 05(17,38 ). Turning on "reverse target line direction" shows, that the only one order for this tile comes from 05(17,35) (wchich is a preesure pad, that sets this gererator). Could you check it in CSbuilder editor? It seems that the engine does something, wchich is not builded by me.
"Monster_Leaves_Objects" put it there. I even told you
where it copied it from. Have you done
any debugging? Turn on 'Timer Trace' and 'DSA Trace'
just as you are about to kill the giggler on that Firepot.
Then turn it off again, save, and quit. Look at the trace file
and you will see what your DSA has done. It copied that
Mummy Generator on top of the Giggler Generator.
I really don't want to debug your DSA for you.
that DSA, wchich is responsible for leaving additional objects by the monsters worked that way:
added an object, wchich monster leaved after death. If there was nothing in the tile of the given monster type, added nothing. BUT except doing this, the DSA choosed one tile from the level, where I put that DSA (in this case lvl 11) and added also the contents of that tile. If there was an empty wall, then no problem. But if there was a floor decoration, a generator, etc then engine tried to add this as the second "object" after the first one; that`s why, if the giggler leaved falchion, for example, and also DSA choosed a tile with, say, round grid, the giggler leaved falchion after death. When you picked up a falchion from a floor, then a decoration appeared (or an existing decoration was replaced by new one, wchich may also mean by decoration= none). Of course, if there was no additional object in the "proper" giggler tile, then a decoration was replaced instantly.
That`s why a DSA also copied a mummy generator into the new tile; but a mummy appeared only, when a giggler was killed by a giggler generator tile. It`s because only there is a destination of a pressure pad, wchich sets that generator.
I really don`t have idea, why the engine choosed these tiles, wchich were choosen. For each monster there was different tile, but I couldn`t see any order of it. I was going to check all the "special" tiles on level 11 by each of the monster using timer and DSA traces and then replace these tiles by ordinary walls without any decorations etc., but that would require a LOT of efforts. Besides I would have to partially rebuild the level.. So I decided to make a new, standard level (32x32 tiles) especially for the "monster death filter" and this DSA, all filled with walls (except horizontal line of objects, of course). I`m sure that DSA still checks for the new tiles, but in almost empty level won`t find anything except empty walls!
However, everything works fine now.
So my advice to everyone, who uses this DSA is: make a special, empty level for this one
added an object, wchich monster leaved after death. If there was nothing in the tile of the given monster type, added nothing. BUT except doing this, the DSA choosed one tile from the level, where I put that DSA (in this case lvl 11) and added also the contents of that tile. If there was an empty wall, then no problem. But if there was a floor decoration, a generator, etc then engine tried to add this as the second "object" after the first one; that`s why, if the giggler leaved falchion, for example, and also DSA choosed a tile with, say, round grid, the giggler leaved falchion after death. When you picked up a falchion from a floor, then a decoration appeared (or an existing decoration was replaced by new one, wchich may also mean by decoration= none). Of course, if there was no additional object in the "proper" giggler tile, then a decoration was replaced instantly.
That`s why a DSA also copied a mummy generator into the new tile; but a mummy appeared only, when a giggler was killed by a giggler generator tile. It`s because only there is a destination of a pressure pad, wchich sets that generator.
I really don`t have idea, why the engine choosed these tiles, wchich were choosen. For each monster there was different tile, but I couldn`t see any order of it. I was going to check all the "special" tiles on level 11 by each of the monster using timer and DSA traces and then replace these tiles by ordinary walls without any decorations etc., but that would require a LOT of efforts. Besides I would have to partially rebuild the level.. So I decided to make a new, standard level (32x32 tiles) especially for the "monster death filter" and this DSA, all filled with walls (except horizontal line of objects, of course). I`m sure that DSA still checks for the new tiles, but in almost empty level won`t find anything except empty walls!
However, everything works fine now.
So my advice to everyone, who uses this DSA is: make a special, empty level for this one
Spoiler
(\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/)
Spoiler
(@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@)
Spoiler
(>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<)
So you are sayign the DSA is droppign the correct items AND dropping the wrong items too? M first guess, as you have done this before, is that you have two or more DSAs, one of which is coded wrongly, on the same tile as the 'monster drop' DSA location and so every time a monster dies a few DSAs are operating...the correcto one droppign the falchion, and a different one that is grabbing other items - if it is random, maybe two or three!
The engine is doing NOTHING wrong adamo...this is purely your DSA is doing somethign weird. Dont' adjust your dungeon, adjust your DSA. Check that there isn't multiple DSAs being operated, THEN trace the DSA operation as Paul described
The engine is doing NOTHING wrong adamo...this is purely your DSA is doing somethign weird. Dont' adjust your dungeon, adjust your DSA. Check that there isn't multiple DSAs being operated, THEN trace the DSA operation as Paul described
I have two DSAs on one tile; they have to be there because of the "monster death filter", wchich both of them are using. MDF destinates them.
But the second DSA, responsible for other thing (checks, when a worm dies on lvl 5), has one parameter (B) at lvl 5 tile, wchich is proper, and another one somewhere on the MDF level.
So maybe you`re right !!
But the second DSA, responsible for other thing (checks, when a worm dies on lvl 5), has one parameter (B) at lvl 5 tile, wchich is proper, and another one somewhere on the MDF level.
So maybe you`re right !!
Spoiler
(\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/)
Spoiler
(@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@)
Spoiler
(>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<)
ok. As I nearly reached the limit of monsters (thanx to Paul Stevens for AltMonstersGraphics feature & thanx to Kentaro for his AMG tools !), some old DSAs I used with Monster Death Filter and Monster Attack Filter are a bit outdated now: some alternate monsters I`m using should leave different objects depending on the graphics version it uses; for example, the white skeleton (alternate graphics=0) should leave falchion, but a black skeleton (alternate graphisc=3) should leave, for example, a helmet, etc. Is it possible to update the DSA, responsible for leaving objects by monsters, to it`s alternates, depending of an AMG monster version (skeleton AMG=0 leaves object X, skeleton AMG=1 leaves object Y, skeleton AMG=2 leaves object Z, skeleton AMG=3 leaves object Q)?
Right now the DSA is:
it seems that parameter B is not used (?)
mon0AMG0 leaves object 01
mon0AMG1 leaves object 02
mon0AMG2 leaves object 03
mon0AMG3 leaves object 04
mon1AMG0 leaves object 05
mon1AMG1 leaves object 06
mon1AMG2 leaves object 07
mon1AMG3 leaves object 08
mon2AMG0 leaves object 09
mon2AMG1 leaves object 10
mon2AMG2 leaves object 11
mon2AMG3 leaves object 12
mon3AMG0 leaves object 13
mon3AMG1 leaves object 14
mon3AMG2 leaves object 15
mon3AMG3 leaves object 16
mon4AMG0 leaves object 17
...etc...
Thanx for help !
Right now the DSA is:
Code: Select all
S0: L8 L0 &PARAM@ L4 &@ ??{(3,C0)}
C0: L0 &@ L10 L2 &MONSTER@ L0 L20 &! LA L11 &@ &+ L21 &! L1 &@ L32 &* L2 &@ &+ L32 &* L3 &@ &+ L22 &! JT0
T0: L15 L22 &@ L20 &@ &DUP &1+ L20 &! L21 &@ L15 L65535 F &DUP L1 &NEG &= ?JT3 &%ADD JT0
T3: N
mon0AMG0 leaves object 01
mon0AMG1 leaves object 02
mon0AMG2 leaves object 03
mon0AMG3 leaves object 04
mon1AMG0 leaves object 05
mon1AMG1 leaves object 06
mon1AMG2 leaves object 07
mon1AMG3 leaves object 08
mon2AMG0 leaves object 09
mon2AMG1 leaves object 10
mon2AMG2 leaves object 11
mon2AMG3 leaves object 12
mon3AMG0 leaves object 13
mon3AMG1 leaves object 14
mon3AMG2 leaves object 15
mon3AMG3 leaves object 16
mon4AMG0 leaves object 17
...etc...
Thanx for help !
Spoiler
(\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/)
Spoiler
(@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@)
Spoiler
(>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<)
Yes, you can use the north, east, west and south facing of each tile to drop alternate items for alt1, alt2 alt3 versions of monsters
. Nothing to do with parameter B
It's late and I'm in bed, I will amend the DSA tomorrow for you if no one else does it tonight
Basically you would need to
- increase the L2 to L9 just before &MONSTER@ (to catch more monster parameters including the graphics value)
Adjust the L15 to L1 at the start of T0 (so you are only initially looking at the north face of the tile for objects to drop)
Create an addition factor based on the value in array 18 (the monster alternate graphics value) that either adds nothing if 0 (normal version) 1 if 1, 3 if 2 and 7 if 3 (as 1 = north, 2 = east, 4 = south and 8 = west)
. Nothing to do with parameter B
It's late and I'm in bed, I will amend the DSA tomorrow for you if no one else does it tonight
Basically you would need to
- increase the L2 to L9 just before &MONSTER@ (to catch more monster parameters including the graphics value)
Adjust the L15 to L1 at the start of T0 (so you are only initially looking at the north face of the tile for objects to drop)
Create an addition factor based on the value in array 18 (the monster alternate graphics value) that either adds nothing if 0 (normal version) 1 if 1, 3 if 2 and 7 if 3 (as 1 = north, 2 = east, 4 = south and 8 = west)
- Sophia
- Concise and Honest
- Posts: 4240
- Joined: Thu Sep 12, 2002 9:50 pm
- Location: Nowhere in particular
- Contact:
Is storing the alternate graphics in parameter 8 something that has been added to very recent versions of CSB?
It's not in the documentation for &MONSTER@ and when I try to do something that should work (I think) in my dungeon, it says there is nothing there.
This should work in theory, according to what beo has said, but I haven't tested it:
It's not in the documentation for &MONSTER@ and when I try to do something that should work (I think) in my dungeon, it says there is nothing there.
This should work in theory, according to what beo has said, but I haven't tested it:
Code: Select all
S0 = L8 L0 &PARAM@ L4 &@ ??{(3,C0)}
C0 = L0 &@ L10 L9 &MONSTER@ L0 L20 &! LA L11 &@ &+ L21 &! L1 &@ L32 &* L2 &@ &+ L32 &* L3 &@ &+ L22 &! L1 L18 &@ &SHIFT L90 &! JT0
T0 = L15 L22 &@ L20 &@ &DUP &1+ L20 &! L21 &@ L90 &@ L65535 F &DUP L1 &NEG &= ?JT3 &%ADD JT0
- Paul Stevens
- CSBwin Guru
- Posts: 4319
- Joined: Sun Apr 08, 2001 6:00 pm
- Location: Madison, Wisconsin, USA
Is the page cached on your machine? I just lookedIt's not in the documentation for &MONSTER@
and it is in the page:
http://www.dianneandpaul.net/CSBwin/doc ... guage.html
- Sophia
- Concise and Honest
- Posts: 4240
- Joined: Thu Sep 12, 2002 9:50 pm
- Location: Nowhere in particular
- Contact:
So it is.
Ok, Adamo, I was able to actually try it and debug it. I had the parameter wrong-- it turned out I had been looking for one too many, which is why it wasn't there.
Anyway, this one has been tested and works:
Ok, Adamo, I was able to actually try it and debug it. I had the parameter wrong-- it turned out I had been looking for one too many, which is why it wasn't there.
Anyway, this one has been tested and works:
Code: Select all
S0 = L8 L0 &PARAM@ L4 &@ ??{(3,C0)}
C0 = L0 &@ L10 L8 &MONSTER@ L0 L20 &! LA L11 &@ &+ L21 &! L1 &@ L32 &* L2 &@ &+ L32 &* L3 &@ &+ L22 &! L1 L17 &@ &SHIFT L90 &! JT0
T0 = L15 L22 &@ L20 &@ &DUP &1+ L20 &! L21 &@ L90 &@ L65535 F &DUP L1 &NEG &= ?JT3 &%ADD JT0
Thanx!!! You`re saving my dungeon from total chaos !
Spoiler
(\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/)
Spoiler
(@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@)
Spoiler
(>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<)
hello! I need another DSA help..!
I`m using an "overlay" DSA, wchich starts and stops showing overlays by activating (toggling)/disactivating (closing) a DSA:
But I changed my mind. I made a lot of overlays wchich I want to tie each of them with a proper level; for example - when you`re on level 4th, overlay frames from 1 to 16 are shown; when you`re on level 5th, overlay frames from 17 to 22 are shown; when you`re on level 9th, overlay frames from 23 to 27 are shown; on level 10th frames from 28 to 57... etc.
Like this:
level 0: frames A to B
level 1: frames C to D
level 2: -
level 3: frames E to F
level 4: -
level 5: frames G to H
(...) etc
What I need is when a party comes to, say, 9th level, an overlay in CSBgraphics.dat (wievport overlay) from frames X to Y starts running automaticly (=without toggling/setting a DSA by actuators on the stairs/pits/teleporters destinations). I need this because I want to make special overlays for some levels and I have a lot of stairs/pits/teleporters in a dungeon; I had to put an actuator on each stair, on each teleporter destination and below each pit to change an overlay.
If I have a level filled with a water, where leads, say, 40 pits from higher level, I would have to make 40 actuators, wchich sets proper DSA on each pit destination. And when a whole level uses that overlay, moreover levels below and above uses different overlays, that`d be a really hard task to do.
I`m using an "overlay" DSA, wchich starts and stops showing overlays by activating (toggling)/disactivating (closing) a DSA:
Code: Select all
0S0: LB &1+ L16 &% SB L0 L50 L0 L0 LB &1+ &OVERLAY M1S
0C0: 1L0 L100 L0 L0 L1 &OVERLAY
0T0: J
1T0: 0J0
Like this:
level 0: frames A to B
level 1: frames C to D
level 2: -
level 3: frames E to F
level 4: -
level 5: frames G to H
(...) etc
What I need is when a party comes to, say, 9th level, an overlay in CSBgraphics.dat (wievport overlay) from frames X to Y starts running automaticly (=without toggling/setting a DSA by actuators on the stairs/pits/teleporters destinations). I need this because I want to make special overlays for some levels and I have a lot of stairs/pits/teleporters in a dungeon; I had to put an actuator on each stair, on each teleporter destination and below each pit to change an overlay.
If I have a level filled with a water, where leads, say, 40 pits from higher level, I would have to make 40 actuators, wchich sets proper DSA on each pit destination. And when a whole level uses that overlay, moreover levels below and above uses different overlays, that`d be a really hard task to do.
Spoiler
(\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/)
Spoiler
(@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@)
Spoiler
(>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<)
- Paul Stevens
- CSBwin Guru
- Posts: 4319
- Joined: Sun Apr 08, 2001 6:00 pm
- Location: Madison, Wisconsin, USA
What you need is a 'Party Move' Filter.
first/old x/old y/old level -- last/new x/new y/new level
This would be for information only...you could
not affect the movement and it would occur at
each intermediate location in the case of multiple
teleports/pits. The 'first' would be true on the
first step of the multiple movement and the 'last'
would be true at the final destination. So normally
'first' and 'last' would both be true.
In the case where the final destination has a
Pressure-Pad that activates a pit under the party
or a teleporter at the party's location.......this
would result in two separate moves, each with
its 'first' and 'last'.
Does this sound like it would work for you? You
could make your own 'Entering Level' filter by
using the 'last' and 'new level' flags to send a
message to the new level. In that way, each level
could have its own 'Entering This Level' actuator.
first/old x/old y/old level -- last/new x/new y/new level
This would be for information only...you could
not affect the movement and it would occur at
each intermediate location in the case of multiple
teleports/pits. The 'first' would be true on the
first step of the multiple movement and the 'last'
would be true at the final destination. So normally
'first' and 'last' would both be true.
In the case where the final destination has a
Pressure-Pad that activates a pit under the party
or a teleporter at the party's location.......this
would result in two separate moves, each with
its 'first' and 'last'.
Does this sound like it would work for you? You
could make your own 'Entering Level' filter by
using the 'last' and 'new level' flags to send a
message to the new level. In that way, each level
could have its own 'Entering This Level' actuator.
Paul Stevens wrote:
I was thinking of a DSA, wchich checks, wchich level the party is on, and, due to that, turn on appriopriate overlay frames. How to build an "Entering This Level" actuator? Do I have to put it in every stairs/teleporter/pit destination or only once per level?
I think it would work. I`ve got a bit of multiply teleporters and other oddities, but I could eventually rebuild a dungeon a bit.
I guess that DSA I was thinking about would look like (if doable) similar to the others, where first display state would be responsible for level 0, second - level 1, third - level 2, fourth - level 3, etc., each state with instruction wchich overlay frames to show. For example in state 1 ( for level 0) - instruction to show frames 1 - 32; in state 2 (for level 1) - instruction to show frames 33 - 64; in state 3 - frames 65 - 98; etc, etc. So when entering from level 0 to 1, old 1st state (1-32 frames) is closed and new 2nd state (33-64 frames) is opened.
So - that DSA would have to check wchich level party is and, due to that, turn on appriopriate state.
But I`m ignorant in DSAying so cannot write it.. I don`t even know if that I wrote is sensible..
Thank you the explanation. Especially the quoted part.Does this sound like it would work for you? You
could make your own 'Entering Level' filter by
using the 'last' and 'new level' flags to send a
message to the new level. In that way, each level
could have its own 'Entering This Level' actuator.
I was thinking of a DSA, wchich checks, wchich level the party is on, and, due to that, turn on appriopriate overlay frames. How to build an "Entering This Level" actuator? Do I have to put it in every stairs/teleporter/pit destination or only once per level?
I think it would work. I`ve got a bit of multiply teleporters and other oddities, but I could eventually rebuild a dungeon a bit.
I guess that DSA I was thinking about would look like (if doable) similar to the others, where first display state would be responsible for level 0, second - level 1, third - level 2, fourth - level 3, etc., each state with instruction wchich overlay frames to show. For example in state 1 ( for level 0) - instruction to show frames 1 - 32; in state 2 (for level 1) - instruction to show frames 33 - 64; in state 3 - frames 65 - 98; etc, etc. So when entering from level 0 to 1, old 1st state (1-32 frames) is closed and new 2nd state (33-64 frames) is opened.
So - that DSA would have to check wchich level party is and, due to that, turn on appriopriate state.
But I`m ignorant in DSAying so cannot write it.. I don`t even know if that I wrote is sensible..
Spoiler
(\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/)
Spoiler
(@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@)
Spoiler
(>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<)
- Paul Stevens
- CSBwin Guru
- Posts: 4319
- Joined: Sun Apr 08, 2001 6:00 pm
- Location: Madison, Wisconsin, USA
Well, everything you want to do is easy
with existing tools. EXCEPT you do not
know when the party changes levels.
You have to put pressure pads at every
possible entrance to a level.
Is that correct? Do you agree?
Therefore, I suggested a 'Party Move' filter
to activate your DSA whenever the party
moves. (Step events in other engines).
My suggestion of a 'Entering This Level'
DSA would work as follows:
The 'Party Move' DSA would be activated
every time the party moved. Then it
would decide what level the party was
on and, if it changed, send a message to
the party's new level. In your case, you
could put a DSA on each level to receive
the message and activate whatever
overlays you needed. The DSA on each
level was the 'Entering This Level' filter
that I mentioned.
You may also need a 'Leaving This Level'
notification, depending on your application.
That would be done the same way.
================================
Actually, all of this could be done with existing
tools by having a DSA that simply sits and
activates itself every tick (sends itself messages
wth delay of 1). It examines the party's location
and if it changes levels then it sends a message
to the new level.
It is not as 'Event Driven' as one would
like (it sits and polls rather than
responding to events), but it is not too bad.
The overhead of a single DSA every tick of
the clock is pretty negligible. I will write such
a DSA and post it for you. I was not anxious to
make a new release of CSBwin, anyway!
with existing tools. EXCEPT you do not
know when the party changes levels.
You have to put pressure pads at every
possible entrance to a level.
Is that correct? Do you agree?
Therefore, I suggested a 'Party Move' filter
to activate your DSA whenever the party
moves. (Step events in other engines).
My suggestion of a 'Entering This Level'
DSA would work as follows:
The 'Party Move' DSA would be activated
every time the party moved. Then it
would decide what level the party was
on and, if it changed, send a message to
the party's new level. In your case, you
could put a DSA on each level to receive
the message and activate whatever
overlays you needed. The DSA on each
level was the 'Entering This Level' filter
that I mentioned.
You may also need a 'Leaving This Level'
notification, depending on your application.
That would be done the same way.
================================
Actually, all of this could be done with existing
tools by having a DSA that simply sits and
activates itself every tick (sends itself messages
wth delay of 1). It examines the party's location
and if it changes levels then it sends a message
to the new level.
It is not as 'Event Driven' as one would
like (it sits and polls rather than
responding to events), but it is not too bad.
The overhead of a single DSA every tick of
the clock is pretty negligible. I will write such
a DSA and post it for you. I was not anxious to
make a new release of CSBwin, anyway!
- Paul Stevens
- CSBwin Guru
- Posts: 4319
- Joined: Sun Apr 08, 2001 6:00 pm
- Location: Madison, Wisconsin, USA
Go to:
http://www.dianneandpaul.net/CSBwin/DSA_Library/
and you will find a demo of the 'Enter Level'
filter capability implemented with existing
tools.
http://www.dianneandpaul.net/CSBwin/DSA_Library/
and you will find a demo of the 'Enter Level'
filter capability implemented with existing
tools.
- Paul Stevens
- CSBwin Guru
- Posts: 4319
- Joined: Sun Apr 08, 2001 6:00 pm
- Location: Madison, Wisconsin, USA
Big thanx for an overlay demonstration!
I`ve got another problem..
Paul Stevens wrote (DSA party fetch):
- strenght,
- dexterity,
- wisdom,
- vitality,
- anti-magic
- anti-fire
- luck
and increase them to the maximum (or just a bit). Or decrease them. Is that doable? For example, I want to make a DSA, wchich (when enabled), increases party`s strenght to the maximum (or up by 30 points, for example) and (when disabled) decreases it to the "normal" (ordinary) state; it should be operated by actuators.. When a party steps on a first pressure pad, that pad sends a SET message to the "affect strenght" DSA and party`s strenght is increased. When a party steps on a second pressure pad, that pad sends a CLEAR message to the "affect strenght" DSA and party`s strenght goes back to the previous state.
By operating these DSAs by pressure pads I could make a few very special places, where party`s strenght, vitality etc. could be highly increased using that way.
Then I could, for example, increase party`s anti-fire in a hall full of shooters (along with an information like "YOUR STRENGHT HAS BEEN INCREASED SOMEHOW" or "YOU ARE IN A BERSERK STATE") or decrease party`s dexterity in a giggler`s room.. etc, etc.
It gives a lot of possibilities for a designer = the game could be yet more complicated. Or it could be used as a hidden mechanisms in a dungeon planned by a designer (when party`s luck is increased by 30 on 9th level, for example).
Is that doable? Please help!
I`ve got another problem..
Paul Stevens wrote (DSA party fetch):
By operating on these values, I would like to make seven DSAs, each affecting one of the party attributes:results [10] through [16] are encoded in four 8-bit bytes: zero, minimum, maximum, current
result[10] = Luck
result[11] = Strength
result[12] = Dexterity
result[13] = Wisdom
result[14] = Vitality
result[15] = Anti-Magic
result[16] = Anti-Fire
- strenght,
- dexterity,
- wisdom,
- vitality,
- anti-magic
- anti-fire
- luck
and increase them to the maximum (or just a bit). Or decrease them. Is that doable? For example, I want to make a DSA, wchich (when enabled), increases party`s strenght to the maximum (or up by 30 points, for example) and (when disabled) decreases it to the "normal" (ordinary) state; it should be operated by actuators.. When a party steps on a first pressure pad, that pad sends a SET message to the "affect strenght" DSA and party`s strenght is increased. When a party steps on a second pressure pad, that pad sends a CLEAR message to the "affect strenght" DSA and party`s strenght goes back to the previous state.
By operating these DSAs by pressure pads I could make a few very special places, where party`s strenght, vitality etc. could be highly increased using that way.
Then I could, for example, increase party`s anti-fire in a hall full of shooters (along with an information like "YOUR STRENGHT HAS BEEN INCREASED SOMEHOW" or "YOU ARE IN A BERSERK STATE") or decrease party`s dexterity in a giggler`s room.. etc, etc.
It gives a lot of possibilities for a designer = the game could be yet more complicated. Or it could be used as a hidden mechanisms in a dungeon planned by a designer (when party`s luck is increased by 30 on 9th level, for example).
Is that doable? Please help!
Spoiler
(\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/)
Spoiler
(@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@)
Spoiler
(>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<)
- Paul Stevens
- CSBwin Guru
- Posts: 4319
- Joined: Sun Apr 08, 2001 6:00 pm
- Location: Madison, Wisconsin, USA
Are you sure? I think I could modify the attributes. The catterpillar decreases vitality in conflux. I don't have the dungeon.dat to check at the moment how I did it, but maybe the documentation about &CHAR! isn't accurate anymore.
BTW Adamo, it would be easier to change the current stat value instead of the max value for your purpose. You would avoid problems such has what would happen if the character increases his strength through gaining a level while under the boost effect.
BTW Adamo, it would be easier to change the current stat value instead of the max value for your purpose. You would avoid problems such has what would happen if the character increases his strength through gaining a level while under the boost effect.
atributtes like strenght, vitality, anti-magic, luck etc. are already modified by some existing items, like rabbit`s foot.
Zyx wrote:
What I need: when a normal strenght state is, say, 40, I would like to increase it to, say, by 30 for a moment and, when party goes back to normal state, decrease it back by 30.. just like the rabbit`s foot works (or some other items); increases character`s luck when worn and decreases back when dropped.
There are also potions, wchich increases these values (and increased value starts to glow in the inventory screen using this method).
Zyx wrote:
you`re right! I think I misunderstood the meaning of "maximum" in the quoted part (I though it`s 170 points).Adamo, it would be easier to change the current stat value instead of the max value for your purpose.
What I need: when a normal strenght state is, say, 40, I would like to increase it to, say, by 30 for a moment and, when party goes back to normal state, decrease it back by 30.. just like the rabbit`s foot works (or some other items); increases character`s luck when worn and decreases back when dropped.
There are also potions, wchich increases these values (and increased value starts to glow in the inventory screen using this method).
Spoiler
(\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/) (\__/)
Spoiler
(@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@) (@.@)
Spoiler
(>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<) (>s<)