Sorry your browser is not supported!

You are using an outdated browser that does not support modern web technologies, in order to use this site please update to a new browser.

Browsers supported include Chrome, FireFox, Safari, Opera, Internet Explorer 10+ or Microsoft Edge.

DarkBASIC Discussion / event counting question

Author
Message
Plugged
22
Years of Service
User Offline
Joined: 30th Nov 2002
Location: Hertfordshire
Posted: 1st Nov 2005 16:15
Hi guys just a general question about how is the best way to store data no where the player is the in story, such as if the player talks to one NPC hold do you store this, or how do you record that the player has played through a cut scene already. I thought maybe you could store each event as a boolean or have a counter(this assuming one event has to be done before the next can start).

any way any help would be nice.
cheers
Plugged


Work Hard; Play Harder ;
John Y
Synergy Editor Developer
22
Years of Service
User Offline
Joined: 4th Sep 2002
Location: UK
Posted: 1st Nov 2005 16:28
Games such as Mario 64 etc (where storage size is limited) just use boolean 'flags' which are set to true/1 when something has been done.

For example

gotStarOnLevel10a = 1

Then combinations of flags can be used to find out what is available to the player etc.

For example

if gotStarOnLevel2b = 1 and killedBowser2 = 1
Rem Enable secret door
endif

But, that is not possible in games where you need to store the enemies position and AI status etc etc, so a mixture of booleans, strings and integers in one big file sounds good.

blanky
20
Years of Service
User Offline
Joined: 3rd Aug 2004
Location: ./
Posted: 1st Nov 2005 17:47
Seeing as DB declares everything as a 4-byte integer, 31 bits would go wasted with that approach.

You may say something along the lines of, 'oh, what's 31 bits in the long run?', but that's why your Windows takes so long to get everything done, and requires 64MB of Ram.

Maybe with a few variables you could get away with it, but if you start going into the thousands I seriously recommend you start looking at BCDs. (Binary Coded Decimal)
Plugged
22
Years of Service
User Offline
Joined: 30th Nov 2002
Location: Hertfordshire
Posted: 2nd Nov 2005 00:47
i know about BCD but how can i store that in DB. would i have to come up with some code to convert decimal to BCD.

cheers
Plugged


Work Hard; Play Harder ;
Benjamin
22
Years of Service
User Offline
Joined: 24th Nov 2002
Location: France
Posted: 2nd Nov 2005 05:22 Edited at: 2nd Nov 2005 19:35
Here you go, just whipped up some functions to do what you need:



Edit: Sorry, forgot that this is the DBC section, and this code only works with DBP.

Tempest - P2P UDP Multiplayer Plugin - 45% - Integration is going well!
blanky
20
Years of Service
User Offline
Joined: 3rd Aug 2004
Location: ./
Posted: 2nd Nov 2005 17:24
Benjamin, you used semicolons at the end of Print statements... And you can't declare variables in DBC...

And in DBC, you can't 'Make Memory' :o

You could use arrays... But.. ah. The whole point was to *conserve* memory, really.

Bah. You even used '&&', '~~' and the non-existent (DBC) mod operator

But a very good attempt, nonetheless
Grog Grueslayer
Valued Member
19
Years of Service
User Offline
Joined: 30th May 2005
Playing: Green Hell
Posted: 2nd Nov 2005 19:21
Perhaps it's just time for Plugged to get Pro.
Benjamin
22
Years of Service
User Offline
Joined: 24th Nov 2002
Location: France
Posted: 2nd Nov 2005 19:34 Edited at: 2nd Nov 2005 19:36
Oh dear I had completely forgotten that this is the DBC section.

Just now I tried writing a DBC version, the only thing that stops it from being possible is that you can't do bitwise operations in DBC.

Quote: "You could use arrays... But.. ah. The whole point was to *conserve* memory, really."

Well you only make the array as big as you'll ever need it. There is no other way I can think of..

Tempest - P2P UDP Multiplayer Plugin - 45% - Integration is going well!
Me!
19
Years of Service
User Offline
Joined: 26th Jul 2005
Location:
Posted: 4th Nov 2005 10:03 Edited at: 7th Nov 2005 19:53
Quote: "the only thing that stops it from being possible is that you can't do bitwise operations in DBC"


pantomine voice chorus....OH YES YOU CAN!

all you need is the ascci code of a character, that gives you a number from 0 to 255 (one byte), then for each bits position you just subtract the value of its column, so to find if bit 5 is on you do

