Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

3 страниц V  « 2 3

CS:GO Features / Kill Assists

exec1337
сообщение 9.3.2015, 12:44
Сообщение #41
Стаж: 11 лет

Сообщений: 6490
Благодарностей: 2558
Полезность: 491

Bloo, тогда какой вобще смысл в плагине, если это "воздушный фраг"?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ETO_BYLO_LETOM
сообщение 9.3.2015, 12:46
Сообщение #42


Иконка группы

Стаж: 12 лет
Город: Краснодар

Сообщений: 3391
Благодарностей: 4386
Полезность: 805

exec1337, дык просто не используй если для твоих целей не подходит.


😄
MasterServer.su прозрачнее чем твои окна дома
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bloo
сообщение 9.3.2015, 14:10
Сообщение #43


Стаж: 10 лет

Сообщений: 15547
Благодарностей: 6971
Полезность: 1206

exec1337, да никакого)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Andrey777best
сообщение 31.3.2015, 9:40
Сообщение #44


Стаж: 11 лет
Город: Харьков

Сообщений: 1191
Благодарностей: 144
Полезность: 1

Подскажите где вот это все отключить? (Также кроме этого есть вывод лучшего игрока по раду критериев: убийства, убийства в голову, установка бомбы, разминирование бомбы, убийство с гранаты, убийство с ножа.
Лучший игрок получает 1000$)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bloo
сообщение 31.3.2015, 9:42
Сообщение #45


Стаж: 10 лет

Сообщений: 15547
Благодарностей: 6971
Полезность: 1206

Andrey777best, из исходника вырезается.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Andrey777best
сообщение 31.3.2015, 9:47
Сообщение #46


Стаж: 11 лет
Город: Харьков

Сообщений: 1191
Благодарностей: 144
Полезность: 1

Это понятно, а какие строки конкретно нужно вырезать?
Код:
#include <amxmodx>
#include <hamsandwich>
#include <cstrike>
#include <csx>
#include <dhudmessage>
#include <fakemeta>
#include <engine>

#define add_bit(%1,%2) (%1 |= (1 << (%2 - 1)))
#define is_bit(%1,%2) (%1 & (1 << (%2 - 1)))
#define remove_bit(%1,%2) (%1 &= ~(1 << (%2 - 1)))

#pragma semicolon 1

#define PLUGIN "CS:GO Features" // Kill Assists, Simple MVP, Free ammo
#define VERSION "1.0.1.1"
#define AUTHOR "Sho0ter"

#define NORMAL_KILL 1.0
#define HS_KILL 1.3
#define GRENADE_KILL 1.5
#define KNIFE_KILL 2.5
#define BOMB_PLANTED 1.25
#define BOMB_DEFUSED 1.5
#define ASSIST_KILL 0.5
#define MVP_PRIZE 1000

enum any:MVP_STATS
{
Float:VALUE,
NORMAL,
HS,
bool:GRENADE,
bool:KNIFE,
bool:PLANTED,
bool:DEFUSED,
ASSIST
};

new max_bpammo[31] =
{
0,
52, //CSW_P228
0,
90, //CSW_SCOUT
1, //CSW_HEGRENADE
32, //CSW_XM1014
1, //CSW_C4
100, //CSW_MAC10
90, //CSW_AUG
1, //CSW_SMOKEGRENADE
120, //CSW_ELITE
100, //CSW_FIVESEVEN
100, //CSW_UMP45
90, //CSW_SG550
90, //CSW_GALIL
90, //CSW_FAMAS
100, //CSW_USP
120, //CSW_GLOCK18
30, //CSW_AWP
120, //CSW_MP5NAVY
200, //CSW_M249
32, //CSW_M3
90, //CSW_M4A1
120, //CSW_TMP
90, //CSW_G3SG1
2, //CSW_FLASHBANG
35, //CSW_DEAGLE
90, //CSW_SG552
90, //CSW_AK47
0, //CSW_KNIFE
100 //CSW_P90
};

new clip_size[31] =
{
0,
13, //CSW_P228
0,
10, //CSW_SCOUT
0, //CSW_HEGRENADE
7, //CSW_XM1014
0, //CSW_C4
30, //CSW_MAC10
30, //CSW_AUG
0, //CSW_SMOKEGRENADE
30, //CSW_ELITE
20, //CSW_FIVESEVEN
25, //CSW_UMP45
30, //CSW_SG550
35, //CSW_GALIL
25, //CSW_FAMAS
12, //CSW_USP
20, //CSW_GLOCK18
10, //CSW_AWP
30, //CSW_MP5NAVY
100, //CSW_M249
8, //CSW_M3
30, //CSW_M4A1
30, //CSW_TMP
20, //CSW_G3SG1
0, //CSW_FLASHBANG
7, //CSW_DEAGLE
30, //CSW_SG552
30, //CSW_AK47
0, //CSW_KNIFE
50 //CSW_P90
};

new ammo_type[31] =
{
0,
9, //CSW_P228
0,
2, //CSW_SCOUT
12, //CSW_HEGRENADE
5, //CSW_XM1014
14, //CSW_C4
6, //CSW_MAC10
4, //CSW_AUG
13, //CSW_SMOKEGRENADE
10, //CSW_ELITE
7, //CSW_FIVESEVEN
6, //CSW_UMP45
4, //CSW_SG550
4, //CSW_GALIL
4, //CSW_FAMAS
6, //CSW_USP
10, //CSW_GLOCK18
1, //CSW_AWP
10, //CSW_MP5NAVY
3, //CSW_M249
5, //CSW_M3
4, //CSW_M4A1
10, //CSW_TMP
2, //CSW_G3SG1
11, //CSW_FLASHBANG
8, //CSW_DEAGLE
4, //CSW_SG552
2, //CSW_AK47
0, //CSW_KNIFE
7 //CSW_P90
};

