On Wed, 20 May 1998, Christoffer Lundberg wrote: ->act.informative.c:872: storage size of `vmap1' isn't constant ->act.informative.c:889: array subscript is not an integer ->act.informative.c:900: warning: too few arguments for format -> extern int vmap1[(int)GET_Y(ch)][(int)GET_X(ch)]; This is wrong. You want, "extern int vmap1[28][45];" -> extern char symbol[]; -> extern char field_desc; -> extern char forest_desc; -> extern char hill_desc; -> extern char mountain_desc; -> extern char water_desc; -> extern char flight_desc; -> extern char desert_desc; -> extern char road_desc; -> extern char city_desc; -> extern char village_desc; Unless you want one (and only one) character for the _desc, you probably want these to be char * pointers. -> sprintf(buf, "&c%s&n\r\n\r\n", vmap_terrain_name[vmap1]); I doubt this is correct -- vmap1 is a two-dimensional int array (int **), and hence can't be used like this for an index. -> sprintf(buf, "%s%s%s%s%s%s\r\n", buf, symbol[vmap1[(int)y+2][(int)x-2]], ->symbol[vmap1[(int)y+2][(int)x-1]], You don't need all of these '(int)' casts everywhere. y and x are already integers -- there's no need to cast an integer to an integer. Also, symbol[] isn't right either. It's only a char array, so "symbol[x];" is only a character, not a string (%c rather than %s). -> sprintf(buf, "%s%s%s%s%s%s%s\r\n", buf, ->symbol[vmap1[(int)y-2][(int)x-2]], symbol[vmap1[(int)y-2][(int)x-1]], -> symbol[vmap1[(int)y-2][(int)x]], ->symbol[vmap1[(int)y-2][(int)x+1]], symbol[vmap1[(int)y-2][(int)x+2]]); I suspect this is about line 900. Note your format calls for seven string variables. Ignoring the fact that symbol[] is a character, not a string (as I said above), you only have six arguments here. I think the extra format code is a typo. -> if (vmap1[y][x] == 0) -> sprintf(buf, "%s%s\r\n", buf, field_desc); Oh, dear God... const char * map_descs[] = { "This is a description for a field, put your stuff here.\r\n", "This is a description for something else, put your stuff\r\n" "here and note that multiple lines is just fine.\r\n", . . . }; And, then, instead of the messy 'if ()' block (and even the sprintf()), strcat(buf, map_descs[vmap1[y][x]]); ->See anything errant in there? Ohhh... just a _few_ things... -dak : I'm being critical today. +------------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html | +------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST