Author Topic: I need to test each PC at the finish line  (Read 514 times)

Legacy_Delisha Zrazorian

  • Newbie
  • *
  • Posts: 4
  • Karma: +0/-0
I need to test each PC at the finish line
« on: January 30, 2011, 02:07:31 pm »


               Greetings Ye who hold the knowledge,

The second area of my obstacle course will require each Contestant to ring 12 gongs placed along the course before they can cross the finish line.

I could use a little help on the script below… and when I say “a little”, that may be an understatement of biblical proportions!

I need to test each PC at the finish line to assure they have gonged all twelve gongs… I believe the below script will allow me the test the variable iGong for a single PC… but how do I set it up to create eight variables… one for each of the possible eight contestants (PCs)?


//////////////////////////////////////////////////
/////////////////////////////////////////////////
///Delisha Zrazorian 2011///////////
///dz_s_gong/////////////////////////////
///////////////////////////////////////////////

void main()
{

object oPC = GetLastUsedBy();
int iGong;
if (!GetIsPC(oPC)) return;

PlaySound("as_cv_gongring2");
SetLocalInt(oPC, "iGong", iGong+1);

}


thanks…


Delisha
Fury – Join us or fear us!
               
               

               
            

Legacy_ehye_khandee

  • Hero Member
  • *****
  • Posts: 1415
  • Karma: +0/-0
I need to test each PC at the finish line
« Reply #1 on: January 30, 2011, 04:42:19 pm »


               Set a var on each gong, a string var,

Your script on this should use the following line


SetLocalString(oTargetObject,"sGongString", GetLocalString(oTargetObject,"sGongString")+GetLocalString(OBJECT_SELF),"sGongString");

The objects on which this script is placed should each have a unique letter assigned to the variable sGongString     so each of the objects should have one of the following attached to them
"a" "b" "c" "d" "e" "f" "g" "h"

At the end of your course, check for all the letters needed in this string, this will prevent a PC from ringing one gong twelve times to succeed (as your method would likely produce).
               
               

               


                     Modifié par ehye_khandee, 30 janvier 2011 - 04:42 .
                     
                  


            

Legacy_Lightfoot8

  • Hero Member
  • *****
  • Posts: 4797
  • Karma: +0/-0
I need to test each PC at the finish line
« Reply #2 on: January 30, 2011, 07:56:01 pm »


               I made you two functions to handle you gongs.  I will call it inc_gongs for use in this post. You can rename it to anything you loke of course. 

inc_gongs
Quote

const int NUMBER_OF_GONGS = 8;
const string GONG_TAG_PREFIX = "Gong";
const string LOCAL_STORAGE = "iGong";

// Rings  oGong for oPC and stores it as rung.
void  RingGong(object oPC, object oGong = OBJECT_SELF);

// Returns TRUE if oPC has rung all the gongs.
int   WhereAllGongsRung(object oPC);


void RingGong(object oPC,object oGong = OBJECT_SELF)
{
  int iGong          = GetLocalInt(oPC,LOCAL_STORAGE);
  string sTag        = GetTag(oGong);
  int iGongTagLength = GetStringLength(sTag);
  int iGongPrefixLen = GetStringLength(GONG_TAG_PREFIX);
  int iGongNum       = StringToInt(GetStringRight(sTag,iGongTagLength-iGongPrefixLen))-1;

  PlaySound("as_cv_gongring2");
  SetLocalInt(oPC, LOCAL_STORAGE, iGong |( 1 << iGongNum ));

}

int   WhereAllGongsRung(object oPC)
{
   return GetLocalInt(oPC,LOCAL_STORAGE) == (1<<NUMBER_OF_GONGS)-1;
}
 

How To Use
You want to give each of your Gongs the a Tag  wilt a number added to it.  The Prefix of the tag Is defined by the constant GONG_TAG_PREFIX = "Gong";  above. So in  this case you would need to give each of your gongs the tags of: Gong1, Gong2, Gong3.... and so forth.

