PDA

View Full Version : Scripting Help


HouseOfAmon
08-18-2006, 01:28 AM
Edit...
I figured out a way to fix part of my problem..

I still need a way to set variables..

Example..

}
if ( uUnknown == vVar)
Set xVar (vVar + sVar); <-- How do I do this..
}

stoffe
08-18-2006, 06:21 AM
I still need a way to set variables..
Example..
}
if ( uUnknown == vVar)
Set xVar (vVar + sVar); <-- How do I do this..
}

xVar = vVar + sVar;
...as long as xVar, vVar and sVar are of the same type, otherwise you'll need to convert the values to the same type first.

Here is a complete nonsense script as an example demonstrating a few things you can do with different types of variables:



// Declare global script variable. This can be accessed from all functions within this script,
// but will only exist for the duration of the script execution (a few milliseconds usually).
int MyGlobal;

void main() {
// Declare local script variables. These only exist within this block of code, i.e. while
// inside the { } pair of block delimiters it's defined between. In this case the main() function.
float fMyX, fMyY; // Declare floating point script variables...
float fSomeValue;
int iNum1; // Declare integer script variables
int iNum2;
int iSum;
vector vPos; // Declare vector (x,y,z) script variable
string sResult = "The result is "; // Declare string script var and assign constant value to it.
object oMyself = OBJECT_SELF; // Declare object reference script var and assign it the object running this script.

// Note: Other valid script variable types are: location, talent, event, effect

vPos = GetPosition(oMyself); // Assign function value to variable.

fMyX = vPos.x; // Assign variable value to another variable.
fMyY = vPos.y;

iNum1 = 1; // Assign constant value to variable.
iNum2 = 2;
fSomeValue = 2.5;

if (fMyX == fMyY) { // If X and Y are identical...
iSum = iNum1 + iNum2; // Add value of two vars and store in another.
iSum++; // Increment value of iSum by 1.
iSum--; // Subtract value of iSum by 1.
iSum /= 2; // Divide value of iSum by 2.
iSum *= 4; // Multiply value of iSum by 4;
iSum += 10; // Add 10 to the value of iSum;
iSum -= 4; // Subtract 4 from the value of iSum.
iSum += iNum1 * iNum2; // Multiply iNum1 by iNum2 and add the result to iSum.
iSum += FloatToInt(fSomeValue); // Add the non-fractional value of fSomeValue to iSum;

// Set the global script variable to the value.
MyGlobal = iSum;

// Store the value in the global game variable (declared in globalcat.2da) named MyNonsenseSum.
// These can be accessed from anywhere in the game.
SetGlobalNumber("MyNonsenseSum", iSum);

// Store the value in local object numeric variable slot 12 of the object running the script.
// Note that the valid range of LocalNums is -127 to 128 only, higher/lower values will overflow.
// These can be accessed while in the module where their parent object exists.
SetLocalNumber(OBJECT_SELF, 12, iSum);

// Post the resulting value to the Feedback log in-game.
SendMessageToPC(GetPartyLeader(), sResult + IntToString(iSum));
}
}

HouseOfAmon
08-18-2006, 08:04 AM
Thanks Stoffe..

iSum=iSum+vVal; <--- This is exactly what I needed, the SetLocalNumber will be very usefull as well, I got some idea's for setglobal too..

Edit..
====
Removed Code.. ;)