#include <core> #include <console> #include <string> #include <admin> #include <adminlib> #define MAX_CMDS 10 #define MAX_OPTS 4 /* Set this to 1, if you want to use the old method */ #define OLD 0 new STRING_VERSION[MAX_DATA_LENGTH] = "1.1"; new gsKeywordsMe[MAX_CMDS][MAX_COMMAND_LENGTH]; new gsKeywordsRank[MAX_CMDS][MAX_COMMAND_LENGTH]; new gsURL[MAX_DATA_LENGTH]; new gsPrefix[MAX_CMDS][MAX_COMMAND_LENGTH]; new giKeywordsMe,giKeywordsRank,giPrefix; display_array(iNumber,aArray[MAX_CMDS][]){ for(new i=0;i<iNumber;i++){ selfmessage(aArray[i]); } return PLUGIN_CONTINUE; } change_array(sVault[],sValue[],iNumber,aArray[][]){ new sData[MAX_DATA_LENGTH]=""; new iMerk=0; for(new i=0;i<iNumber;i++){ if(strcmp(aArray[i],sValue)!=0){ strcat(sData,aArray[i],MAX_DATA_LENGTH); strcat(sData," ",MAX_DATA_LENGTH); } else{ iMerk=1; } } if(!iMerk){ strcat(sData,sValue,MAX_DATA_LENGTH); } else{ strtrim(sData," ",1); } set_vaultdata(sVault,sData); load_data(); return PLUGIN_CONTINUE; } change_value(sText[],sValue[]){ set_vaultdata(sText,sValue); strcpy(gsURL,sValue,MAX_DATA_LENGTH); return PLUGIN_CONTINUE; } public admin_ps_set(HLCommand,HLData,HLUserName,UserIndex){ new aCommands[MAX_OPTS][MAX_COMMAND_LENGTH]={"PREFIX","STATSME","STATSRANK","URL"}; new sText[MAX_TEXT_LENGTH]; new iMerk=-1; new sValue[MAX_DATA_LENGTH]; new sCvar[MAX_DATA_LENGTH]; new sUser[MAX_NAME_LENGTH]; convert_string(HLData,sValue,MAX_DATA_LENGTH); convert_string(HLUserName,sUser,MAX_NAME_LENGTH); strbreak(sValue,sCvar,sValue,MAX_DATA_LENGTH); strtrim(sValue," ",2); strtrim(sCvar," ",2); for(new i=0;i<MAX_OPTS;i++){ if(strcasecmp(aCommands[i],sCvar)==0){ iMerk=i; } } if(iMerk<0 && strlen(sCvar)>0){ selfmessage("Option not found!"); strinit(sCvar); } if(!strlen(sCvar)){ selfmessage("Possible Options:"); for(new i=0;i<MAX_OPTS;i++){ selfmessage(aCommands[i]); } return PLUGIN_HANDLED; } if(!strlen(sValue)){ snprintf(sText,MAX_TEXT_LENGTH,"Current value(s) of option %s:",aCommands[iMerk]); selfmessage(sText); switch (iMerk) { case 0: display_array(giPrefix,gsPrefix); case 1: display_array(giKeywordsMe,gsKeywordsMe); case 2: display_array(giKeywordsRank,gsKeywordsRank); case 3: selfmessage(gsURL); } return PLUGIN_HANDLED; } snprintf(sText,MAX_TEXT_LENGTH,"BK_PS_%s",aCommands[iMerk]); switch (iMerk) { case 0: change_array(sText,sValue,giPrefix,gsPrefix); case 1: change_array(sText,sValue,giKeywordsMe,gsKeywordsMe); case 2: change_array(sText,sValue,giKeywordsRank,gsKeywordsRank); case 3: change_value(sText,sValue); } selfmessage("Option changed"); return PLUGIN_HANDLED; } public admin_stats(HLCommand,HLData,HLUserName,UserIndex) { new sData[MAX_DATA_LENGTH]; new sPrefix[MAX_DATA_LENGTH]; new sCommand[MAX_COMMAND_LENGTH]; new sName[MAX_NAME_LENGTH]; new sRest[MAX_DATA_LENGTH]=""; new iPrefix=-1; convert_string(HLCommand,sCommand,MAX_COMMAND_LENGTH); convert_string(HLData,sData,MAX_DATA_LENGTH); convert_string(HLUserName,sName,MAX_NAME_LENGTH); strstripquotes(sData); if(streq(sCommand,"say")){ if(!giPrefix || !giKeywordsMe || !giKeywordsRank){ return PLUGIN_CONTINUE; } strncpy(sPrefix,sData,1,MAX_DATA_LENGTH); for(new i=0;i<giPrefix;i++){ if(streq(sPrefix,gsPrefix[i])){ iPrefix=i; break; } } if(iPrefix<0){ return PLUGIN_CONTINUE; } strtrim(sData,gsPrefix[iPrefix],0); if(strcount(sData,' ')>0){ strbreak(sData,sData,sRest,MAX_DATA_LENGTH); } for(new i=0;i<giKeywordsMe;i++){ if(streq(sData,gsKeywordsMe[i])){ if(!strlen(sRest)){ get_userAuthID(sName,sRest,MAX_AUTHID_LENGTH); } else{ get_username(sName,sName,MAX_NAME_LENGTH); get_userAuthID(sName,sRest,MAX_AUTHID_LENGTH); } open_motd(sRest,sName,0); return PLUGIN_HANDLED; } } for(new i=0;i<giKeywordsRank;i++){ if(streq(sData,gsKeywordsRank[i])){ get_username(sName,sName,MAX_NAME_LENGTH); open_motd("",sName,1); return PLUGIN_HANDLED; } } return PLUGIN_CONTINUE; } if(strcount(sData,' ')>0){ strbreak(sData,sData,sRest,MAX_DATA_LENGTH); } if(!strlen(sRest)){ get_userAuthID(sName,sRest,MAX_AUTHID_LENGTH); } else{ get_username(sName,sName,MAX_NAME_LENGTH); if(!get_userAuthID(sName,sRest,MAX_AUTHID_LENGTH)){ strcpy(sRest,sName,MAX_AUTHID_LENGTH); } } open_motd(sRest,sName,0); return PLUGIN_HANDLED; } open_motd(sAuthID[],sName[],iSite){ new sText[2048]="<html>^n<head>^n<meta http-equiv=^"REFRESH^" content=^"0;url=%s^">^n</head>^n<body>^n<div>Searching...</div>^n</body>^n</html>"; #if OLD == 1 new sURL[MAX_TEXT_LENGTH]="%s?site=%d&id=%s"; snprintf(sURL,MAX_TEXT_LENGTH,sURL,gsURL,iSite,sAuthID); #else new sURL[MAX_TEXT_LENGTH]; if(iSite){ strcpy(sURL,gsURL,MAX_TEXT_LENGTH); } else{ snprintf(sURL,MAX_TEXT_LENGTH,"%s?andor=exact&search=%s",gsURL,sAuthID); } #endif snprintf(sText,2048,sText,sURL); motd(sName,sText); execclient(sName,"escape"); return PLUGIN_CONTINUE; } public plugin_init() { new sData[MAX_DATA_LENGTH]; plugin_registerinfo("BKs Psychostats Plugin","Opens Psychostats in Motd-Window",STRING_VERSION); plugin_registercmd("admin_ps_set","admin_ps_set",ACCESS_CONFIG,"admin_ps_set <Option> <Value>: Sets the options of psychostats plugin"); plugin_registercmd("admin_stats","admin_stats",ACCESS_ALL,"admin_stats <ID>: Shows the stats of a certain person."); plugin_registercmd("say","admin_stats",ACCESS_ALL,""); if(!get_vaultdata("BK_PS_STATSME",sData,MAX_DATA_LENGTH)){ set_vaultdata("BK_PS_URL","http://www.wing-clan.de/psstats/index.php"); set_vaultdata("BK_PS_STATSME","stats"); strcpy(sData,"stats",MAX_DATA_LENGTH); set_vaultdata("BK_PS_STATSRANK","rank"); set_vaultdata("BK_PS_PREFIX","/"); } load_data(); return PLUGIN_CONTINUE; } extract_string(sData[],sArray[][]){ new iKeywords; new i; strtrim(sData," "); iKeywords=strcount(sData,' '); if(iKeywords!=0){ for(i=0;i<iKeywords;i++){ strbreak(sData,sArray[i],sData,MAX_DATA_LENGTH,MAX_COMMAND_LENGTH,MAX_DATA_LENGTH); } } strcpy(sArray[iKeywords],sData,MAX_COMMAND_LENGTH); iKeywords++; return iKeywords; } load_data(){ new sData[MAX_DATA_LENGTH]; get_vaultdata("BK_PS_STATSME",sData,MAX_DATA_LENGTH); giKeywordsMe=extract_string(sData,gsKeywordsMe); get_vaultdata("BK_PS_STATSRANK",sData,MAX_DATA_LENGTH); giKeywordsRank=extract_string(sData,gsKeywordsRank); get_vaultdata("BK_PS_PREFIX",sData,MAX_DATA_LENGTH); giPrefix=extract_string(sData,gsPrefix); get_vaultdata("BK_PS_URL",gsURL,MAX_DATA_LENGTH); return PLUGIN_CONTINUE; }