Gramatvedis Posted August 28, 2006 Report Share Posted August 28, 2006 /* AMX Mod script. * Server Rules 1.1 * * © 2004, FullThrottle * This file is provided as is (no warranties). * * Used CVARS * sr_display <float> - Length of time to display message * sr_color <string> - Color to display message RGB values * Example for green: 000255000 */ /* Update Log 1.1 - Changed sr_color so now commas are not used between colors and removed xeroblood's code from the project - Added keyword processing to display a message to users when they ask how to display the message. - Changed default rule color to white. - Added the violation menu and the following cvars. sr_warnings <- Max Warnings before action is taken sr_action <- Action to take for violators 0=Warn Only,1=Kick,2=Ban sr_bantime <- Length to ban after max rule violations - Added menu command amx_rulemenu - Uses the AMXX 1.0 Dynamic menu system. Set DYNAMICMENU to 0 if you do not have 1.0 running. 1.0 - Initial release */ #include <amxmodx> #include <amxmisc> #define MAXENTRYCOUNT 10 #define MAXENTRYLENGTH 60 #define MESSAGELENGTH MAXENTRYCOUNT*MAXENTRYLENGTH+20 new DYNAMICMENU = 1 new ENTRY[MAXENTRYCOUNT][MAXENTRYLENGTH] new MESSAGE[MESSAGELENGTH] new DISPLAYCOLOR[3] new ENTRYCOUNT = 0 new WARNINGS[32] = 0 new ACTIONS[3][] = {"Warned","Kicked","Banned"} new Float:TIMERWAIT = 10.0 new DISPLAYTITLE[] = "Server Rules" new RULEMENUTITLE[] = "Rule Violation Menu" new PLUGINVERSION[] = "1.1" new PLUGINNAME[] = "Server Rules" new PLUGINAUTHOR[] = "FullThrottle" new ADDENTRYCMD[] = "amx_addrule" new RULEMENUCMD[] = "amx_rulemenu" new REMOVEENTRYCMD[] = "amx_removerule" new ADMINDISPLAYMESSAGECMD[] = "amx_displayrules" new DISPLAYMESSAGECMD[] = "say /rules" new KEYWORD[] = "rule" new KEYWORDMESSAGE[] = "Type /rules for a list of server rules." new CVARCOLOR[] = "sr_color" new CVARDISPLAY[] = "sr_display" new CVARMAXWARNINGS[] = "sr_warnings" new CVARMAXWARNINGSACTION[] = "sr_action" new CVARBANTIME[] = "sr_bantime" new MENU_POSITION[33] new MENU_PLAYERS[33][32] new MENU_PLAYERSNUM[33] new MENU_OPTION[33] new g_cstrikeRunning public plugin_init() { register_plugin(PLUGINNAME, PLUGINVERSION, PLUGINAUTHOR) register_concmd(ADDENTRYCMD, "addentry", ADMIN_CVAR, "<entry> : Adds a entry") register_concmd(REMOVEENTRYCMD, "removeentry", ADMIN_CVAR, "<id> : Removes a entry") register_concmd(ADMINDISPLAYMESSAGECMD, "displaymessage", ADMIN_KICK, ": Display message to all players") register_clcmd(DISPLAYMESSAGECMD, "displaymessage") register_clcmd("say", "processsay") register_menucmd(register_menuid(RULEMENUTITLE), 1023, "actionMenu") register_clcmd(RULEMENUCMD, "cmdMenu", ADMIN_KICK, ": Display the Rule Violation Menu") register_cvar(CVARDISPLAY, "20.0", 4) register_cvar(CVARCOLOR, "255255255", 4) register_cvar(CVARMAXWARNINGS, "3", 4) register_cvar(CVARMAXWARNINGSACTION, "1", 4) register_cvar(CVARBANTIME, "60", 4) if ( DYNAMICMENU ) AddMenuItem(RULEMENUTITLE, RULEMENUCMD, ADMIN_KICK, PLUGINNAME) } public processsay(id) { new stringsay[192] read_args(stringsay,192) if( (containi(stringsay, KEYWORD) != -1) ) { client_print(id,print_chat, "[%s] %s", DISPLAYTITLE, KEYWORDMESSAGE) } return PLUGIN_CONTINUE } public client_connect(id) WARNINGS[id] = 0 public client_disconnect(id) WARNINGS[id] = 0 public client_putinserver(id) set_task( TIMERWAIT, "displaymessage", id) public addentry(id,level,cid){ if (!cmd_access(id,level,cid,2)) return PLUGIN_HANDLED if (ENTRYCOUNT >= MAXENTRYCOUNT){ console_print(id,"[%s] Entry limit reached. %d active entries.", DISPLAYTITLE, ENTRYCOUNT) return PLUGIN_HANDLED } read_argv(1,ENTRY[ENTRYCOUNT],MAXENTRYLENGTH) console_print(id,"[%s] Entry added: %s", DISPLAYTITLE, ENTRY[ENTRYCOUNT]) ENTRYCOUNT++ return PLUGIN_HANDLED } public removeentry(id,level,cid){ // This code currenty does not work but I will be adding the remove feature soon new nId[2] if (!cmd_access(id,level,cid,2)) return PLUGIN_HANDLED read_argv(1,nId,2) if ( ENTRYCOUNT < str_to_num(nId) ){ console_print( id, "[%s] Entry doesn't exist.", DISPLAYTITLE ) return PLUGIN_HANDLED } console_print( id, "[%s] Entry Removed: %d", DISPLAYTITLE, ENTRY[str_to_num(nId)] ) ENTRYCOUNT-- return PLUGIN_HANDLED } public displaymessage(id) { new sDisplayColor[9] new Float:nDisplayTime = get_cvar_float(CVARDISPLAY) get_cvar_string( CVARCOLOR, sDisplayColor, 9 ) DISPLAYCOLOR[2] = str_to_num(sDisplayColor[6]) sDisplayColor[6] = 0 DISPLAYCOLOR[1] = str_to_num(sDisplayColor[3]) sDisplayColor[3] = 0 DISPLAYCOLOR[0] = str_to_num(sDisplayColor[0]) format( MESSAGE, MESSAGELENGTH, DISPLAYTITLE ) for ( new i=0; i<ENTRYCOUNT; ++i ) { format( MESSAGE, MESSAGELENGTH, "%s^n%d. %s", MESSAGE, i+1, ENTRY ) } set_hudmessage( DISPLAYCOLOR[0], DISPLAYCOLOR[1], DISPLAYCOLOR[2], 0.05, 0.05, 2, 0.01, nDisplayTime, 0.01, 0.1, 4 ) if (!id) { for(new i = 1; i <= get_maxplayers(); ++i) { show_hudmessage( i, "%s", MESSAGE ) } } else { show_hudmessage( id, "%s", MESSAGE ) } return PLUGIN_HANDLED } public displayentry(id, entryid) { new sDisplayColor[9] new Float:nDisplayTime = get_cvar_float(CVARDISPLAY) get_cvar_string( CVARCOLOR, sDisplayColor, 9 ) DISPLAYCOLOR[2] = str_to_num(sDisplayColor[6]) sDisplayColor[6] = 0 DISPLAYCOLOR[1] = str_to_num(sDisplayColor[3]) sDisplayColor[3] = 0 DISPLAYCOLOR[0] = str_to_num(sDisplayColor[0]) format( MESSAGE, MESSAGELENGTH, "[%s] Rule Violation Warning^nYou violated the following rule.^n[ %s ]", DISPLAYTITLE, ENTRY[entryid] ) set_hudmessage( DISPLAYCOLOR[0], DISPLAYCOLOR[1], DISPLAYCOLOR[2], 0.05, 0.05, 2, 0.01, nDisplayTime, 0.01, 0.1, 4 ) show_hudmessage( id, "%s", MESSAGE ) return PLUGIN_HANDLED } public handleViolation(id,player) { WARNINGS[player]++ new authid[32], authid2[32], name[32], name2[32] get_user_authid(id, authid, 31) get_user_authid(player, authid2, 31) get_user_name(id, name, 31) get_user_name(player, name2, 31) new userid2 = get_user_userid(player) new reason[MAXENTRYLENGTH] reason = ENTRY[MENU_OPTION[id]] new nAction = get_cvar_num( CVARMAXWARNINGSACTION ) new nLimit = get_cvar_num( CVARMAXWARNINGS ) new nBanTime = get_cvar_num( CVARBANTIME ) switch(get_cvar_num("amx_show_activity")) { case 2: client_print(0, print_chat, "ADMIN %s: %s %s for: %s", name, (WARNINGS[player] <= nLimit) ? ACTIONS[0] : ACTIONS[nAction], name2, reason ) case 1: client_print(0, print_chat, "ADMIN: %s %s for: %s", (WARNINGS[player] <= nLimit) ? ACTIONS[0] : ACTIONS[nAction], name2, reason ) } if ( WARNINGS[player] <= nLimit ) { displayentry( player, MENU_OPTION[id] ) } else { switch(nAction) { case 1: server_cmd( "kick #%d", userid2 ) case 2: server_cmd( "banid %d #%d kick;writeid", nBanTime, userid2 ) } } return PLUGIN_HANDLED } public actionMenu(id,key) { switch(key){ case 7:{ ++MENU_OPTION[id] MENU_OPTION[id] = (MENU_OPTION[id] >= ENTRYCOUNT) ? 0 : MENU_OPTION[id] displayMenu(id,MENU_POSITION[id]) } case 8: displayMenu(id,++MENU_POSITION[id]) case 9: displayMenu(id,--MENU_POSITION[id]) default:{ new player = MENU_PLAYERS[id][MENU_POSITION[id] * 8 + key] handleViolation(id,player) displayMenu(id,MENU_POSITION[id]) } } return PLUGIN_HANDLED } displayMenu(id,pos){ if (pos < 0) return get_players(MENU_PLAYERS[id],MENU_PLAYERSNUM[id]) new menuBody[512] new b = 0 new i new name[32] new start = pos * 7 if (start >= MENU_PLAYERSNUM[id]) start = pos = MENU_POSITION[id] = 0 new len = format(menuBody,511, g_cstrikeRunning ? "\y%s\R%d/%d^n\w^n" : "%s %d/%d^n^n", RULEMENUTITLE, pos+1,( MENU_PLAYERSNUM[id] / 7 + ((MENU_PLAYERSNUM[id] % 7) ? 1 : 0 )) ) new end = start + 7 new keys = (1<<9)|(1<<7) if (end > MENU_PLAYERSNUM[id]) end = MENU_PLAYERSNUM[id] for(new a = start; a < end; ++a) { i = MENU_PLAYERS[id][a] get_user_name(i,name,31) if ( is_user_bot(i) || (get_user_flags(i)&ADMIN_IMMUNITY) ) { ++b if ( g_cstrikeRunning ) len += format(menuBody[len],511-len,"\d%d. %s^n\w",b,name) else len += format(menuBody[len],511-len,"#. %s^n",name) } else { keys |= (1<< len += format(menuBody[len],511-len,"%d. %s^n",++b,name) } } len += format(menuBody[len],511-len,"^n8. %s" , ENTRY[MENU_OPTION[id]] ) if (end != MENU_PLAYERSNUM[id]) { format(menuBody[len],511-len,"^n9. More...^n0. %s", pos ? "Back" : "Exit") keys |= (1<<8) } else format(menuBody[len],511-len,"^n0. %s", pos ? "Back" : "Exit") show_menu(id,keys,menuBody) } public cmdMenu(id,level,cid) { if (!cmd_access(id,level,cid,1)) return PLUGIN_HANDLED MENU_OPTION[id] = 0 displayMenu(id,MENU_POSITION[id] = 0) return PLUGIN_HANDLED } Kāds varētu pateikt kur man te ir jāiraksta tie noteikumi, lai viņi parādas tam kas iegāja serverī! Link to comment Share on other sites More sharing options...
jerrico Posted August 28, 2006 Report Share Posted August 28, 2006 Kāds varētu pateikt kur man te ir jāiraksta tie noteikumi, lai viņi parādas tam kas iegāja serverī! tavsserveris/cstrike/motd.txt Link to comment Share on other sites More sharing options...
Gramatvedis Posted August 28, 2006 Author Report Share Posted August 28, 2006 nejau šito bet man vajag to kad kāds uzraksta piemēram /rules viņam parādās ar tādiem dzelteniem burtiem servera noteikumi!! Link to comment Share on other sites More sharing options...
jerrico Posted August 28, 2006 Report Share Posted August 28, 2006 izlasi visu kartiigi pirms kachaa pluginu, noteikti ir tajaa lapaa kur kachaaji kaut kas uzraxtiits neteelo zirgu Link to comment Share on other sites More sharing options...
Linc Posted August 28, 2006 Report Share Posted August 28, 2006 palaid un vins cstrike direktorija izveidos rules.txt un tur raksti ko gribi Link to comment Share on other sites More sharing options...
x-tomy91-x Posted August 28, 2006 Report Share Posted August 28, 2006 Sho pluginu neiesaku! Labaak njem Public Server Rules 1.20, amxx.cfg failaa ieraxti: rules_show 1 (ja gribi, lai noteikumus vispār rāda) rules_enable 1 (šim ar jābūt uz 1) rules_interval (intervāls starp rādīšanas reizēm(jānorāda sekundēs)) rules_admin_only 0 (ja gribi, lai speeleetaaji var raxtiit /rules) rules_join 1 (rādīs noteikumus piekonektējoties serverim) rules_hudmessage_time 20 (ilgums sekundēs cik ilgi rādīs noteikumus) rules_join_timeout 10 (ilgums, peec cik ilga laika raadis noteikumus tiem, kas tiko ienaakuši serverii (sekundees)) Link to comment Share on other sites More sharing options...
Gramatvedis Posted August 28, 2006 Author Report Share Posted August 28, 2006 (edited) Ok bet kur man tur pašam ir jāieraksta tie noteikumi?? Edited August 28, 2006 by Gramatvedis Link to comment Share on other sites More sharing options...
jerrico Posted August 28, 2006 Report Share Posted August 28, 2006 palaid un vins cstrike direktorija izveidos rules.txt un tur raksti ko gribi Ok bet kur man tur pašam ir jāieraksta tie noteikumi?? Link to comment Share on other sites More sharing options...
samuray Posted August 28, 2006 Report Share Posted August 28, 2006 es varu to pa 10ls izdariit tava vietaa Link to comment Share on other sites More sharing options...
Recommended Posts