new ammo_name[15][] =
{
"",
"ammo_338magnum",
"ammo_762nato",
"ammo_556natobox",
"ammo_556nato",
"ammo_buckshot",
"ammo_45acp",
"ammo_57mm",
"ammo_50ae",
"ammo_357sig",
"ammo_9mm",
"",
"",
"",
""
};

new message_saytext, message_deathmsg, message_money, message_weap_pickup, last_message_id, last_message_type, maxplayers, blockinfo;
new last_message[33], last_weap_pickup[33], bought_weapon[33];
new damages[33][33], names[33][32], any:mvp[33][MVP_STATS], assists[33];

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);

message_saytext = get_user_msgid("SayText");
message_deathmsg = get_user_msgid("DeathMsg");
message_weap_pickup = get_user_msgid("WeapPickup");
message_money = get_user_msgid("Money");

register_clcmd("fullupdate", "clcmd_fullupdate");

register_message(message_deathmsg, "fwd_diemsg");

register_event("Damage", "fwd_damage", "be", "2!0", "3=0", "4!0");
register_event("DeathMsg", "fwd_die", "ae");

register_logevent("fwd_roundend", 2, "1=Round_End");

RegisterHam(Ham_Spawn, "player", "fwd_spawn", 1);

register_forward(FM_MessageBegin, "fwd_message_begin", 1);
register_forward(FM_WriteByte, "fwd_write_byte", 1);

maxplayers = get_maxplayers();

return PLUGIN_CONTINUE;
}

public fwd_roundend()
{
return set_task(0.1, "calc_mvp");
}

public calc_mvp()
{
new mvpid, Float:cmvp;
for(new id = 1; id <= maxplayers; id++)
{
if(is_user_connected(id) && mvp[id][VALUE] > 1.5 && mvp[id][VALUE] > cmvp)
{
mvpid = id;
cmvp = mvp[id][VALUE];
}
}

if(mvpid)
{
cs_set_user_money(mvpid, min(cs_get_user_money(mvpid) + MVP_PRIZE, 16000), 1);

new bool:inits;

new name[32], mvp_message[256];
get_user_name(mvpid, name, 31);
set_dhudmessage(0, 200, 0, -1.0, 0.65, 2, 6.0, 4.0, 0.01, 1.0, true);
new len = formatex(mvp_message, 256, "Лучший игрок: %s^n%d убийств.", name, mvp[mvpid][NORMAL]);
if(mvp[mvpid][HS])
{
len += formatex(mvp_message[len], 255 - len, ", %d в голову", mvp[mvpid][HS]);
}
if(mvp[mvpid][ASSIST])
{
len += formatex(mvp_message[len], 255 - len, ", %d помощи", mvp[mvpid][ASSIST]);
}
if(mvp[mvpid][GRENADE])
{
len += formatex(mvp_message[len], 255 - len, "^nубийств с гранаты");
inits = true;
}
if(mvp[mvpid][KNIFE])
{
if(!inits)
{
inits = true;
len += formatex(mvp_message[len], 255 - len, "^n с ножа");
}
else
{
len += formatex(mvp_message[len], 255 - len, ", с ножаl");
}
}
if(mvp[mvpid][PLANTED])
{
if(!inits)
{
inits = true;
len += formatex(mvp_message[len], 255 - len, "^nЗаложил бомбу");
}
else
{
len += formatex(mvp_message[len], 255 - len, ", заложил бомбу");
}
}
if(mvp[mvpid][DEFUSED])
{
if(!inits)
{
inits = true;
len += formatex(mvp_message[len], 255 - len, "^nРазминировал бомбу");
}
else
{
len += formatex(mvp_message[len], 255 - len, ", разменировал бомбу");
}
}

show_dhudmessage(0, "%s", mvp_message);
}

for(new i = 1; i <= maxplayers; i++)
{
mvp[i][VALUE] = 0.0;
mvp[i][NORMAL] = 0;
mvp[i][HS] = 0;
mvp[i][ASSIST] = 0;
mvp[i][GRENADE] = false;
mvp[i][KNIFE] = false;
mvp[i][PLANTED] = false;
mvp[i][DEFUSED] = false;
}

return PLUGIN_CONTINUE;
}

stock show_given_bpammo(id, weap_id, ammount)
{
if(ammount <= 0)
{
return PLUGIN_CONTINUE;
}

message_begin(MSG_ONE, get_user_msgid("AmmoPickup"), {0, 0, 0}, id);
write_byte(ammo_type[weap_id]);
write_byte(ammount);
return message_end();
}

public bool:fill_bpammo_show(id, weap_id)
{
new given_ammo = max_bpammo[weap_id];
if(weapon_has_ammo(weap_id))
{
given_ammo -= cs_get_user_bpammo(id, weap_id);
}
if(fill_bpammo(id, weap_id))
{
show_given_bpammo(id, weap_id, given_ammo);
return true;
}

return false;
}

public client_putinserver(id)
{
return get_user_name(id, names[id], 31);
}

public fwd_message_begin(msg_dest, msg_type, const Float:origin[3], id)
{
if(id < 1 || id > 32)
{
return FMRES_IGNORED;
}

if(msg_type == message_money && last_message[id] == message_weap_pickup)
{
new arg[2];
arg[0] = id;
arg[1] = last_weap_pickup[last_message_id];
set_task(0.1, "do_weapon_buy", _, arg, 2);
}

last_message_id = id;
last_message_type = msg_type;
last_message[id] = msg_type;

return FMRES_IGNORED;
}

public do_weapon_buy(arg[])
{
if(!is_user_connected(arg[0]))
{
return PLUGIN_CONTINUE;
}

if(fill_weapon(arg[0], arg[1]))
{
fill_bpammo_show(arg[0], arg[1]);
}

return PLUGIN_CONTINUE;
}

