Kód:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <cstrike>
#define Plugin "Fegyver Eladas"
#define Version "1.4"
#define Author "PHP"
#define MAX_WEAPONS 33
new const g_prices[MAX_WEAPONS][] = {
"0",
"600",
"0",
"2750",
"0",
"3000",
"0",
"1400",
"3500",
"0",
"800",
"750",
"1700",
"4200",
"2000",
"2250",
"500",
"400",
"4750",
"1500",
"5750",
"1700",
"3100",
"1250",
"5000",
"0",
"650",
"3500",
"2500",
"0",
"2350",
"0",
"0"
}
new bool:elsokor
new bool:elsokor_use[33]
new cvar, buyzone, annonce, divide //Pcvar stuff, makes life easier
public plugin_init() // Plugin_init(): Does all the "one-time" stuff. Called after plugin_precache().
{
register_plugin(Plugin, Version, Author) //Register's the plugin so it can be seen in amx_help
register_logevent("korveg", 2, "1=Round_End")
register_logevent("elso_kor", 2, "0=World triggered", "1&Restart_Round_")
register_logevent("elso_kor", 2, "0=World triggered", "1=Game_Commencing")
register_clcmd("say /sell", "cmd_sell") //Registers the command itself. So if someone say /sell the function will be executed
register_clcmd("say_team /sell", "cmd_sell") //Save as above but for team chat
cvar = register_cvar("SW_enabled", "1") //Registers the cvar SW_enabled, Default 1 (If nothing else is in server.cfg or any other .cfg file)
buyzone = register_cvar("SW_buyzone", "1") //Registers the cvar SW_buyzone, Default 0 (If nothing else is in server.cfg or any other .cfg file)
annonce = register_cvar("SW_annonce", "120") //Registers the cvar SW_annonce, Default 120 (If nothing else is in server.cfg or any other .cfg file)
divide = register_cvar("SW_divide", "2") //Registers the cvar SW_divide, Default 2 (If nothing else is in server.cfg or any other .cfg file)
if(get_pcvar_num(annonce) > 1) //If the pcvar annonce is higher then 1
set_task(get_pcvar_float(annonce), "print_annonce",_,_,_,"b") //Set a task to run the annonce function every get_pcvar_float(annonce) time
}
public elso_kor()
{
elsokor = true
for(new i = 0;i<=get_playersnum();i++)
elsokor_use[i] = false
}
public korveg()
{
elsokor = false
}
public print_annonce() //The function that shows the annonce
{
if(get_pcvar_num(annonce) < 1) //If it's lower then 1
return PLUGIN_CONTINUE //Make the plugin continue (Yes i know i should do remove_task() but this is better)
client_print(0, print_chat, "Elakarod adni ezt a fegyvert? Ird be a chatbe hogy /sell") //Prints the message to everyones chat area
return PLUGIN_CONTINUE //Continue...
}
new strtype[11] = "classname", ent = index
switch (jghgtype) {
case 1: copy(strtype, 6, "target")
case 2: copy(strtype, 10, "targetname")
}
while ((ent = engfunc(EngFunc_FindEntityByString, ent, strtype, classname)) && pev(ent, pev_owner) != owner) {}
return ent
}
new ent_class[32]
if (!wid && wname[0])
copy(ent_class, 31, wname)
else {
new weapon = wid, clip, ammo
if (!weapon && !(weapon = get_user_weapon(index, clip, ammo)))
return false
get_weaponname(weapon, ent_class, 31)
}
new ent_weap = fm_find_ent_by_owner(-1, ent_class, index)
if (!ent_weap)
return false
engclient_cmd(index, "drop", ent_class)
new ent_box = pev(ent_weap, pev_owner)
if (!ent_box || ent_box == index)
return false
dllfunc(DLLFunc_Think, ent_box)
return true
}
public cmd_sell(id) //The whole main function
{
if(elsokor == true)
{
if(elsokor_use[id] == true)
return PLUGIN_HANDLED
}
if(get_pcvar_num(cvar) < 1) //If the pcvar cvar is lower then one
return PLUGIN_CONTINUE //Continue...
if(get_pcvar_num(buyzone) == 1 && cs_get_user_buyzone(id) == 0) //If pcvar buyzone is equal to one and user is not in a buyzone
{
client_print(id, print_chat, "[Sell] Buyzone-ban kell lenned hogy eladhasd a fegyvert!") //Prints a angry little message :)
return PLUGIN_HANDLED //And ends the function
}
if(!is_user_alive(id)) //Isn't he alive?!
{
client_print(id, print_chat, "[Sell] Csak elve adhatsz el fegyvert!") //Prints a angry little message :)
return PLUGIN_HANDLED //And ends the function
}
new temp, weapon = get_user_weapon(id, temp, temp) //Fills weapon with the current hold weapon (temp is a so called dummy)
new price = str_to_num(g_prices[weapon]) //Gets the price for the current weapon
if(price == 0) //If it's equal to zero
{
client_print(id, print_chat, "[Sell] Nem lehet eladni ezt a fegyvert!") //Prints a angry little message :)
return PLUGIN_HANDLED //And ends the function
}
new weaponname[32] //Makes an array called weaponname, with a maximum of 32 - 1 chars
get_weaponname(weapon, weaponname, 31) //Gets the weapon name
new oldmoney = cs_get_user_money(id) //Gets the players money
new cash = clamp(oldmoney + (price / get_pcvar_num(divide)), 0, 16000) //clamps the total amount of cash, so it doesn't extend the 16000 limit
fm_strip_user_gun(id, weapon) //Calls the fm_strip_user_gun() stock
cs_set_user_money(id, cash) //Sets the money from cash
client_print(id, print_chat, "[Sell] Kaptal %d$-t amiert eladtal egy %s -t", cs_get_user_money(id) - oldmoney, weaponname[7]) //Prints some info about what you got
elsokor_use[id] = true
return PLUGIN_HANDLED
}