|
sprintf(cmd, "egrep -ch \"^Vnum %d\" ../player/* | gawk \'{ s += $1 }; END { print s }\' > sum.txt", vnum); |
|
sprintf(cmd, "egrep -ch \"^Vnum %d\" ../player/* | gawk \'{ s += $1 }; END { print s }\' > sum.txt", vnum); |
|
|
MPStatus command for MobprogsThis snippet allows you to store and read state in Mobprogs. In mob_prog.c add this define...
In fn_keyword[] add this...
In cmd_eval() near the end after case CHK_GRPSIZE: add...
Add the following to the CHAR_DATA structure in merc.h
Add an entry to mob_cmd_table[] in mob_cmds.c
Add this routine or similar to mob_cmds.c
Get it working and now your mprogs have the capability to save and query state. The following fight trigger is an example of usage:
|
This page contains small code snippets that may or not be useful to mud programmers. Consider them all to be public domain.
$ cat offcount.c
#include <stdio.h>
#include <stdlib.h>
int offline_obj_count(int vnum)
{
FILE *f;
char cmd[160];
int count;
sprintf(cmd,
"egrep -ch \"^Vnum %d\" ../player/* | gawk \'{ s += $1 }; END { print s }\' > sum.txt", vnum);
system(cmd);
f = fopen ("sum.txt", "r");
if (!f) {
printf("offline_obj_count: Could not read sum.txt file.");
return 0;
}
fscanf(f,"%d\n", &count);
fclose(f);
return count;
}
int main(int argc, char** argv) {
int vnum = atoi(argv[1]);
int count = offline_obj_count(vnum);
printf("Vnum:%d Count:%d", vnum, count);
return 0;
}
$ gcc offcount.c
$ ./a 3382
Vnum:3382 Count:62
$ ./a 23008
Vnum:23008 Count:1
$ ./a 23048
Vnum:23048 Count:2
$ ./a 9999
Vnum:9999 Count:0
This snippet allows you to store and read state in Mobprogs.
In mob_prog.c add this define...
#define CHK_STATUS (53)
In fn_keyword[] add this...
"status", /* if status $n == 1000 - checks status value on obj,room or mob */
In cmd_eval() near the end after case CHK_GRPSIZE: add...
case CHK_STATUS:
lval = lval_char->mprog_status;
break;
Add the following to the CHAR_DATA structure in merc.h
int mprog_status;
Add an entry to mob_cmd_table[] in mob_cmds.c
{"status", do_mpstatus},
Add this routine or similar to mob_cmds.c
void do_mpstatus (CHAR_DATA * ch, char *argument)
{
char arg[MIL];
char errbuf[MIL];
if (ch == NULL)
return;
one_argument (argument, arg);
if (!is_number (arg)) {
sprintf (errbuf, "MpStatus: invalid arg from mob vnum %d.",
ch->isNPC() ? ch->pIndexData->vnum : 0);
wiznet (errbuf, NULL, NULL, WIZ_PROGS, 0, 0);
return;
}
ch->mprog_status = atoi (arg);
}
Get it working and now your mprogs have the capability to save and query state.
The following fight trigger is an example of usage:
if status $i == 0
poke $n
say You look delicious, $n.
mob status 1
end
endif
if status $i == 1
say I have a feeling your flesh will be rather tough.
mob echo A bolt of energy flies from $I's hand!
mob cast 'force bolt' $n
chortle
mob status 2
End
endif
if status $i == 2
if rand 25
mob status 0
endif
endif
end