/*---------------------------- 
m_helpers.c modulu 
Yazan: By : Romeo
------------------------------*/ 

#include "config.h" 
#include "struct.h" 
#include "common.h" 
#include "sys.h" 
#include "numeric.h" 
#include "msg.h" 
#include "channel.h" 
#include <time.h> 
#include <sys/stat.h> 
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#ifdef _WIN32 
#include <io.h> 
#endif 
#include <fcntl.h> 
#include "h.h" 
#ifdef STRIPBADWORDS 
#include "badwords.h" 
#endif 
#ifdef _WIN32 
#include "version.h" 
#endif 

#define RPL_HELPERS 357 
#define RPL_ENDOFHELPERS 358 
#define MSG_HELPERS "HELPERS" 
#define TOK_HELPERS "HP" 
#define MyMod ModHelpers->handle 
#define IsAway(x) (x)->user->away 
#define IsHelper(sptr) IsHelpOp(sptr) 
#define DelCommand(x) if (x) CommandDel(x); x = NULL 

static Command *AddCommand(char *msg, char *token, int (*func)()); 
DLLFUNC int m_helpers(aClient *cptr, aClient *sptr, int parc, char *parv[]); 

ModuleInfo *ModHelpers; 
Command *CmdHelpers; 

#ifndef DYNAMIC_LINKING 
ModuleHeader m_helpers_Header 
#else 
#define m_helpers_Header Mod_Header 
ModuleHeader Mod_Header 
#endif 
= { 
"helper modulu", 
"$Id: m_helpers.c, olusum tarihi 10 mayıs 2006 Exp $", 
"/helpers modulu ", 
"3.2-b8-1", 
NULL 
}; 

#ifdef DYNAMIC_LINKING 
DLLFUNC int Mod_Init(ModuleInfo *modinfo) 
#else 
int m_helpers_Init(ModuleInfo *modinfo) 
#endif 
{ 
ModHelpers = modinfo; 
CmdHelpers = AddCommand(MSG_HELPERS, TOK_HELPERS, m_helpers); 

if (!CmdHelpers) 
return MOD_FAILED; 

return MOD_SUCCESS; 
} 

#ifdef DYNAMIC_LINKING 
DLLFUNC int Mod_Load(int module_load) 
#else 
int m_helpers_Load(int module_load) 
#endif 
{ 
return MOD_SUCCESS; 
} 

#ifdef DYNAMIC_LINKING 
DLLFUNC int Mod_Unload(int module_unload) 
#else 
int m_helpers_Unload(int module_unload) 
#endif 
{ 
DelCommand(CmdHelpers); 

return MOD_SUCCESS; 
} 

typedef struct 
{ 
unsigned long *umode; 
char *text; 
} hmode; 

static hmode otypes[] = 
{ 
{ &UMODE_HELPOP, "Yardim Yetkisi var" }, 
{ NULL, NULL } 
}; 

static char *find_otype(unsigned long umodes) 
{ 
unsigned int i; 

for (i = 0; otypes[i].umode; i++) 
if (*otypes[i].umode & umodes) 
return otypes[i].text; 

return "bilinmeyen yetkili"; 
} 

static Command *AddCommand(char *msg, char *token, int (*func)()) 
{ 
Command *cmd; 

if (CommandExists(msg)) 
{ 
config_error(" %s komutu zaten mevcut", msg); 
return NULL; 
} 
if (CommandExists(token)) 
{ 
config_error(" %s komutu zaten mevcut", token); 
return NULL; 
} 

cmd = CommandAdd(MyMod, msg, token, func, MAXPARA, 0); 

#ifndef _WIN32 
if (ModuleGetError(MyMod) != MODERR_NOERROR || !cmd) 
#else 
if (!cmd) 
#endif 
{ 
#ifndef _WIN32 
config_error("Komut eklenirken hata--> %s: %s", msg, 
ModuleGetErrorStr(MyMod)); 
#else 
config_error("Komut eklenirken hata--> %s", msg); 
#endif 
return NULL; 
} 

return cmd; 
} 


int m_helpers(aClient *cptr, aClient *sptr, int parc, char *parv[]) 
{ 
aClient *acptr; 
char buf[BUFSIZE]; 
int yetkililer = 0, mesgul = 0, toplam = 0; 

sendto_one(sptr, ":%s 339 %s :+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=+", 
me.name, sptr->name); 
sendto_one(sptr, ":%s 339 %s : Komut Yardım Yetkilisi Listesi ", 
me.name, sptr->name); 
sendto_one(sptr, ":%s 339 %s : Listede bulunan yetkililerden #help kanalinda ", 
me.name, sptr->name); 
sendto_one(sptr, ":%s 339 %s : IRC/Services hakkinda komut bilgisi isteyebilirsiniz. ", 
me.name, sptr->name); 
sendto_one(sptr, ":%s 339 %s :+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=+", 
me.name, sptr->name); 
for (acptr = client; acptr; acptr = acptr->next) 
{ 
if (IsULine(acptr) || !IsPerson(acptr) || !IsHelpOp(acptr)) 
continue; 

sendto_one(sptr, ":%s %d %s : \2 %-23s \2 %-16s " "%s", 
me.name, RPL_HELPERS, sptr->name, 
acptr->name, 
find_otype(acptr->umodes), 
(IsAway(acptr) ? "-Me?gul" : "")); 

if (IsAway(acptr)) 
mesgul++; 
else if (IsHelper(acptr)) 
yetkililer++; 

} 

toplam = yetkililer + mesgul; 

sprintf(buf, 
"Toplam: %d Komut Yardim Yetkilisi Bagli - %d Yetkili , %d Mesgul", 
toplam , yetkililer , mesgul); 

sendto_one(sptr, ":%s %d %s :%s", me.name, RPL_HELPERS, sptr->name, buf); 
sendto_one(sptr, ":%s %d %s :Komut Yardim Yetkilisi listesi sonu", me.name, RPL_ENDOFHELPERS, sptr->name); 
sendto_one(sptr, ":%s 339 %s :+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=+", 
me.name, sptr->name);
return 0; 
}