stock bool:weapon_has_ammo(weap_id)
{
return ammo_name[ammo_type[weap_id]][0] != 0;
}

stock bool:fill_bpammo(id, weap_id)
{
new ammo = max_bpammo[weap_id];
if(weapon_has_ammo(weap_id))
{
cs_set_user_bpammo(id, weap_id, ammo);
return true;
}

return false;
}

stock bool:fill_weapon(id, weap_id)
{
new clip_sz = clip_size[weap_id];
if(clip_sz != 0)
{
new weap_name[41];
get_weaponname(weap_id, weap_name, 40);
new wpn = find_ent_by_owner(-1, weap_name, id);
if(wpn != 0)
{
cs_set_weapon_ammo(wpn, clip_sz);
return true;
}
}

return false;
}

public fwd_write_byte(value)
{
if(last_message_type == message_weap_pickup)
{
last_weap_pickup[last_message_id] = value;
}

return FMRES_IGNORED;
}

public client_disconnect(id)
{
arrayset(damages[id], 0, 33);
assists[id] = 0;
last_message[id] = 0;
last_weap_pickup[id] = 0;
bought_weapon[id] = 0;
mvp[id][VALUE] = 0.0;
mvp[id][NORMAL] = 0;
mvp[id][HS] = 0;
mvp[id][ASSIST] = 0;
mvp[id][GRENADE] = false;
mvp[id][KNIFE] = false;
mvp[id][PLANTED] = false;
mvp[id][DEFUSED] = false;
return PLUGIN_CONTINUE;
}

public clcmd_fullupdate()
{
return PLUGIN_HANDLED;
}

public client_infochanged(id)
{
if(is_bit(blockinfo, id))
{
return PLUGIN_CONTINUE;
}

return get_user_info(id, "name", names[id], 31);
}

public fwd_spawn(id)
{
if(!is_user_alive(id))
{
return HAM_IGNORED;
}

set_task(0.1, "ammo_spawn", id);

new name[32];
get_user_name(id, name, 31);
if(!equal(name, names[id]))
{
set_msg_block(message_saytext, BLOCK_ONCE);
set_user_info(id, "name", names[id]);
}

arrayset(damages[id], 0, 33);
last_message[id] = 0;
last_weap_pickup[id] = 0;
bought_weapon[id] = 0;
mvp[id][VALUE] = 0.0;
mvp[id][NORMAL] = 0;
mvp[id][HS] = 0;
mvp[id][ASSIST] = 0;
mvp[id][GRENADE] = false;
mvp[id][KNIFE] = false;
mvp[id][PLANTED] = false;
mvp[id][DEFUSED] = false;

return HAM_IGNORED;
}

public ammo_spawn(id)
{
if(!is_user_connected(id))
{
return PLUGIN_CONTINUE;
}

new weap_ids[32], num_weaps;
get_user_weapons(id, weap_ids, num_weaps);

for(new i = 0; i < num_weaps; i++)
{
new weap_id = weap_ids[i];

if(fill_weapon(id, weap_id))
{
fill_bpammo_show(id, weap_id);
}
}

return PLUGIN_CONTINUE;
}

public fwd_damage(id)
{
if(!(1 <= id <= maxplayers))
{
return PLUGIN_CONTINUE;
}

new aid = get_user_attacker(id);

if(!(1 <= aid <= maxplayers))
{
return PLUGIN_CONTINUE;
}

if(cs_get_user_team(id) == cs_get_user_team(aid))
{
return PLUGIN_CONTINUE;
}

damages[aid][id] += read_data(2);

return PLUGIN_CONTINUE;
}

public fwd_die()
{
new vid = read_data(2);
new kid = read_data(1);
new ihs = read_data(3);

new weapon[24];
read_data(4, weapon, 23);
if(!(1 <= vid <= maxplayers))
{
do_deathmsg(kid, vid, ihs, weapon);
return PLUGIN_CONTINUE;
}

mvp[vid][VALUE] -= 0.5;

if(kid != vid)
{
if((1 <= kid <= maxplayers) && get_user_team(kid) != get_user_team(vid))
{
mvp[kid][NORMAL]++;

if(equal(weapon, "knife"))
{
mvp[kid][VALUE] += calculate_mvp(kid, KNIFE_KILL);
mvp[kid][KNIFE] = true;
}
else if(equal(weapon, "grenade"))
{
mvp[kid][VALUE] += calculate_mvp(kid, GRENADE_KILL);
mvp[kid][GRENADE] = true;
}
else if(ihs)
{
mvp[kid][VALUE] += calculate_mvp(kid, HS_KILL);
mvp[kid][HS]++;
}
else
{
mvp[kid][VALUE] += calculate_mvp(kid, NORMAL_KILL);
}
}

new assistid, maxdmg;

for(new id = 1; id <= maxplayers; id++)
{
if(id != kid && is_user_connected(id) && damages[id][vid] >= 50 && damages[id][vid] > maxdmg)
{
assistid = id;
maxdmg = damages[id][vid];
}

damages[id][vid] = 0;
}

if(assistid)
{

mvp[assistid][VALUE] += ASSIST_KILL;
mvp[assistid][ASSIST]++;

if(++assists[assistid] == 2)
{
set_pev(assistid, pev_frags, float(pev(assistid, pev_frags)) + 1.0);

assists[assistid] = 0;
}

cs_set_user_money(assistid, min(cs_get_user_money(assistid) + 150, 16000), 1);

if(!(1 <= kid <= maxplayers))
{
do_deathmsg(kid, vid, ihs, weapon);
return PLUGIN_CONTINUE;
}

new kname[32], aname[32], newnames[32], wpn[32];

if(is_user_alive(kid))
{
get_user_name(kid, kname, 31);
get_user_name(assistid, aname, 31);

copy(names[kid], 31, kname);

if((strlen(kname) + strlen(aname)) <= 29) {
formatex(newnames, 31, "%s + %s", kname, aname);
} else {
formatex(newnames, 28, "%s + %s", kname, aname);
add(newnames, 31, "...");
}

set_msg_block(message_saytext, BLOCK_ONCE);
add_bit(blockinfo, kid);

set_user_info(kid, "name", newnames);
}

if(equali(weapon, "grenade"))
{
wpn = "weapon_hegrenade";
}
else
{
formatex(wpn, 31, "weapon_%s", weapon);
}

new args[4];
args[0] = vid;
args[1] = kid;
args[2] = ihs;
args[3] = get_weaponid(wpn);

set_task(0.1, "fwd_diepost", 0, args, 4);
}
else
{
do_deathmsg(kid, vid, ihs, weapon);
}
}
else
{
do_deathmsg(kid, vid, ihs, weapon);
}

return PLUGIN_CONTINUE;
}

