Va rog daca se poate sa-l rezolvat si sa scoateti super cutit.
- | Afiseaza codul
#include <amxmodx> #include <cstrike> #include <fun> #include <hamsandwich> #include <fakemeta> #include <engine> #define NORMAL DontChange #define GREEN DontChange #define TEAM_COLOR DontChange #define RED Red #define BLUE Blue #define GREY Grey #define ColorChat client_print_color #define VERSION "1.0" #define IsPlayer(%1) ( 1 <= %1 <= g_iMaxPlayers ) #define Ham_Player_ResetMaxSpeed Ham_Item_PreFrame #pragma semicolon 1 enum _:Colors { DontChnge, Red, Blue, Grey }; new bool:g_bHasSuperKnife[33]; new bool:g_bHasSuperSpeed[33]; new g_iMaxPlayers; new g_pCvarCostLowGrav, g_pCvarQuantityLowGrav, g_pCvarCostSpeed, g_pCvarQuantitySpeed, g_pCvarQuantityHealthCT, g_pCvarCostHealthCT, g_pCvarCostHE, g_pCvarCostM249, g_pCvarCostG3SG9, g_pCvarCostSmoke, g_pCvarCostFlash, g_pCvarQuantityHealthT1, g_pCvarCostHealthT1, g_pCvarQuantityHealthT2, g_pCvarCostHealthT2, g_pCvarCostInvisinsibilite, g_pCvarTimeInvisinsibilite; public plugin_init() { register_plugin("Base Builder Shop", VERSION, "Kid"); register_clcmd("say /shop", "ShowShop"); register_clcmd("say_team /shop", "ShowShop"); register_clcmd("say shop", "ShowShop"); register_clcmd("say_team shop", "ShowShop"); // Cvars Mixtes g_pCvarCostLowGrav = register_cvar("shopbb_grav", "8000"); g_pCvarQuantityLowGrav = register_cvar("shopbb_quant_grav", "0.150"); g_pCvarCostSpeed = register_cvar("shopbb_speed", "8000"); g_pCvarQuantitySpeed = register_cvar("shopbb_quantity_speed", "400.0"); // Cvars CT g_pCvarQuantityHealthCT = register_cvar("shopbb_vie_ct", "150"); g_pCvarCostHealthCT = register_cvar("shopbb_prix_vie_ct", "5000"); g_pCvarCostHE = register_cvar("shopbb_he", "2500"); g_pCvarCostM249 = register_cvar("shopbb_m249", "8000"); g_pCvarCostG3SG9 = register_cvar("shopbb_g3sg9", "8000"); g_pCvarCostSmoke = register_cvar("shopbb_smoke", "3000"); g_pCvarCostFlash = register_cvar("shopbb_flash", "2500"); // Cvars T g_pCvarQuantityHealthT1 = register_cvar("shopbb_health_t1", "2000"); g_pCvarCostHealthT1 = register_cvar("shopbb_prix_health_t1", "8000"); g_pCvarQuantityHealthT2 = register_cvar("shopbb_health_t2", "5000"); g_pCvarCostHealthT2 = register_cvar("shopbb_prix_health_t2", "16000"); g_pCvarCostInvisinsibilite = register_cvar("shopbb_invins", "10000"); g_pCvarTimeInvisinsibilite = register_cvar("shopbb_time_invins", "5.0"); RegisterHam(Ham_Spawn, "player", "Player_Spawn_Post", 1); RegisterHam(Ham_TakeDamage, "player", "ham_TakeDamage_Pre"); RegisterHam(Ham_Item_Deploy, "weapon_knife", "ham_ItemDeploy_Post", 1); RegisterHam(Ham_Player_ResetMaxSpeed, "player", "Player_ResetMaxSpeed", 1); g_iMaxPlayers = get_maxplayers(); } public client_putinserver( id ) { g_bHasSuperKnife[id] = false; g_bHasSuperSpeed[id] = false; } public ShowShop(id) { if ( is_user_alive(id) ) { new Text[64]; if(cs_get_user_team(id) == CS_TEAM_T) { new menu1 = menu_create("\y[\rZombie Shop\y]", "ZombieShop"); formatex(Text, charsmax(Text), "\wViteza \y[\r%d $\y]", get_pcvar_num(g_pCvarCostSpeed)); menu_additem(menu1, Text, "0"); formatex(Text, charsmax(Text), "\wGravitate \y[\r%d $\y]", get_pcvar_num(g_pCvarCostLowGrav)); menu_additem(menu1, Text, "1"); formatex(Text, charsmax(Text), "\w+%d HP \y[\r%d $\y]", get_pcvar_num(g_pCvarQuantityHealthT1), get_pcvar_num(g_pCvarCostHealthT1)); menu_additem(menu1, Text, "3"); formatex(Text, charsmax(Text), "\w+%d HP \y[\r%d $\y]", get_pcvar_num(g_pCvarQuantityHealthT2), get_pcvar_num(g_pCvarCostHealthT2)); menu_additem(menu1, Text, "4"); formatex(Text, charsmax(Text), "\wInvincibilitate \y[\r%d $\y]", get_pcvar_num(g_pCvarCostInvisinsibilite)); menu_additem(menu1, Text, "5"); menu_setprop(menu1, MPROP_EXITNAME, "Iesire"); menu_display(id, menu1); } else if(cs_get_user_team(id) == CS_TEAM_CT) { new menu2 = menu_create ("\y[\rBase Builder Shop\y]", "BaseBuilderShop"); formatex(Text, charsmax(Text), "\wViteza \y[\r%d $\y]", get_pcvar_num(g_pCvarCostSpeed)); menu_additem(menu2, Text, "1"); formatex(Text, charsmax(Text), "\wGravitate \y[\r%d $\y]", get_pcvar_num(g_pCvarCostLowGrav)); menu_additem(menu2, Text, "2"); formatex(Text, charsmax(Text), "\w+%d HP \y[\r%d $\y]", get_pcvar_num(g_pCvarQuantityHealthCT), get_pcvar_num(g_pCvarCostHealthCT)); menu_additem(menu2, Text, "3"); formatex(Text, charsmax(Text), "\wGrenada \y[\r%d $\y]", get_pcvar_num(g_pCvarCostHE)); menu_additem(menu2, Text, "4"); formatex(Text, charsmax(Text), "\wM249 \y[\r%d $\y]", get_pcvar_num(g_pCvarCostM249)); menu_additem(menu2, Text, "5"); formatex(Text, charsmax(Text), "\wG3SG9 \y[\r%d $\y]", get_pcvar_num(g_pCvarCostG3SG9)); menu_additem(menu2, Text, "6"); formatex(Text, charsmax(Text), "\wSmoke \y[\r%d $\y]", get_pcvar_num(g_pCvarCostSmoke)); menu_additem(menu2, Text, "7"); formatex(Text, charsmax(Text), "\wFlash \y[\r%d $\y]", get_pcvar_num(g_pCvarCostFlash)); menu_additem(menu2, Text, "8"); menu_addblank(menu2, 0); menu_additem(menu2, "Iesire", "9"); menu_setprop(menu2, MPROP_PERPAGE, 0); menu_display(id, menu2); } } } public ZombieShop(id, menu1, item) { if (item == MENU_EXIT || !is_user_alive(id) || cs_get_user_team(id) != CS_TEAM_T) { menu_destroy(menu1); return PLUGIN_HANDLED; } new iMoney = cs_get_user_money(id); switch(item) { case 0: { if ( iMoney >= get_pcvar_num(g_pCvarCostSpeed)) { cs_set_user_money(id, iMoney - get_pcvar_num(g_pCvarCostSpeed)); g_bHasSuperSpeed[id] = true; set_user_maxspeed(id, get_pcvar_float(g_pCvarQuantitySpeed)); client_print_color(id, DontChange, "^4%s ^1Ai cumparat ^3Super Speed^1!", g_prefix); } else { client_print_color(id, DontChange, "^4%s ^1Nu ai destui ^3bani^1!", g_prefix); } } case 1: { if ( iMoney >= get_pcvar_num(g_pCvarCostLowGrav)) { cs_set_user_money(id, iMoney - get_pcvar_num(g_pCvarCostLowGrav)); set_user_gravity(id, get_pcvar_float(g_pCvarQuantityLowGrav)); client_print_color(id, DontChange, "^4%s ^1Ai cumparat ^3Low Gravity^1!", g_prefix); } else { client_print_color(id, DontChange, "^4%s ^1Nu ai destui ^3bani^1!", g_prefix); } } case 2: { if ( iMoney >= get_pcvar_num(g_pCvarCostHealthT1)) { cs_set_user_money(id, iMoney - get_pcvar_num(g_pCvarCostHealthT1)); set_user_health(id, get_user_health(id) + get_pcvar_num(g_pCvarQuantityHealthT1)); client_print_color(id, DontChange, "^4%s ^1Ai cumparat ^3%d HP^1!", g_prefix, get_pcvar_num(g_pCvarQuantityHealthT1)); } else { client_print_color(id, DontChange, "^4%s ^1Nu ai destui ^3bani^1!", g_prefix); } } case 3: { if ( iMoney >= get_pcvar_num(g_pCvarCostHealthT2)) { cs_set_user_money(id, iMoney - get_pcvar_num(g_pCvarCostHealthT2)); set_user_health(id, get_user_health(id) + get_pcvar_num(g_pCvarQuantityHealthT2)); client_print_color(id, DontChange, "^4%s ^1Ai cumparat ^3%d HP^1!", g_prefix, get_pcvar_num(g_pCvarQuantityHealthT2)); } else { client_print_color(id, DontChange, "^4%s ^1Nu ai destui bani^3bani^1!", g_prefix); } } case 4: { if ( iMoney >= get_pcvar_num(g_pCvarCostInvisinsibilite)) { cs_set_user_money(id, cs_get_user_money(id) - get_pcvar_num(g_pCvarCostInvisinsibilite)); set_user_godmode(id, 1); set_task(0.0 + get_pcvar_float(g_pCvarTimeInvisinsibilite), "RemoveGodMode", 1); client_print_color(id, DontChange, "^4%s ^1Ai devenit ^3invincibil1 pentru^3 cateva secunde^1!", g_prefix); } else { client_print_color(id, DontChange, "^4%s ^1Nu ai destui ^3bani^1!", g_prefix); } } } menu_destroy(menu1); return PLUGIN_HANDLED; } public RemoveGodMode(id) { set_user_godmode(id, 0); client_print_color(id, DontChange, "^4%s ^1Nu mai este invincibil!", g_prefix); } public BaseBuilderShop(id, menu2, item) { if (item == 10 || !is_user_alive(id) || cs_get_user_team(id) != CS_TEAM_CT) { menu_destroy(menu2); return PLUGIN_HANDLED; } new iMoney = cs_get_user_money(id); switch(item+1) { case 1: { if ( iMoney >= get_pcvar_num(g_pCvarCostSpeed)) { cs_set_user_money(id, iMoney - get_pcvar_num(g_pCvarCostSpeed)); g_bHasSuperSpeed[id] = true; set_user_maxspeed(id, get_pcvar_float(g_pCvarQuantitySpeed)); client_print_color(id, DontChange, "^4%s ^1Ai cumparat ^3Super Speed^1!", g_prefix); } else { client_print_color(id, DontChange, "^4%s ^1Nu ai destui ^3bani^1!", g_prefix); } } case 2: { if ( iMoney >= get_pcvar_num(g_pCvarCostLowGrav)) { cs_set_user_money(id, iMoney - get_pcvar_num(g_pCvarCostLowGrav)); set_user_gravity(id, get_pcvar_float(g_pCvarQuantityLowGrav)); client_print_color(id, DontChange, "^4%s ^1Ai cumparat ^3Low Gravity^1!", g_prefix); } else { client_print_color(id, DontChange, "^4%s ^1Nu ai destui ^3bani^1!", g_prefix); } } case 3: { if ( iMoney >= get_pcvar_num(g_pCvarCostHealthCT)) { cs_set_user_money(id, iMoney - get_pcvar_num(g_pCvarCostHealthCT)); set_user_health(id, get_user_health(id) + get_pcvar_num(g_pCvarQuantityHealthCT)); client_print_color(id, DontChange, "^4%s ^1Tu viens d'acheter ^3%d HP^1!", g_prefix, get_pcvar_num(g_pCvarQuantityHealthCT)); } else { client_print_color(id, DontChange, "^4%s ^1Nu ai destui ^3bani^1!", g_prefix); } } case 4: { if ( iMoney >= get_pcvar_num(g_pCvarCostHE)) { cs_set_user_money(id, iMoney - get_pcvar_num(g_pCvarCostHE)); give_item(id, "weapon_hegrenade"); client_print_color(id, DontChange, "^4%s ^1Ai cumparat un ^3HE^1!", g_prefix); } else { client_print_color(id, DontChange, "^4%s ^1Nu ai destui ^3bani^1!", g_prefix); } } case 5: { if ( iMoney >= get_pcvar_num(g_pCvarCostM249)) { cs_set_user_money(id, iMoney - get_pcvar_num(g_pCvarCostM249)); give_item(id, "weapon_m249"); cs_set_user_bpammo(id, CSW_M249, 200); client_print_color(id, DontChange, "^4%s ^1Ai cumparat un ^3M249^1!", g_prefix); } else { client_print_color(id, DontChange, "^4%s ^1Nu ai destui ^3bani^1!", g_prefix); } } case 6: { if ( iMoney >= get_pcvar_num(g_pCvarCostG3SG9)) { cs_set_user_money(id, iMoney - get_pcvar_num(g_pCvarCostG3SG9)); give_item(id, "weapon_g3sg1"); cs_set_user_bpammo(id, CSW_G3SG1, 90); client_print_color(id, DontChange, "^4%s ^1Ai cumparat un ^3G3SG1^1!", g_prefix); } else { client_print_color(id, DontChange, "^4%s ^1Nu ai destui ^3bani^1!", g_prefix); } } case 7: { if ( iMoney >= get_pcvar_num(g_pCvarCostSmoke)) { cs_set_user_money(id, iMoney - get_pcvar_num(g_pCvarCostSmoke)); give_item(id, "weapon_smokegrenade"); client_print_color(id, DontChange, "^4%s ^1Ai cumparat o ^3grenada Smoke^1!", g_prefix); } else { client_print_color(id, DontChange, "^4%s ^1Nu ai destui ^3bani^1!", g_prefix); } } case 8: { if ( iMoney >= get_pcvar_num(g_pCvarCostFlash)) { cs_set_user_money(id, iMoney - get_pcvar_num(g_pCvarCostFlash)); give_item(id, "weapon_flashbang"); client_print_color(id, DontChange, "^4%s ^1Ai cumparat o ^3grenada Flash^1!", g_prefix); } else { client_print_color(id, DontChange, "^4%s ^1Nu ai destui ^3bani^1!", g_prefix); } } } menu_destroy(menu2); return PLUGIN_HANDLED; } public Player_Spawn_Post( id ) { if(is_user_alive(id)) { client_print(id, print_chat, "Scrie /shop pentru a cumpara un item!"); g_bHasSuperKnife[id] = false; g_bHasSuperSpeed[id] = false; } } public client_disconnect(id) { g_bHasSuperKnife[id] = false; g_bHasSuperSpeed[id] = false; } public plugin_precache() { precache_model(g_ModelSuperKnife); } public ham_TakeDamage_Pre(victim, inflictor, attacker, Float:damage, damage_bits) { if ( IsPlayer(attacker) && g_bHasSuperKnife[attacker] && is_user_alive(attacker) && inflictor == attacker && get_user_weapon(attacker) == CSW_KNIFE ) { SetHamParamFloat( 4, damage * 77 ); } } public ham_ItemDeploy_Post(weapon_ent) { static owner; owner = get_pdata_cbase(weapon_ent, 41, 4); if(is_user_alive(owner) && g_bHasSuperKnife[owner]) { set_pev(owner, pev_viewmodel2, g_ModelSuperKnife); } } public Player_ResetMaxSpeed(id) { if( is_user_alive(id) && get_user_maxspeed(id) != -1.0 && g_bHasSuperSpeed[id]) { set_user_maxspeed(id, get_pcvar_float(g_pCvarQuantitySpeed)); } } stock const g_szTeamName[Colors][] = { "UNASSIGNED", "TERRORIST", "CT", "SPECTATOR" }; stock client_print_color(id, iColor=DontChange, const szMsg[], any:...) { // check if id is different from 0 if( id && !is_user_connected(id) ) { return 0; } if( iColor > Grey ) { iColor = DontChange; } new szMessage[192]; if( iColor == DontChange ) { szMessage[0] = 0x04; } else { szMessage[0] = 0x03; } new iParams = numargs(); // Specific player code if(id) { if( iParams == 3 ) { copy(szMessage[1], charsmax(szMessage)-1, szMsg); } else { vformat(szMessage[1], charsmax(szMessage)-1, szMsg, 4); } if( iColor ) { new szTeam[11]; // store current team so we can restore it get_user_team(id, szTeam, charsmax(szTeam)); // set id TeamInfo in consequence // so SayText msg gonna show the right color Send_TeamInfo(id, id, g_szTeamName[iColor]); // Send the message Send_SayText(id, id, szMessage); // restore TeamInfo Send_TeamInfo(id, id, szTeam); } else { Send_SayText(id, id, szMessage); } } // Send message to all players else { // Figure out if at least 1 player is connected // so we don't send useless message if not // and we gonna use that player as team reference (aka SayText message sender) for color change new iPlayers[32], iNum; get_players(iPlayers, iNum, "ch"); if( !iNum ) { return 0; } new iFool = iPlayers[0]; new iMlNumber, i, j; new Array:aStoreML = ArrayCreate(); if( iParams >= 5 ) // ML can be used { for(j=4; j<iParams; j++) { // retrieve original param value and check if it's LANG_PLAYER value if( getarg(j) == LANG_PLAYER ) { i=0; // as LANG_PLAYER == -1, check if next parm string is a registered language translation while( ( szMessage[ i ] = getarg( j + 1, i++ ) ) ) {} if( GetLangTransKey(szMessage) != TransKey_Bad ) { // Store that arg as LANG_PLAYER so we can alter it later ArrayPushCell(aStoreML, j++); // Update ML array saire so we'll know 1st if ML is used, // 2nd how many args we have to alterate iMlNumber++; } } } } // If arraysize == 0, ML is not used // we can only send 1 MSG_BROADCAST message if( !iMlNumber ) { if( iParams == 3 ) { copy(szMessage[1], charsmax(szMessage)-1, szMsg); } else { vformat(szMessage[1], charsmax(szMessage)-1, szMsg, 4); } if( iColor ) { new szTeam[11]; get_user_team(iFool, szTeam, charsmax(szTeam)); Send_TeamInfo(0, iFool, g_szTeamName[iColor]); Send_SayText(0, iFool, szMessage); Send_TeamInfo(0, iFool, szTeam); } else { Send_SayText(0, iFool, szMessage); } } // ML is used, we need to loop through all players, // format text and send a MSG_ONE_UNRELIABLE SayText message else { new szTeam[11], szFakeTeam[10]; if( iColor ) { get_user_team(iFool, szTeam, charsmax(szTeam)); copy(szFakeTeam, charsmax(szFakeTeam), g_szTeamName[iColor]); } for( i = 0; i < iNum; i++ ) { id = iPlayers; for(j=0; j<iMlNumber; j++) { // Set all LANG_PLAYER args to player index ( = id ) // so we can format the text for that specific player setarg(ArrayGetCell(aStoreML, j), _, id); } // format string for specific player vformat(szMessage[1], charsmax(szMessage)-1, szMsg, 4); if( iColor ) { Send_TeamInfo(id, iFool, szFakeTeam); Send_SayText(id, iFool, szMessage); Send_TeamInfo(id, iFool, szTeam); } else { Send_SayText(id, iFool, szMessage); } } ArrayDestroy(aStoreML); } } return 1; } stock Send_TeamInfo(iReceiver, iPlayerId, szTeam[]) { static iTeamInfo = 0; if( !iTeamInfo ) { iTeamInfo = get_user_msgid("TeamInfo"); } message_begin(iReceiver ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, iTeamInfo, .player=iReceiver); write_byte(iPlayerId); write_string(szTeam); message_end(); } stock Send_SayText(iReceiver, iPlayerId, szMessage[]) { static iSayText = 0; if( !iSayText ) { iSayText = get_user_msgid("SayText"); } message_begin(iReceiver ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, iSayText, .player=iReceiver); write_byte(iPlayerId); write_string(szMessage); message_end(); } stock register_dictionary_colored(const filename[]) { if( !register_dictionary(filename) ) { return 0; } new szFileName[256]; get_localinfo("amxx_datadir", szFileName, charsmax(szFileName)); format(szFileName, charsmax(szFileName), "%s/lang/%s", szFileName, filename); new fp = fopen(szFileName, "rt"); if( !fp ) { log_amx("Failed to open %s", szFileName); return 0; } new szBuffer[512], szLang[3], szKey[64], szTranslation[256], TransKey:iKey; while( !feof(fp) ) { fgets(fp, szBuffer, charsmax(szBuffer)); trim(szBuffer); if( szBuffer[0] == '[' ) { strtok(szBuffer[1], szLang, charsmax(szLang), szBuffer, 1, ']'); } else if( szBuffer[0] ) { strbreak(szBuffer, szKey, charsmax(szKey), szTranslation, charsmax(szTranslation)); iKey = GetLangTransKey(szKey); if( iKey != TransKey_Bad ) { while( replace(szTranslation, charsmax(szTranslation), "!g", "^4") ){} while( replace(szTranslation, charsmax(szTranslation), "!t", "^3") ){} while( replace(szTranslation, charsmax(szTranslation), "!n", "^1") ){} AddTranslation(szLang, iKey, szTranslation[2]); } } } fclose(fp); return 1; }