local void Cmakefake(const char *tc, const char *params, Player *p, const Target *target) { CreateFakePlayer(params, p->arena, SHIP_SPEC, 9999); } local void Ckillfake(const char *tc, const char *params, Player *p, const Target *target) { if (target->type == T_PLAYER) EndFaked(target->u.p); } local Ifake _int = { INTERFACE_HEAD_INIT(I_FAKE, "fake") CreateFakePlayer, EndFaked }; EXPORT const char info_fake[] = CORE_MOD_INFO("fake"); EXPORT int MM_fake(int action, Imodman *mm_, Arena *arena) { if (action == MM_LOAD) { mm = mm_; pd = mm->GetInterface(I_PLAYERDATA, ALLARENAS); aman = mm->GetInterface(I_ARENAMAN, ALLARENAS); cmd = mm->GetInterface(I_CMDMAN, ALLARENAS); net = mm->GetInterface(I_NET, ALLARENAS); chatnet = mm->GetInterface(I_CHATNET, ALLARENAS);
mysql->Query(NULL, NULL, 0, "INSERT INTO hs_transactions (srcplayer, tgtplayer, action, amount) VALUES(#,#,#,#)", database->getPerPlayerData(cplayer)->id, database->getPerPlayerData(cplayer)->id, MONEY_TYPE_GRANT, newAmount); } } } /* stop the loving from above... */ } local Ihscoremoney interface = { INTERFACE_HEAD_INIT(I_HSCORE_MONEY, "hscore_money") giveMoney, setMoney, getMoney, getMoneyType, giveExp, setExp, getExp, }; EXPORT const char info_hscore_moneycjf[] = "v1.0 Dr Brain <*****@*****.**>; CypherJF <*****@*****.**>"; EXPORT int MM_hscore_moneycjf(int action, Imodman *_mm, Arena *arena) { if (action == MM_LOAD) { mm = _mm; lm = mm->GetInterface(I_LOGMAN, ALLARENAS); chat = mm->GetInterface(I_CHAT, ALLARENAS); cfg = mm->GetInterface(I_CONFIG, ALLARENAS);
local void LogFile(const char *); local void FlushLog(void); local void ReopenLog(void); local int flush_timer(void *dummy); local FILE *logfile; local pthread_mutex_t logmtx = PTHREAD_MUTEX_INITIALIZER; local Iconfig *cfg; local Ilogman *lm; local Imainloop *ml; local Icmdman *cmd; local Ilog_smod _lfint = { INTERFACE_HEAD_INIT(I_LOG_SMOD, "log_smod") FlushLog, ReopenLog }; local helptext_t smodlog_help = "Targets: none\n" "Args: {flush} or {reopen}\n" "Administers the log file that the server keeps. There are two possible\n" "subcommands: {flush} flushes the log file to disk (in preparation for\n" "copying it, for example), and {reopen} tells the server to close and\n" "re-open the log file (to rotate the log while the server is running).\n"; local void Csmodlog(const char *tc, const char *params, Player *p, const Target *target) { if (!strcasecmp(params, "flush"))
local void ShipFreqChange(Player *p, int newship, int oldship, int newfreq, int oldfreq); local void PlayerAction(Player *p, int action, Arena *a); // Timers local int UpdateScores(void *a); // Commands local helptext_t flagtime_help = "Targets: none\n" "Args: none\n" "Displays a breakdown of the current flag time scores."; local void C_flagtime(const char *command, const char *params, Player *p, const Target *target); MYINTERFACE = { INTERFACE_HEAD_INIT(I_HS_FLAGTIME, "hs_flagtime") GetFlagTeam, GetFlagOwner, GetFlagSeconds, GetStatus, SetStatus, Reset }; DEF_GLOBALINTERFACE; EXPORT const char info_hs_flagtime[] = "08.01.22 by D1st0rt <*****@*****.**>"; EXPORT int MM_hs_flagtime(int action, Imodman *mm_, Arena *arena) { MM_FUNC_HEADER();
local int HigherThan(Player *a, Player *b) { char cap[MAXGROUPLEN+16]; const char *bgrp = ((pdata*)PPDATA(b, pdkey))->group; snprintf(cap, sizeof(cap), "higher_than_%s", bgrp); return HasCapability(a, cap); } /* interface */ local Icapman capint = { INTERFACE_HEAD_INIT(I_CAPMAN, "capman-groups") HasCapability, HasCapabilityByName, HasCapabilityInArena, HigherThan }; local Igroupman grpint = { INTERFACE_HEAD_INIT(I_GROUPMAN, "groupman") GetGroup, SetPermGroup, SetTempGroup, RemoveGroup, CheckGroupPassword }; EXPORT const char info_capman[] = CORE_MOD_INFO("capman"); EXPORT int MM_capman(int action, Imodman *mm_, Arena *arena) {
return; } ft = mm->GetInterface(I_FILETRANS, ALLARENAS); if (ft && ft->SendFile(p, "clients/update.exe", "", FALSE) != MM_OK) lm->Log(L_WARN, "<mapnewsdl> update request, but clients/update.exe doesn't exist"); mm->ReleaseInterface(ft); } /* interface */ local Imapnewsdl _int = { INTERFACE_HEAD_INIT(I_MAPNEWSDL, "mapnewsdl") SendMapFilename, GetNewsChecksum }; EXPORT const char info_mapnewsdl[] = CORE_MOD_INFO("mapnewsdl"); EXPORT int MM_mapnewsdl(int action, Imodman *mm_, Arena *arena) { if (action == MM_LOAD) { /* get interface pointers */ mm = mm_; pd = mm->GetInterface(I_PLAYERDATA, ALLARENAS); net = mm->GetInterface(I_NET, ALLARENAS); lm = mm->GetInterface(I_LOGMAN, ALLARENAS); cfg = mm->GetInterface(I_CONFIG, ALLARENAS);
local void aaction(Arena *arena, int action) { jpdata *jpd = P_ARENA_DATA(arena, jpkey); LOCK(); /* cfghelp: Kill:JackpotBountyPercent, arena, int, def: 0 * The percent of a player's bounty added to the jackpot on each * kill. Units: 0.1%. */ if (action == AA_CREATE || action == AA_CONFCHANGED) jpd->percent = cfg->GetInt(arena->cfg, "Kill", "JackpotBountyPercent", 0); UNLOCK(); } local Ijackpot jpint = { INTERFACE_HEAD_INIT(I_JACKPOT, "jackpot") ResetJP, AddJP, GetJP, SetJP }; EXPORT const char info_jackpot[] = CORE_MOD_INFO("jackpot"); EXPORT int MM_jackpot(int action, Imodman *mm_, Arena *arena) { if (action == MM_LOAD) { mm = mm_; aman = mm->GetInterface(I_ARENAMAN, ALLARENAS); cfg = mm->GetInterface(I_CONFIG, ALLARENAS); persist = mm->GetInterface(I_PERSIST, ALLARENAS); if (!aman || !cfg || !persist) return MM_FAIL;
} local int GetCanBufferPackets(BWLimit *bw) { return 30; } local void GetInfo(BWLimit *bw, char *buf, int buflen) { astrncpy(buf, "(no limit)", buflen); } local struct Ibwlimit bwint = { INTERFACE_HEAD_INIT(I_BWLIMIT, "bw-nolimit") New, NoOp1, NoOp2, Check, NoOp1, NoOp1, GetCanBufferPackets, GetInfo }; EXPORT const char info_bw_nolimit[] = CORE_MOD_INFO("bw_nolimit"); EXPORT int MM_bw_nolimit(int action, Imodman *mm, Arena *arena) { if (action == MM_LOAD) { mm->RegInterface(&bwint, ALLARENAS); return MM_OK; }
local int ClientEncrypt(ClientEncryptData *ced, byte *, int); local int ClientDecrypt(ClientEncryptData *ced, byte *, int); local void ClientVoid(ClientEncryptData *ced); /* globals */ local int enckey; local pthread_mutex_t mtx; local Inet *net; local Iplayerdata *pd; local Iencrypt ienc = { INTERFACE_HEAD_INIT("__unused__", "enc-vie") Encrypt, Decrypt, Void }; local Iclientencrypt iclienc = { INTERFACE_HEAD_INIT("__unused__", "enc-vie-client") ClientInit, ClientEncrypt, ClientDecrypt, ClientVoid }; EXPORT const char info_enc_vie[] = CORE_MOD_INFO("enc_vie"); EXPORT int MM_enc_vie(int action, Imodman *mm, Arena *arena) { if (action == MM_LOAD) {
{ char work[NAMELEN+PWLEN]; check_state_t *st = amalloc(sizeof(*st)); st->done = done; st->clos = clos; hash_password(name, pwd, st->given, work); persist->GetGeneric( KEY_PWCACHE, work, NAMELEN, st->expected, HASHLEN, check_done, st); } local Ipwcache pwint = { INTERFACE_HEAD_INIT(I_PWCACHE, "pwcache") Set, Check }; EXPORT const char info_pwcache[] = CORE_MOD_INFO("pwcache"); EXPORT int MM_pwcache(int action, Imodman *mm, Arena *arena) { if (action == MM_LOAD) { persist = mm->GetInterface(I_PERSIST, ALLARENAS); if (!persist) return MM_FAIL; mm->RegInterface(&pwint, ALLARENAS); return MM_OK; }