number=???
rem number is from 0 to 255 and was previously stored in a string for compactness
for i=1 to 4
rem i is the bit position in the byte from the left
read a
if number>a then number=number-a
if number>=0 and a<number then print "bit 5 is set"
next i
data 128,64,32,16,8,4,2,1

to do the same test for any bit in positions 128 to 1 then just alter the code so that i counts from 1 to the bit position you are testing, eg alter

for i=1 to 5

to

for i=1 to bit_pos

to add bits together to make a value is simpler, you just add the numbers 128,64,32,16,8,4,2,1 together (just once per bit) for each bit position, this gives you the value of the byte holding the bits you are storing, likewise, to test for known combinations you need to deconstruct the byte bit by bit as in the first example, so you would need to place the example code inside a recursive loop for multiple bits in a byte, we had to do this back in the 8 bit days, several computers didn`t have binary operators.



[edited to make more sense, I wrote something different to what I actualy meant to write in the code snippet , realy should have tested it be aware that I haven`t tested this, it was just "off the cuff" so to speak]

if there is one thing I can NOT tolerate, it`s intolerant people.
Plugged
22
Years of Service
User Offline
Joined: 30th Nov 2002
Location: Hertfordshire
Posted: 4th Nov 2005 10:13
i through of something similar but with and integer instead i gove some code on my other computer that left you get and set the colum bits in the integer so you can test and set them.

i'll post the code as soon as i can.

cheers
Plugged

PS just to clear up DBC has integer "data", real (float ... etc) "data#" and string "data$" and i think all are signed i.e. no unsigned variables.


Work Hard; Play Harder ;
Benjamin
22
Years of Service
User Offline
Joined: 24th Nov 2002
Location: France
Posted: 4th Nov 2005 15:54
@Me!: Thats a great idea! I thought there might be a way to do it something like that.

Tempest - P2P UDP Multiplayer Plugin - 45% - Integration is going well!
Grog Grueslayer
Valued Member
19
Years of Service
User Offline
Joined: 30th May 2005
Playing: Green Hell
Posted: 4th Nov 2005 20:27
Quote: "all you need is the ascci code of a character, that gives you a number from 0 to 255 (one byte), then for each bits position you just subtract the value of its column, so to find if bit 5 is on you do"


Yes, but if you type "number=255" in Classic then "number" is still an integer (a number between -2,147,483,648 to 2,147,483,647)... it will still take 4 bytes in memory to use that number. Even if he used a file that only saved numbers from 0 to 255 he would still have to use integers to load that data.

The only way for him to truely do it is to get Pro and define "number as byte" to get a number that only takes 1 byte of memory.

If I didn't have Pro i'd just put it in an array and forget about the memory loss... it's unavoidable in Classic.

Me!
19
Years of Service
User Offline
Joined: 26th Jul 2005
Location:
Posted: 4th Nov 2005 20:49
er, no, he can use characters, ascii 0 to 255, each character is a byte, for example A just uses one byte, theres a whole range of 255 characters you can use, one character for each of the possible 256 permutations a byte can have, plus you can write bytes to files or even memblocks if you have the enhancement pack, so thats not an issue, you just waste 3 unused bytes while you are doing the conversion, we used to have whole systems for compressing text characters into 5 bits etc, trust me, it works



Tyger software
Grog Grueslayer
Valued Member
19
Years of Service
User Offline
Joined: 30th May 2005
Playing: Green Hell
Posted: 5th Nov 2005 03:25
Quote: "er, no, he can use characters, ascii 0 to 255, each character is a byte, for example A just uses one byte, theres a whole range of 255 characters you can use, one character for each of the possible 256 permutations a byte can have, plus you can write bytes to files or even memblocks if you have the enhancement pack, so thats not an issue, you just waste 3 unused bytes while you are doing the conversion, we used to have whole systems for compressing text characters into 5 bits etc, trust me, it works "


Right... the conversion still makes it an integer so it's pointless to even try to make code to save memory by using bytes. He can write bytes to a file, but when he loads them up they ultimatly have to be loaded as integers because there is no way for Classic to define variables as specific data types (like boolean, byte, word, and so on). Even if he had the enhancement pack he still can't specify the data type. The only data types allowed in Classic are integer, real, and string.

This works in Classic:


The above code takes what would be loaded up (a string that represents a byte) and makes it "number" as you suggested... but once you add numbers to it... it shows that "number" is still an integer because it can go way beyond being a max of 255. Because Classic cannot make a specific data type like Pro... the programmer is stuck using an integer.

This works only in Pro (I left the colons in front of the rem statements if people want to try it in Classic to see the error):


Here the code defines "number" as a byte and "a" as a integer. When it adds to "number" because it's defined as a byte it will never go over 255 (it'll actually loop through 0 to 255 over and over). "a" is a regular integer just like "number" in the Classic code. "a" is way over 255 because it's an integer.

The only way to truely keep it as a byte is to keep it in string form... but since strings cannot be a set number of characters (something I want for Pro) there is no way to tell if having it in a string saves memory or causes even more memory loss than using integers.
Me!
19
Years of Service
User Offline
Joined: 26th Jul 2005
Location:
Posted: 5th Nov 2005 09:42 Edited at: 5th Nov 2005 09:47
yes! I know that , but we are on about saving storage, characters do just the same thing, you only ever have to decode one byte (character) at a time to get the flag value or write it, yes it`s long winded, but thats what computers are for, instead of using several numbers you use several bytes in a string, a 100 character (byte) string can hold 800 bits, as against a 800 number array that needs 32000 bytes, if you want to know what bit 329`s state is then you just divide by 8 to get the characters position and then extract the bit indicated by the remainder from that character, the data still only takes 100 bytes, you just have the overhead for the variables in the read/write routines, or to explain it another way, you use the functions to read an array of BITS stored in the characters, the function returns a true or false according to the value of the bit indicated that is stored somewhere in the string, at any one time you only ever access one bit and place the numeric result into a variable called (for example) InBit that is returned by the function, InBit is re-usable right through the code, the function just takes the bit position as the argument and returns 1 or 0 as the result, eg

if Bit_Set(17743) then print "bit 17743 in string Bit_String$ is set"

and to alter the value of a bit you use another function, eg

Set_Bit(32455)

will just find the correct character and then set the bit inside that character to the correct state, at any one time you only have the variables in the functions using ram, all the bits are only stored in the string, and only one bit is converted to a number at a time for compare purposes, you just refer to the bits as though they where numbers in an array, not by name but by index number, anyway you would need to store a huge amount of bits to require such compression, for example 1000000 (one million) flag values use less than 1mb of ram if stored as just bytes rather than bits, I can`t think of a case where you need to keep track of one million flags (or even one thousand) unless your code was very messy and didn`t use loops or functions, in most cases just setting a char to 1 or 0 would be sufficient for flags (and the conversion would be simpler eg.. if (val(mid$(flag$,3245)) ), plus trawling through very large strings for large amounts of bit values is going to slow things down massivley, if the 2d command set was better you could make a 1 colour bitmap and plot points to it to represent flag values, but you can`t set colour depth as low as 1 bit and the pixel commands are ruinously slow anyway.