public fwd_diepost(arg[])
{
new weapon[24];
new kid = arg[1];

if(!is_user_connected(kid) || !is_user_connected(arg[0]))
{
return PLUGIN_CONTINUE;
}

get_weaponname(arg[3], weapon, 23);

format(weapon, 22, "%s", weapon[7]);

if(equal(weapon, "hegrenade"))
{
weapon = "grenade";
}

do_deathmsg(kid, arg[0], arg[2], weapon);

set_msg_block(message_saytext, BLOCK_ONCE);
set_user_info(kid, "name", names[kid]);
remove_bit(blockinfo, kid);

return PLUGIN_CONTINUE;
}

public bomb_planted(id)
{
mvp[id][VALUE] += calculate_mvp(id, BOMB_PLANTED);
mvp[id][PLANTED] = true;

return PLUGIN_CONTINUE;
}

public bomb_defused(id)
{
mvp[id][VALUE] += calculate_mvp(id, BOMB_DEFUSED);
mvp[id][DEFUSED] = true;

return PLUGIN_CONTINUE;
}

public fwd_diemsg()
{
return PLUGIN_HANDLED;
}

stock do_deathmsg(kid, vid, ihd, const wpn[])
{
message_begin(MSG_ALL, message_deathmsg);
write_byte(kid);
write_byte(vid);
write_byte(ihd);
write_string(wpn);
return message_end();
}

stock Float:calculate_mvp(id, Float:val)
{
new CsTeams:etm, CsTeams:itm = cs_get_user_team(id);
if(itm == CS_TEAM_CT)
{
etm = CS_TEAM_T;
}
else if(itm == CS_TEAM_T)
{
etm = CS_TEAM_CT;
}
else
{
return 0.0;
}

new icnt = 1, ecnt = 1;

for(new i = 1; i <= maxplayers; i++)
{
if(!is_user_alive(i) || i == id)
{
continue;
}

if(cs_get_user_team(i) == itm)
{
icnt++;
}
else if(cs_get_user_team(i) == etm)
{
ecnt++;
}
}

return (val * floatclamp((float(ecnt) / float(icnt)), 0.75, 1.3));
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя filip
сообщение 31.3.2015, 11:58
Сообщение #47


Стаж: 11 лет

Сообщений: 418
Благодарностей: 332
Полезность: 779

Цитата(Andrey777best @ 31.3.2015, 10:47) *
Это понятно, а какие строки конкретно нужно вырезать?

Попробуй удалить строчки 184, 196-289
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя cyber1741
сообщение 4.4.2015, 20:25
Сообщение #48


Стаж: 11 лет

Сообщений: 1473
Благодарностей: 222
Полезность: 95

с [Плагин] Nice Player Bonus. Аналог best player. работать будет нормально?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Art of fighters
сообщение 3.6.2015, 21:38
Сообщение #49


Стаж: 13 лет
Город: Санкт-Петербург


Сообщений: 242
Благодарностей: 28
Полезность: 8

Стата забивается плюсованными никами Player1+Player2 , за пару дней стата забилась 6000 ников.
Без этого никак? (Если нет , то это параша а не плагин , в топку)

Отредактировал: Art of fighters, - 3.6.2015, 21:44
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ETO_BYLO_LETOM
сообщение 3.6.2015, 21:47
Сообщение #50


Иконка группы

Стаж: 12 лет
Город: Краснодар

Сообщений: 3391
Благодарностей: 4386
Полезность: 805

Art of fighters,
значит конфликтует с каким-то из ваших плагинов/модулей.


😄
MasterServer.su прозрачнее чем твои окна дома
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bloo
сообщение 3.6.2015, 21:47
Сообщение #51


Стаж: 10 лет

Сообщений: 15547
Благодарностей: 6971
Полезность: 1206

Art of fighters, убери смену ника в плагине. Невозможно сделать указание двоих киллеров в верхнем евенте убийства (deathmsg вроде) без смены ника.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Art of fighters
сообщение 4.6.2015, 20:35
Сообщение #52


Стаж: 13 лет
Город: Санкт-Петербург


Сообщений: 242
Благодарностей: 28
Полезность: 8

Цитата(Bloo @ 3.6.2015, 21:47) *
Art of fighters, убери смену ника в плагине. Невозможно сделать указание двоих киллеров в верхнем евенте убийства (deathmsg вроде) без смены ника.

Это как?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bloo
сообщение 4.6.2015, 21:28
Сообщение #53


Стаж: 10 лет

Сообщений: 15547
Благодарностей: 6971
Полезность: 1206

Art of fighters, заменить смену ника например на HUD/DHUD сообщение в конце раунда.
Типа:
Цитата
Вы помогли Player1 убить Player2.
Ваш бонус 300$

или
Цитата
Вы помогли тиммейтам убить врага 2 раза за раунд.
Ваш бонус 600$


Сам давно задумываюсь об этой проблеме, т.к. в HLX стата игрока "засрана" этими двойными никами, что в принципе большого дискомфорта не составляет, но все равно не гуд. Другая сторона (но это еще не точно) это то, что не меняется ник игроку (amx_nick).
Ну или нужно править статистику что бы она засчитывала ник только если он стоял больше X минут/секунд.
У вас я так понял стоит стандартная статистика и учитывается она по нику, отсюда такое негодование?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя iShot
сообщение 6.12.2015, 8:42
Сообщение #54


Стаж: 9 лет 9 месяцев

Сообщений: 1340
Благодарностей: 463
Полезность: 845

Меценат Меценат

выручайте, нужно исправить ошибку
error
L 12/06/2015 - 03:15:32: Start of error session.
L 12/06/2015 - 03:15:32: Info (map "de_dust2_2x2") (file "addons/amxmodx/logs/error_20151206.log")
L 12/06/2015 - 03:15:32: Invalid weapon id 0
L 12/06/2015 - 03:15:32: [AMXX] Displaying debug trace (plugin "csgo.amxx")
L 12/06/2015 - 03:15:32: [AMXX] Run time error 10: native error (native "get_weaponname")
L 12/06/2015 - 03:15:32: [AMXX] [0] csgo.sma::fwd_diepost (line 659)
L 12/06/2015 - 04:14:46: Invalid weapon id 0
L 12/06/2015 - 04:14:46: [AMXX] Displaying debug trace (plugin "csgo.amxx")
L 12/06/2015 - 04:14:46: [AMXX] Run time error 10: native error (native "get_weaponname")
L 12/06/2015 - 04:14:46: [AMXX] [0] csgo.sma::fwd_diepost (line 659)
L 12/06/2015 - 06:04:18: Start of error session.
L 12/06/2015 - 06:04:18: Info (map "cs_mansion") (file "addons/amxmodx/logs/error_20151206.log")
L 12/06/2015 - 06:04:18: Invalid weapon id 0
L 12/06/2015 - 06:04:18: [AMXX] Displaying debug trace (plugin "csgo.amxx")
L 12/06/2015 - 06:04:18: [AMXX] Run time error 10: native error (native "get_weaponname")
L 12/06/2015 - 06:04:18: [AMXX] [0] csgo.sma::fwd_diepost (line 659)


Отредактировал: eLisha, - 6.12.2015, 12:35


улыбнись :)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя iShot
сообщение 7.12.2015, 14:58
Сообщение #55


