| leonardo_ |
02-07-2013 22:39 |
Help... Optimize it for me please.
1 Attachment(s)
Hi guys!
One week ago I downloaded a plugin for my Public server that gives you VIP privileges.
And after asking questions like "Can anyone make me another option for VIP menu?" scripters were saying that the code of a plugin is really bad written... So I was kind of upset about it and tried to fix it, but couldn't because I am not a scripter... Only beginner...
I really like this plugin and wish to keep it.
Can anyone optimize it for me please? I would pay If it will be needed...
An author of a plugin - here.
PHP Code:
#define DAMAGE_RECIEVED
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
static const COLOR[] = "^x04" //green
static const CONTACT[] = ""
new maxplayers
new gmsgSayText
new mpd, mkb, mhb
new g_MsgSync
new health_add
new health_hs_add
new health_max
new nKiller
new nKiller_hp
new nHp_add
new nHp_max
new g_awp_active
new g_menu_active
new CurrentRound
new bool:HasC4[33]
#define Keysrod (1<<0)|(1<<1)|(1<<2)|(1<<9) // Keys: 1234567890
#if defined DAMAGE_RECIEVED
new g_MsgSync2
#endif
public plugin_init()
{
register_plugin("VIP Eng Version", "3.0", "Dunno")
mpd = register_cvar("money_per_damage","3")
mkb = register_cvar("money_kill_bonus","200")
mhb = register_cvar("money_hs_bonus","500")
health_add = register_cvar("amx_vip_hp", "15")
health_hs_add = register_cvar("amx_vip_hp_hs", "30")
health_max = register_cvar("amx_vip_max_hp", "100")
g_awp_active = register_cvar("awp_active", "1")
g_menu_active = register_cvar("menu_active", "1")
register_event("Damage","Damage","b")
register_event("DeathMsg","death_msg","a")
register_menucmd(register_menuid("rod"), Keysrod, "Pressedrod")
register_clcmd("awp","HandleCmd")
register_clcmd("sg550","HandleCmd")
register_clcmd("g3sg1","HandleCmd")
register_clcmd("say /wantvip","ShowMotd")
maxplayers = get_maxplayers()
gmsgSayText = get_user_msgid("SayText")
register_clcmd("say", "handle_say")
register_cvar("amx_contactinfo", CONTACT, FCVAR_SERVER)
register_logevent("LogEvent_RoundStart", 2, "1=Round_Start" );
register_event("TextMsg","Event_RoundRestart","a","2&#Game_w")
register_event("TextMsg","Event_RoundRestart","a","2&#Game_C");
register_event("DeathMsg", "hook_death", "a", "1>0")
register_event("Damage", "on_damage", "b", "2!0", "3=0", "4!0")
g_MsgSync = CreateHudSyncObj()
#if defined DAMAGE_RECIEVED
g_MsgSync2 = CreateHudSyncObj()
#endif
}
public on_damage(id)
{
new attacker = get_user_attacker(id)
#if defined DAMAGE_RECIEVED
// id should be connected if this message is sent, but lets check anyway
if ( is_user_connected(id) && is_user_connected(attacker) )
if (get_user_flags(attacker) & ADMIN_LEVEL_G)
{
new damage = read_data(2)
set_hudmessage(255, 0, 0, 0.45, 0.50, 2, 0.1, 4.0, 0.1, 0.1, -1)
ShowSyncHudMsg(id, g_MsgSync2, "%i^n", damage)
#else
if ( is_user_connected(attacker) && if (get_user_flags(attacker) & ADMIN_LEVEL_G) )
{
new damage = read_data(2)
#endif
set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1)
ShowSyncHudMsg(attacker, g_MsgSync, "%i^n", damage)
}
}
public Damage(id)
{
new weapon, hitpoint, attacker = get_user_attacker(id,weapon,hitpoint)
if(attacker<=maxplayers && is_user_alive(attacker) && attacker!=id)
if (get_user_flags(attacker) & ADMIN_LEVEL_G)
{
new money = read_data(2) * get_pcvar_num(mpd)
if(hitpoint==1) money += get_pcvar_num(mhb)
cs_set_user_money(attacker,cs_get_user_money(attacker) + money)
}
}
public death_msg()
{
if(read_data(1)<=maxplayers && read_data(1) && read_data(1)!=read_data(2)) cs_set_user_money(read_data(1),cs_get_user_money(read_data(1)) + get_pcvar_num(mkb) - 300)
}
public LogEvent_RoundStart()
{
CurrentRound++;
new players[32], player, pnum;
get_players(players, pnum, "a");
for(new i = 0; i < pnum; i++)
{
player = players[i];
if(is_user_alive(player) && get_user_flags(player) & ADMIN_LEVEL_G)
{
give_item(player, "weapon_hegrenade")
give_item(player, "weapon_flashbang")
give_item(player, "weapon_flashbang")
give_item(player, "weapon_smokegrenade")
give_item(player, "item_assaultsuit")
give_item(player, "item_thighpack")
if (!get_pcvar_num(g_menu_active))
return PLUGIN_CONTINUE
if(CurrentRound >= 3)
{
Showrod(player);
}
}
}
return PLUGIN_HANDLED
}
public Event_RoundRestart()
{
CurrentRound=0;
}
public hook_death()
{
// Killer id
nKiller = read_data(1)
if ( (read_data(3) == 1) && (read_data(5) == 0) )
{
nHp_add = get_pcvar_num (health_hs_add)
}
else
nHp_add = get_pcvar_num (health_add)
nHp_max = get_pcvar_num (health_max)
// Updating Killer HP
if(!(get_user_flags(nKiller) & ADMIN_LEVEL_G))
return;
nKiller_hp = get_user_health(nKiller)
nKiller_hp += nHp_add
// Maximum HP check
if (nKiller_hp > nHp_max) nKiller_hp = nHp_max
set_user_health(nKiller, nKiller_hp)
// Hud message "Healed +15/+30 hp"
set_hudmessage(0, 255, 0, -1.0, 0.15, 0, 1.0, 1.0, 0.1, 0.1, -1)
show_hudmessage(nKiller, "Исцелен на +%d hp", nHp_add)
// Screen fading
message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, nKiller)
write_short(1<<10)
write_short(1<<10)
write_short(0x0000)
write_byte(0)
write_byte(0)
write_byte(200)
write_byte(75)
message_end()
}
public Showrod(id) {
show_menu(id, Keysrod, "Меню оружий для VIP:^n\w^n\w1. Получить M4A1+Deagle ^n\w2. Получить AK47+Deagle ^n\w3. Получить Awp+Deagle^n^n0. Выход^n", -1, "rod") // Display menu
}
public Pressedrod(id, key) {
/* Menu:
* VIP Menu
* 1. Get M4A1+Deagle
* 2. Get AK47+Deagle
* 3. Get Awp+Deagle
* 0. Exit
*/
switch (key) {
case 0: {
if (user_has_weapon(id, CSW_C4) && get_user_team(id) == 1)
HasC4[id] = true;
else
HasC4[id] = false;
strip_user_weapons (id)
give_item(id,"weapon_m4a1")
give_item(id,"ammo_556nato")
give_item(id,"ammo_556nato")
give_item(id,"ammo_556nato")
give_item(id,"weapon_deagle")
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")
give_item(id,"weapon_knife")
give_item(id,"weapon_hegrenade")
give_item(id, "weapon_flashbang");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
give_item(id, "item_assaultsuit");
give_item(id, "item_thighpack");
client_print(id, print_center, "Вы взяли M4A1 и Deagle")
if (HasC4[id])
{
give_item(id, "weapon_c4");
cs_set_user_plant( id );
}
}
case 1: {
if (user_has_weapon(id, CSW_C4) && get_user_team(id) == 1)
HasC4[id] = true;
else
HasC4[id] = false;
strip_user_weapons (id)
give_item(id,"weapon_ak47")
give_item(id,"ammo_762nato")
give_item(id,"ammo_762nato")
give_item(id,"ammo_762nato")
give_item(id,"weapon_deagle")
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")
give_item(id,"weapon_knife")
give_item(id,"weapon_hegrenade")
give_item(id, "weapon_flashbang");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
give_item(id, "item_assaultsuit");
give_item(id, "item_thighpack");
client_print(id, print_center, "Вы взяли AK47 и Deagle")
if (HasC4[id])
{
give_item(id, "weapon_c4");
cs_set_user_plant( id );
}
}
case 2: {
if (user_has_weapon(id, CSW_C4) && get_user_team(id) == 1)
HasC4[id] = true;
else
HasC4[id] = false;
strip_user_weapons (id)
give_item(id,"weapon_awp")
give_item(id,"weapon_deagle")
give_item(id,"weapon_knife")
give_item(id,"weapon_hegrenade")
give_item(id, "weapon_flashbang");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
give_item(id, "item_assaultsuit");
give_item(id, "item_thighpack");
cs_set_user_bpammo(id, CSW_AWP, 30)
cs_set_user_bpammo(id, CSW_DEAGLE, 35)
client_print(id, print_center, "Вы взяли AWP и Deagle")
if (HasC4[id])
{
give_item(id, "weapon_c4");
cs_set_user_plant( id );
}
}
case 9: {
}
}
return PLUGIN_CONTINUE
}
public HandleCmd(id){
if (!get_pcvar_num(g_awp_active))
return PLUGIN_CONTINUE
if(get_user_flags(id) & ADMIN_LEVEL_G)
return PLUGIN_CONTINUE
client_print(id, print_center, "Снайперские винтовки только для VIP")
return PLUGIN_HANDLED
}
public ShowMotd(id)
{
show_motd(id, "vip.txt")
}
public client_authorized(id)
{
set_task(30.0, "PrintText" ,id)
}
public PrintText(id)
{
client_print(id, print_chat, "[VIP] напишите /wantvip и Вы увидите как получить VIP и VIP привилегии.")
}
public handle_say(id) {
new said[192]
read_args(said,192)
if( ( containi(said, "who") != -1 && containi(said, "admin") != -1 ) || contain(said, "/vips") != -1 )
set_task(0.1,"print_adminlist",id)
return PLUGIN_CONTINUE
}
public print_adminlist(user)
{
new adminnames[33][32]
new message[256]
new contactinfo[256], contact[112]
new id, count, x, len
for(id = 1 ; id <= maxplayers ; id++)
if(is_user_connected(id))
if(get_user_flags(id) & ADMIN_LEVEL_G)
get_user_name(id, adminnames[count++], 31)
len = format(message, 255, "%s VIP ОНЛАЙН: ",COLOR)
if(count > 0) {
for(x = 0 ; x < count ; x++) {
len += format(message[len], 255-len, "%s%s ", adminnames[x], x < (count-1) ? ", ":"")
if(len > 96 ) {
print_message(user, message)
len = format(message, 255, "%s ",COLOR)
}
}
print_message(user, message)
}
else {
len += format(message[len], 255-len, "VIP игроков на сервере нет.")
print_message(user, message)
}
get_cvar_string("amx_contactinfo", contact, 63)
if(contact[0]) {
format(contactinfo, 111, "%s Свяжитесь с главным администратором сервера -- %s", COLOR, contact)
print_message(user, contactinfo)
}
}
print_message(id, msg[]) {
message_begin(MSG_ONE, gmsgSayText, {0,0,0}, id)
write_byte(id)
write_string(msg)
message_end()
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1063\\ f0\\ fs16 \n\\ par }
*/
I also attached .sma file If you needed.
thank you! :oops:
|