dzięki
SHOP SMA
Spoiler
#include <amxmodx> #include <cstrike> #include <fun> #include <hamsandwich> #include <fakemeta> #include <fakemeta_util> #include <engine> #include <amxmisc> #define PLUGINNAME "Neonese's Furien Shop edited by FarGoo" #define VERSION "1.0" #define AUTHOR "Neones" #define HP_ADD 2 // Ile hp ma dodawać. #define HP_TIME 10 //Co ile sekund ma dodawać hp. #define HP_MAX 100 //Jakie jest maksymalne hp na serwerze. #define XTRA_OFS_PLAYER 5 #define m_Activity 73 #define m_IdealActivity 74 #define m_flNextAttack 83 #define m_afButtonPressed 246 #define PLAYER_JUMP 6 #define ACT_HOP 7 //#define FBitSet(%1,%2) (%1 & %2) new g_iMaxPlayers #define IsPlayer(%1) ( FIRST_PLAYER_ID <= %1 <= g_iMaxPlayers ) #define IsHidden(%1) IsPlayer(%1) #define KNIFE_DRAW 3 new g_bHasWallHang #define SetUserWallHang(%1) g_bHasWallHang |= 1<<(%1&31) #define RemoveUserWallHang(%1) g_bHasWallHang &= ~(1<<(%1&31)) #define HasUserWallHang(%1) g_bHasWallHang & 1<<(%1&31) new g_bHanged #define SetUserHanged(%1) g_bHanged |= 1<<(%1&31) #define RemoveUserHanged(%1) g_bHanged &= ~(1<<(%1&31)) #define IsUserHanged(%1) g_bHanged & 1<<(%1&31) new Float:g_fVecMins[MAX_PLAYERS+1][3] new Float:g_fVecMaxs[MAX_PLAYERS+1][3] new Float:g_fVecOrigin[MAX_PLAYERS+1][3] new VIEW_MODELT[] = "models/v_knife_green.mdl" new PLAYER_MODELT[] = "models/p_knife_green.mdl" new bool:caughtJump[33] new bool:doJump[33] new Float:jumpVeloc[33][3] new newButton[33] new numJumps[33] new wallteam new CSW_MAXAMMO[33]= {-2, 52, 0, 90, 1, 32, 1, 100, 90, 1, 120, 100, 100, 90, 90, 90, 100, 120, 30, 120, 200, 32, 90, 120, 90, 2, 35, 90, 90, 0, 100, -1, -1} new cvar_enable new Obchod = 1 new g_MaxClients new g_iMsgSayText new Defuse[33] = 0 new defusecost = 25 new SuperKnife[33] = 0 new KnifeCost = 90 new RychlyBeh[33] = 0 new speedcost = 50 new flashcost = 70 new hpmax = 150 new hpbuy = 50 new hpcost = 25 new hecost = 45 new bnoflash[33] /*******************COSTY******************************/ new costnoflash = 70 new costwaljump = 70 new wallclimb[33] new costunlimitedammo = 70 new nolimit[33] new costregeneracja = 70 new regeneracja[33] public plugin_init() { register_plugin(PLUGINNAME, VERSION, AUTHOR) register_clcmd( "say /shop","itemy_menu") register_clcmd( "say shop","itemy_menu") register_logevent("round_end", 2, "1=Round_End") register_event("CurWeapon", "event_curweapon", "be", "1=1") register_cvar("walljump_str","300.0") register_cvar("walljump_num","2") cvar_enable= register_cvar("ne_uammo_enable", "1") register_message(get_user_msgid("ScreenFade"), "messageScreenFade"); RegisterHam(Ham_Spawn, "player", "Fwd_PlayerSpawn_Post", 1) RegisterHam(Ham_TakeDamage, "player", "FwdPlayerTakeDamage", false) RegisterHam(Ham_Killed, "player", "fw_player_killed") RegisterHam(Ham_Player_PreThink,"player","fw_prethink") RegisterHam(Ham_Touch, "func_wall", "World_Touch") RegisterHam(Ham_Player_Jump, "player", "Player_Jump") RegisterHam(Ham_Touch, "func_wall", "World_Touch") RegisterHam(Ham_Touch, "func_breakable", "World_Touch") g_iMsgSayText = get_user_msgid("SayText") g_MaxClients = get_maxplayers() g_iMaxPlayers = get_maxplayers() } public plugin_precache() { precache_model("models/v_knife_green.mdl") precache_model("models/p_knife_green.mdl") } public Fwd_PlayerSpawn_Post(id) { give_item(id, "weapon_knife") if (is_user_alive(id)) { Obchod = 1 set_user_armor(id, 0) Defuse[id] = 0 RychlyBeh[id] = 0 nolimit[id] = 0 regeneracja[id]=0 wallclimb[id] = 0 bnoflash[id] = 0 itemy_menu(id) if(cs_get_user_team(id) == CS_TEAM_T){ cs_set_user_model(id, "leet") } else { cs_set_user_model(id, "gign") } } } public round_end() { for(new i = 1; i <= g_MaxClients; i++) { if(is_user_connected(i)) { show_menu(i, 0, "\n", 1) Obchod = 0 strip_user_weapons(i) give_item(i, "weapon_knife") } } } public itemy_menu(id) { if(Obchod) { if(is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT) { set_task(0.01,"VybavaCT",id) } if(is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_T) { set_task(0.01,"VybavaT",id) } } } public VybavaCT(id) { new menu = menu_create("\yObchod \w( \r/shop\w )", "ct_handler") menu_additem(menu, "+50 HP", "1", 0) menu_additem(menu, "Defuse kit", "2", 0) menu_additem(menu, "Flash Grenade ", "3", 0) menu_additem(menu, "No-Flash", "4", 0) menu_additem(menu, "Rychly beh", "5", 0) menu_additem(menu, "Nekonecko naboju", "6", 0) menu_additem(menu, "Furien Radar [10sek.]", "7", 0) menu_additem(menu, "Health Regen [10\rHP\w/2sek.]", "8", 0) menu_setprop(menu, MPROP_EXIT, MEXIT_ALL); menu_display(id, menu, 0); } public ct_handler(id, menu, item) { if( item == MENU_EXIT ) { menu_destroy(menu); return PLUGIN_HANDLED; } new data[2], iName[64]; new access, callback; menu_item_getinfo(menu, item, access, data,5, iName, 63, callback); new money = cs_get_user_money(id) new key = str_to_num(data) switch(key) { case 1: { if(money >= hpcost) { new heal = get_user_health(id) if(heal>= hpmax){ ChatColor(id, "!team[ Furien ] !gNemuzis mit vic jak 150 HP") set_user_health(id, 150) } else { VybavaCT(id) ChatColor(id, "!team[ Furien ] !yKoupil si 50 HP zivota") cs_set_user_money(id, money - hpcost) set_user_health(id, get_user_health(id) + hpbuy) } }else{ client_print(id, print_center, "Nemas dostatek penez") } } case 2: { if(money >= defusecost) { if(!Defuse[id]){ Defuse[id] = 1 cs_set_user_money(id, money - defusecost) cs_set_user_defuse(id, 1) ChatColor(id, "!team[ Furien ] !yKoupil si Defusni balik") } } else { client_print(id, print_center, "Nemas dostatek penez") } } case 3: { if(money >= flashcost) { give_item(id, "weapon_flashbang") VybavaT(id) ChatColor(id, "!team[ Furien ] !yKoupil si HE granat") cs_set_user_money(id, money - flashcost) }else{ client_print(id, print_center, "Nemas dostatek penez") } } case 4: { if(money >= costnoflash) { cs_set_user_money(id, money - costnoflash) ChatColor(id, "!team[ Furien ] !yKoupil si NOFLASH") bnoflash[id]=1 } else { client_print(id, print_center, "neoslepli po wyrzucony FLASH") } } case 5: { if(money >= speedcost) { if(!RychlyBeh[id]){ RychlyBeh[id] = 1 set_user_maxspeed(id, 350.0) cs_set_user_money(id, money - speedcost) ChatColor(id, "!team[ Furien ] !yKoupil si Rychly beh") } } else { client_print(id, print_center, "Nemas dostatek penez") } } case 6: { if(money >= costunlimitedammo) { if (is_user_connected(id)) nolimit[id] = 1 cs_set_user_money(id, money - costunlimitedammo) ChatColor(id, "!team[ Furien ] !yKoupil si Unlimited ammo") } else { client_print(id, print_center, "CT bedzie infinity municiji") } } case 7: { if(money >= costnoflash) { cs_set_user_money(id, money - costnoflash) ChatColor(id, "!team[ Furien ] !yKoupil si NOFLASH") bnoflash[id]=1 } else { client_print(id, print_center, "neoslepli po wyrzucony FLASH") } } case 8: { if(money >= costregeneracja) { cs_set_user_money(id, money - costregeneracja) ChatColor(id, "!team[ Furien ] !yKoupil si Rychly beh") set_task(float(HP_TIME), "recovery", id, _, _, "b"); } else { client_print(id, print_center, "Zdrowie bedzie ladowac 10HP co 2 sekundy ") } } } menu_destroy(menu); return PLUGIN_HANDLED; } /*****************************************************************************************************/ public VybavaT(id) { new menu = menu_create("\yObchod \w( \r/shop\w )", "t_handler") menu_additem(menu, "Super knife", "1", 0) menu_additem(menu, "He Grenade", "2", 0) menu_additem(menu, "Flash Grenade ", "3", 0) menu_additem(menu, "+50 HP", "4", 0) menu_additem(menu, "No-Flash", "5", 0) menu_additem(menu, "Wallhang", "6", 0) menu_additem(menu, "Health Regen [10\rHP\w/2sek.]", "7", 0) menu_setprop(menu, MPROP_EXIT, MEXIT_ALL); menu_display(id, menu, 0); } public t_handler(id, menu, item) { if( item == MENU_EXIT ) { menu_destroy(menu); return PLUGIN_HANDLED; } new data[2], iName[64]; new access, callback; menu_item_getinfo(menu, item, access, data,5, iName, 63, callback); new money = cs_get_user_money(id) new key = str_to_num(data) switch(key) { case 1: { if(money >= KnifeCost) { if(!SuperKnife[id]) { ChatColor(id, "!team[ Furien ] !yKoupil si Super Knife") cs_set_user_money(id, money - KnifeCost) SuperKnife[id] = 1 set_pev(id, pev_viewmodel2, VIEW_MODELT) set_pev(id, pev_weaponmodel2, PLAYER_MODELT) } } else { client_print(id, print_center, "Nemas dostatek penez") } } case 2: { if(money >= hecost) { give_item(id, "weapon_hegrenade") VybavaT(id) ChatColor(id, "!team[ Furien ] !yKoupil si HE granat") cs_set_user_money(id, money - hpcost) }else{ client_print(id, print_center, "Nemas dostatek penez") } } case 3: { if(money >= flashcost) { give_item(id, "weapon_flashgrenade") VybavaT(id) ChatColor(id, "!team[ Furien ] !yKoupil si Flash granat") cs_set_user_money(id, money - flashcost) }else{ client_print(id, print_center, "Nemas dostatek penez") } } case 4: { if(money >= hpcost) { new heal = get_user_health(id) if(heal>= hpmax){ ChatColor(id, "!team[ Furien ] !gNemuzis mit vic jak 150 HP") set_user_health(id, 150) } else { VybavaCT(id) ChatColor(id, "!team[ Furien ] !yKoupil si 50 HP zivota") cs_set_user_money(id, money - hpcost) set_user_health(id, get_user_health(id) + hpbuy) } }else{ client_print(id, print_center, "Nemas dostatek penez") } } case 5: { if(money >= costnoflash) { cs_set_user_money(id, money - costnoflash) ChatColor(id, "!team[ Furien ] !yKoupil si NOFLASH") bnoflash[id]=1 } else { client_print(id, print_center, "neoslepli po wyrzucony FLASH") } } case 6: { if(money >= costwaljump) { cs_set_user_money(id, money - costwaljump) ChatColor(id, "!team[ Furien ] !yKoupil si Waljump") wallclimb[id] = 1 } else { client_print(id, print_center, "przyklejanie sie do sciany") } } case 7: { if(money >= costregeneracja) { cs_set_user_money(id, money - costregeneracja) ChatColor(id, "!team[ Furien ] !yKoupil si Health Regen ") set_task(float(HP_TIME), "recovery", id, _, _, "b"); } else { client_print(id, print_center, "Zdrowie bedzie ladowac 10HP co 2 sekundy") } } } menu_destroy(menu); return PLUGIN_HANDLED; } public fw_prethink(id) { if(is_user_alive(id) && is_user_connected(id) && !is_user_bot(id)) { new health = get_user_health(id) if(health > hpmax) { set_user_health(id, 150) } } return HAM_IGNORED } public Event_Change_Weapon(id) { new weaponID = read_data(2) if(RychlyBeh[id]) { set_user_maxspeed(id, 500.0) } { set_user_maxspeed(id, 250.0) } if(weaponID == CSW_KNIFE) { if(SuperKnife[id]) { set_pev(id, pev_viewmodel2, VIEW_MODELT) set_pev(id, pev_weaponmodel2, PLAYER_MODELT) } } return PLUGIN_CONTINUE } public FwdPlayerTakeDamage(id, iInflictor, iAttacker, Float:flDamage, iBits) { if( !(iBits & DMG_FALL) ) { if( 1 <= iAttacker <= g_MaxClients ) { if( id != iAttacker ) { if( get_user_weapon(iAttacker) == CSW_KNIFE && SuperKnife[iAttacker] && cs_get_user_team(iAttacker) == CS_TEAM_T) { SetHamParamFloat(4, (flDamage * 3)); } } } } } public fw_player_killed(victim, attacker, shouldgib) { if(SuperKnife[victim] && cs_get_user_team(victim) == CS_TEAM_T) { SuperKnife[victim] = 0 ChatColor(victim, "!team[ Furien ] !yTvuj super knife se znicil, protoze si byl zabiti.") } } /*============================================================ Public bots etc. ============================================================*/ public messageScreenFade(msgtype, msgid, id){ if(bnoflash[id]==1) return PLUGIN_HANDLED; return PLUGIN_CONTINUE; } public recovery(id) { if ( get_user_health(id) < HP_MAX ) fm_set_user_health(id, get_user_health(id) +HP_ADD); } public event_curweapon(id) { //Check if the plugin is enabled and player is alive if(!get_pcvar_num(cvar_enable) || !is_user_alive(id)) return PLUGIN_CONTINUE; //Get and check weapon ID new weaponID= read_data(2) if(weaponID==CSW_C4 || weaponID==CSW_KNIFE || weaponID==CSW_HEGRENADE || weaponID==CSW_SMOKEGRENADE || weaponID==CSW_FLASHBANG) return PLUGIN_CONTINUE; if(cs_get_user_bpammo(id, weaponID)!=CSW_MAXAMMO[weaponID]) cs_set_user_bpammo(id, weaponID, CSW_MAXAMMO[weaponID]) return PLUGIN_CONTINUE; } public Player_Jump(id) { if( || ~HasUserWallHang(id) || ~IsUserHanged(id) || !is_user_alive(id) ) { return HAM_IGNORED } if( (pev(id, pev_flags) & FL_WATERJUMP) || pev(id, pev_waterlevel) >= 2 ) { return HAM_IGNORED } static afButtonPressed ; afButtonPressed = get_pdata_int(id, m_afButtonPressed) if( ~afButtonPressed & IN_JUMP ) { return HAM_IGNORED } RemoveUserHanged(id) new Float:fVecVelocity[3] velocity_by_aim(id, 600, fVecVelocity) set_pev(id, pev_velocity, fVecVelocity) set_pdata_int(id, m_Activity, ACT_HOP) set_pdata_int(id, m_IdealActivity, ACT_HOP) set_pev(id, pev_gaitsequence, PLAYER_JUMP) set_pev(id, pev_frame, 0.0) set_pdata_int(id, m_afButtonPressed, afButtonPressed & ~IN_JUMP) return HAM_SUPERCEDE } public client_PostThink(id) { if( HasUserWallHang(id) && IsUserHanged(id) ) { engfunc(EngFunc_SetSize, id, g_fVecMins[ id ], g_fVecMaxs[ id ]) engfunc(EngFunc_SetOrigin, id, g_fVecOrigin[ id ]) set_pev(id, pev_velocity, 0) set_pdata_float(id, m_flNextAttack, 1.0, XTRA_OFS_PLAYER) } } public World_Touch(iEnt, id) { if( !g_bRoundEnd && IsPlayer(id) && HasUserWallHang(id) && ~IsUserHanged(id) && is_user_alive(id) && pev(id, pev_button) & IN_USE && ~pev(id, pev_flags) & FL_ONGROUND ) { SetUserHanged(id) pev(id, pev_mins, g_fVecMins[id]) pev(id, pev_maxs, g_fVecMaxs[id]) pev(id, pev_origin, g_fVecOrigin[id]) } } /*============================================================ Stocks ============================================================*/ stock ChatColor(const id, const input[], any:...) { new count = 1, players[32] static msg[191] vformat(msg, 190, input, 3) replace_all(msg, 190, "!g", "^4") // Green Color replace_all(msg, 190, "!y", "^1") // Default Color replace_all(msg, 190, "!team", "^3") // Team Color if (id) players[0] = id; else get_players(players, count, "ch") { for (new i = 0; i < count; i++) { if (is_user_connected(players[i])) { message_begin(MSG_ONE_UNRELIABLE, g_iMsgSayText, _, players[i]) write_byte(players[i]); write_string(msg); message_end(); } } } }
WALHANG CODE
Spoiler
#include <amxmodx> #include <engine> #include <fakemeta> #include <hamsandwich> #include "furien.inc" #include "furien_shop.inc" #define VERSION "0.0.2" #define XTRA_OFS_PLAYER 5 #define m_Activity 73 #define m_IdealActivity 74 #define m_flNextAttack 83 #define m_afButtonPressed 246 #define FIRST_PLAYER_ID 1 #define MAX_PLAYERS 32 #define PLAYER_JUMP 6 #define ACT_HOP 7 //#define FBitSet(%1,%2) (%1 & %2) new g_iMaxPlayers #define IsPlayer(%1) ( FIRST_PLAYER_ID <= %1 <= g_iMaxPlayers ) #define IsHidden(%1) IsPlayer(%1) #define KNIFE_DRAW 3 new g_bHasWallHang #define SetUserWallHang(%1) g_bHasWallHang |= 1<<(%1&31) #define RemoveUserWallHang(%1) g_bHasWallHang &= ~(1<<(%1&31)) #define HasUserWallHang(%1) g_bHasWallHang & 1<<(%1&31) new g_bHanged #define SetUserHanged(%1) g_bHanged |= 1<<(%1&31) #define RemoveUserHanged(%1) g_bHanged &= ~(1<<(%1&31)) #define IsUserHanged(%1) g_bHanged & 1<<(%1&31) new Float:g_fVecMins[MAX_PLAYERS+1][3] new Float:g_fVecMaxs[MAX_PLAYERS+1][3] new Float:g_fVecOrigin[MAX_PLAYERS+1][3] new g_iCost[2] new bool:g_bRoundEnd public plugin_init() { register_plugin("Furien WallHang", VERSION, "ConnorMcLeod") new szConfigFile[128] get_localinfo("amxx_configsdir", szConfigFile, charsmax(szConfigFile)) format(szConfigFile, charsmax(szConfigFile), "%s/furien/items/wallhang.ini", szConfigFile); new fp = fopen(szConfigFile, "rt") if( !fp ) { return } new szFurienName[32], szAntiName[32] new szDatas[64], szKey[16], szValue[32] while( !feof(fp) ) { fgets(fp, szDatas, charsmax(szDatas)) trim(szDatas) if(!szDatas[0] || szDatas[0] == ';' || szDatas[0] == '#' || (szDatas[0] == '/' && szDatas[1] == '/')) { continue } parse(szDatas, szKey, charsmax(szKey), szValue, charsmax(szValue)) switch( szKey[0] ) { case 'A': { switch( szKey[7] ) { case 'M': { if( equal(szKey, "ANTI_NAME" ) ) { copy(szAntiName, charsmax(szAntiName), szValue) } } case 'S': { if( equal(szKey, "ANTI_COST" ) ) { g_iCost[AntiFurien] = str_to_num(szValue) } } } } case 'F': { switch( szKey[9] ) { case 'M': { if( equal(szKey, "FURIEN_NAME" ) ) { copy(szFurienName, charsmax(szAntiName), szValue) } } case 'S': { if( equal(szKey, "FURIEN_COST" ) ) { g_iCost[Furien] = str_to_num(szValue) } } } } } } fclose( fp ) if( g_iCost[Furien] || g_iCost[AntiFurien] ) { furien_register_item(szFurienName, g_iCost[Furien], szAntiName, g_iCost[AntiFurien], "furien_buy_wallhang") RegisterHam(Ham_Player_Jump, "player", "Player_Jump") RegisterHam(Ham_Touch, "func_wall", "World_Touch") RegisterHam(Ham_Touch, "func_breakable", "World_Touch") RegisterHam(Ham_Touch, "worldspawn", "World_Touch") g_iMaxPlayers = get_maxplayers() register_event("HLTV", "Event_HLTV_New_Round", "a", "1=0", "2=0") register_logevent("Logevent_Round_End", 2, "1=Round_End") } } public Event_HLTV_New_Round() { g_bRoundEnd = false } public Logevent_Round_End() { g_bRoundEnd = true g_bHanged = 0 } public client_putinserver( id ) { RemoveUserWallHang( id ) RemoveUserHanged( id ) } public furien_team_change( /*iFurien */ ) { if( !g_iCost[Furien] || !g_iCost[AntiFurien] ) { g_bHasWallHang = 0 g_bHanged = 0 } } public furien_round_restart() { g_bHasWallHang = 0 g_bHanged = 0 } public furien_buy_wallhang( id ) { new iTeam = furien_get_user_team(id) if( iTeam == -1 ) { return ShopCloseMenu } new iItemCost = g_iCost[iTeam] if( iItemCost <= 0 ) { return ShopTeamNotAvail } if( ~HasUserWallHang(id) ) { if( furien_try_buy(id, iItemCost) ) { SetUserWallHang( id ) return ShopBought } else { return ShopNotEnoughMoney } } return ShopAlreadyHaveOne } public Player_Jump(id) { if( g_bRoundEnd || ~HasUserWallHang(id) || ~IsUserHanged(id) || !is_user_alive(id) ) { return HAM_IGNORED } if( (pev(id, pev_flags) & FL_WATERJUMP) || pev(id, pev_waterlevel) >= 2 ) { return HAM_IGNORED } static afButtonPressed ; afButtonPressed = get_pdata_int(id, m_afButtonPressed) if( ~afButtonPressed & IN_JUMP ) { return HAM_IGNORED } RemoveUserHanged(id) new Float:fVecVelocity[3] velocity_by_aim(id, 600, fVecVelocity) set_pev(id, pev_velocity, fVecVelocity) set_pdata_int(id, m_Activity, ACT_HOP) set_pdata_int(id, m_IdealActivity, ACT_HOP) set_pev(id, pev_gaitsequence, PLAYER_JUMP) set_pev(id, pev_frame, 0.0) set_pdata_int(id, m_afButtonPressed, afButtonPressed & ~IN_JUMP) return HAM_SUPERCEDE } public client_PostThink(id) { if( HasUserWallHang(id) && IsUserHanged(id) ) { engfunc(EngFunc_SetSize, id, g_fVecMins[ id ], g_fVecMaxs[ id ]) engfunc(EngFunc_SetOrigin, id, g_fVecOrigin[ id ]) set_pev(id, pev_velocity, 0) set_pdata_float(id, m_flNextAttack, 1.0, XTRA_OFS_PLAYER) } } public World_Touch(iEnt, id) { if( !g_bRoundEnd && IsPlayer(id) && HasUserWallHang(id) && ~IsUserHanged(id) && is_user_alive(id) && pev(id, pev_button) & IN_USE && ~pev(id, pev_flags) & FL_ONGROUND ) { SetUserHanged(id) pev(id, pev_mins, g_fVecMins[id]) pev(id, pev_maxs, g_fVecMaxs[id]) pev(id, pev_origin, g_fVecOrigin[id]) } }
Użytkownik slavo edytował ten post 03.03.2013 17:10