Стаж: 9 лет 9 месяцев

Сообщений: 1340
Благодарностей: 463
Полезность: 845

Меценат Меценат

чтобы не создавать новую тему с решением выше сообщением, да и у пользователей будет уже решение, выручайте.
error
Код
L 12/06/2015 - 03:15:32: Start of error session.
L 12/06/2015 - 03:15:32: Info (map "de_dust2_2x2") (file "addons/amxmodx/logs/error_20151206.log")
L 12/06/2015 - 03:15:32: Invalid weapon id 0
L 12/06/2015 - 03:15:32: [AMXX] Displaying debug trace (plugin "csgo.amxx")
L 12/06/2015 - 03:15:32: [AMXX] Run time error 10: native error (native "get_weaponname")
L 12/06/2015 - 03:15:32: [AMXX] [0] csgo.sma::fwd_diepost (line 659)
L 12/06/2015 - 04:14:46: Invalid weapon id 0
L 12/06/2015 - 04:14:46: [AMXX] Displaying debug trace (plugin "csgo.amxx")
L 12/06/2015 - 04:14:46: [AMXX] Run time error 10: native error (native "get_weaponname")
L 12/06/2015 - 04:14:46: [AMXX] [0] csgo.sma::fwd_diepost (line 659)
L 12/06/2015 - 06:04:18: Start of error session.
L 12/06/2015 - 06:04:18: Info (map "cs_mansion") (file "addons/amxmodx/logs/error_20151206.log")
L 12/06/2015 - 06:04:18: Invalid weapon id 0
L 12/06/2015 - 06:04:18: [AMXX] Displaying debug trace (plugin "csgo.amxx")
L 12/06/2015 - 06:04:18: [AMXX] Run time error 10: native error (native "get_weaponname")
L 12/06/2015 - 06:04:18: [AMXX] [0] csgo.sma::fwd_diepost (line 659)

csgo.sma
Код:
#include <amxmodx>
#include <hamsandwich>
#include <cstrike>
#include <csx>
#include <dhudmessage>
#include <fakemeta>
#include <engine>

#define add_bit(%1,%2) (%1 |= (1 << (%2 - 1)))
#define is_bit(%1,%2) (%1 & (1 << (%2 - 1)))
#define remove_bit(%1,%2) (%1 &= ~(1 << (%2 - 1)))

#pragma semicolon 1

#define PLUGIN "CS:GO Features" // Kill Assists, Simple MVP, Free ammo
#define VERSION "1.0.1.1"
#define AUTHOR "Sho0ter"

#define NORMAL_KILL 1.0
#define HS_KILL 1.3
#define GRENADE_KILL 1.5
#define KNIFE_KILL 2.5
#define BOMB_PLANTED 1.25
#define BOMB_DEFUSED 1.5
#define ASSIST_KILL 0.5
#define MVP_PRIZE 1000

enum any:MVP_STATS
{
Float:VALUE,
NORMAL,
HS,
bool:GRENADE,
bool:KNIFE,
bool:PLANTED,
bool:DEFUSED,
ASSIST
};

