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

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

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

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

nice_player_bonus.sma с третьего раунда.

Статус пользователя qpi3ik
сообщение 26.9.2015, 19:53
Сообщение #1


Стаж: 12 лет

Сообщений: 621
Благодарностей: 78
Полезность: 12

Доброе время суток!
Помогите с плагином BEST PLAYER PRIVATE от DUKKHAZ0R
Плагин выдает бонус за лучшего игрока за раунд.
Но баг его в том что он может выдать AWP во втором раунде.
Нужно что бы плагин начинал роботать с третьего раунда.
Заранее спасибо)

Вот исходник:

#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <fakemeta_util>

#pragma semicolon 1

const PRIMARY_WEAPONS_BIT_SUM =
(1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<
CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90);
const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE);

enum _:WEAPON_DATA_SIZE
{
sz_DataName[32],
sz_DataItem[24],
i_Index,
i_DataAmmo
};

new g_szWeaponData[][WEAPON_DATA_SIZE] =
{
{"AK47", "weapon_ak47", CSW_AK47, 90},
{"M4A1", "weapon_m4a1", CSW_M4A1, 90},
{"AWP", "weapon_awp", CSW_AWP, 30},
{"SCOUT", "weapon_scout", CSW_SCOUT, 90},
{"M249", "weapon_m249", CSW_M249, 200},
{"GALIL", "weapon_galil", CSW_GALIL, 90},
{"DEAGLE", "weapon_deagle", CSW_DEAGLE, 35}
};

new g_iBestPlayer, g_szBestPlayerName[32], Float:g_fDamage[33];
new g_iRoundCounter, g_iRandomPrice, g_pCvarRoundAccess, g_pCvarMinPlayers;

public plugin_init()
{
#define VERSION "1.7"
register_plugin("BEST PLAYER PRIVATE", VERSION, "DUKKHAZ0R");
register_cvar("nice_player_bonus", VERSION, FCVAR_SERVER | FCVAR_SPONLY);

RegisterHam(Ham_Spawn, "player", "fw_HamSpawn_Post", true);
RegisterHam(Ham_TakeDamage, "player", "fw_HamTakeDamage_Pre", false);

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

register_event("TextMsg", "eRestart", "a", "2&#Game_C", "2&#Game_w");
register_event("HLTV", "eRoundStart", "a", "1=0", "2=0");

register_menucmd(register_menuid("BonusMenu"), MENU_KEY_4|MENU_KEY_6, "MenuHandler");

g_pCvarRoundAccess = register_cvar("bp_round_access", "3");
g_pCvarMinPlayers = register_cvar("bp_minplayers", "5");

new szMapName[32], szMapPrefix[][] = {"aim_", "fy_", "knife_", "35hp_", "deathrun_"};
get_mapname(szMapName, charsmax(szMapName));

for(new i; i < sizeof szMapPrefix; i++) {
if(containi(szMapName, szMapPrefix[i]) != -1) {
pause("ad");
break;
}
}
}

public client_disconnect(id)
g_fDamage[id] = 0.0;

public client_connect(id)
g_fDamage[id] = 0.0;

public fw_HamTakeDamage_Pre(pVictim, iInflictor, pAttacker, Float:fDamage, damagebits)
{
if(fm_get_user_team(pVictim) != fm_get_user_team(pAttacker) && pAttacker != pVictim)
g_fDamage[pAttacker] += fDamage;
}

public eRestart()
g_iRoundCounter = 0;

public eRoundStart()
{
static i, apPlayers[32], iPlayers, pPlayer;
get_players(apPlayers, iPlayers, "ch");
for(i = 0; i < iPlayers; i++)
{
pPlayer = apPlayers[i];
g_fDamage[pPlayer] = 0.0;
}
}

public eEndRound()
{
if(++g_iRoundCounter < get_pcvar_num(g_pCvarRoundAccess) || get_playersnum() < get_pcvar_num(g_pCvarMinPlayers))
return;

static i, apPlayers[32], iPlayers, pPlayer, Float:fBestPlayerDamage;
get_players(apPlayers, iPlayers, "ch");

fBestPlayerDamage = 0.0;

for(i = 0; i < iPlayers; i++)
{
pPlayer = apPlayers[i];

if(g_fDamage[pPlayer] && g_fDamage[pPlayer] > fBestPlayerDamage)
{
g_iBestPlayer = pPlayer;
fBestPlayerDamage = g_fDamage[pPlayer];
}
}

if(g_iBestPlayer)
{
get_user_name(g_iBestPlayer, g_szBestPlayerName, charsmax(g_szBestPlayerName));
ChatColor(0, "^1[^4Бонус^1] Отлично! Лучший результат за прошлый раунд: <<^4%s^1>> [^3%d урона^1]", g_szBestPlayerName, floatround(g_fDamage[g_iBestPlayer]));
}
}

public fw_HamSpawn_Post(const id)
{
if(is_user_alive(id) && g_iBestPlayer == id && !(get_user_flags(id) & ADMIN_LEVEL_H) )
ShowBonusMenu(id);
}

