/*************************************************************************** * GRIDMAKER 1.0 * * MND is copyright 2000-2002 Charles Tillery (Muerte/Ao) * * Website: www.mudsanddragons.com Q/A: ao@mudsanddragons.com * * By using this code, you have agreed to follow the terms of the * * ROM license nd all prior licenses * * This header is not to be removed from ANY file * * Original WorldMaker by Kroudar, Fall97, mlkesl@stthomas.edu * * * * This is only the first version it makes a new area called new.are you * * must manually place the area that you create into the area.lst. It does * * no function checks to see if you're using the vnums you are creating in * * the file nor does it let you name the area. I plan to have those in the * * new version (if i ever release it). * ***************************************************************************/ -= PUT IN HELP =- 0 GUILDMAKE~ Syntax: guildmake VNUM: The starting vnum of area to be made. WIDTH: The amount of rooms left to right. HEIGHT: The amount of rooms top to bottom. i.e. guildmake 100 3 3 would create XXX XXX XXX * GridMaker 1.0 by Muerte of MND * ~ -= PUT IN INTERP.H =- DECLARE_DO_FUN( do_gridmake ); /* GridMaker 1.0 by Muerte of MND */ -= PUT IN INTERP.C =- {"gridmake", do_gridmake, POS_DEAD, IM, LOG_NORMAL, 0, 0}, /* GridMaker 1.0 by Muerte of MND */ -= PUT IN ACT_WIZ.C =- void do_gridmake(CHAR_DATA *ch, char *argument) { /* GridMaker 1.0 by Muerte of MND */ FILE *fp; char arg1[10], arg2[10], arg3[10]; int width, height, vstart, vend,vnum,n,e,s,w,nw,ne,sw,se,line_pos; argument = one_argument(argument, arg1); argument = one_argument(argument, arg2); argument = one_argument(argument, arg3); if ( arg1[0] == '\0' || arg2[0] == '\0' || arg3[0] == '\0') { send_to_char("SYNTAX: worldmake \n\r", ch); return; } width = atoi(arg2); height = atoi(arg3); vstart = atoi(arg1); vend = vstart + (width*height) - 1; if ((fp = fopen("new.are", "w")) == NULL) { send_to_char("WORLDMAKE: fopen", ch); return; } printf_to_char(ch, "#*********************************#\n"); printf_to_char(ch, "# GENERATING %3d BY %3d AREA FILE #\n",width,height); printf_to_char(ch, "#*********************************#\n"); fprintf(fp,"#AREADATA\nName MND~\nBuilders None~\nVNUMs %d %d\nCredits MND~\nSecurity 1\nEnd\n", vstart, vend); fprintf(fp,"\n\n\n#MOBILES\n#0\n"); fprintf(fp,"\n\n\n#OBJECTS\n#0\n"); fprintf(fp,"\n\n\n#ROOMS\n"); for ( vnum=vstart; vnum<=vend; vnum++) { /* for every room */ n=vnum-width; s=vnum+width; e=vnum+1; w=vnum-1; nw=n-1; ne=n+1; sw=s-1; se=s+1; /*where it is on the line 0 to (width-1)*/ line_pos=(vnum-vstart+1)%(width); if (line_pos==0) line_pos=width; /*north border*/ if ( (vnum >= vstart) && (vnum < vstart+width) ) { n=0; nw=0; ne=0; } /*south border*/ if ( (vnum > vend-width) && (vnum <= vend) ) { s=0; sw=0; se=0; } /*east border*/ if ( (vnum-vstart+1)%(width)==0 ) { e=0; ne=0; se=0; } /*west border*/ if ( (vnum-vstart+1)%(width)==1 ) { w=0; nw=0; sw=0; } fprintf(fp,"#%d\nNAME~\nNO DESC\n~\n~\n0 0 0\n",vnum); if (n > 0) fprintf(fp,"D0\n~\n~\n0 0 %d\n",n); if (e > 0) fprintf(fp,"D1\n~\n~\n0 0 %d\n",e); if (s > 0) fprintf(fp,"D2\n~\n~\n0 0 %d\n",s); if (w > 0) fprintf(fp,"D3\n~\n~\n0 0 %d\n",w); if (ne > 0) fprintf(fp,"D6\n~\n~\n0 0 %d\n",ne); if (nw > 0) fprintf(fp,"D7\n~\n~\n0 0 %d\n",nw); if (se > 0) fprintf(fp,"D8\n~\n~\n0 0 %d\n",se); if (sw > 0) fprintf(fp,"D9\n~\n~\n0 0 %d\n",sw); fprintf(fp,"S\n"); } fprintf(fp,"#0\n"); fprintf(fp,"\n\n\n#SPECIALS\nS\n"); fprintf(fp,"\n\n\n#RESETS\nS\n"); fprintf(fp,"\n\n\n#SHOPS\n0\n"); fprintf(fp,"\n\n\n#$\n"); fclose(fp); send_to_char("Area Completed\n\r", ch); return; }