Your on Used script for the gongs will now look like this.
[quote]
#include "inc_gongs"
void main()
{
  object oPC = GetLastUsedBy();
  if (!GetisPC(oPC)) return;
  RingGong(oPC);



[/quote]


When You want to check to see if a PC rang all the gongs you just need to add the include for the check.

[quote]
#include "inc_gongs"
void main()
{
  object oPC ;//= Depends on where ythis if firing from.   
  If ( WhereAllGongsRung(oPC))     SpeakString("You Have compleated the cource");
  else SpeakString("You missed a gong. You will have to go back");



[/quote]

How It Works

What the Script does is sets a single bit in the LOCAL_STORAGE var on the PC. The Bit position is determined by the number after the TAG_PREFIX.  All the check does is checks to see if all the bits up to bit  NUMBER_OF_GONGS are set in the number.  
               
               

               


                     Modifié par Lightfoot8, 30 janvier 2011 - 08:00 .
                     
                  


            

Legacy_Delisha Zrazorian

  • Newbie
  • *
  • Posts: 4
  • Karma: +0/-0
I need to test each PC at the finish line
« Reply #3 on: January 30, 2011, 10:53:27 pm »


               *reads all the above... faints*



*regathering her wits she quickly snatches up both precious gems*



"Thank you my friends" the little Bard whispers into the darkness...
               
               

               
            

Legacy_ehye_khandee

  • Hero Member
  • *****
  • Posts: 1415
  • Karma: +0/-0
I need to test each PC at the finish line
« Reply #4 on: January 31, 2011, 12:14:56 am »


               Lightfoot8 - 
That is a lot of code for such a simple task. 

I recommend the OP put a script such as THIS on the gongs will work fine (assuming you added the string variable to each one)
The objects on which this script is placed should each have a unique letter assigned to the variable sGongString so each of the objects should have one of the following attached to them
"a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l"


void main()
{
  object oTargetObject = GetLastUsedBy();
  SetLocalString(oTargetObject,"sGongString",
  GetLocalString(oTargetObject,"sGongString")
  +GetLocalString(OBJECT_SELF,"sGongString"));  // this is the essential bit
  PlaySound("as_cv_gongring2");  // this is a nice touch thx to Lightfoot
}


At the end of your course, check for all the letters needed in this string, this will prevent a PC from ringing one gong twelve times to succeed (as your method would likely produce).

Checking to see if the PC did the deed is as simple as this:


void main()
{
  // script assumes it is attached to an object to be used by the PC tested
  object oTargetObject = GetLastUsedBy();
  int bSuccess = TRUE;
  string sTestValue = GetLocalString(oTargetObject,"sGongString");
  if(FindSubString(sTestValue,"a")<0)bSuccess = FALSE;
  if(FindSubString(sTestValue,"b")<0)bSuccess = FALSE;
  if(FindSubString(sTestValue,"c")<0)bSuccess = FALSE;
  if(FindSubString(sTestValue,"d")<0)bSuccess = FALSE;
  if(FindSubString(sTestValue,"e")<0)bSuccess = FALSE;
  if(FindSubString(sTestValue,"f")<0)bSuccess = FALSE;
  if(FindSubString(sTestValue,"g")<0)bSuccess = FALSE;
  if(FindSubString(sTestValue,"h")<0)bSuccess = FALSE;
  if(FindSubString(sTestValue,"i")<0)bSuccess = FALSE;
  if(FindSubString(sTestValue,"j")<0)bSuccess = FALSE;
  if(FindSubString(sTestValue,"k")<0)bSuccess = FALSE;
  if(FindSubString(sTestValue,"l")<0)bSuccess = FALSE;
  // at this point, if the value stored as bSuccess = TRUE your PC has successfully completed the tasks required.
  // reward them as needed
}

Short, sweet and to the point, it also does not waste valuable CONSTANTS (resource conservation is what I love best).
               
               

               
            

Legacy_Lightfoot8

  • Hero Member
  • *****
  • Posts: 4797
  • Karma: +0/-0
I need to test each PC at the finish line
« Reply #5 on: January 31, 2011, 12:59:04 am »


               *shakes head* 

You need to get over that waste valuable constants isue you have Ehye.  There is no waste of constants.  there is no reason to fear the user of constants or the overuse of them.  The only time you run into porblems with constants is if you use to many of them in a single script.  Constants are not golbal to all scripts in NWN. Now if you tryed to add 1600 constants or even int's or Objects to a single script, then yes you will get a compiler error.  But a few or even 100 constants added to a single script will not effect any other script or the game resources.  If you dissagree with this perhaps you should check with your best scripter.  

If you insist that I compair the two scripts, I perferr to just give my Opion and let the OP decide what to use.   

The things I do not like about your solution:
One: You have to set a local string on the Gong. They are just harder to see and make sure they are correct on all the gongs. 

Two:  When checking to see if all the gongs where set you scan through the string way to many times.  

Three: If you wanted to expand it to use 26 gongs you Would have to add a seperate check for each gong.  

Four: if a player hit the first Gong(gong 'a') 10 times  It would add 10  a's to your check string.  

Five : I do not really see it as less code.

Now to be fair, Here is what I do not like about mine. 

One: It has to use string functions to pull the number off the tag.

Two: It never really checks to see it the tag is correct. Just uses the length of the prefix to trim it away from the number.

Three: It uses an include, for such a simple script. 

What I like about yours is that is is simpler for a new scripter to understand.

What I like about mine is that It is easy to expand the number of gongs by just increasing the constant at the top, then placeing the gongs.
It only has to do one compair against one number to check if all gongs have been rung.
It helps to note at this point that the script will only be able to handle up to 32 gongs before overflowing the 32bit int.
               
               

               
            

Legacy_ehye_khandee

  • Hero Member
  • *****
  • Posts: 1415
  • Karma: +0/-0
I need to test each PC at the finish line
« Reply #6 on: January 31, 2011, 01:41:41 am »


               

Lightfoot8 wrote...

You need to get over that waste valuable constants isue you have Ehye.  There is no waste of constants.  there is no reason to fear the user of constants or the overuse of them.  The only time you run into porblems with constants is if you use to many of them in a single script.  Constants are not golbal to all scripts in NWN. Now if you tryed to add 1600 constants or even int's or Objects to a single script, then yes you will get a compiler error.  But a few or even 100 constants added to a single script will not effect any other script or the game resources.  If you dissagree with this perhaps you should check with your best scripter.  


Meaning no offense here friend. <>

Sorry but I'm a real mizer on resources of all sorts. I run a really big module (190megs, 1250+ areas) and have bumped most of the limits that exist at one time or another. No offense. These are mizerly habits I developed ages ago coding on C64 and many other low-resource machines. Minimalist philosophy on coding has helped me much in these many years.

We in fact ran into a rare limit once when updating from cep2.0 to 2.1, in which the solution was remove LOTS of un-neccesary constants from lots of scripts, and also reduction of many include files iirc.

Lightfoot8 wrote...  EK's notes in bold
Points regarding my solution:
One: You have to set a local string on the Gong. They are just harder to see and make sure they are correct on all the gongs. This is not very difficult really, two clicks on the properties box and you are there.

Two:  When checking to see if all the gongs where set you scan through the string way to many times.  Too many? I disagree, but is a personal preference thing I guess.

Three: If you wanted to expand it to use 26 gongs you Would have to add a seperate check for each gong.  The request was for twelve only so the solution works fine.

Four: if a player hit the first Gong(gong 'a') 10 times  It would add 10  a's to your check string.  The length of this string or how many "a's" it has will not impact anything.

Five : I do not really see it as less code.  Fewer scripts mean less resource usage. I'm not looking at the two solutions atm but iirc this one had fewer lines of code, my 'rough gauge' for such things.

Now to be fair, Here is what I do not like about mine. 

One - Three: -reasons removed for brevity-  Agreed.

What I like about yours is that is is simpler for a new scripter to understand.

What I like about mine is that It is easy to expand the number of gongs by just increasing the constant at the top, then placeing the gongs.
It only has to do one compair against one number to check if all gongs have been rung.
It helps to note at this point that the script will only be able to handle up to 32 gongs before overflowing the 32bit int.  While this is true, with 26 letters in the alphabet and 123456789 available, 26+9 means my method covers 3 more gongs.


Mainly, each script being two resources, I like that my solution also uses two less resources overall.

Now, again, I'm used to scripting for a HUGE module, and we are always shaving things down to the minimum to keep it running fast. This module, amazingly, shows no lag, does not require resets and crashes about once a year typically. All in all, not too shabby. It is not perfect, in fact a work in progress, but stability in something this big has got to say something good for us, eh?

I like your stuff, and I'm not trying to ruffle anyones' feathers here. Just sharing some of my minimalist philosophy and scripting for benefit of any who want it.
               
               

               
            

Legacy_Lightfoot8

  • Hero Member
  • *****
  • Posts: 4797
  • Karma: +0/-0
I need to test each PC at the finish line
« Reply #7 on: January 31, 2011, 02:32:32 am »


               I understand that you are only trying to help. No feathers ruffled here.  But to be frank you have a total miss understanding as to the use of constants. They DO NOT USE MORE RESORCES. They can in fact cut down on the number of local variables that can get pushed onto the stack.

The Constants added at the top of the script never get add to the script as a local variable.  Any Place in the script where they are used in the script, the compiler replaces them with an immedient constant. it has the benefit of giving the ability to change several immediate constants in a script by changing just one constant at the top of the script. instead of having to edit every place the constant is used.   

The only limitation here is the number of objects the that the NWN compiler can track.  If the number is exceeded it complains. 

Now if the constants where added to a read only memory var section that was global to the game, your objections to constants would hold merit.  This is not the case with NWN scripts however.
If your single script does not have more constants then the compiler can track there is no harm.  The constants that are used get added into the script as imminent constants not a a variable.  They in fact no longer exist after the script compiles.

The only time in NWN script that I have seen constants cause a problem is when someone tries to include all the constants from two large systems into a single script.  bioware even split some of there large includes up into smaller includes to help with the limits of the compiler.  

If you still have a problem with constants, Please give a reason as to how they use resources.
  
On your note that your scripts use two less resources, You can note that one of the things i listed as not liking about my script is that it uses an include.  I believe we just stated the same thing.  That of course can be overcome by just writing the two scripts without the include.  As is, I just seen it as easier for the OP to use as an include.   I myself if I where going to use it would just add it to an include I already had in the module.  Since I use constants and not regular    variables at the top it would not push anything extra onto that stack for other scripts using the same include.  If I used variables on the other hand every script that used the include would also push the variables onto the stack as local vars.

As I stated before, Don't just take my word for it., run it past your best programmer.  If they just about have there masters, as you stated in another thread,  they should be able to confirm what I have stated.
               
               

               


                     Modifié par Lightfoot8, 31 janvier 2011 - 02:33 .
                     
                  


            

Legacy_Lightfoot8

  • Hero Member
  • *****
  • Posts: 4797
  • Karma: +0/-0
I need to test each PC at the finish line
« Reply #8 on: January 31, 2011, 06:58:00 am »


               Your once a year crash?  Does it by chance happen when your server has been running for 50 days without a server reset? 

Here is the reason I ask.  While digging around in the engine I noticed that some of the timming is dependent on a windows API  function called "GetTicketCount()".  What this function does is return the number of milla seconds the applacation has been running in windows.   It is only a 32 bit intenger and rolls over every 49.71 days.   I do not know that this would have any ill effects on NWN or not.   My thought is just to play it safe and reset the server before the rollover happens.   The roll over point is at  1193.04 hours if that helps any.   I would lover to know if your server or anyones server has manged to run longer then that or not.  And if they have where they running windows or linux.
               
               

               
            

Baaleos

  • Administrator
  • Hero Member
  • *****
  • Posts: 1916
  • Karma: +0/-0
I need to test each PC at the finish line
« Reply #9 on: January 31, 2011, 11:49:56 am »


               The Longest I have ever seen a server run on a Windows Machine, before becoming unplayable, was about 149 hours.
I was hosting it for someone else.


But that being said, if the person who designed the module is code savvy, they might be capable of using clean up scripts to extend that time.

Of course - if the module is a single area, with no npc's no scripts, or placeables etc and stores.

Then it could operate for a very long time.
               
               

               


                     Modifié par Baaleos, 31 janvier 2011 - 02:21 .
                     
                  


            

Legacy_ehye_khandee

  • Hero Member
  • *****
  • Posts: 1415
  • Karma: +0/-0
I need to test each PC at the finish line
« Reply #10 on: January 31, 2011, 03:23:48 pm »


               Lightfoot8 -  THAT is an interesting observation friend!



OK, as it is, we DO restart the server about twice a week when we update the module, we are still in late beta so it is necessary that we make fixes as we find issues (I'm sure you understand). Still our code is so stable, that if I did not have an update, it would run and run. I might be able to setup an experiment - I can run multiple modules on my server, and I could setup a test module with our scripts in it but fewer areas just for testing this issue. I could then let that instance of the module run until we had well exceeded that time limit to test your above outlined GetTicketCount()

Let me know if this might be interesting to you and if so we'll work out the details.

Next, I fired off a message to my favorite genius (Erin) last night, because my own personal brain could not recall the exact error we hit - I asked her if she recalled the error and if so what details she had, this is her reply:

Can't recall the exact error but it was based on Too many functions,

NWN Compiler takes Constants as well. So unlike a normal C/C++ compiler that will treat Constants as numbers given 'human' text for conveniance, NWN takes them as references to a list of constants that has a finite limit.

Its one of the big differences between NWN Scripting and C/C++. the later constants are simply replaced while compiling with the hard numbers.


Don't recall the actual name of the error but essentially it meant there were too many constant and function entries in the module.

It was somewhere on the bioware forum but the search seems frelled up right now.


 I've been in the computer industry and the gaming industry (focussed on computers) since 1981. I've met countless really talented people along the way, Erin is by far the most amazingly gifted and well educated computer expert I've ever met in those 30 years. While no human being is perfect, she's the best I've ever seen and I've learned to take her advice when it is offered.

As for myself, please don't take my posts the wrong way. I'm not here to beat anyone up, I just have a very 'matter of fact' tone to my writing which sometimes can leave people with the wrong impression. I'm not trying to be mean, or nettle anyone here - just share what lore I have and compare it to that of others for mutual improvement. The older I get the more of a 'computer person' I become and the less of a 'people person' I am - or so it seems. Again, I don't mean to get you people riled up - try not to read a 'mean voice' into my posts even if the text might seem to imply it. :innocent:
               
               

               
            

Legacy_Lightfoot8

  • Hero Member
  • *****
  • Posts: 4797
  • Karma: +0/-0
I need to test each PC at the finish line
« Reply #11 on: February 01, 2011, 03:38:08 am »


               

ehye_khandee wrote...

OK, as it is, we DO restart the server about twice a week when we update the module, we are still in late beta so it is necessary that we make fixes as we find issues (I'm sure you understand). Still our code is so stable, that if I did not have an update, it would run and run. I might be able to setup an experiment - I can run multiple modules on my server, and I could setup a test module with our scripts in it but fewer areas just for testing this issue. I could then let that instance of the module run until we had well exceeded that time limit to test your above outlined GetTicketCount()

Let me know if this might be interesting to you and if so we'll work out the details.

Fifty days seems like along time to run a server to experment with this.  with my luck at the end of the fifty days I would discover I ran the wrong experment.  If you do run an experement, I would suggest running two cut down servers, The first being just a shell on a single empty area.  The second being the samething with a psydo heart beat script.  refirring itself say every 4 hours or so.  Just to see if it is still working after the ticket counts resets.   I would also compair the ingame date after the fifty days to see if it rolled back with the ticket count or not. That is if either server is still running after the fifty days.  



Ok, Im getting nitt picky on this one.

ehye_khandee wrote...
Mainly, each script being two resources, I like that my solution also uses two less resources overall.

It is only one extra resource. Include files never get compiled, they have to be included in a main script. With no .ncs file ever being made from them they will only be one resource.  even if it did come tothe point where they where eating up to many resource, you could remove all of the .nss files to an external source.  The module does not need any of the .nss files to run. You only need then to compile the .ncs files. 
 

Next, I fired off a message to my favorite genius (Erin) last night, because my own personal brain could not recall the exact error we hit - I asked her if she recalled the error and if so what details she had, this is her reply:



ehye_khandee wrote...
Can't recall the exact error but it was based on Too many functions,

NWN Compiler takes Constants as well. So unlike a normal C/C++ compiler that will treat Constants as numbers given 'human' text for conveniance, NWN takes them as references to a list of constants that has a finite limit.

Its one of the big differences between NWN Scripting and C/C++. the later constants are simply replaced while compiling with the hard numbers.

I Can not dissagree with this at all.  just keep in mind that the list of constants  or more like the list of constants, functions, ints, strings, objects, floats and any other data type in your script are all added to the same list.   Also this list is an intermediary step the compiler. That list is used in compiling the .ncs file.  Every time a script is compiled the list is build then discarded once the .ncs is made.  This happens on a script by script basis.  Saying do not use constants because they wast resources, Is the same as saying dont use int's or functions because they waste resources in the same and greater ways.   The only differance in NWN and C/C++ is that the constant in C/C++ do not get added to the temperary table during complation.   

Out side of that they both compile as a literal constant.  

I ran a couple of example To try and help you understand this. I started with a simple script. Then looked at the .ncs file that was compiled from it.  Here is the first script with the binary .ncs that was produced. 


//script test1
void main()
{
   SpeakString ("test");
}
binary .ncs produced a 42 byte file.
4E 43 53 20 56 31 2E 30 42 00 00 00 2A 1E 00 00 00 00 08 20 00 04 03 00 00 00 00 04 05 00 04 74 65 73 74 05 00 00 DD 02 20 00

 

I then modified it to use a constant instead  of a direct constant in the speak string.



//test2
const string TEST = "test";
void main()
{
   SpeakString (TEST);
}


binary .ncs produced a 42 byte file.
4E 43 53 20 56 31 2E 30 42 00 00 00 2A 1E 00 00 00 00 08 20 00 04 03 00 00 00 00 04 05 00 04 74 65 73 74 05 00 00 DD 02 20 00

 

Hmm, Interesting, The compiled code is exaltly the same.  It is as if I typed in the literal constant in place of my constant var. 

I then added an extra constant that never gets used to the script.  Lets see what happens. 


//test3
const string TEST3 = "Frizzal Frazzle";
const string TEST = "test";
void main()
{
   SpeakString (TEST);
}

binary .ncs produced a 42 byte file.
4E 43 53 20 56 31 2E 30 42 00 00 00 2A 1E 00 00 00 00 08 20 00 04 03 00 00 00 00 04 05 00 04 74 65 73 74 05 00 00 DD 02 20 00

 

Interesting,  As far as the compiled script is concerned that constant never exsisted.  It compiled to the same thing it would have if it was not there.  

 
Ok, Lets change that unused string constant to a normal string and see what happens.  


//test 4
string TEST4 = "Frizzal Frazzle";
const string TEST = "test";
void main()
{
   SpeakString (TEST);
}

binary .ncs produced a 95 byte file.
4E 43 53 20 56 31 2E 30 42 00 00 00 5F 1E 00 00 00 00 08 20 00 02 05 04 05 00 0F 46 72 69 7A 7A 61 6C 20 46 72 61 7A 7A 6C 65 01 01 FF FF FF F8 00 04 1B 00 FF FF FF FC 2A 00 1E 00 00 00 00 10 2B 00 1B 00 FF FF FF FC 20 00 04 03 00 00 00 00 04 05 00 04 74 65 73 74 05 00 00 DD 02 20 00

 

Hmm, It seems that even though my code never uses it, It still gets added to my compiled code.  Well I guess it is a varaiable no after all and need to be pushed onto the stack as a local var also.

Ok lets see what happens if I change the constant  I am useing to a varaible.


//test 5
string TEST4 = "Frizzal Frazzle";
string TEST5 = "test";
void main()
{
   SpeakString (TEST5);
}


binary .ncs produced a 119 byte file
4E 43 53 20 56 31 2E 30 42 00 00 00 5F 1E 00 00 00 00 08 20 00 02 05 04 05 00 0F 46 72 69 7A 7A 61 6C 20 46 72 61 7A 7A 6C 65 01 01 FF FF FF F8 00 04 1B 00 FF FF FF FC 2A 00 1E 00 00 00 00 10 2B 00 1B 00 FF FF FF FC 20 00 04 03 00 00 00 00 04 05 00 04 74 65 73 74 05 00 00 DD 02 20 00

 

EEKs,  I just made my code even longer and created even another varaiable that is going to have to be pushed onto the stack. 

As you can see the use of constants can make your code smaller when used to replace varaiables that are not going to change.  I say "can" because it does not always make it smaller when you are useing strings or data types that are larger then a dword.  But  it does replace any use of your constant in the script with the literal constant it was defined as. 

The only porblem ocures when you try and include too many constants/functions/varaiables into a single script. In that case you blow the mind of the compiler trying to keep track of them all.  The nwn compiler just does not have enough room in the list to track them.  Buut since the list is made and discarded every single a script is compiled. A constant included in one script does not effect any scripts, or anything else for that matter, that is is not included in.

This is why bioware has a lot of includes instead of just one large mega include that you could add to everything. 

If you add constants to an include they will only get added into the code if the code uses them.  If you add varaiables to an include, they will get added to the code even if the code has no use for them. 

I hope this helps you see my point about constants. 

As to taking your posts the wrong way,  I dont think i have.  I worrie more about people taking my posts the wrong way.  I know you are only tring to be helpfull.  I myself tend to ruffle feathers at times when tring to just  help.  There are many times I go back and read my posts, Then make the dicison to either post it, leave it or try and find a better way to say it.  Other times I just shrug not being able to find a way to make it sound better and just post it anyway. 

So I echo your request.  Please dont take this the wrong way. 

L8.
               
               

               
            

Legacy_Greyfort

  • Sr. Member
  • ****
  • Posts: 442
  • Karma: +0/-0
I need to test each PC at the finish line
« Reply #12 on: February 03, 2011, 02:49:33 am »


               Ruffle Feathers??? ....HAVE YOU SEEN THAT CAT.....*shivers*... looks like its been buried in the dirt on some native american burial ground....Besides with programing I lost my feathers a long time ago.  

I find your candor/demeaner very refreshing, I see that I'm not the only one that cares about making sure message sent/message received.  I feel horrible when I confuse people ...I love your picture L8 I have been programing for years and sometimes I feel that way.