PDA

View Full Version : Problem with playing my own maps



Dramon
August 8th, 2012, 00:35
(Wow that title is really specific, huh?)

Anyhow I'm new here, and new to creating maps for Dungeon Keeper. I recently got KeeperFX and made the changes to the Editor to get it to work with KeeperFX. I create the level, script it, and attempt to play it. I know what to enter into the Run bar and I get the level to load. But once it starts, the voice immediately says, "You have been defeated!", with the game screen being some sort of weird red tiles before going black. What's wrong?

There are two players- 0 and 1- and 1 is marked as a computer player, so it's not like I'm trying to load a multiplayer level onto singleplayer.

I can think of several things that may have gone wrong, but how to fix them I have absolutly no idea.
1- I may have messed up the script somehow. (Very likely)
2- I may have messed up changing the Editor for KeeperFX somehow.
3- My Editor may be stupid.
4- I might be running the level incorrectly.

I've spent a bit searching for problems like mine, but have found nothing. Any help would be greatly appreciated!

(I have NO idea what's going on with the tags for this thread...)

DragonsLover
August 8th, 2012, 03:22
I wanna take a look at the script. Can you post it here?

Dramon
August 8th, 2012, 04:33
Sure, just remember that the 'REM' notes are STILL THERE as I needed them to write the script. I didn't delete them in case I needed them again. I can edit it and remove the REM things if you want me to.

REM ********************************************
REM
REM Script for Level 201
REM
REM ********************************************




REM ********** SETUP COMMANDS **********


REM ***** Set the Generation Speed of the *****
REM ***** Entrances *****

SET_GENERATE_SPEED(300)


REM ***** Set the computer players going *****

REM Player Player Type

COMPUTER_PLAYER(PLAYER1, 0)


REM ***** Set the maximum number of *****
REM ***** creatures each player can have *****

REM Player Number of creatures

MAX_CREATURES( PLAYER0, 40)
MAX_CREATURES( PLAYER1, 40)


REM ***** Set the amount of gold each *****
REM ***** player starts with *****

REM Player Amount of gold

START_MONEY( PLAYER0, 10000)
START_MONEY( PLAYER1, 10000)




REM ********** SET MAGIC **********
REM ********** AND CREATURES **********

REM ***** Setup the creature pool *****

REM Creature Name Number of creatures

ADD_CREATURE_TO_POOL( BUG, 10)
ADD_CREATURE_TO_POOL( FLY, 10)
ADD_CREATURE_TO_POOL( SPIDER, 5)
ADD_CREATURE_TO_POOL( SORCEROR, 30)
ADD_CREATURE_TO_POOL( DEMONSPAWN, 20)
ADD_CREATURE_TO_POOL( DRAGON, 15)
ADD_CREATURE_TO_POOL( TROLL, 10)
ADD_CREATURE_TO_POOL( ORC, 20)
ADD_CREATURE_TO_POOL( TENTACLE, 30)
ADD_CREATURE_TO_POOL( DARK_MISTRESS, 10)
ADD_CREATURE_TO_POOL( BILE_DEMON, 20)


REM ***** Enable each player to recieve *****
REM ***** creatures from pool *****

REM Player Creatures Can be available Is now available

CREATURE_AVAILABLE( ALL_PLAYERS, BUG, 1, 1)
CREATURE_AVAILABLE( ALL_PLAYERS, FLY, 1, 1)
CREATURE_AVAILABLE( ALL_PLAYERS, SPIDER, 1, 1)
CREATURE_AVAILABLE( ALL_PLAYERS, SORCEROR, 1, 1)
CREATURE_AVAILABLE( ALL_PLAYERS, DEMONSPAWN, 1, 1)
CREATURE_AVAILABLE( ALL_PLAYERS, DRAGON, 1, 1)
CREATURE_AVAILABLE( ALL_PLAYERS, TROLL, 1, 1)
CREATURE_AVAILABLE( ALL_PLAYERS, ORC, 1, 1)
CREATURE_AVAILABLE( ALL_PLAYERS, TENTACLE, 1, 1)
CREATURE_AVAILABLE( ALL_PLAYERS, DARK_MISTRESS, 1, 1)
CREATURE_AVAILABLE( ALL_PLAYERS, BILE_DEMON, 1, 1)


REM ***** Set the rooms available to each *****
REM ***** player *****

REM Player Room type Can be available Is available

ROOM_AVAILABLE( ALL_PLAYERS, TREASURE, 1, 1)
ROOM_AVAILABLE( ALL_PLAYERS, LAIR, 1, 1)
ROOM_AVAILABLE( ALL_PLAYERS, GARDEN, 1, 1)
ROOM_AVAILABLE( ALL_PLAYERS, TRAINING, 1, 1)
ROOM_AVAILABLE( ALL_PLAYERS, RESEARCH, 1, 1)

ROOM_AVAILABLE( ALL_PLAYERS, GUARD_POST, 1, 0)
ROOM_AVAILABLE( ALL_PLAYERS, WORKSHOP, 1, 0)
ROOM_AVAILABLE( ALL_PLAYERS, BARRACKS, 1, 0)
ROOM_AVAILABLE( ALL_PLAYERS, PRISON, 1, 0)
ROOM_AVAILABLE( ALL_PLAYERS, TORTURE, 1, 0)
ROOM_AVAILABLE( ALL_PLAYERS, TEMPLE, 1, 0)


REM ***** Set the doors available to each *****
REM ***** player *****

REM Player Door type Can be available Is available

DOOR_AVAILABLE( ALL_PLAYERS, WOOD, 0, 1)
DOOR_AVAILABLE( ALL_PLAYERS, BRACED, 0, 1)
DOOR_AVAILABLE( ALL_PLAYERS, STEEL, 0, 1)
DOOR_AVAILABLE( ALL_PLAYERS, MAGIC, 0, 1)


REM ***** Set the traps available to each *****
REM ***** player *****

REM Player Trap type Can be available Is available

TRAP_AVAILABLE( ALL_PLAYERS, BOULDER, 0, 1)
TRAP_AVAILABLE( ALL_PLAYERS, ALARM, 0, 1)
TRAP_AVAILABLE( ALL_PLAYERS, POISON_GAS, 0, 1)
TRAP_AVAILABLE( ALL_PLAYERS, LIGHTNING, 0, 1)
TRAP_AVAILABLE( ALL_PLAYERS, WORD_OF_POWER, 0, 1)
TRAP_AVAILABLE( ALL_PLAYERS, LAVA, 0, 1)


REM ***** Set the spells available to each *****
REM ***** player *****

REM Player Spell type Can be available Is available

MAGIC_AVAILABLE( ALL_PLAYERS, POWER_IMP, 1, 1)
MAGIC_AVAILABLE( ALL_PLAYERS, POWER_OBEY, 1, 10)
MAGIC_AVAILABLE( ALL_PLAYERS, POWER_SIGHT, 1, 1)
MAGIC_AVAILABLE( ALL_PLAYERS, POWER_CALL_TO_ARMS, 1, 1)
MAGIC_AVAILABLE( ALL_PLAYERS, POWER_CAVE_IN, 1, 0)
MAGIC_AVAILABLE( ALL_PLAYERS, POWER_HEAL_CREATURE, 1, 0)
MAGIC_AVAILABLE( ALL_PLAYERS, POWER_HOLD_AUDIENCE, 1, 1)
MAGIC_AVAILABLE( ALL_PLAYERS, POWER_LIGHTNING, 1, 0)
MAGIC_AVAILABLE( ALL_PLAYERS, POWER_SPEED, 1, 1)
MAGIC_AVAILABLE( ALL_PLAYERS, POWER_PROTECT, 1, 1)
MAGIC_AVAILABLE( ALL_PLAYERS, POWER_CONCEAL, 1, 0)
MAGIC_AVAILABLE( ALL_PLAYERS, POWER_DISEASE, 1, 0)
MAGIC_AVAILABLE( ALL_PLAYERS, POWER_CHICKEN, 1, 1)
MAGIC_AVAILABLE( ALL_PLAYERS, POWER_DESTROY_WALLS, 1, 0)
MAGIC_AVAILABLE( ALL_PLAYERS, POWER_ARMAGEDDON, 1, 0)




REM ********** ADJUST ANY CREATURE **********
REM ********** OR RESEARCH STATISTICS **********

REM ***** I don't want to change any *****
REM ***** creature statistics but I do *****
REM ***** want to change the research *****
REM ***** value of Destroy Walls because *****
REM ***** I want the players to research *****
REM ***** it quicker (the default research *****
REM ***** value for Destroy Walls is *****
REM ***** 750000) *****

REM Player Research Type Room or Spell Research Value

RESEARCH( ALL_PLAYERS, MAGIC, POWER_DESTROY_WALLS, 500000)













REM ********** MAIN SCRIPT **********


REM ********** IF COMMANDS **********


REM ***** The IF commands which will *****
REM ***** spring the parties on the player *****


REM ***** First, detect whether a creature *****
REM ***** has crossed the boundary of the *****
REM ***** fourth Action Point *****



REM ***** If the Action Point has been *****
REM ***** triggered then set FLAG0 to 1 *****






REM ***** Next, detect when TIMER0 reaches *****
REM ***** 20000 and, if FLAG0 is 1 then *****
REM ***** add PARTY1 to the map *****

REM Player whose variable you want to look at The variable name



REM ***** The second section will detect *****
REM ***** whether PLAYER0's creatures have *****
REM ***** triggered Action Point 2. If *****
REM ***** they have then PARTY2 will be *****
REM ***** added to the map at Action Point *****
REM ***** 1 *****

REM Action Point Which player you want to detect




REM ***** The third section will detect *****
REM ***** whether PLAYER0's creatures have *****
REM ***** destroyed the Hero dungeon. If *****
REM ***** they have then PARTY3 and PARTY4 *****
REM ***** will be added to the map at *****
REM ***** Action Points 1 and 2 *****

REM Player Variable Comparison Value

The player the party is assigned to Party Name




REM ********** OBJECTIVES AND **********
REM ********** INFORMATION **********


REM ***** I don't want to include any *****
REM ***** objectives and information as *****
REM ***** you can only view them on levels *****
REM ***** specifically designed for The *****
REM ***** Deeper Dungeons. Since this *****
REM ***** level is an example level, it *****
REM ***** would be unfair to those who *****
REM ***** have not bought The Deeper *****
REM ***** Dungeons to include them. *****
REM ***** Instead, I have written them as *****
REM ***** REM statements. If you have The *****
REM ***** Deeper Dungeons and you want to *****
REM ***** see the level running with the *****
REM ***** objectives, just remove the REM *****
REM ***** statements from the start of the *****
REM ***** lines *****


REM ***** Starting objective *****

REM Objective Number Objective Text (must be within quotes) Player

REM QUICK_OBJECTIVE( 0, "In the caves of Savactor, an rival Keeper battles with the tireless forces of good. Vanquish the pathetic heroes and them proceed to conquer the rival Keeper to gain dominance over this land.", PLAYER0)


REM ***** Objective if the Hero Dungeon is *****
REM ***** destroyed *****

REM Objective Number Objective Text (must be within quotes) Player

REM QUICK_OBJECTIVE( 0, "The corpses of the good lie strewn around you. Now go, and conquer your rival on this land. Dominion awaits ...", PLAYER0)




REM ********** WIN AND LOSE **********


REM ***** These are criteria you have to *****
REM ***** set to enable the player to win *****
REM ***** the level. I will not include a *****
REM ***** lose game command as the player *****
REM ***** will automatically lose when *****
REM ***** their Dungeon Heart is destroyed *****

REM Player Variable Comparison Value

IF( PLAYER1, DUNGEON_DESTROYED == 1)

WIN_GAME

ENDIF






That is EXACTLY as it appears. Is sure makes for an awfully long post, sorry....
Also: I DID remove some things that I thought only applied to heroes spawning in the world at certain points, I maaaay have accidently deleted something important.

Metal Gear Rex
August 8th, 2012, 11:09
What map number is it? What run command did you use exactly? Can you post the map itself so that I may took a look at it?

The error you describe isn't a script problem, and I believe I once encountered it before as well though I can't remember exactly how or what I was doing. Usually if there's something wrong with the script such as an incorrect command, the game ignores it. Script problems relate to the map's design itself, causing issues such as Heroes not spawning at action points, etc depending on the error itself.

There are still some notable errors in your script, however.


DOOR_AVAILABLE( ALL_PLAYERS, WOOD, 0, 1)

You pretty much made this mistake for all traps and doors. You set the first number to 0 (Can be Available) and the second one to 1. (Is Available) The result is having them available but having no icons.


MAGIC_AVAILABLE( ALL_PLAYERS, POWER_OBEY, 1, 10)

10 should simply be 1, though it doesn't really matter as the game will consider it to be 1 anyways and will work properly.


The player the party is assigned to Party Name

You should also delete this or put "REM" before it. Doesn't matter as much because again, the game ignores it.

Dramon
August 8th, 2012, 18:26
The number assigned to it is 201. The command that I use is this:

c:\users\tanadin\my documents\keeperfx\keeperfx.exe -level 201
It SEEMS to launch correctly (all the opening screens as well as the intro are displayed correctly)...
Do you mean like a screenshot, or what? I'm so new at this...

*facepalm*
*facepalm*
*facepalm*
(Actually those weren't my fault, that was the way the default script was written, I didn't do a thing to those. Should have caught them though.)

I have fixed those errors in the script, thanks for catching them.

friscmanseby
August 8th, 2012, 22:46
I think I've got the solution: maybe you haven't moved the level from editor folder to X\keeperfx\levels folder. By using the command -level N you mean the level N in X\keeperfx\levels folder. If N level in that folder doesn't exist, you will have the error you perfectly described (and I just tried before posting this). So try to move all the files Map00201.xxx from your editor folder to X\keeperfx\levels folder... Let me know if that worked...
Post Scriptum: the best way to start a level is to go in "free levels/deeper dungeons" and then starting the level by there (of course the level must be in X\keeperfx\levels folder)...

Dramon
August 8th, 2012, 23:31
*facepalm*
STUPID
I can't believe that I didn't think of that! Thank you SO MUCH!
Thanks to all of you for all of your time, I really appreciate it. Now I can fix this darn thing's script because I can play it! :D

friscmanseby
August 8th, 2012, 23:49
No problem. From what I see, you posted the example script from Map 201...

Dramon
August 8th, 2012, 23:58
Pretty much, I edited it a bit, but I don't know how to do the script on my own. I'm really, really new at this.

DragonsLover
August 9th, 2012, 00:37
There's beginning at everything. Just read this (http://keeper.lubie.org/dk1_docs/dk_scripting_ref.htm).

Dramon
August 9th, 2012, 01:02
Thanks! I'll do so once I finish creating this new map- that other one was really just a test (that I may turn into a real level, the blue keeper does something REALLY AWESOME that I had never intended to happen that gives the level a WHOLE new twist).