/********************************************************************* * ********** ** Sir Drink a lots Playeraward v 2.0 ********* *** ******** **** INFO: Shows the Best Player and the Teamscore ******* ***** in the end of a round.It displays also other best ****** ****** players with the same score in the chat-area. ***** ******* If you are dead, you can say score and it will display **** ******** the best player at the moment. *** ********* Thanks to Warhead,Ramirez, DaRope and the ** ********** www.admin-mod.de forumusers for help and the idea * ********************************************************************/ #include <core> #include <console> #include <string> #include <admin> #include <adminlib> new STRING_VERSION[MAX_DATA_LENGTH] = "2.0"; #define ACCESS_CONSOLE 131072 #define ACCESS_ALL 0 #define CLEAN_SLATE 0 new KillCount[ 100 ] = {CLEAN_SLATE,...}; new SpielerID; new ctscore [MAX_DATA_LENGTH]; new terrscore[MAX_DATA_LENGTH]; public pa_playeraward( HLCommand,HLData,HLUserName,UserIndex ) { new iIDA; new iIDV; new sID1[3]; new sID2[3]; new iUserID; new iWONID; new iTeamA; new iTeamV; new Data[MAX_DATA_LENGTH]; new Victim[MAX_NAME_LENGTH]; new Killer[MAX_NAME_LENGTH]; new loop; convert_string( HLData, Data, MAX_DATA_LENGTH ); strsplit( Data, " ", sID1, 3, sID2, 3 ); iIDA = strtonum( sID1 ); iIDV = strtonum (sID2 ); if(playerinfo(iIDA, Killer, MAX_NAME_LENGTH, iUserID, iWONID, iTeamA)) { if(playerinfo(iIDV, Victim, MAX_NAME_LENGTH, iUserID, iWONID, iTeamV)) { if(iTeamV != iTeamA) { KillCount[ iIDA ] += 1; } else { KillCount[iIDA] -=1; } } } for (loop = 1; loop < maxplayercount();loop++) { if (KillCount[SpielerID]< KillCount[loop]) { SpielerID = strtonum (sID1); } } return PLUGIN_CONTINUE; } public pa_resetthescore(HLCommand,HLData,HLUserName,UserIndex) { new loopx; new Data[MAX_NAME_LENGTH]; convert_string(HLData,Data,MAX_NAME_LENGTH); if(strcmp("Round_Start",Data)!=0) { return PLUGIN_HANDLED; } for( loopx = 0; loopx < MAX_PLAYERS; loopx += 1 ) { KillCount[loopx] = CLEAN_SLATE; } return PLUGIN_CONTINUE; } public pa_showintheend(HLCommand,HLData,HLUserName,UserIndex) { new Params[MAX_DATA_LENGTH]; new Msg[MAX_TEXT_LENGTH]; new Name[MAX_NAME_LENGTH]; new Name1[MAX_NAME_LENGTH]; new Name2[MAX_NAME_LENGTH]; new Name3[MAX_NAME_LENGTH]; new Name4[MAX_NAME_LENGTH]; new Name5[MAX_NAME_LENGTH]; new ct[MAX_DATA_LENGTH]; new terr[MAX_DATA_LENGTH]; new event[MAX_DATA_LENGTH]; new b[MAX_NAME_LENGTH]; new c[MAX_NAME_LENGTH]; new d[MAX_NAME_LENGTH]; new e[MAX_NAME_LENGTH]; new f[MAX_NAME_LENGTH]; new loop; new a; convert_string(HLData,Params,MAX_DATA_LENGTH); new Data1[MAX_DATA_LENGTH]; new Data2[MAX_DATA_LENGTH]; strbreak(Params,Data1,Data2,MAX_DATA_LENGTH); strsplit(Data2, "# " ,event,MAX_DATA_LENGTH,ct,MAX_DATA_LENGTH,ctscore,MAX_DATA_LENGTH,terr,MAX_DATA_LENGTH,terrscore,MAX_DATA_LENGTH); if(strmatch(Data1, "CT", strlen("CT")) || strmatch(Data1, "TERRORIST", strlen("TERRORIST"))) { if(!playerinfo(SpielerID, Name, MAX_DATA_LENGTH)) { return PLUGIN_FAILURE; } for( loop = 1; loop < maxplayercount(); loop++ ) { if (KillCount[SpielerID]== KillCount[loop]) { a++; switch (a) { case 1: { playerinfo(loop, Name1, MAX_NAME_LENGTH); } case 2: { if(!playerinfo(loop, Name2, MAX_NAME_LENGTH)) { break; } else { snprintf(f,MAX_NAME_LENGTH,"with %i kill(s)",KillCount[SpielerID]); snprintf(b,MAX_NAME_LENGTH,"Other Best Players: 2.: %s",Name2); } } case 3: { if(!playerinfo(loop, Name3, MAX_NAME_LENGTH)) { break; } else { snprintf(c,MAX_NAME_LENGTH,"3.: %s",Name3); } } case 4: { if(!playerinfo(loop, Name4, MAX_NAME_LENGTH)) { break; } else { snprintf(d,MAX_NAME_LENGTH,"4.: %s",Name4); } } case 5: { if(!playerinfo(loop, Name5, MAX_NAME_LENGTH)) { break; } else { snprintf(e,MAX_NAME_LENGTH,"5.: %s",Name5); } } } } } a = 0; snprintf( Msg, MAX_TEXT_LENGTH, "Terrorists: %s -- Counters: %s ^nBest Player: %s -- Kills: %i",terrscore,ctscore,Name1,KillCount[SpielerID]); typesay(Msg,12,10,255,255); snprintf(Msg,MAX_TEXT_LENGTH,"%s %s %s %s %s",b,c,d,e,f); say(Msg); } return PLUGIN_HANDLED; } public HandleSay(HLCommand,HLData,HLUserName,UserIndex) { new data[MAX_DATA_LENGTH]; new Name[MAX_NAME_LENGTH]; new Msg [MAX_TEXT_LENGTH]; new IsDead = 0,UserID,WONID,Team; new User[MAX_DATA_LENGTH]; new iUser; convert_string(HLData,data,MAX_DATA_LENGTH); convert_string(HLUserName,User,MAX_DATA_LENGTH); strstripquotes(data); get_userindex( User, iUser ); if(streq(data, "score") ==1) { playerinfo(iUser,Name,MAX_DATA_LENGTH,UserID,WONID,Team,IsDead); if(IsDead == 0) { return PLUGIN_CONTINUE; } else { playerinfo(SpielerID,Name,MAX_DATA_LENGTH); snprintf( Msg, MAX_TEXT_LENGTH, "T: %s -- CT: %s^nBest Player at the moment: %s Kills: %i",terrscore,ctscore,Name,KillCount[SpielerID]); typesay(Msg,12,10,255,255); } } return PLUGIN_CONTINUE; } public plugin_connect(HLUserName,HLIP,UserIndex) { if (UserIndex >= 1 && UserIndex <= MAX_PLAYERS) { KillCount[UserIndex] = CLEAN_SLATE; } return PLUGIN_CONTINUE; } public plugin_disconnect(HLUserName, UserIndex) { if (UserIndex >= 1 && UserIndex <= MAX_PLAYERS) { KillCount[UserIndex] = CLEAN_SLATE; } return PLUGIN_CONTINUE; } public plugin_init() { plugin_registerinfo("Sir Drink a lots Player Award","Announces best player in the round and teamscore.",STRING_VERSION); plugin_registercmd("pa_playeraward", "pa_playeraward", ACCESS_CONSOLE, ""); plugin_registercmd("pa_resetthescore", "pa_resetthescore", ACCESS_CONSOLE, ""); plugin_registercmd("pa_showintheend", "pa_showintheend", ACCESS_CONSOLE, ""); plugin_registercmd("say","HandleSay",ACCESS_ALL); plugin_registerhelp("say",ACCESS_ALL,"say score: Will announce the teamscore and current best player."); exec( "logd_reg 57 admin_command pa_playeraward" ); exec( "logd_reg 62 admin_command pa_resetthescore" ); exec( "logd_reg 61 admin_command pa_showintheend" ); return PLUGIN_CONTINUE; }