if there is one thing I can NOT tolerate, it`s intolerant people.
Grog Grueslayer
Valued Member
19
Years of Service
User Offline
Joined: 30th May 2005
Playing: Green Hell
Posted: 6th Nov 2005 00:53
Quote: "yes! I know that , but we are on about saving storage,"


Oh... I was confused... I thought you guys were trying to save space in RAM not HD space. Sorry about that.

Quote: "I can`t think of a case where you need to keep track of one million flags (or even one thousand) unless your code was very messy and didn`t use loops or functions, in most cases just setting a char to 1 or 0 "


What's funny is i'm doing just that in my current project but with a bit over 16 million flags. Well... I changed it about 2 weeks ago from 1's and 0's to record numbers that coincide with the actual data... which quadrupled the space required (changing from bytes to integers). I changed it to allow going directly to the exact place in the file to extract the data... rather than searching the whole file for a specific set of numbers (i'm talking about a 440meg file).

And it's not because my code is messy... I just have to have massive amounts of data for it to work properly.
Me!
19
Years of Service
User Offline
Joined: 26th Jul 2005
Location:
Posted: 6th Nov 2005 11:41
16 MILLION flags , whats this? local universe molecule simulation? , at 18 tics per byte for processing a 3ghz cpu would need about 1 second to trawl through that lot, I take it you only use a small subset of that total at any one time, especialy if it runs in DB/Pro or you would be looking at less than 1fps (unless its the ultimate turn based strategy game).



if there is one thing I can NOT tolerate, it`s intolerant people.
Grog Grueslayer
Valued Member
19
Years of Service
User Offline
Joined: 30th May 2005
Playing: Green Hell
Posted: 7th Nov 2005 07:04 Edited at: 7th Nov 2005 07:08
Quote: "16 MILLION flags , whats this? local universe molecule simulation?"


