ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/server/plugins.c
(Generate patch)

Comparing deliantra/server/server/plugins.c (file contents):
Revision 1.11 by root, Sun Jun 11 15:02:16 2006 UTC vs.
Revision 1.12 by elmex, Sat Jul 15 11:57:02 2006 UTC

1/* 1/*
2 * static char *rcsid_plugins_c = 2 * static char *rcsid_plugins_c =
3 * "$Id: plugins.c,v 1.11 2006/06/11 15:02:16 root Exp $"; 3 * "$Id: plugins.c,v 1.12 2006/07/15 11:57:02 elmex Exp $";
4 */ 4 */
5 5
6/*****************************************************************************/ 6/*****************************************************************************/
7/* CrossFire, A Multiplayer game for X-windows */ 7/* CrossFire, A Multiplayer game for X-windows */
8/* */ 8/* */
286int execute_global_event(int eventcode, ...) 286int execute_global_event(int eventcode, ...)
287{ 287{
288 va_list args; 288 va_list args;
289 object* op; 289 object* op;
290 object* op2; 290 object* op2;
291 object* op3;
291 mapstruct *map; 292 mapstruct *map;
292 player* pl; 293 player* pl;
293 char* buf; 294 char* buf;
294 int i, rt; 295 int i, rt, retval = 0, *tmpretval = NULL, fix;
295 crossfire_plugin* cp; 296 crossfire_plugin* cp;
296 if (plugins_list == NULL) 297 if (plugins_list == NULL)
297 return -1; 298 return -1;
298 299
299 va_start(args, eventcode); 300 va_start(args, eventcode);
415 if (cp->gevent[eventcode] != NULL) 416 if (cp->gevent[eventcode] != NULL)
416 cp->gevent[eventcode](&rt, eventcode, op, buf); 417 cp->gevent[eventcode](&rt, eventcode, op, buf);
417 } 418 }
418 break; 419 break;
419 420
421 case EVENT_FIND_UNARMED_SKILL:
422 op = va_arg(args, object*);
423 for (cp = plugins_list; cp != NULL; cp = cp->next) {
424 if (cp->gevent[eventcode] != NULL)
425 if ((tmpretval = cp->gevent[eventcode](&rt, eventcode, op)) && *tmpretval > 0) {
426 retval = *tmpretval;
427 }
428 }
429 break;
430
431 case EVENT_PLAYER_USE_SKILL:
432 case EVENT_MONSTER_USE_SKILL:
433 op = va_arg(args, object*);
434 op2 = va_arg(args, object*);
435 op3 = va_arg(args, object*);
436 fix = va_arg(args, int);
437 buf = va_arg(args, char*);
438 for (cp = plugins_list; cp != NULL; cp = cp->next) {
439 if (cp->gevent[eventcode] != NULL)
440 if ((tmpretval = cp->gevent[eventcode](&rt, eventcode, op, op2, op3, fix, buf)) && *tmpretval != 0) {
441 retval = *tmpretval;
442 }
443 }
444 break;
445
420 case EVENT_EXTCMD: 446 case EVENT_EXTCMD:
421 /*KICK: op, parms*/ 447 /*KICK: op, parms*/
422 pl = va_arg (args, player *); 448 pl = va_arg (args, player *);
423 buf = va_arg (args, char *); 449 buf = va_arg (args, char *);
424 i = va_arg (args, int); 450 i = va_arg (args, int);
427 cp->gevent[eventcode](&rt, eventcode, pl, buf, i, buf); 453 cp->gevent[eventcode](&rt, eventcode, pl, buf, i, buf);
428 } 454 }
429 break; 455 break;
430 } 456 }
431 va_end(args); 457 va_end(args);
458
432 return 0; 459 return retval;
433} 460}
434 461
435int plugins_init_plugin(const char* libfile) 462int plugins_init_plugin(const char* libfile)
436{ 463{
437 LIBPTRTYPE ptr; 464 LIBPTRTYPE ptr;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines