char *z_init(void *getext, void *setext, char *args) { int argc; char *argv[16]; int i; *(void **)(&z_getext) = getext; *(void **)(&z_setext) = setext; argc = _argsep(args, 16, argv); i = 0; while(i<argc) { switch(argv[i][0]) { case 'f': strncpy(geodb, argv[++i], 260); break; case 'F': strncpy(geocitydb, argv[++i], 260); default: return "Unknown switch"; } i++; } *(void **)(&sendf) = z_getext("sendf"); *(void **)(¬ifypriv) = z_getext("notifypriv"); load_geoip_database(); load_geocity_database(); *(void **)(&addhook) = z_getext("addhook"); addhook("connected", on_connect); return 0; }
void InitHooks() { addhook(0x006629BC, InterceptWoodenASupports); addhook(0x00662D5C, InterceptWoodenBSupports); addhook(0x00663105, InterceptMetalASupports); addhook(0x00663584, InterceptMetalBSupports); addhook(0x006861AC, InterceptPaint6C); addhook(0x00686337, InterceptPaint6C); addhook(0x006864D0, InterceptPaint6C); addhook(0x0068666B, InterceptPaint6C); addhook(0x00686806, InterceptPaint7C); addhook(0x006869B2, InterceptPaint7C); addhook(0x00686B6F, InterceptPaint7C); addhook(0x00686D31, InterceptPaint7C); addhook(0x00686EF0, InterceptPaint8C); addhook(0x00687056, InterceptPaint8C); addhook(0x006871C8, InterceptPaint8C); addhook(0x0068733C, InterceptPaint8C); addhook(0x006874B0, InterceptPaint9C); addhook(0x00687618, InterceptPaint9C); addhook(0x0068778C, InterceptPaint9C); addhook(0x00687902, InterceptPaint9C); }