As dori daca se poate sa mi se modifice urmatorul plugin furien shop ultimate, sa mi se scoata aceea reclama cand scriu /shop si apare meniul, din "Furien Shop Ec...Ro" sa fie doar "Furien Shop" si "Anti Furien Shop" si daca se poate, de asemenea sa se rezolve bugul cu pet-ul, cand il cumpar, sta pe loc si nu vine dupa mine.
Am incercat si eu sa-l fac dar cand scriu /shop imi apare meniul cu scrisul aiurea.
De asemenea pot plati daca e nevoie si iese pluginul cum trebuie.
Multumesc anticipat.
.SMA
- | Afiseaza codul
/* Plugin generated by AMXX-Studio */ /* Copyright © 2013-2014, Adventx Furien Shop Ultimate is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Furien Shop Ultimate; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Credits: Sn!ff3r - Thanks for Animals Pet (https://forums.alliedmods.net/showthread.php?t=91860) */ #include <amxmodx> #include <cstrike> #include <fakemeta> #include <hamsandwich> #include <fun> new const PLUGIN[] = "Furien: Shop Ultimate"; new const VERSION[] = "0.2.8"; #pragma semicolon 1 // Pet / User Vaild #define is_user_valid(%0) (1 <= %0 <= g_iMaxPlayers) #define fm_precache_model(%1) engfunc(EngFunc_PrecacheModel,%1) #define fm_precache_sound(%1) engfunc(EngFunc_PrecacheSound,%1) #define fm_remove_entity(%1) engfunc(EngFunc_RemoveEntity, %1) #define fm_drop_to_floor(%1) engfunc(EngFunc_DropToFloor,%1) #define fm_find_ent_by_class(%1,%2) engfunc(EngFunc_FindEntityByString, %1, "classname", %2) #define fm_set_user_gravity(%1,%2) set_pev(%1,pev_gravity,%2) #define PET_FLAG pev_flTimeStepSound #define PET_KILLED 389 // Credits System #define ASKHANAR_CREDITS //#define ARAGON_CREDITS #if defined ASKHANAR_CREDITS native fcs_get_user_credits(client); native fcs_set_user_credits(client, credits); #endif #if defined ARAGON_CREDITS native get_user_credits(id); native set_user_credits(id, credits); #endif // Pet new item_pet[33], item_have[33], bool:g_has_speed[33], maxplayers; static const pet_idle = 13, pet_run = 13, pet_die = 5; static const Float:pet_idle_speed = 0.3; static const Float:pet_run_speed = 10.0; static const Float:player_gravity = 0.65; new Float:item_leaptime[33]; //Models new const DualKatanaModel_V[] = "models/v_katanad.mdl"; new const DualKatanaModel_P[] = "models/p_katanad.mdl"; new const HorseAxeModel_V[] = "models/v_horseaxe.mdl"; new const HorseAxeModel_P[] = "models/p_horseaxe.mdl"; new const pet_model[] = "models/stukabat.mdl"; //Sounds new const PICK_AMMO[] = "items/9mmclip1.wav"; new const PACK_ENERGY[] = "misc/fmu_energy.wav"; new const FLASH_SOUND[] = "misc/ultrasound.mp3"; // Pet static const pet_sounds[][] = { "bullchicken/bc_die1.wav", "bullchicken/bc_die2.wav", "bullchicken/bc_die3.wav", "bullchicken/bc_idle1.wav", "bullchicken/bc_pain3.wav" }; //Sounds Knife new const KatanaKnife_SoundList[][] = { "weapons/knife_deploy1.wav", "weapons/knife_hit1.wav", "weapons/knife_hit2.wav", "weapons/knife_hitwall1.wav", "weapons/knife_slash1.wav", "weapons/knife_slash2.wav", "weapons/knife_stab.wav" }; new const DualKatana_SoundList[][] = { "weapons/katanad_draw.wav", "weapons/katanad_hit1.wav", "weapons/katanad_hit2.wav", "weapons/katanad_hitwall.wav", "weapons/katanad_slash1.wav", "weapons/katanad_slash2.wav", "weapons/katanad_stab.wav" }; new const HorseAxeKnife_SoundList[][] = { "weapons/knife_deploy1.wav", "weapons/knife_hit1.wav", "weapons/knife_hit2.wav", "weapons/knife_hitwall1.wav", "weapons/knife_slash1.wav", "weapons/knife_stab.wav" }; new const HorseAxe_SoundList[][] = { "weapons/hatchet_deploy1.wav", "weapons/hatchet1.wav", "weapons/hatchet2.wav", "weapons/hatchel_hwall.wav", "weapons/hatchet_slash1.wav", "weapons/hatchel_stab.wav" }; //Boolean new bool: g_HaveNoFlash[33]; new bool: g_HaveHorseAxe[33]; new bool: g_HaveDefuseKit[33]; new bool: g_HaveDualKatana[33]; new bool: g_HavePackEnergy[33]; new bool: g_HaveAnimalsPet[33]; //Vectors new g_iMaxPlayers; new g_msgScreenFade; public plugin_init() { register_plugin(PLUGIN, VERSION, "Adventx"); register_cvar("fmu_shop_ecila", VERSION, FCVAR_SERVER | FCVAR_SPONLY); //Register Command register_clcmd("say shop","ClCmdShop"); register_clcmd("say /shop","ClCmdShop"); //Register Event's register_event("DeathMsg", "Event_DeathMsg", "a"); register_event("HLTV","Event_NewRound", "a","1=0", "2=0"); register_event("CurWeapon", "Event_CurrentWeapon", "be", "1=1"); register_event("ScreenFade", "Event_Flash", "be", "4=255", "5=255", "6=255", "7>199"); //Register Forward register_forward(FM_Think,"FM_Think_hook"); register_forward(FM_EmitSound, "fw_EmitSounds"); register_forward(FM_PlayerPreThink, "FM_PlayerPreThink_hook"); //Register Hamsandwich RegisterHam(Ham_Spawn, "player", "hamPlayerSpawnPost", 1); RegisterHam(Ham_TakeDamage, "player", "Player_TakeDamage"); //Vars g_iMaxPlayers = get_maxplayers(); g_msgScreenFade = get_user_msgid("ScreenFade"); } public plugin_precache() { //Sound precache_sound(PICK_AMMO); precache_sound(PACK_ENERGY); precache_generic(FLASH_SOUND); //Hosrse Axe precache_model(HorseAxeModel_V); precache_model(HorseAxeModel_P); //Dual Katana precache_model(DualKatanaModel_V); precache_model(DualKatanaModel_P); static i; for(i = 0; i <= charsmax(DualKatana_SoundList); i++) { precache_sound(DualKatana_SoundList); } for(i = 0; i <= charsmax(HorseAxe_SoundList); i++) { precache_sound(HorseAxe_SoundList); } for(i = 0; i < sizeof pet_sounds; i++) { fm_precache_sound(pet_sounds); } fm_precache_model(pet_model); } public client_putinserver(id) { g_HaveNoFlash[id] = false; g_HaveHorseAxe[id] = false; g_HaveDefuseKit[id] = false; g_HaveDualKatana[id] = false; g_HavePackEnergy[id] = false; g_HaveAnimalsPet[id] = false; } public client_disconnect(id) { g_HaveNoFlash[id] = false; g_HaveHorseAxe[id] = false; g_HaveDefuseKit[id] = false; g_HaveDualKatana[id] = false; g_HavePackEnergy[id] = false; g_HaveAnimalsPet[id] = false; } public Event_NewRound() { new entid = -1; while((entid = fm_find_ent_by_class(entid, "zp_bat"))) { if(pev(entid,PET_FLAG) == PET_KILLED) { fm_remove_entity(entid); } } } public hamPlayerSpawnPost(id) { if(is_user_alive(id)) { if(get_user_team(id) == 1) { kill_pet(id); item_have[id] = 0; } if(get_user_team(id) == 2) { //Return Knife g_HaveHorseAxe[id] = false; g_HaveDualKatana[id] = false; //Defuse Kit if(g_HaveDefuseKit[id] == true) { cs_set_user_defuse(id, 0); g_HaveDefuseKit[id] = false; } } if(item_have[id]) { fm_set_user_gravity(id, player_gravity); set_user_health(id, 200); set_user_armor(id, 200); g_has_speed[id] = true; } //Strip User Weapons strip_user_weapons(id); //Give Equipment FmuGiveEquipment(id); //Booleans g_HavePackEnergy[id] = false; g_HaveAnimalsPet[id] = false; } } public FmuGiveEquipment(id) { if(is_user_alive(id)) { if(get_user_team(id) == 1) { give_item(id, "weapon_knife"); give_item(id, "weapon_hegrenade"); give_item(id, "weapon_flashbang"); } if(get_user_team(id) == 2) { give_item(id, "weapon_knife"); give_item(id, "weapon_flashbang"); give_item(id, "weapon_smokegrenade"); } } } public ClCmdShop(id) { if(get_user_team(id) == 1) { set_task(0.1, "FurienShop", id); } if(get_user_team(id) == 2) { set_task(0.1, "AntiFurienShop", id); } } public FurienShop(id) { static credits; #if defined ASKHANAR_CREDITS credits = fcs_get_user_credits(id); #endif #if defined ARAGON_CREDITS credits = get_user_credits(id); #endif new szFormatex[128]; formatex(szFormatex, charsmax(szFormatex), "\yFurien Shop \rECILA.RO^n\yCredite: \w%d", credits); new szMenu = menu_create(szFormatex, "FurienShopHandler"); menu_additem(szMenu, "\y50 \wHP - \r[ \y5 Credite \r]", "1"); menu_additem(szMenu, "\y50 \wAP - \r[ \y5 Credite \r]", "2"); menu_additem(szMenu, "\yHE \wGrenade - \r[ \y10 Credite \r]^n", "3"); menu_additem(szMenu, "\wNo Flash - \r[ \y15 Credite \r]", "4"); menu_additem(szMenu, "\yPack \rEnergy \w - \r[ \y20 Credite \r]^n", "5"); menu_additem(szMenu, "\yHorse Axe \w - \r[ \y25 Credite \r]", "6"); menu_additem(szMenu, "\wDual Katana \w - \r[ \y30 Credite \r]", "7"); menu_setprop(szMenu, MPROP_EXIT, MEXIT_ALL); menu_display(id, szMenu, 0); return PLUGIN_HANDLED; } public AntiFurienShop(id) { static credits; #if defined ASKHANAR_CREDITS credits = fcs_get_user_credits(id); #endif #if defined ARAGON_CREDITS credits = get_user_credits(id); #endif new szFormatex[128]; formatex(szFormatex, charsmax(szFormatex), "\yAntiFurien Shop \rECILA.RO^n\yCredite: \w%d", credits); new szMenu = menu_create(szFormatex, "AntiFurienShopHandler"); menu_additem(szMenu, "\y50 \wHP - \r[ \y5 Credite \r]", "1"); menu_additem(szMenu, "\y50 \wAP - \r[ \y5 Credite \r]", "2"); menu_additem(szMenu, "\yHE \wGrenade - \r[ \y10 Credite \r]^n", "3"); menu_additem(szMenu, "\wNo Flash - \r[ \y15 Credite \r]", "4"); menu_additem(szMenu, "\yPack \rEnergy \w - \r[ \y20 Credite \r]^n", "5"); menu_additem(szMenu, "\wDefuse Kit \w - \r[ \y10 Credite \r]", "6"); menu_additem(szMenu, "\yAnimals \rPet \w - \r[ \y35 Credite \r]", "7"); menu_setprop(szMenu, MPROP_EXIT, MEXIT_ALL); menu_display(id, szMenu, 0); return PLUGIN_HANDLED; } public FurienShopHandler(id, szMenu, item) { if(item == MENU_EXIT || !is_user_alive(id)) { return PLUGIN_HANDLED; } static credits; new data[6], szName[64]; new access, callback; menu_item_getinfo(szMenu, item, access, data, charsmax(data), szName, charsmax(szName), callback); new key = str_to_num(data); switch(key) { case 1: { #if defined ASKHANAR_CREDITS credits = fcs_get_user_credits(id); #endif #if defined ARAGON_CREDITS credits = get_user_credits(id); #endif if(credits < 5) { ChatColor(id, "!g[Furien] !nYou don't have enough credits to buy !t50 HP"); return PLUGIN_HANDLED; } if(get_user_health(id) >= 200) //200 Health { ChatColor(id, "!g[Furien] !nYou have reached your maximum !tHealth"); return PLUGIN_HANDLED; } else { //Add Health set_user_health(id, min(get_user_health(id) + 50, 200)); //Sound emit_sound(id, CHAN_ITEM, PICK_AMMO, VOL_NORM, ATTN_NORM, 0, PITCH_NORM); //Set/Get User Credits #if defined ASKHANAR_CREDITS fcs_set_user_credits(id, fcs_get_user_credits(id) - 5); #endif #if defined ARAGON_CREDITS set_user_credits(id, get_user_credits(id) - 5); #endif ChatColor(id, "!g[Furien] !nYou bought !t50 HP !nfor !t5 credits"); } } case 2: { #if defined ASKHANAR_CREDITS credits = fcs_get_user_credits(id); #endif #if defined ARAGON_CREDITS credits = get_user_credits(id); #endif if(credits < 5) { ChatColor(id, "!g[Furien] !nYou don't have enough credits to buy !t50 AP"); return PLUGIN_HANDLED; } if(get_user_armor(id) >= 150) //150 Armor { ChatColor(id, "!g[Furien] !nYou have reached your maximum !tArmor"); return PLUGIN_HANDLED; } else { //Add Armor set_user_armor(id, min(get_user_armor(id) + 50, 150)); //Sound emit_sound(id, CHAN_ITEM, PICK_AMMO, VOL_NORM, ATTN_NORM, 0, PITCH_NORM); //Set/Get User Credits #if defined ASKHANAR_CREDITS fcs_set_user_credits(id, fcs_get_user_credits(id) - 5); #endif #if defined ARAGON_CREDITS set_user_credits(id, get_user_credits(id) - 5); #endif ChatColor(id, "!g[Furien] !nYou bought !t50 AP !nfor !t5 credits"); } } case 3: { #if defined ASKHANAR_CREDITS credits = fcs_get_user_credits(id); #endif #if defined ARAGON_CREDITS credits = get_user_credits(id); #endif if(credits < 10) { ChatColor(id, "!g[Furien] !nYou don't have enough credits to buy !tHE Grenade"); return PLUGIN_HANDLED; } if(user_has_weapon(id, CSW_HEGRENADE)) { ChatColor(id, "!g[Furien] !nYou have already a !tHE Grenade"); return PLUGIN_HANDLED; } else { //Give HE Grenade give_item(id, "weapon_hegrenade"); //Set/Get User Credits #if defined ASKHANAR_CREDITS fcs_set_user_credits(id, fcs_get_user_credits(id) - 10); #endif #if defined ARAGON_CREDITS set_user_credits(id, get_user_credits(id) - 10); #endif ChatColor(id, "!g[Furien] !nYou bought !tHE Grenade !nfor !t10 credits"); } } case 4: { #if defined ASKHANAR_CREDITS credits = fcs_get_user_credits(id); #endif #if defined ARAGON_CREDITS credits = get_user_credits(id); #endif if(credits < 15) { ChatColor(id, "!g[Furien] !nYou don't have enough credits to buy !tNo Flash"); return PLUGIN_HANDLED; } if(g_HaveNoFlash[id] == true) { ChatColor(id, "!g[Furien] !nYou have already a !tNo Flash"); return PLUGIN_HANDLED; } else { //Give No Flash g_HaveNoFlash[id] = true; //Sound emit_sound(id, CHAN_ITEM, PICK_AMMO, VOL_NORM, ATTN_NORM, 0, PITCH_NORM); //Set/Get User Credits #if defined ASKHANAR_CREDITS fcs_set_user_credits(id, fcs_get_user_credits(id) - 15); #endif #if defined ARAGON_CREDITS set_user_credits(id, get_user_credits(id) - 15); #endif ChatColor(id, "!g[Furien] !nYou bought !tNo Flash !nfor !t15 credits"); } } case 5: { #if defined ASKHANAR_CREDITS credits = fcs_get_user_credits(id); #endif #if defined ARAGON_CREDITS credits = get_user_credits(id); #endif if(credits < 20) { ChatColor(id, "!g[Furien] !nYou don't have enough credits to buy !tPack Energy"); return PLUGIN_HANDLED; } if(g_HavePackEnergy[id] == true) { ChatColor(id, "!g[Furien] !nYou have already a !tPack Energy"); return PLUGIN_HANDLED; } else { //Set Health/Armor set_user_armor(id, 200); set_user_health(id, 200); //Set Boolean Pack Enegry g_HavePackEnergy[id] = true; //Add Effects ShakeScreen(id, 0.9); //Fade Screen FadeScreen(id, 0.5, 250, 110, 110, 100); //Sound emit_sound(id, CHAN_ITEM, PICK_AMMO, VOL_NORM, ATTN_NORM, 0, PITCH_NORM); //Set/Get User Credits #if defined ASKHANAR_CREDITS fcs_set_user_credits(id, fcs_get_user_credits(id) - 20); #endif #if defined ARAGON_CREDITS set_user_credits(id, get_user_credits(id) - 20); #endif ChatColor(id, "!g[Furien] !nYou bought !tPack Energy !nfor !t20 credits"); } } case 6: { #if defined ASKHANAR_CREDITS credits = fcs_get_user_credits(id); #endif #if defined ARAGON_CREDITS credits = get_user_credits(id); #endif if(credits < 25) { ChatColor(id, "!g[Furien] !nYou don't have enough credits to buy !tHorse Axe"); return PLUGIN_HANDLED; } if(g_HaveHorseAxe[id] == true) { ChatColor(id, "!g[Furien] !nYou have already a !tHorse Axe"); return PLUGIN_HANDLED; } else { //Give Knife Horse Axe g_HaveHorseAxe[id] = true; //Return Dual Katana g_HaveDualKatana[id] = false; //Current Weapons Event_CurrentWeapon(id); //Sound emit_sound(id, CHAN_ITEM, PICK_AMMO, VOL_NORM, ATTN_NORM, 0, PITCH_NORM); //Set/Get User Credits #if defined ASKHANAR_CREDITS fcs_set_user_credits(id, fcs_get_user_credits(id) - 25); #endif #if defined ARAGON_CREDITS set_user_credits(id, get_user_credits(id) - 25); #endif ChatColor(id, "!g[Furien] !nYou bought !tHorse Axe !nfor !t25 credits"); } } case 7: { #if defined ASKHANAR_CREDITS credits = fcs_get_user_credits(id); #endif #if defined ARAGON_CREDITS credits = get_user_credits(id); #endif if(credits < 30) { ChatColor(id, "!g[Furien] !nYou don't have enough credits to buy !tDual Katana"); return PLUGIN_HANDLED; } if(g_HaveDualKatana[id] == true) { ChatColor(id, "!g[Furien] !nYou have already a !tDual Katana"); return PLUGIN_HANDLED; } else { //Give Knife Horse Axe g_HaveDualKatana[id] = true; //Return Horse Axe g_HaveHorseAxe[id] = false; //Current Weapons Event_CurrentWeapon(id); //Sound emit_sound(id, CHAN_ITEM, PICK_AMMO, VOL_NORM, ATTN_NORM, 0, PITCH_NORM); //Set/Get User Credits #if defined ASKHANAR_CREDITS fcs_set_user_credits(id, fcs_get_user_credits(id) - 30); #endif #if defined ARAGON_CREDITS set_user_credits(id, get_user_credits(id) - 30); #endif ChatColor(id, "!g[Furien] !nYou bought !tDual Katana !nfor !t25 credits"); } } } menu_destroy(szMenu); return PLUGIN_HANDLED; } public AntiFurienShopHandler(id, szMenu, item) { if(item == MENU_EXIT || !is_user_alive(id)) { return PLUGIN_HANDLED; } static credits; new data[6], szName[64]; new access, callback; menu_item_getinfo(szMenu, item, access, data, charsmax(data), szName, charsmax(szName), callback); new key = str_to_num(data); switch(key) { case 1: { #if defined ASKHANAR_CREDITS credits = fcs_get_user_credits(id); #endif #if defined ARAGON_CREDITS credits = get_user_credits(id); #endif if(credits < 5) { ChatColor(id, "!g[AntiFurien] !nYou don't have enough credits to buy !t50 HP"); return PLUGIN_HANDLED; } if(get_user_health(id) >= 200) //250 Health { ChatColor(id, "!g[AntiFurien] !nYou have reached your maximum !tHealth"); return PLUGIN_HANDLED; } else { //Add Health set_user_health(id, min(get_user_health(id) + 50, 200)); //Sound emit_sound(id, CHAN_ITEM, PICK_AMMO, VOL_NORM, ATTN_NORM, 0, PITCH_NORM); //Set/Get User Credits #if defined ASKHANAR_CREDITS fcs_set_user_credits(id, fcs_get_user_credits(id) - 5); #endif #if defined ARAGON_CREDITS set_user_credits(id, get_user_credits(id) - 5); #endif ChatColor(id, "!g[AntiFurien] !nYou bought !t50 HP !nfor !t5 credits"); } } case 2: { #if defined ASKHANAR_CREDITS credits = fcs_get_user_credits(id); #endif #if defined ARAGON_CREDITS credits = get_user_credits(id); #endif if(credits < 5) { ChatColor(id, "!g[AntiFurien] !nYou don't have enough credits to buy !t50 AP"); return PLUGIN_HANDLED; } if(get_user_armor(id) >= 200) //200 Armor { ChatColor(id, "!g[AntiFurien] !nYou have reached your maximum !tArmor"); return PLUGIN_HANDLED; } else { //Add Armor set_user_armor(id, min(get_user_armor(id) + 50, 200)); //Sound emit_sound(id, CHAN_ITEM, PICK_AMMO, VOL_NORM, ATTN_NORM, 0, PITCH_NORM); //Set/Get User Credits #if defined ASKHANAR_CREDITS fcs_set_user_credits(id, fcs_get_user_credits(id) - 5); #endif #if defined ARAGON_CREDITS set_user_credits(id, get_user_credits(id) - 5); #endif ChatColor(id, "!g[AntiFurien] !nYou bought !t50 AP !nfor !t5 credits"); } } case 3: { #if defined ASKHANAR_CREDITS credits = fcs_get_user_credits(id); #endif #if defined ARAGON_CREDITS credits = get_user_credits(id); #endif if(credits < 10) { ChatColor(id, "!g[AntiFurien] !nYou don't have enough credits to buy !tHE Grenade"); return PLUGIN_HANDLED; } if(user_has_weapon(id, CSW_HEGRENADE)) { ChatColor(id, "!g[AntiFurien] !nYou have already a !tHE Grenade"); return PLUGIN_HANDLED; } else { //Give HE Grenade give_item(id, "weapon_hegrenade"); //Set/Get User Credits #if defined ASKHANAR_CREDITS fcs_set_user_credits(id, fcs_get_user_credits(id) - 10); #endif #if defined ARAGON_CREDITS set_user_credits(id, get_user_credits(id) - 10); #endif ChatColor(id, "!g[AntiFurien] !nYou bought !tHE Grenade !nfor !t10 credits"); } } case 4: { #if defined ASKHANAR_CREDITS credits = fcs_get_user_credits(id); #endif #if defined ARAGON_CREDITS credits = get_user_credits(id); #endif if(credits < 15) { ChatColor(id, "!g[AntiFurien] !nYou don't have enough credits to buy !tNo Flash"); return PLUGIN_HANDLED; } if(g_HaveNoFlash[id] == true) { ChatColor(id, "!g[Furien] !nYou have already a !tNo Flash"); return PLUGIN_HANDLED; } else { //Give No Flash g_HaveNoFlash[id] = true; //Sound emit_sound(id, CHAN_ITEM, PICK_AMMO, VOL_NORM, ATTN_NORM, 0, PITCH_NORM); //Set/Get User Credits #if defined ASKHANAR_CREDITS fcs_set_user_credits(id, fcs_get_user_credits(id) - 15); #endif #if defined ARAGON_CREDITS set_user_credits(id, get_user_credits(id) - 15); #endif ChatColor(id, "!g[AntiFurien] !nYou bought !tNo Flash !nfor !t15 credits"); } } case 5: { #if defined ASKHANAR_CREDITS credits = fcs_get_user_credits(id); #endif #if defined ARAGON_CREDITS credits = get_user_credits(id); #endif if(credits < 20) { ChatColor(id, "!g[AntiFurien] !nYou don't have enough credits to buy !tPack Energy"); return PLUGIN_HANDLED; } if(g_HavePackEnergy[id] == true) { ChatColor(id, "!g[AntiFurien] !nYou have already a !tPack Energy"); return PLUGIN_HANDLED; } if(g_HaveAnimalsPet[id] == true) { return PLUGIN_HANDLED; } else { //Add Effects ShakeScreen(id, 0.9); //Fade Screen FadeScreen(id, 0.5, 110, 250, 110, 100); //Set Health/Armor set_user_armor(id, 200); set_user_health(id, 200); //Set Boolean Pack Enegry g_HavePackEnergy[id] = true; //Sound emit_sound(id, CHAN_ITEM, PICK_AMMO, VOL_NORM, ATTN_NORM, 0, PITCH_NORM); //Set/Get User Credits #if defined ASKHANAR_CREDITS fcs_set_user_credits(id, fcs_get_user_credits(id) - 20); #endif #if defined ARAGON_CREDITS set_user_credits(id, get_user_credits(id) - 20); #endif ChatColor(id, "!g[AntiFurien] !nYou bought !tPack Energy !nfor !t20 credits"); } } case 6: { #if defined ASKHANAR_CREDITS credits = fcs_get_user_credits(id); #endif #if defined ARAGON_CREDITS credits = get_user_credits(id); #endif if(credits < 10) { ChatColor(id, "!g[AntiFurien] !nYou don't have enough credits to buy !tDefuse Kit"); return PLUGIN_HANDLED; } if(g_HaveDefuseKit[id] == true) { ChatColor(id, "!g[AntiFurien] !nYou have already a !tDefuse Kit"); return PLUGIN_HANDLED; } else { //Give Defuse Kit g_HaveDefuseKit[id] = true; cs_set_user_defuse(id, 1); //Sound emit_sound(id, CHAN_ITEM, PICK_AMMO, VOL_NORM, ATTN_NORM, 0, PITCH_NORM); //Set/Get User Credits #if defined ASKHANAR_CREDITS fcs_set_user_credits(id, fcs_get_user_credits(id) - 10); #endif #if defined ARAGON_CREDITS set_user_credits(id, get_user_credits(id) - 10); #endif ChatColor(id, "!g[AntiFurien] !nYou bought !tDefuse Kit !nfor !t10 credits"); } } case 7: { #if defined ASKHANAR_CREDITS credits = fcs_get_user_credits(id); #endif #if defined ARAGON_CREDITS credits = get_user_credits(id); #endif if(credits < 35) { ChatColor(id, "!g[AntiFurien] !nYou don't have enough credits to buy !tAnimals Pet"); return PLUGIN_HANDLED; } if(item_have[id]) { ChatColor(id, "!g[AntiFurien] !nYou have already a !tPet!"); return PLUGIN_HANDLED; } if(g_HavePackEnergy[id] == true) { return PLUGIN_HANDLED; } else { //Fade Screen FadeScreen(id, 0.5, 0, 0, 150, 50); //Set Boolean g_HaveAnimalsPet[id] = true; // Create Pet create_pet(id); //Sound emit_sound(id, CHAN_ITEM, PICK_AMMO, VOL_NORM, ATTN_NORM, 0, PITCH_NORM); //Set/Get User Credits #if defined ASKHANAR_CREDITS fcs_set_user_credits(id, fcs_get_user_credits(id) - 35); #endif #if defined ARAGON_CREDITS set_user_credits(id, get_user_credits(id) - 35); #endif ChatColor(id, "!g[AntiFurien] !nYou bought !tAnimals Pet !nfor !t35 credits"); } } } menu_destroy(szMenu); return PLUGIN_HANDLED; } public Event_DeathMsg() { new iVictim = read_data(2); g_HaveNoFlash[iVictim] = false; g_HaveHorseAxe[iVictim] = false; g_HaveDualKatana[iVictim] = false; if(item_have[iVictim]) { kill_pet(iVictim); item_have[iVictim] = 0; } if(get_user_team(iVictim) == 2) { item_have[iVictim] = 0; } if(g_has_speed[iVictim]) { g_has_speed[iVictim] = false; } } public FM_Think_hook(ent) { for(new i = 0; i <= maxplayers; i++) { if(ent == item_pet) { static Float:origin[3]; static Float:origin2[3]; static Float:velocity[3]; pev(ent,pev_origin,origin2); get_offset_origin_body(i,Float:{50.0,0.0,0.0},origin); if(get_distance_f(origin,origin2) > 300.0) { set_pev(ent,pev_origin,origin); } else if(get_distance_f(origin,origin2) > 80.0) { get_speed_vector(origin2,origin,250.0,velocity); set_pev(ent,pev_velocity,velocity); if(pev(ent,pev_sequence) != pet_run || pev(ent,pev_framerate) != pet_run_speed) { set_pev(ent,pev_sequence,pet_run); set_pev(ent,pev_gaitsequence,pet_run); set_pev(ent,pev_framerate,pet_run_speed); } } else if(get_distance_f(origin,origin2) < 75.0) { if(pev(ent,pev_sequence) != pet_idle || pev(ent,pev_framerate) != pet_idle_speed) { set_pev(ent,pev_sequence,pet_idle); set_pev(ent,pev_gaitsequence,pet_idle); set_pev(ent,pev_framerate,pet_idle_speed); } set_pev(ent,pev_velocity,Float:{0.0,0.0,0.0}); } pev(i,pev_origin,origin); origin[2] = origin2[2]; entity_set_aim(ent,origin); set_pev(ent,pev_nextthink,1.0); break; } } } public FM_PlayerPreThink_hook(id) { if (!is_user_alive(id)) return; if(allowed_leap(id)) { static Float:velocity[3]; velocity_by_aim(id, 500, velocity); velocity[2] = 300.0; set_pev(id, pev_velocity, velocity); item_leaptime[id] = get_gametime(); } } public allowed_leap(id) { if(!item_have[id]) { return false; } if (!(pev(id, pev_flags) & FL_ONGROUND) || fm_get_speed(id) < 80) { return false; } static buttons; buttons = pev(id, pev_button); if (!is_user_bot(id) && (!(buttons & IN_JUMP) || !(buttons & IN_DUCK))) { return false; } if (get_gametime() - item_leaptime[id] < 3) { return false; } return true; } public is_a_player(ent) { if(ent > 0 && ent < 33) { return true; } return false; } public remove_pet(ent) { if(pev_valid(ent)) { fm_remove_entity(ent); } } public kill_pet(id) { if(pev_valid(item_pet[id])) { set_pev(item_pet[id],pev_sequence,pet_die); set_pev(item_pet[id],pev_gaitsequence,pet_die); set_pev(item_pet[id],pev_framerate,1.0); set_pev(item_pet[id],PET_FLAG,PET_KILLED); fm_drop_to_floor(item_pet[id]); item_have[id] = 0; g_has_speed[id] = false; } item_pet[id] = 0; } public create_pet(id) { item_pet[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString,"info_target")); set_pev(item_pet[id],pev_classname,"zp_bat"); engfunc(EngFunc_SetModel,item_pet[id],pet_model); new Float:origin[3]; pev(id,pev_origin,origin); set_pev(item_pet[id],pev_origin,origin); set_pev(item_pet[id],pev_solid,SOLID_TRIGGER); set_pev(item_pet[id],pev_movetype,MOVETYPE_FLY); set_pev(item_pet[id],pev_owner,33); set_pev(item_pet[id],pev_nextthink,1.0); set_pev(item_pet[id],pev_sequence,0); set_pev(item_pet[id],pev_gaitsequence,0); set_pev(item_pet[id],pev_framerate,1.0); set_pev(item_pet[id], pev_renderfx, kRenderFxGlowShell); set_pev(item_pet[id], pev_rendercolor, Float:{0.0, 0.0, 200.0}); fm_set_user_gravity(id,player_gravity); set_user_health(id, 200); set_user_armor(id, 200); engfunc(EngFunc_EmitSound,item_pet[id],CHAN_AUTO,pet_sounds[random_num(0,sizeof pet_sounds - 1)],1.0, 1.2, 0, PITCH_NORM); item_have[id] = 1; g_has_speed[id] = true; } public Event_CurrentWeapon(id) { if(g_HaveDualKatana[id] && get_user_weapon(id) == CSW_KNIFE) { set_pev(id, pev_viewmodel2, DualKatanaModel_V); set_pev(id, pev_weaponmodel2, DualKatanaModel_P); } if(g_HaveHorseAxe[id] && get_user_weapon(id) == CSW_KNIFE) { set_pev(id, pev_viewmodel2, HorseAxeModel_V); set_pev(id, pev_weaponmodel2, HorseAxeModel_P); } } public fw_EmitSounds(const id, const channel, const sample[]) { if(is_user_alive(id)) { if(g_HaveDualKatana[id]) { for(new i = 0; i < sizeof DualKatana_SoundList; i++) { if(equal(sample, KatanaKnife_SoundList)) { emit_sound(id, channel, DualKatana_SoundList, 1.0, ATTN_NORM, 0, PITCH_NORM); return FMRES_SUPERCEDE; } } } if(g_HaveHorseAxe[id]) { for(new i = 0; i < sizeof HorseAxe_SoundList; i++) { if(equal(sample, HorseAxeKnife_SoundList)) { emit_sound(id, channel, HorseAxe_SoundList, 1.0, ATTN_NORM, 0, PITCH_NORM); return FMRES_SUPERCEDE; } } } } return FMRES_IGNORED; } public Player_TakeDamage(iVictim, iInflictor, iAttacker, Float:fDamage, iDamageBits) { if(iInflictor == iAttacker && is_user_valid(iAttacker) && g_HaveHorseAxe[iAttacker] && is_user_connected(iAttacker) && get_user_weapon(iAttacker) == CSW_KNIFE) { SetHamParamFloat(4, fDamage * 2.2); return HAM_HANDLED; } if(iInflictor == iAttacker && is_user_valid(iAttacker) && g_HaveDualKatana[iAttacker] && is_user_connected(iAttacker) && get_user_weapon(iAttacker) == CSW_KNIFE ) { SetHamParamFloat(4, fDamage * 2.0); return HAM_HANDLED; } return HAM_IGNORED; } public ShakeScreen(id, const Float:seconds) { message_begin(MSG_ONE, get_user_msgid("ScreenShake"), {0, 0, 0}, id); write_short(floatround(4096.0 * seconds, floatround_round)); write_short(floatround(4096.0 * seconds, floatround_round)); write_short(1<<13); message_end(); } public FadeScreen(id, const Float:seconds, const red, const green, const blue, const alpha) { message_begin(MSG_ONE, get_user_msgid("ScreenFade"), _, id); write_short(floatround(4096.0 * seconds, floatround_round)); write_short(floatround(4096.0 * seconds, floatround_round)); write_short(0x0000); write_byte(red); write_byte(green); write_byte(blue); write_byte(alpha); message_end( ); } public Event_Flash(id) { if(is_user_connected(id) && g_HaveNoFlash[id]) { message_begin(MSG_ONE, g_msgScreenFade, {0,0,0}, id); write_short(1); write_short(1); write_short(1); write_byte(0); write_byte(0); write_byte(0); write_byte(255); message_end(); ShakeScreen(id, 5.0); client_cmd(id, "mp3 play sound/%s", FLASH_SOUND); set_task(7.0, "StoppedSound", id); } } public StoppedSound(id) { client_cmd(id, "mp3 stop sound/%s", FLASH_SOUND); } // Get entity's speed (from fakemeta_util) stock fm_get_speed(entity) { static Float:velocity[3]; pev(entity, pev_velocity, velocity); return floatround(vector_length(velocity)); } stock get_offset_origin_body(ent,const Float:offset[3],Float:origin[3]) { if(!pev_valid(ent)) { return 0; } new Float:angle[3]; pev(ent,pev_angles,angle); pev(ent,pev_origin,origin); origin[0] += floatcos(angle[1],degrees) * offset[0]; origin[1] += floatsin(angle[1],degrees) * offset[0]; origin[1] += floatcos(angle[1],degrees) * offset[1]; origin[0] += floatsin(angle[1],degrees) * offset[1]; return 1; } stock get_speed_vector(const Float:origin1[3],const Float:origin2[3],Float:speed, Float:new_velocity[3]) { new_velocity[0] = origin2[0] - origin1[0]; new_velocity[1] = origin2[1] - origin1[1]; new_velocity[2] = origin2[2] - origin1[2]; new Float:num = floatsqroot(speed*speed / (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] + new_velocity[2]*new_velocity[2])); new_velocity[0] *= num; new_velocity[1] *= num; new_velocity[2] *= num; return 1; } stock entity_set_aim(ent,const Float:origin2[3],bone=0) { if(!pev_valid(ent)) return 0; static Float:origin[3]; origin[0] = origin2[0]; origin[1] = origin2[1]; origin[2] = origin2[2]; static Float:ent_origin[3], Float:angles[3]; if(bone) { engfunc(EngFunc_GetBonePosition,ent,bone,ent_origin,angles); } else { pev(ent,pev_origin,ent_origin); } origin[0] -= ent_origin[0]; origin[1] -= ent_origin[1]; origin[2] -= ent_origin[2]; static Float:v_length; v_length = vector_length(origin); static Float:aim_vector[3]; aim_vector[0] = origin[0] / v_length; aim_vector[1] = origin[1] / v_length; aim_vector[2] = origin[2] / v_length; static Float:new_angles[3]; vector_to_angle(aim_vector,new_angles); new_angles[0] *= -1; if(new_angles[1]>180.0) new_angles[1] -= 360; if(new_angles[1]<-180.0) new_angles[1] += 360; if(new_angles[1]==180.0 || new_angles[1]==-180.0) new_angles[1]=-179.999999; set_pev(ent,pev_angles,new_angles); set_pev(ent,pev_fixangle,1); return 1; } 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, "!n", "^1"); // Default Color replace_all(msg, 190, "!t", "^3"); // Team Color replace_all(msg, 190, "!t2", "^0"); // Team2 Color if (id) players[0] = id; else get_players(players, count, "ch"); { for (new i = 0; i < count; i++) { if (is_user_connected(players)) { message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players); write_byte(players[i]); write_string(msg); message_end(); } } } } /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par } */