Hahaha... I call it a Galaxy... it's not big enough to be a Universe.

Quote: "I take it you only use a small subset of that total at any one time, especialy if it runs in DB/Pro or you would be looking at less than 1fps (unless its the ultimate turn based strategy game)."


Yeah it's a massive turn based game. Even though there are huge amounts of data it ultimately only loads one thing at a time when it's needed. The way it's set up there are 2 files (for each thing checked). The location file and the data. When a player goes to another area it checks the location file if there is something there... if the number is more than zero it uses the number from the location file and goes to the right starting byte in the data file to load the information. This process speeds up the game to the max.

I just barely started it in Darkbasic but it's the game that caused me to stop programming in Quickbasic (because it couldn't handle it)... only in Darkbasic i'm starting from scratch. I just hope I can finish it without getting sick of it.
Plugged
22
Years of Service
User Offline
Joined: 30th Nov 2002
Location: Hertfordshire
Posted: 7th Nov 2005 14:13
Guy this has been very helpful and i understand what Me! is saying but the orginal reason for this post was to find out how porfessional store event flags, i guess its with boolean flags from what you guys have said. oh and one thing about what Me! said how can you get the acsii integer from the character after that i can already convert the integer to binary so i can get or set a single event flag. but how do a then change the integer to character to save it?

cheers
Plugged


Work Hard; Play Harder ;
Specters
19
Years of Service
User Offline
Joined: 30th Sep 2005
Location: idaho
Posted: 7th Nov 2005 16:39
wow thanks, that is helpful

new site : sealgames.tk
Me!
19
Years of Service
User Offline
Joined: 26th Jul 2005
Location:
Posted: 7th Nov 2005 19:51
chr$(num) gives the character for that character code (actualy just inserts that binary number into a string), eg chr$(91) is the "[" character.



if there is one thing I can NOT tolerate, it`s intolerant people.
Plugged
22
Years of Service
User Offline
Joined: 30th Nov 2002
Location: Hertfordshire
Posted: 7th Nov 2005 20:19
thanks me! but with chr$(91), 91 is an integer. 91 in binary is 01011011 so you must load the character "[" then convert it to integer with ASC("[")=91 and then convert that to binary 01011011 test i don't know event 3
event 3
\/
01011011
then you know event 3 is zero so it hasn't happened, and if it was happening then you would set it to 1
01011111 which equals 95 then use the chr$ command on 95 which gives you "-" then you save the character "-" in one byte. the only problem with this is you have to save your events in blocks of 8, because 8 bits (events) are in one byte (one character).


Work Hard; Play Harder ;
Me!
19
Years of Service
User Offline
Joined: 26th Jul 2005
Location:
Posted: 7th Nov 2005 22:07 Edited at: 7th Nov 2005 22:19
yes

so get your block of 8..eg

10000001

is chr$(129)

eg

128 64 32 16 8 4 2 1 dec
1 0 0 0 0 0 0 1 bin

for bit 5 (depending what end you count from..I use 128 end in this)

you add 8 so

128 64 32 16 8 4 2 1 dec
1 0 0 0 1 0 0 1 bin

thats chr$(137)

you can only add one bit once to each position, imagine you had a string of 4xchr$(0), that would be

00000000 00000000 00000000 00000000

so bit 19 would be

19/8=2 remainder 3

so the bit you want is in char 3, and its position 3 in the char so the char string is now

00000000 00000000 00100000 00000000
^

so char 3 is now chr$(32) or a space character, you can add binary in columns just like base 10, but to find the value of a byte you need to subtract any possible higher bits first and then check for the contents of the bit you want to test, if you tried to just subtract 32 from a byte of 128, you would succeed and think it was a bit that was set, you need to subtract 128 if possible, then 64 if possible, then check if you can subtract 32, if you can then 32 must be set eg

00100000 <<< minus 32=0 so 32 was set, only combination that works for this case

eg

00011111 = 16+8+4+2+1 = 31

31-32=-1, so the third bit wasn`t set, but you need to check for higher values, eg

10100000 = 128+32 = 160

so you need to subtract 128 first

10100000-128(10000000)= 00100000

