/* vi: set ts=4 sw=4: */ /* Lotos plugin pre verziu 1.1.0 a vyssiu ----------------------------------------------------------- remake z TalkerOS plugin Inicializacny riadok pre tento plugin: if (tmp=pl00x100_init(cmd)) cmd=cmd+tmp; Volanie prikazu pre tento plugin: if (!strcmp(plugin->registration, "00-100")) {pl00x100_main(user,str,comnum); return 1; } je v subore plugin.c ----------------------------------------------------------- */ #ifndef __PL00x100_C__ #define __PL00x100_C__ 1 #include "../define.h" #include "../prototypes.h" #include "../obj_ur.h" #include "../obj_pl.h" #include "eightball.h" /* ----------------------------------------------------------- */ int pl00x100_init(int cm) { PL_OBJECT plugin; CM_OBJECT com; int i=0; set_crash(); /* create plugin */ if ((plugin=create_plugin())==NULL) { write_syslog(ERRLOG, 1, "Unable to create new registry entry!\n"); return 0; } strcpy(plugin->name,"TalkerMagicEightBall"); /* Plugin Description */ strcpy(plugin->author,"Lopo"); /* Author's name */ strcpy(plugin->registration,"00-100"); /* Plugin/Author ID */ strcpy(plugin->ver,"1.2"); /* Plugin version */ strcpy(plugin->req_ver,"110"); /* Runtime ver required */ plugin->id = cm; /* ID used as reference */ plugin->req_userfile = 0; /* Requires user data? */ plugin->triggerable = 0; /* Can be triggered by regular speech? */ /* create associated command */ if ((com=create_cmd())==NULL) { write_syslog(ERRLOG, 1, "Unable to add command to registry!\n"); return 0; } i++; /* Keep track of number created */ strcpy(com->command,"8ball"); /* Name of command */ com->id = plugin->id; /* Command reference ID */ com->req_lev = USER; /* Required level for cmd. */ com->comnum = i; /* Per-plugin command ID */ com->plugin = plugin; /* Link to parent plugin */ /* end creating command - repeat as needed for more commands */ return i; } int pl00x100_main(UR_OBJECT user, char *str, int comid) { set_crash(); /* put case calls here for each command needed. remember that the commands will be in order, with the first command always being 1 */ switch (comid) { case 1: pl00x100_respond(user,str); return 1; default: return 0; } } void pl00x100_respond(UR_OBJECT user, char *str) { char fname[500], line[150], *name; int i=0, num=0, total=0; FILE *fp; set_crash(); fname[0]='\0'; line[0]='\0'; if (word_count<2) { write_user(user,"The Magic EightBall will only respond to a question.\n"); return; } if (user->vis) name=user->name; else name=invisname; sprintf(fname,"%s/eightball.8", PLFILES); if (!(fp=fopen(fname,"r"))) { write_user(user,"EightBall: Sorry! Response file was not found.\n"); return; } fscanf(fp,"%d\n",&total); /* total file entries */ num=rand()%total; num++; /* Have to increase because the rand() might leave it 0. */ /* get the line from the file that contains the random response */ for (i=0; (i<num && !feof(fp)); i++) fgets(line, 161, fp); fclose(fp); line[strlen(line)-1]='\0'; terminate(line); /* write question to users */ vwrite_user(user, "%s[You ask the EightBall]%s: %s\n", colors[CSELF], colors[CTEXT], str); vwrite_room_except(user->room, user, "%s[%s asks the EightBall]%s: %s\n", colors[CUSER], name, colors[CTEXT], str); record(user->room, text); /* write response to room */ vwrite_room(user->room, "~FG[The Magic EightBall]%s: %s\n", colors[CTEXT], line); record(user->room, text); } #endif /* __PL00x100_C__ */