Posted Wednesday, August 12th @ 11:34:38 PM, by George Greer in the Specials dept.
Added Jul 20, 1998. Click the link below to read it or download it.
From: Frollo
Subject: Quest Shop -- selling items for Quest points
If anyone is interested, this is my quest master guy...
he doesn't host quests or anything, but he's like a quest-
shop guy...etc etc etc, you get the point. if you use this
you will want to change the quest_items[] to the virtual #s
of the quest items you want to use...also, you'll have to make
the mob, define the procs, add this into act_movement.c :
...
if (!IS_AFFECTED(ch, AFF_SNEAK))
act("$n has arrived.", TRUE, ch, 0, 0, TO_ROOM);
if (ch->desc != NULL)
look_at_room(ch, 0);
+command_interpreter(ch,"arrive");
if (IS_SET(ROOM_FLAGS(ch->in_room), ROOM_DEATH) && GET_LEVEL(ch) < LVL_IMMORT
) {
log_death_trap(ch);
...
and down at the bottom of the file, add an empty ACMD(do_arrive)
and define do_arrive in interpreter.c ...the reason for this is
because i can't find any other way to make mobs do stuff when
you arrive :) but hey, it works, right?
enjoy!
oh yeah, you'll have to add in an int questpoints somewhere
in structs and define the GET_QUESTP in utils.h ...shouldn't
be too hard
int quest_items[] = {3, 50, 51, 52};
// ^ NUMBER OF ITEMS
SPECIAL(quest_shop)
{
struct obj_data *obj;
struct char_data *mob = (struct char_data *) me;
int qp, r_num, x;
ACMD(do_vstat);
if (CMD_IS("list")) {
sprintf(buf, " ## Item Quest Points\r
\n"
"---------------------------------------------------------------\r\n")
;
for (x = 1; x <= quest_items[0]; x++) {
obj = read_object(quest_items[x], VIRTUAL);
if (obj == NULL)
continue;
sprintf(buf2, "%s", (obj)->short_description);
CAP(buf2);
sprintf(buf, "%s%3d) %-45s%12d\r\n", buf, x, buf2, GET_OBJ_COST(obj));
}
send_to_char(buf, ch);
return 1;
} else if (CMD_IS("buy")) {
one_argument(argument, arg);
if (!(qp = atoi(arg))) {
send_to_char("&n&cThe Quest Master says, 'Please specify which item you would l
ike to purchase using \"BUY #\".'&n\r\n", ch);
return 1;
}
if (qp < 0) {
send_to_char("&n&cThe Quest Master says, 'A negative number?!?'&n\r\n", ch);
return 1;
}
if (qp > quest_items[0]) {
send_to_char("&n&cThe Quest Master says, 'Sorry, my inventory isn't quite that
high yet.'&n\r\n", ch);
return 1;
}
obj = read_object(quest_items[qp], VIRTUAL);
if (GET_QUESTP(ch) < GET_OBJ_COST(obj)) {
sprintf(buf, "&n&cThe Quest Master says, '%s costs %d quest points...which I se
e you can't afford!'&n\r\n",
(obj)->short_description, GET_OBJ_COST(obj));
CAP(buf);
send_to_char(buf, ch);
return 1;
}
GET_QUESTP(ch) -= GET_OBJ_COST(obj);
sprintf(buf, "&n&cThe Quest Master says, 'I'll take %d quest points for %s, %s.
'&n\r\n",
GET_OBJ_COST(obj), (obj)->short_description, GET_NAME(ch));
send_to_room(buf, ch->in_room);
obj_to_char(obj, ch);
return 1;
} else if (CMD_IS("info")) {
one_argument(argument, arg);
if (!(qp = atoi(arg))) {
send_to_char("&n&cThe Quest Master says, 'Please specify which item you would l
ike information on using \"INFO #\".'&n\r\n", ch);
return 1;
}
if (qp < 0) {
send_to_char("&n&cThe Quest Master says, 'A negative number?!?'&n\r\n", ch);
return 1;
}
if (qp > quest_items[0]) {
send_to_char("&n&cThe Quest Master says, 'Sorry, my inventory isn't quite that
high yet.'&n\r\n", ch);
return 1;
}
if ((r_num = real_object(quest_items[qp])) < 0) {
send_to_char("&n&cThe Quest Master says, 'Uh-oh...I seem to have made an error!
Please report me immediatly and you WILL be rewarded.\r\n&n", ch);
return 1;
}
obj = read_object(r_num, REAL);
do_stat_object(ch, obj);
extract_obj(obj);
return 1;
} else if (CMD_IS("arrive")) {
if (GET_QUESTP(ch) <= 0)
do_say(mob,"You are aware that I only deal in quest points..?",0,0);
else {
command_interpreter(mob, "smile");
do_say(mob,"Welcome, welcome! Please type LIST to view my wares, INFO to get",0
,0);
do_say(mob,"information on an item, and BUY to exchange your quest points for",
0,0);
do_say(mob,"unique quest items!&n",0,0);
}
return 0;
} else
return 0;
}
<< Quests. Automated no less. [by DSW] | Reply | View as text | Threaded | Races [by Nashak] >> |
|
Related Links |
|
|
|
CircleMUD Snippets |
|
|
Note: Not all of these snippets will work perfectly with
your version of code, so be prepared to fix one
or two bugs that may arise, and please let me know
what you needed to do to fix it. Sending a corrected
version is always welcome.
|
Finally, if you wish to use any of the snippets from this
page, you are more than welcome, just mention the
authors in your credits. If you wish to release any
of these snippets to the public on another site,
contact me FIRST.
|
|
|
|
|
|
|