if there was a bit in column 64 then you need to remove that first, to do that just go down the row to the position you are checking, and if subtracting 128, then 64 then 32 etc leaves you with more than or equal to 0 then you know that bit was set, otherwise the bit wasn`t set, for example, subtracting 128 from bin 10000000 works, you get zero, so the bit must have been set, but 128 from 01000000 is less than zero, so the bit wasn`t set, you then know it was 0, this works for any permutation, eg 01111111 is dec 127, so 127-128=-1, so you still know the bit in column 128 was not set, is that clear?, looks like I am rambling a bit

thats basicaly what you said, you have to work in chunks of 8 bits anyway, thats a limitation of the hardware, the reason ascii is crammed into 256 characters, thats what the PC works with internaly as the smallest data unit, so to find internal bits, even with logical operators, you have to specificaly test for and set each bit, for example the logical operation 128 && 32 (in decimal) is exactly the same as 128 + 32 AS LONG AS BIT COLUMN 32 IS NOT ALREADY SET, thats important, adding 32 again will set bit column 64(a carry in binary), you need to make sure of the bit value before you operate on it, you can only add 1,2,4,8,16,32,64,128 if those columns are not already set, all you need are two functions using the methods mentioned, one to check and add bits where required, and one to check what bits are set, write the latter first and the other is simple, use the checking routine before writing, the logical value returned is used as a boolean to enable or deny the write to the bit position.



if there is one thing I can NOT tolerate, it`s intolerant people.
Grog Grueslayer
Valued Member
19
Years of Service
User Offline
Joined: 30th May 2005
Playing: Green Hell
Posted: 7th Nov 2005 22:07
Quote: "thanks me! but with chr$(91), 91 is an integer. 91 in binary is 01011011 so you must load the character "[" then convert it to integer with ASC("[")=91 and then convert that to binary 01011011 test i don't know event 3"


He just used that as an example. You really don't even need to use "chr$()" or "asc()" to do it... just "mid$". Me! knows what he's talking about... the following code is based on his messages (just a bit different) and by what you need.



Here "Event$()" is kept in an array so it can be used in the functions. This also allows you to have several Event sets... so if you wanted to track events not only by the player but by each character in the game you can... if you want.

It's also set up so you can specify one event with more than just a 0 or a 1... so you can track multiple events in one event. Like if you add another event set and event #1 in that set are the events for a witches life status... 0 = witch is alive, 1=witch is injured, 2=witch is dead, 3=witch is alive again yet undead, 4=witch is a pile of ash.

In the function "SetEvent(Z,Event,Change)" "Z" is the Event set, "Event" is the event number in that set, and "Change" is the number the Event will change to... "Change" should only be a number between 0 and 9 (otherwise it'll mess up other events).

The function "ReadEvent(Z,Event)" is just there to return the number that event set "Z" and the "Event" number is... so you can use if/then to check a specific event.

Hope this helps.
Me!
19
Years of Service
User Offline
Joined: 26th Jul 2005
Location:
Posted: 7th Nov 2005 22:21 Edited at: 7th Nov 2005 22:25
lol, Grog cracked it, sorry I didn`t post better code, but I am kinda busy, should realy get off the net and on with my work, but all work and no play etc , working with integers embedded in characters in strings is MUCH easier and wastes only a little more memory if you make your "flags" work harder like grog suggests and hold more values.



if there is one thing I can NOT tolerate, it`s intolerant people.
Plugged
22
Years of Service
User Offline
Joined: 30th Nov 2002
Location: Hertfordshire
Posted: 8th Nov 2005 12:16
i might be getting confused but in grog's example each character is an event which means it can support 0 to 255 right, rather than 0 to 9. i thought we were just working in binary to maximize the use of every bit, i have some code that will do this. will post later today.

cheers
Plugged


Work Hard; Play Harder ;
Grog Grueslayer
Valued Member
19
Years of Service
User Offline
Joined: 30th May 2005
Playing: Green Hell
Posted: 9th Nov 2005 00:04
Quote: "lol, Grog cracked it, sorry I didn`t post better code, but I am kinda busy, should realy get off the net and on with my work, but all work and no play etc , working with integers embedded in characters in strings is MUCH easier and wastes only a little more memory if you make your "flags" work harder like grog suggests and hold more values."


That's a good way of describing the ability of that code... "make your flags work harder"... I like it.
Plugged
22
Years of Service
User Offline
Joined: 30th Nov 2002
Location: Hertfordshire
Posted: 9th Nov 2005 00:34
okay this is grog's code but i have as they have said made the falgs work harder by make it support 0 to 255 rather than 0 to 9 so enjoy. the binary will be up soon.



cheers
Plugged


