Fixed a bug in find_shop (shop.c) and real_shop (genshp.c) - see http://www.tbamud.com/forum?c=showthread&ThreadID=447
This commit is contained in:
@@ -35,6 +35,8 @@ export (QQ's a zone into a tarball)t
|
|||||||
Xlist (mlist, olist, rlist, zlist, slist, tlist, qlist)
|
Xlist (mlist, olist, rlist, zlist, slist, tlist, qlist)
|
||||||
(lots of major bugfixes too)
|
(lots of major bugfixes too)
|
||||||
tbaMUD 3.59
|
tbaMUD 3.59
|
||||||
|
[Mar 07 2009] - Jamdog
|
||||||
|
Fixed a bug in find_shop (shop.c) and real_shop (genshp.c) (Thanks Slicer)
|
||||||
[Feb 25 2009] - Jamdog
|
[Feb 25 2009] - Jamdog
|
||||||
Fixed new medit stats menu so that it uses the the Advanced/Standard cedit toggle
|
Fixed new medit stats menu so that it uses the the Advanced/Standard cedit toggle
|
||||||
[Feb 24 2009] - Jamdog
|
[Feb 24 2009] - Jamdog
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
#include "genshp.h"
|
#include "genshp.h"
|
||||||
#include "genzon.h"
|
#include "genzon.h"
|
||||||
|
|
||||||
/* NOTE (gg): Didn't modify sedit much. Don't consider it as 'recent' as the
|
/* NOTE (gg): Didn't modify sedit much. Don't consider it as 'recent' as the
|
||||||
* other editors with regard to updates or style. */
|
* other editors with regard to updates or style. */
|
||||||
|
|
||||||
/* local (file scope) functions */
|
/* local (file scope) functions */
|
||||||
@@ -248,7 +248,7 @@ void free_shop(struct shop_data *shop)
|
|||||||
free(shop);
|
free(shop);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Returns the real number of the shop with given virtual number. We take so
|
/* Returns the real number of the shop with given virtual number. We take so
|
||||||
* good care to keep it sorted - let's use it. - Welcor */
|
* good care to keep it sorted - let's use it. - Welcor */
|
||||||
shop_rnum real_shop(shop_vnum vnum)
|
shop_rnum real_shop(shop_vnum vnum)
|
||||||
{
|
{
|
||||||
@@ -258,7 +258,7 @@ shop_rnum real_shop(shop_vnum vnum)
|
|||||||
top = top_shop;
|
top = top_shop;
|
||||||
|
|
||||||
/* perform binary search on shop_table */
|
/* perform binary search on shop_table */
|
||||||
while (bot < top) {
|
while (bot <= top) {
|
||||||
mid = (bot + top) / 2;
|
mid = (bot + top) / 2;
|
||||||
if (SHOP_NUM(mid) == vnum)
|
if (SHOP_NUM(mid) == vnum)
|
||||||
return (mid);
|
return (mid);
|
||||||
@@ -432,7 +432,7 @@ int save_shops(zone_rnum zone_num)
|
|||||||
snprintf(oldname, sizeof(oldname), "%s/%d.shp", SHP_PREFIX, zone_table[zone_num].number);
|
snprintf(oldname, sizeof(oldname), "%s/%d.shp", SHP_PREFIX, zone_table[zone_num].number);
|
||||||
remove(oldname);
|
remove(oldname);
|
||||||
rename(fname, oldname);
|
rename(fname, oldname);
|
||||||
|
|
||||||
if (num_shops > 0)
|
if (num_shops > 0)
|
||||||
create_world_index(zone_table[zone_num].number, "shp");
|
create_world_index(zone_table[zone_num].number, "shp");
|
||||||
|
|
||||||
|
|||||||
18
src/shop.c
18
src/shop.c
@@ -331,7 +331,7 @@ static int transaction_amt(char *arg)
|
|||||||
|
|
||||||
char *buywhat;
|
char *buywhat;
|
||||||
|
|
||||||
/* If we have two arguments, it means 'buy 5 3', or buy 5 of #3. We don't do
|
/* If we have two arguments, it means 'buy 5 3', or buy 5 of #3. We don't do
|
||||||
* that if we only have one argument, like 'buy 5', buy #5. By Andrey Fidrya */
|
* that if we only have one argument, like 'buy 5', buy #5. By Andrey Fidrya */
|
||||||
buywhat = one_argument(arg, buf);
|
buywhat = one_argument(arg, buf);
|
||||||
if (*buywhat && *buf && is_number(buf)) {
|
if (*buywhat && *buf && is_number(buf)) {
|
||||||
@@ -626,7 +626,7 @@ static void shopping_buy(char *arg, struct char_data *ch, struct char_data *keep
|
|||||||
snprintf(tempbuf, sizeof(tempbuf), "%s That has cost you %d quest points.", GET_NAME(ch), goldamt);
|
snprintf(tempbuf, sizeof(tempbuf), "%s That has cost you %d quest points.", GET_NAME(ch), goldamt);
|
||||||
else
|
else
|
||||||
snprintf(tempbuf, sizeof(tempbuf), shop_index[shop_nr].message_buy, GET_NAME(ch), goldamt);
|
snprintf(tempbuf, sizeof(tempbuf), shop_index[shop_nr].message_buy, GET_NAME(ch), goldamt);
|
||||||
|
|
||||||
do_tell(keeper, tempbuf, cmd_tell, 0);
|
do_tell(keeper, tempbuf, cmd_tell, 0);
|
||||||
|
|
||||||
send_to_char(ch, "You now have %s.\r\n", tempstr);
|
send_to_char(ch, "You now have %s.\r\n", tempstr);
|
||||||
@@ -673,11 +673,11 @@ static struct obj_data *get_selling_obj(struct char_data *ch, char *name, struct
|
|||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This function is a slight hack! To make sure that duplicate items are only
|
/* This function is a slight hack! To make sure that duplicate items are only
|
||||||
* listed once on the "list", this function groups "identical" objects together
|
* listed once on the "list", this function groups "identical" objects together
|
||||||
* on the shopkeeper's inventory list. The hack involves knowing how the list
|
* on the shopkeeper's inventory list. The hack involves knowing how the list
|
||||||
* is put together, and manipulating the order of the objects on the list. (But
|
* is put together, and manipulating the order of the objects on the list. (But
|
||||||
* since most of DIKU is not encapsulated, and information hiding is almost
|
* since most of DIKU is not encapsulated, and information hiding is almost
|
||||||
* never used, it isn't that big a deal). -JF */
|
* never used, it isn't that big a deal). -JF */
|
||||||
static struct obj_data *slide_obj(struct obj_data *obj, struct char_data *keeper, int shop_nr)
|
static struct obj_data *slide_obj(struct obj_data *obj, struct char_data *keeper, int shop_nr)
|
||||||
{
|
{
|
||||||
@@ -861,8 +861,8 @@ static char *list_object(struct obj_data *obj, int cnt, int aindex, int shop_nr,
|
|||||||
}
|
}
|
||||||
CAP(itemname);
|
CAP(itemname);
|
||||||
|
|
||||||
snprintf(result, sizeof(result), " %2d) %9s %-*s %6d%s\r\n",
|
snprintf(result, sizeof(result), " %2d) %9s %-*s %6d%s\r\n",
|
||||||
aindex, quantity, count_color_chars(itemname)+48, itemname,
|
aindex, quantity, count_color_chars(itemname)+48, itemname,
|
||||||
buy_price(obj, shop_nr, keeper, ch), OBJ_FLAGGED(obj, ITEM_QUEST) ? " qp" : "");
|
buy_price(obj, shop_nr, keeper, ch), OBJ_FLAGGED(obj, ITEM_QUEST) ? " qp" : "");
|
||||||
|
|
||||||
return (result);
|
return (result);
|
||||||
@@ -1316,7 +1316,7 @@ static void list_all_shops(struct char_data *ch)
|
|||||||
else
|
else
|
||||||
sprintf(buf1, "%6d", mob_index[SHOP_KEEPER(shop_nr)].vnum); /* sprintf: OK (for 'buf1 >= 11', 32-bit int) */
|
sprintf(buf1, "%6d", mob_index[SHOP_KEEPER(shop_nr)].vnum); /* sprintf: OK (for 'buf1 >= 11', 32-bit int) */
|
||||||
|
|
||||||
len += snprintf(buf + len, sizeof(buf) - len,
|
len += snprintf(buf + len, sizeof(buf) - len,
|
||||||
"%3d %6d %6d %s %3.2f %3.2f %s\r\n",
|
"%3d %6d %6d %s %3.2f %3.2f %s\r\n",
|
||||||
shop_nr + 1, SHOP_NUM(shop_nr), SHOP_ROOM(shop_nr, 0), buf1,
|
shop_nr + 1, SHOP_NUM(shop_nr), SHOP_ROOM(shop_nr, 0), buf1,
|
||||||
SHOP_SELLPROFIT(shop_nr), SHOP_BUYPROFIT(shop_nr),
|
SHOP_SELLPROFIT(shop_nr), SHOP_BUYPROFIT(shop_nr),
|
||||||
@@ -1549,7 +1549,7 @@ static int find_shop(int vnum)
|
|||||||
int bot, mid, ltop;
|
int bot, mid, ltop;
|
||||||
|
|
||||||
bot = 0;
|
bot = 0;
|
||||||
ltop= top_shop - 1;
|
ltop= top_shop;
|
||||||
|
|
||||||
while (bot <= ltop) {
|
while (bot <= ltop) {
|
||||||
mid = (ltop + bot) / 2;
|
mid = (ltop + bot) / 2;
|
||||||
|
|||||||
Reference in New Issue
Block a user