new max_bpammo[31] =
{
0,
52, //CSW_P228
0,
90, //CSW_SCOUT
1, //CSW_HEGRENADE
32, //CSW_XM1014
1, //CSW_C4
100, //CSW_MAC10
90, //CSW_AUG
1, //CSW_SMOKEGRENADE
120, //CSW_ELITE
100, //CSW_FIVESEVEN
100, //CSW_UMP45
90, //CSW_SG550
90, //CSW_GALIL
90, //CSW_FAMAS
100, //CSW_USP
120, //CSW_GLOCK18
30, //CSW_AWP
120, //CSW_MP5NAVY
200, //CSW_M249
32, //CSW_M3
90, //CSW_M4A1
120, //CSW_TMP
90, //CSW_G3SG1
2, //CSW_FLASHBANG
35, //CSW_DEAGLE
90, //CSW_SG552
90, //CSW_AK47
0, //CSW_KNIFE
100 //CSW_P90
};

new clip_size[31] =
{
0,
13, //CSW_P228
0,
10, //CSW_SCOUT
0, //CSW_HEGRENADE
7, //CSW_XM1014
0, //CSW_C4
30, //CSW_MAC10
30, //CSW_AUG
0, //CSW_SMOKEGRENADE
30, //CSW_ELITE
20, //CSW_FIVESEVEN
25, //CSW_UMP45
30, //CSW_SG550
35, //CSW_GALIL
25, //CSW_FAMAS
12, //CSW_USP
20, //CSW_GLOCK18
10, //CSW_AWP
30, //CSW_MP5NAVY
100, //CSW_M249
8, //CSW_M3
30, //CSW_M4A1
30, //CSW_TMP
20, //CSW_G3SG1
0, //CSW_FLASHBANG
7, //CSW_DEAGLE
30, //CSW_SG552
30, //CSW_AK47
0, //CSW_KNIFE
50 //CSW_P90
};

new ammo_type[31] =
{
0,
9, //CSW_P228
0,
2, //CSW_SCOUT
12, //CSW_HEGRENADE
5, //CSW_XM1014
14, //CSW_C4
6, //CSW_MAC10
4, //CSW_AUG
13, //CSW_SMOKEGRENADE
10, //CSW_ELITE
7, //CSW_FIVESEVEN
6, //CSW_UMP45
4, //CSW_SG550
4, //CSW_GALIL
4, //CSW_FAMAS
6, //CSW_USP
10, //CSW_GLOCK18
1, //CSW_AWP
10, //CSW_MP5NAVY
3, //CSW_M249
5, //CSW_M3
4, //CSW_M4A1
10, //CSW_TMP
2, //CSW_G3SG1
11, //CSW_FLASHBANG
8, //CSW_DEAGLE
4, //CSW_SG552
2, //CSW_AK47
0, //CSW_KNIFE
7 //CSW_P90
};

new ammo_name[15][] =
{
"",
"ammo_338magnum",
"ammo_762nato",
"ammo_556natobox",
"ammo_556nato",
"ammo_buckshot",
"ammo_45acp",
"ammo_57mm",
"ammo_50ae",
"ammo_357sig",
"ammo_9mm",
"",
"",
"",
""
};

new message_saytext, message_deathmsg, message_money, message_weap_pickup, last_message_id, last_message_type, maxplayers, blockinfo;
new last_message[33], last_weap_pickup[33], bought_weapon[33];
new damages[33][33], names[33][32], any:mvp[33][MVP_STATS], assists[33];

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);

message_saytext = get_user_msgid("SayText");
message_deathmsg = get_user_msgid("DeathMsg");
message_weap_pickup = get_user_msgid("WeapPickup");
message_money = get_user_msgid("Money");

register_clcmd("fullupdate", "clcmd_fullupdate");

register_message(message_deathmsg, "fwd_diemsg");

register_event("Damage", "fwd_damage", "be", "2!0", "3=0", "4!0");
register_event("DeathMsg", "fwd_die", "ae");

register_logevent("fwd_roundend", 2, "1=Round_End");

RegisterHam(Ham_Spawn, "player", "fwd_spawn", 1);

register_forward(FM_MessageBegin, "fwd_message_begin", 1);
register_forward(FM_WriteByte, "fwd_write_byte", 1);

maxplayers = get_maxplayers();

return PLUGIN_CONTINUE;
}

public fwd_roundend()
{
return set_task(0.1, "calc_mvp");
}

public calc_mvp()
{
new mvpid, Float:cmvp;
for(new id = 1; id <= maxplayers; id++)
{
if(is_user_connected(id) && mvp[id][VALUE] > 1.5 && mvp[id][VALUE] > cmvp)
{
mvpid = id;
cmvp = mvp[id][VALUE];
}
}

if(mvpid)
{
cs_set_user_money(mvpid, min(cs_get_user_money(mvpid) + MVP_PRIZE, 16000), 1);

new bool:inits;

new name[32], mvp_message[256];
get_user_name(mvpid, name, 31);
set_dhudmessage(0, 200, 0, -1.0, 0.65, 2, 6.0, 4.0, 0.01, 1.0, true);
new len = formatex(mvp_message, 256, "Лучший игрок: %s^n%d убийств.", name, mvp[mvpid][NORMAL]);
if(mvp[mvpid][HS])
{
len += formatex(mvp_message[len], 255 - len, ", %d в голову", mvp[mvpid][HS]);
}
if(mvp[mvpid][ASSIST])
{
len += formatex(mvp_message[len], 255 - len, ", %d помощи", mvp[mvpid][ASSIST]);
}
if(mvp[mvpid][GRENADE])
{
len += formatex(mvp_message[len], 255 - len, "^nубийств с гранаты");
inits = true;
}
if(mvp[mvpid][KNIFE])
{
if(!inits)
{
inits = true;
len += formatex(mvp_message[len], 255 - len, "^n с ножа");
}
else
{
len += formatex(mvp_message[len], 255 - len, ", с ножаl");
}
}
if(mvp[mvpid][PLANTED])
{
if(!inits)
{
inits = true;
len += formatex(mvp_message[len], 255 - len, "^nЗаложил бомбу");
}
else
{
len += formatex(mvp_message[len], 255 - len, ", заложил бомбу");
}
}
if(mvp[mvpid][DEFUSED])
{
if(!inits)
{
inits = true;
len += formatex(mvp_message[len], 255 - len, "^nРазминировал бомбу");
}
else
{
len += formatex(mvp_message[len], 255 - len, ", разменировал бомбу");
}
}

show_dhudmessage(0, "%s", mvp_message);
}

for(new i = 1; i <= maxplayers; i++)
{
mvp[i][VALUE] = 0.0;
mvp[i][NORMAL] = 0;
mvp[i][HS] = 0;
mvp[i][ASSIST] = 0;
mvp[i][GRENADE] = false;
mvp[i][KNIFE] = false;
mvp[i][PLANTED] = false;
mvp[i][DEFUSED] = false;
}

return PLUGIN_CONTINUE;
}