Work Hard; Play Harder ;
Grog Grueslayer
Valued Member
19
Years of Service
User Offline
Joined: 30th May 2005
Playing: Green Hell
Posted: 9th Nov 2005 01:22
Quote: "i might be getting confused but in grog's example each character is an event which means it can support 0 to 255 right, rather than 0 to 9. i thought we were just working in binary to maximize the use of every bit, i have some code that will do this. will post later today."


Each character in the string represents an event but it can only be from 0 to 9 because it's using numbers instead of ascii characters. Zero being the event hasn't happened and 1-9 to be anything you want as an event changes. You probably won't need more than 9 for a single event. I did it that way because it's easy to read if you want to print out the current event sets (if it used ascii characters you won't be able to print the string without problems).

If you change the for/next to "for t=1 to 50" then it creates 50 events (50 zeros in the event string)... I wouldn't make more than 255 events in one set... just in case that's Darkbasics limit for strings.

If you did this:


That's 20 event sets with 255 events for each set... a total of 5,100 events. Now if you count the max number you can have for each event you get a potential total of 45,900 sub-events (not counting zero since that's a non-event). It'll be harder to print with strings that big but that code shouldn't have any problems with 255 character strings.

The other nice thing about a setup like this is you can simply use the command "save array" and "load array" to save/load all the event data.

The following is a bigger example of how events using this system would be (I just made all this up so it'll probably sound bad).



With the above code snip as a key if Event$(0)="13200" then the player has found his mothers magic locket but it is not yet activated, he has the spellbook with all the spells in level 1 and 2, he has been requested to help Sam (a Quest), the Mayor of Dargo is alive and well, and the player has not found the Runestone.

Just with 5 characters there is a potential of 45 events... but as you can see not every event will have the max number of sub-events. But if you hit the max and you want to add another one you can combine events... like event #3... the "talked to Sam" event and "Sams Quest" can be combined into one and just remove the "talked to Sam" event... because to be able to do Sams quest the player must of talked to him. This of course means that certain events must take place before others... making the events linear... but that's the way most Quests are.

If I have confused you even more just let me know.
Plugged
22
Years of Service
User Offline
Joined: 30th Nov 2002
Location: Hertfordshire
Posted: 9th Nov 2005 11:03
i undestand what you are saying grog but with the 0 to 9 method your are wasting half the memory your using, right
0 to 9 requires 4 bits in binary
a character requires 8 bits (1 byte)

some examples


and you can see from the example the first 4 bits are never used. wait this would complicate thing but you could make code so each character holds to event values of 0 to 15. again this would use ascii but as long as the programer realises the only way to perform methods on the string is by using these code functions the fact that it is store in acsii should not bother him/her and if you want save it as eventascii$(0) and then you can use the save/load array command which as you say do make things easier.

cheers
Plugged


Work Hard; Play Harder ;
Grog Grueslayer
Valued Member
19
Years of Service
User Offline
Joined: 30th May 2005
Playing: Green Hell
Posted: 9th Nov 2005 20:32
Quote: "i undestand what you are saying grog but with the 0 to 9 method your are wasting half the memory your using, right
0 to 9 requires 4 bits in binary
a character requires 8 bits (1 byte)"


Weither you use my original code or the modified version you made it's still using strings... not numbers converted to binary.

Also the modified version needs to be modified more to work right.

This:


Needs to be this:


If it's left at "0" the events start at 48. It can't be chr$(0) because that's nothing stringwise (at chr$(0) when event 5 is changed it makes event 5 be event 1 and event 9 ends up being event 2). As a result a non-event must equal 1... not zero. Unfortunately that makes the max number of sub-events in each event to be 254. But that's a lot more for each event just like you want. Of course I still don't see why you would need more than 9 sub-events for each event.

Here's the entire modified, modified code.
Plugged
22
Years of Service
User Offline
Joined: 30th Nov 2002
Location: Hertfordshire
Posted: 11th Nov 2005 12:46
yeah i'll post the binary version, prob is its on my laptop and i have to be at home to use the internet on it, but i should be able to do it tonight

@grog
ohh and cheers grog for the modification

@everyone else
my bad

cheers
Plugged


Work Hard; Play Harder ;
Grog Grueslayer
Valued Member
19
Years of Service
User Offline
Joined: 30th May 2005
Playing: Green Hell
Posted: 11th Nov 2005 20:11
Quote: "ohh and cheers grog for the modification"


Np.

Login to post a reply

Server time is: 2025-05-22 13:59:02
Your offset time is: 2025-05-22 13:59:02