From: Chris Porter Date: Sat, 23 Jan 2016 14:12:11 +0000 (+0000) Subject: Merge pull request #2 from meeb/meeb X-Git-Url: https://jfr.im/git/irc/quakenet/newserv.git/commitdiff_plain/84f32842287f0ba338a29dcab3aa406aa6ffc744?hp=9e5f0d797a0957172a9fd7b79f20115bc6fdcbd7 Merge pull request #2 from meeb/meeb irc_onvoice and irc_ondevoice lua events --- diff --git a/lua/luabot.c b/lua/luabot.c index d99ccd1f..a1132a57 100644 --- a/lua/luabot.c +++ b/lua/luabot.c @@ -27,6 +27,7 @@ void lua_onauth(int hooknum, void *arg); void lua_ondisconnect(int hooknum, void *arg); void lua_onmode(int hooknum, void *arg); void lua_onop(int hooknum, void *arg); +void lua_onvoice(int hooknum, void *arg); void lua_onprequit(int hooknum, void *arg); void lua_onquit(int hooknum, void *arg); void lua_onrename(int hooknum, void *arg); @@ -46,6 +47,8 @@ void lua_registerevents(void) { registerhook(HOOK_CHANNEL_KICK, &lua_onkick); registerhook(HOOK_CHANNEL_OPPED, &lua_onop); registerhook(HOOK_CHANNEL_DEOPPED, &lua_onop); + registerhook(HOOK_CHANNEL_VOICED, &lua_onvoice); + registerhook(HOOK_CHANNEL_DEVOICED, &lua_onvoice); registerhook(HOOK_NICK_PRE_LOSTNICK, &lua_onprequit); registerhook(HOOK_NICK_LOSTNICK, &lua_onquit); registerhook(HOOK_NICK_RENAME, &lua_onrename); @@ -67,6 +70,8 @@ void lua_deregisterevents(void) { deregisterhook(HOOK_NICK_PRE_LOSTNICK, &lua_onprequit); deregisterhook(HOOK_CHANNEL_DEOPPED, &lua_onop); deregisterhook(HOOK_CHANNEL_OPPED, &lua_onop); + deregisterhook(HOOK_CHANNEL_DEVOICED, &lua_onvoice); + deregisterhook(HOOK_CHANNEL_VOICED, &lua_onvoice); deregisterhook(HOOK_CHANNEL_KICK, &lua_onkick); deregisterhook(HOOK_CHANNEL_TOPIC, &lua_ontopic); deregisterhook(HOOK_NICK_ACCOUNT, &lua_onauth); @@ -310,7 +315,7 @@ void lua_ontopic(int hooknum, void *arg) { channel *cp=(channel*)arglist[0]; nick *np = (nick *)arglist[1]; - if(!cp || !cp->topic) + if(!cp || !cp->topic) return; if(np) @@ -335,6 +340,22 @@ void lua_onop(int hooknum, void *arg) { } } +void lua_onvoice(int hooknum, void *arg) { + void **arglist = (void **)arg; + chanindex *ci = ((channel *)arglist[0])->index; + nick *np = arglist[1]; + nick *target = arglist[2]; + + if(!target) + return; + + if(np) { + lua_avpcall(hooknum == HOOK_CHANNEL_VOICED?"irc_onvoice":"irc_ondevoice", "Sll", ci->name, np->numeric, target->numeric); + } else { + lua_avpcall(hooknum == HOOK_CHANNEL_VOICED?"irc_onvoice":"irc_ondevoice", "S0l", ci->name, target->numeric); + } +} + void lua_onjoin(int hooknum, void *arg) { void **arglist = (void **)arg; chanindex *ci = ((channel *)arglist[0])->index; @@ -484,5 +505,3 @@ void lua_onmode(int hooknum, void *arg) { lua_avpcall("irc_onmode", "S0ss", ci->name, printallmodes(cp), printlimitedmodes(cp, beforeflags)); } } - -