stock show_given_bpammo(id, weap_id, ammount)
{
if(ammount <= 0)
{
return PLUGIN_CONTINUE;
}

message_begin(MSG_ONE, get_user_msgid("AmmoPickup"), {0, 0, 0}, id);
write_byte(ammo_type[weap_id]);
write_byte(ammount);
return message_end();
}

public bool:fill_bpammo_show(id, weap_id)
{
new given_ammo = max_bpammo[weap_id];
if(weapon_has_ammo(weap_id))
{
given_ammo -= cs_get_user_bpammo(id, weap_id);
}
if(fill_bpammo(id, weap_id))
{
show_given_bpammo(id, weap_id, given_ammo);
return true;
}

return false;
}

public client_putinserver(id)
{
return get_user_name(id, names[id], 31);
}

public fwd_message_begin(msg_dest, msg_type, const Float:origin[3], id)
{
if(id < 1 || id > 32)
{
return FMRES_IGNORED;
}

if(msg_type == message_money && last_message[id] == message_weap_pickup)
{
new arg[2];
arg[0] = id;
arg[1] = last_weap_pickup[last_message_id];
set_task(0.1, "do_weapon_buy", _, arg, 2);
}

last_message_id = id;
last_message_type = msg_type;
last_message[id] = msg_type;

return FMRES_IGNORED;
}

public do_weapon_buy(arg[])
{
if(!is_user_connected(arg[0]))
{
return PLUGIN_CONTINUE;
}

if(fill_weapon(arg[0], arg[1]))
{
fill_bpammo_show(arg[0], arg[1]);
}

return PLUGIN_CONTINUE;
}

stock bool:weapon_has_ammo(weap_id)
{
return ammo_name[ammo_type[weap_id]][0] != 0;
}

stock bool:fill_bpammo(id, weap_id)
{
new ammo = max_bpammo[weap_id];
if(weapon_has_ammo(weap_id))
{
cs_set_user_bpammo(id, weap_id, ammo);
return true;
}

return false;
}

stock bool:fill_weapon(id, weap_id)
{
new clip_sz = clip_size[weap_id];
if(clip_sz != 0)
{
new weap_name[41];
get_weaponname(weap_id, weap_name, 40);
new wpn = find_ent_by_owner(-1, weap_name, id);
if(wpn != 0)
{
cs_set_weapon_ammo(wpn, clip_sz);
return true;
}
}

return false;
}

public fwd_write_byte(value)
{
if(last_message_type == message_weap_pickup)
{
last_weap_pickup[last_message_id] = value;
}

return FMRES_IGNORED;
}

public client_disconnect(id)
{
arrayset(damages[id], 0, 33);
assists[id] = 0;
last_message[id] = 0;
last_weap_pickup[id] = 0;
bought_weapon[id] = 0;
mvp[id][VALUE] = 0.0;
mvp[id][NORMAL] = 0;
mvp[id][HS] = 0;
mvp[id][ASSIST] = 0;
mvp[id][GRENADE] = false;
mvp[id][KNIFE] = false;
mvp[id][PLANTED] = false;
mvp[id][DEFUSED] = false;
return PLUGIN_CONTINUE;
}

public clcmd_fullupdate()
{
return PLUGIN_HANDLED;
}

public client_infochanged(id)
{
if(is_bit(blockinfo, id))
{
return PLUGIN_CONTINUE;
}

return get_user_info(id, "name", names[id], 31);
}

public fwd_spawn(id)
{
if(!is_user_alive(id))
{
return HAM_IGNORED;
}

set_task(0.1, "ammo_spawn", id);

new name[32];
get_user_name(id, name, 31);
if(!equal(name, names[id]))
{
set_msg_block(message_saytext, BLOCK_ONCE);
set_user_info(id, "name", names[id]);
}

arrayset(damages[id], 0, 33);
last_message[id] = 0;
last_weap_pickup[id] = 0;
bought_weapon[id] = 0;
mvp[id][VALUE] = 0.0;
mvp[id][NORMAL] = 0;
mvp[id][HS] = 0;
mvp[id][ASSIST] = 0;
mvp[id][GRENADE] = false;
mvp[id][KNIFE] = false;
mvp[id][PLANTED] = false;
mvp[id][DEFUSED] = false;

return HAM_IGNORED;
}

public ammo_spawn(id)
{
if(!is_user_connected(id))
{
return PLUGIN_CONTINUE;
}

new weap_ids[32], num_weaps;
get_user_weapons(id, weap_ids, num_weaps);

for(new i = 0; i < num_weaps; i++)
{
new weap_id = weap_ids[i];

if(fill_weapon(id, weap_id))
{
fill_bpammo_show(id, weap_id);
}
}

return PLUGIN_CONTINUE;
}

public fwd_damage(id)
{
if(!(1 <= id <= maxplayers))
{
return PLUGIN_CONTINUE;
}

new aid = get_user_attacker(id);

if(!(1 <= aid <= maxplayers))
{
return PLUGIN_CONTINUE;
}

if(cs_get_user_team(id) == cs_get_user_team(aid))
{
return PLUGIN_CONTINUE;
}

damages[aid][id] += read_data(2);

return PLUGIN_CONTINUE;
}

public fwd_die()
{
new vid = read_data(2);
new kid = read_data(1);
new ihs = read_data(3);

new weapon[24];
read_data(4, weapon, 23);
if(!(1 <= vid <= maxplayers))
{
do_deathmsg(kid, vid, ihs, weapon);
return PLUGIN_CONTINUE;
}

mvp[vid][VALUE] -= 0.5;

if(kid != vid)
{
if((1 <= kid <= maxplayers) && get_user_team(kid) != get_user_team(vid))
{
mvp[kid][NORMAL]++;

if(equal(weapon, "knife"))
{
mvp[kid][VALUE] += calculate_mvp(kid, KNIFE_KILL);
mvp[kid][KNIFE] = true;
}
else if(equal(weapon, "grenade"))
{
mvp[kid][VALUE] += calculate_mvp(kid, GRENADE_KILL);
mvp[kid][GRENADE] = true;
}
else if(ihs)
{
mvp[kid][VALUE] += calculate_mvp(kid, HS_KILL);
mvp[kid][HS]++;
}
else
{
mvp[kid][VALUE] += calculate_mvp(kid, NORMAL_KILL);
}
}

new assistid, maxdmg;

for(new id = 1; id <= maxplayers; id++)
{
if(id != kid && is_user_connected(id) && damages[id][vid] >= 50 && damages[id][vid] > maxdmg)
{
assistid = id;
maxdmg = damages[id][vid];
}

damages[id][vid] = 0;
}

if(assistid)
{

mvp[assistid][VALUE] += ASSIST_KILL;
mvp[assistid][ASSIST]++;

if(++assists[assistid] == 2)
{
set_pev(assistid, pev_frags, float(pev(assistid, pev_frags)) + 1.0);

assists[assistid] = 0;
}

cs_set_user_money(assistid, min(cs_get_user_money(assistid) + 150, 16000), 1);

if(!(1 <= kid <= maxplayers))
{
do_deathmsg(kid, vid, ihs, weapon);
return PLUGIN_CONTINUE;
}

new kname[32], aname[32], newnames[32], wpn[32];

if(is_user_alive(kid))
{
get_user_name(kid, kname, 31);
get_user_name(assistid, aname, 31);

copy(names[kid], 31, kname);

if((strlen(kname) + strlen(aname)) <= 29) {
formatex(newnames, 31, "%s + %s", kname, aname);
} else {
formatex(newnames, 28, "%s + %s", kname, aname);
add(newnames, 31, "...");
}

set_msg_block(message_saytext, BLOCK_ONCE);
add_bit(blockinfo, kid);

set_user_info(kid, "name", newnames);
}

if(equali(weapon, "grenade"))
{
wpn = "weapon_hegrenade";
}
else
{
formatex(wpn, 31, "weapon_%s", weapon);
}

new args[4];
args[0] = vid;
args[1] = kid;
args[2] = ihs;
args[3] = get_weaponid(wpn);

set_task(0.1, "fwd_diepost", 0, args, 4);
}
else
{
do_deathmsg(kid, vid, ihs, weapon);
}
}
else
{
do_deathmsg(kid, vid, ihs, weapon);
}

return PLUGIN_CONTINUE;
}

public fwd_diepost(arg[])
{
new weapon[24];
new kid = arg[1];

if(!is_user_connected(kid) || !is_user_connected(arg[0]))
{
return PLUGIN_CONTINUE;
}

get_weaponname(arg[3], weapon, 23);

format(weapon, 22, "%s", weapon[7]);

if(equal(weapon, "hegrenade"))
{
weapon = "grenade";
}

do_deathmsg(kid, arg[0], arg[2], weapon);

set_msg_block(message_saytext, BLOCK_ONCE);
set_user_info(kid, "name", names[kid]);
remove_bit(blockinfo, kid);

return PLUGIN_CONTINUE;
}

public bomb_planted(id)
{
mvp[id][VALUE] += calculate_mvp(id, BOMB_PLANTED);
mvp[id][PLANTED] = true;

return PLUGIN_CONTINUE;
}

public bomb_defused(id)
{
mvp[id][VALUE] += calculate_mvp(id, BOMB_DEFUSED);
mvp[id][DEFUSED] = true;

return PLUGIN_CONTINUE;
}

public fwd_diemsg()
{
return PLUGIN_HANDLED;
}

stock do_deathmsg(kid, vid, ihd, const wpn[])
{
message_begin(MSG_ALL, message_deathmsg);
write_byte(kid);
write_byte(vid);
write_byte(ihd);
write_string(wpn);
return message_end();
}

stock Float:calculate_mvp(id, Float:val)
{
new CsTeams:etm, CsTeams:itm = cs_get_user_team(id);
if(itm == CS_TEAM_CT)
{
etm = CS_TEAM_T;
}
else if(itm == CS_TEAM_T)
{
etm = CS_TEAM_CT;
}
else
{
return 0.0;
}

new icnt = 1, ecnt = 1;

for(new i = 1; i <= maxplayers; i++)
{
if(!is_user_alive(i) || i == id)
{
continue;
}

if(cs_get_user_team(i) == itm)
{
icnt++;
}
else if(cs_get_user_team(i) == etm)
{
ecnt++;
}
}

return (val * floatclamp((float(ecnt) / float(icnt)), 0.75, 1.3));
}


Отредактировал: eLisha, - 7.12.2015, 15:04


улыбнись :)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя v1rus
сообщение 22.1.2016, 12:12
Сообщение #56
Стаж: 9 лет 8 месяцев

Сообщений: 14
Благодарностей: 1
Полезность: 0

Можете .amxx залить?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
3 страниц V  « 2 3
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: