Updated July 21, 2005
HOME PAGE > AUTHORS > PROSPERO > BOD PYTHON SCRIPTING (03)
Tut3. A bit of boring theory.
This is a variable:
so is this:
A variable can be (almost) any combination of Letters,Numbers or under_scores, up to 256 characters long. The only exception is that they must not be Python Keywords such as:
and / assert / break / class / continue / def / del / elif / else /
except / exec / finally / for / from / global / if / import / in /
is / lambda / not / or / pass / print / raise / return / try /while
Variables 'store' values about things. Assign a value by:
var1 = 1
var2 = 2
The values can be changed during the course of a program. Which is why they are called variables. They can store all the info about certain things in the game. e.g. When the Player is created, all the infos (or 'attributes') about he/she is usually assigned to the variable.
char= Bladex.Create Entity("Player1",..........etc)
This calls a function in the Blade engine which creates the Player and returns all the default values to the variable char.
the attributes can be reset by:
and can be acessed and assigned to other variables by:
When objects are created they are usually assigned the much used variable o. As in
Once the object is created the o variable is used by the next object to be created. Only the last o used will retain the values of the last object to be created. In practice you very rarely need to access an objects attributes during the course of a map, so it is safe to reuse the o.
If you do need to do this, any object/enemy can be re-assigned to a variable by:
It is nice to make the var names descriptive (orc1, box34, boss1, etc) as it makes code easier to follow.
Functions drive the whole gamplay flow. They all must be put in the special file DefFuncs.py, but can be called from everywhere.
def Function1(): *block of code here*
def HowHealthyAmI(entity): pers=Bladex.GetEntity(entity) lifeleft=pers.Life return lifeleftThis function caller 'asks' the function the current life points of the charcter specified (Player1 in this case).
health=HowHealthyAmI("Player1")The 'answer' is returned to the caller and assigned to the var health. Get the picture?
Clever bit is, it also works for any character:
If you try this on something that doesn't have the attribute 'Life', you will get an error.
Functions can pass any number of values (or 'arguments' as they are more correctly known. If a number of arguments are listed in the function, it will expect that many from the caller. You can use default arguments:
def WhatLevelAmI(entity="Player1"): pers=Bladex.GetEntity(entity) perslvl=pers.Level return perslvl
However if you do
it will return the Level of Zombie1. See what I mean?
* One small but important point here. Python counts from 0, not 1.
The level returned by the above function will be one less than the actual level of the character. If you need to know the actual Level put:
If you assign
they will actually be at Level 3 in the game
This rule does not always apply, but is worth bearing in mind.
Ok, that's enough boring stuff. I don't intend to go into all the Python theory. This was just to clarify how things work on a basic level.
More practical stuff next.......