public ShowBonusMenu(const id)
{
static iLen, szMenu[512]; g_iRandomPrice = random(7);

switch(g_iRandomPrice)
{
case 7: iLen = formatex(szMenu, charsmax(szMenu), "\wВаш приз: \rАрмор + все гранаты^n\dВзять свой приз?^n^n");
default: iLen = formatex(szMenu, charsmax(szMenu), "\wВаш приз: \r%s^n\dВзять свой приз?^n^n", g_szWeaponData[g_iRandomPrice][sz_DataName]);
}
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r4.\wПолучить приз^n");
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r6.\wОтказаться от приза^n^n");

iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r0.\wВыход");

show_menu(id, MENU_KEY_4|MENU_KEY_6, szMenu, -1, "BonusMenu");
}

public MenuHandler(const id, const iKey)
{
switch(iKey)
{
case 3:
{
switch(g_iRandomPrice)
{
case 7:
{
ChatColor(0, "^1[^4Бонус^1] Поздравляем! <<^3%s^1>> выиграл ^4армор + все гранаты^1 за лучший результ.", g_szBestPlayerName);
equipment_player(id);

return;
}
case 6: drop_weapons(id, 2);
default: drop_weapons(id, 1);
}

fm_give_item(id, g_szWeaponData[g_iRandomPrice][sz_DataItem]);
fm_set_user_bpammo(id, g_szWeaponData[g_iRandomPrice][i_Index], g_szWeaponData[g_iRandomPrice][i_DataAmmo]);
ChatColor(0, "^1[^4Бонус^1] Поздравляем! <<^4%s^1>> выиграл ^4%s^1 за лучший результ.", g_szBestPlayerName, g_szWeaponData[g_iRandomPrice][sz_DataName]);
}
case 5: ChatColor(0, "^1[^4Бонус^1] Странно, что ^4%s^1 отказался от приза.", g_szBestPlayerName );
}
}

stock equipment_player(const id)
{
fm_give_item(id, "weapon_hegrenade");
fm_give_item(id, "weapon_flashbang");
fm_give_item(id, "weapon_flashbang");
fm_give_item(id, "weapon_smokegrenade");

fm_set_user_armor(id, 100);
}

stock drop_weapons(id, dropwhat)
{
static weapons[32], num, i, weaponid;
num = 0;
get_user_weapons(id, weapons, num);

for (i = 0; i < num; i++)
{
weaponid = weapons[i];

if ((dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM)))
{
static wname[32];
get_weaponname(weaponid, wname, sizeof wname - 1);
engclient_cmd(id, "drop", wname);
}
}
}

stock fm_get_user_team(const pPlayer)
{
#define OFFSET_TEAM 114
return get_pdata_int(pPlayer, OFFSET_TEAM, 5);
}

stock fm_set_user_bpammo(const pPlayer, iWeaponId, iAmount)
{
new iOffset;

switch(iWeaponId)
{
case CSW_AWP: iOffset = 377;
case CSW_SCOUT, CSW_AK47, CSW_G3SG1: iOffset = 378;
case CSW_M249: iOffset = 379;
case CSW_FAMAS, CSW_M4A1, CSW_AUG, CSW_SG550, CSW_GALIL, CSW_SG552: iOffset = 380;
case CSW_M3, CSW_XM1014: iOffset = 381;
case CSW_USP, CSW_UMP45, CSW_MAC10: iOffset = 382;
case CSW_FIVESEVEN, CSW_P90: iOffset = 383;
case CSW_DEAGLE: iOffset = 384;
case CSW_P228: iOffset = 385;
case CSW_GLOCK18, CSW_MP5NAVY, CSW_TMP, CSW_ELITE: iOffset = 386;
case CSW_FLASHBANG: iOffset = 387;
case CSW_HEGRENADE: iOffset = 388;
case CSW_SMOKEGRENADE: iOffset = 389;
case CSW_C4: iOffset = 390;
default: return;
}
set_pdata_int(pPlayer, iOffset, iAmount, 5);
}

stock ChatColor(const id, const input[], any:...)
{
static msg[191], players[32], count; count = 1;
vformat(msg, 190, input, 3);
replace_all(msg, 190, "!g", "^4");
replace_all(msg, 190, "!y", "^1");
replace_all(msg, 190, "!t", "^3");
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, 76, _, players[i]);
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}


Прикрепленные файлы:
Прикрепленный файл  nice_player_bonus.sma ( 7,53 килобайт ) Кол-во скачиваний: 8
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя ThisIsSparta
сообщение 26.9.2015, 20:32
Сообщение #2
Стаж: 11 лет

Сообщений: 566
Благодарностей: 307
Полезность: 600

qpi3ik,

Код:

//строка 93-94 замени < на <=
if(++g_iRoundCounter <= get_pcvar_num(g_pCvarRoundAccess) || get_playersnum() < get_pcvar_num(g_pCvarMinPlayers))
return;


//либо строка 51 увеличь значение квара
g_pCvarRoundAccess = register_cvar("bp_round_access", "4");
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: