Log in

View Full Version : HOWTO: Create adventures(10/27/2004)


cofruben
10-26-2004, 10:20 AM
Hi all...just implemented the adventure system,I did not tell anything about how to create one,so I will explain it here:

1.First of all,make sure you have sourced the adventures.sql file.
2.Once done,in your DB,you will see two new tables,complete the first one:

->adventures_maintext : this is the table which containts the main text of a NPC.This text will be sent when someone clicks on the recruiter(class number 60).There,you should set the Recruiter ID(npc id of the npc with class 60),and the text that you wanna send everytime someone clicks on him.

3.Complete the last one:
->adventures:This is the main table,where all the stuff are in.

-Quest ID:set it as you want...it must be an unique id.

-NPC ID:again,the npc id.

-Type:There are four types,but we will use three.(0 is collect,1 is mass kill,and 2 is kill a named).

-Text:description of the adventure.

-Objetive:
1.Type 0(collect):must be the item ID to collect.
2.Type 1(mass kill):set it to 0.
3.Type 2(named kill):must be the NPC type id to kill.

-Objetive value:
1.Type 0:enter the number of items you want to collect.
2.Type 1:enter the number of mobs you want to kill.
3.Type 2: does not matter.


-Minutes:minutes given to finish the adventure.

-Points:points given to the client when success.

-ShowCompass:if set to '1',it will show the compass with the specified x and y,in 'zoneid' Zone ID.

-Zone Dungeon ID:the zone id of the dungeon,this is the zone where the adventure takes place.

-X and Y:loc for the compass.

The other ones: do not use,except if your server get bugged or something,and the adventure is still being used,set in_use to 0,but it should set it automatically.

One more note,if you want the zone to be "instanced" (it is not real instancing,but will prevent other people joinning) set ldondungeon to 1,in zone table.With that set to 1,only the players with that zone id in his adventure,will be available to join that zone.

Sort of adventures:
1.Type 0: Collect adventure.
2.Type 1: Mass kill adventure.
3.Type 2: Boss kill adventure.

Please,ask any question.

cofruben
10-26-2004, 10:44 AM
Examples:
-Adventure number one: when zoned to befallen,the timer(60 minutes) will start running,you will need to collect twenty rusty daggers(with id 2000,for example).:

Quest ID:1
NPC ID: 4 (set this to the recruiter id)
Type: 0 (loot)
Objetive:2000 (rusty dagger item id,for example)
Objetive value:20
Minutes:60
Points:30 (we will give 30 points for example).
ShowCompass:1
zoneid:23 (west commons,I think)
zonedungeonid:36 (befallen)
X and Y : 10,20 (set the entrance of the dungeon,for example)


-Adventure number two:when zoned to nexus,the timer will start running(105 minutes), you need to kill 65 mobs before the timer goes off.

Quest ID:2
NPC ID: 4 (set this to the recruiter id)
Type: 1 (mass kill)
Objetive:65 (65 mobs to kill)
Objetive value:65 (65 mobs to kill)
Minutes:105
Points:30 (we will give 30 points for example).
ShowCompass:1
zoneid:0
zonedungeonid:152 (nexus)
X and Y : (0,0)


-Adventure number three:when zoned to nexus,the timer will start running(10 minutes), you need to kill the boss called "Superlolman"(with npctypeid 35), before the timer goes off.

Quest ID:3
NPC ID: 4 (set this to the recruiter id)
Type: 2 (boss kill)
Objetive:35 (boss id = 35)
Objetive value:35 (boss id = 35)
Minutes:10
Points:15 (we will give 15 points for example).
ShowCompass:0
zoneid:0
zonedungeonid:152 (nexus)
X and Y : (0,0)


I hope this helps!

Xabob
10-26-2004, 12:36 PM
Very nice :)

RangerDown
10-26-2004, 01:35 PM
Great work!

FYI: The way you describe the npc ID suggest that on slaughter missions, we have to kill a certain number of the SAME npc to get points. On live, you get a point for killing any mob in the dungeon, as long as it was spawned from the adventure system (ie not triggered by a trap). Can you clarify which way it works here?

cofruben
10-27-2004, 01:35 AM
btw...adventures.sql file:

CREATE TABLE `adventures` (
`QuestID` int(11) NOT NULL default '0',
`NPCID` int(11) NOT NULL default '0',
`Type` tinyint(4) NOT NULL default '0',
`Text` text NOT NULL,
`Objetive` int(11) NOT NULL default '0',
`ObjetiveValue` int(11) NOT NULL default '0',
`Minutes` int(11) NOT NULL default '0',
`Points` int(11) NOT NULL default '0',
`ShowCompass` tinyint(1) NOT NULL default '0',
`zoneid` int(11) NOT NULL default '0',
`zonedungeonid` int(11) NOT NULL default '0',
`X` float NOT NULL default '0',
`Y` float NOT NULL default '0',
`status` int(11) NOT NULL default '0',
`char1` int(11) NOT NULL default '0',
`char2` int(11) NOT NULL default '0',
`char3` int(11) NOT NULL default '0',
`char4` int(11) NOT NULL default '0',
`char5` int(11) NOT NULL default '0',
`char6` int(11) NOT NULL default '0',
`in_use` tinyint(1) NOT NULL default '0'
) TYPE=MyISAM;

CREATE TABLE `adventures_maintext` (
`NPCID` int(11) NOT NULL default '0',
`Text` text NOT NULL
) TYPE=MyISAM;

alter table zone add column ldondungeon bool not null default 0;

phasepuma
10-30-2004, 09:17 AM
cofruben strikes again, great job.

RangerDown
11-02-2004, 09:41 AM
Maybe I should point out that you misspelled the field names Objective, and ObjectiveValue. Thought I'd point that out before the cat's out of the bag and it's too late to change the field names.

/em walks off muttering something about Spaniards and their missing C's...
:)