Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.
Модераторы: Subb98, liFe iS GoOD
Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.
В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.
Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.
BESPERSPEKTIBN9AK » 22 янв 2023, 17:13
Логов с ошибками нету.. Не знаю почему не работает
- Код: Выделить всё
enum _:eVipType { Null = 0, ViP, ViPGold };
enum _:eGoldList{ Knife = 0, Deagle, Awp, Scout, Ak47, M4A1 };
new szGoldV[eGoldList][32] =
{
"models/v_knife.mdl",
"models/v_deagle.mdl",
"models/weaponsVIP/v_awp.mdl",
"models/weaponsVIP/v_ak47.mdl",
"models/weaponsVIP/v_scout.mdl",
"models/weaponsVIP/v_m4a1.mdl"
};
new szGoldP[eGoldList][32] =
{
"models/p_knife.mdl",
"models/p_deagle.mdl",
"models/p_awp.mdl",
"models/p_ak47.mdl",
"models/p_scout.mdl",
"models/p_m4a1.mdl"
};
new szGoldW[eGoldList][32] =
{
"",
"models/w_deagle.mdl",
"models/w_awp.mdl",
"models/w_ak47.mdl",
"models/w_scout.mdl",
"models/w_m4a1.mdl"
};
enum _:eKeyGold{
_Deagle = 36895,
_Awp,
_Scout,
_Ak47,
_M4A1
};
new iRoundNum, iVipFlag[33];
public plugin_precache()
{
for(new i = 0; i < sizeof(szGoldV); i++) if (szGoldV[i][0]) precache_model(szGoldV[i]);
for(new i = 0; i < sizeof(szGoldP); i++) if (szGoldP[i][0]) precache_model(szGoldP[i]);
for(new i = 0; i < sizeof(szGoldW); i++) if (szGoldW[i][0]) precache_model(szGoldW[i]);
}
public plugin_init()
{
register_plugin("AUTHOR", "VERSION", "PLUGIN");
register_menucmd(register_menuid("Show_VipMenu"), 1023, "Handle_VipMenu");
register_clcmd("say /vipmenu", "Show_VipMenu");
RegisterHam(Ham_Item_Deploy, "weapon_knife", "HamHook_Knife_Deploy", true);
RegisterHam(Ham_Item_Deploy, "weapon_ak47", "HamHook_Item_Deploy", true);
RegisterHam(Ham_Item_Deploy, "weapon_awp", "HamHook_Item_Deploy", true);
RegisterHam(Ham_Item_Deploy, "weapon_m4a1", "HamHook_Item_Deploy", true);
RegisterHam(Ham_Item_Deploy, "weapon_scout", "HamHook_Item_Deploy", true);
RegisterHam(Ham_Item_Deploy, "weapon_deagle","HamHook_Item_Deploy", true);
RegisterHam(Ham_Touch, "weapon_ak47", "HamHook_Item_AttachToPlayer", false);
RegisterHam(Ham_Touch, "weapon_m4a1", "HamHook_Item_AttachToPlayer", false);
RegisterHam(Ham_Touch, "weapon_scout", "HamHook_Item_AttachToPlayer", false);
RegisterHam(Ham_Touch, "weapon_awp", "HamHook_Item_AttachToPlayer", false);
RegisterHam(Ham_Touch, "weapon_deagle","HamHook_Item_AttachToPlayer", false);
RegisterHam(Ham_TraceAttack, "func_breakable", "HamHook_Entity_TraceAttack", false);
RegisterHam(Ham_TraceAttack, "hostage_entity", "HamHook_Entity_TraceAttack", false);
RegisterHam(Ham_TraceAttack, "info_target", "HamHook_Entity_TraceAttack", false);
RegisterHam(Ham_TraceAttack, "player", "HamHook_Entity_TraceAttack", false);
register_event("TextMsg", "Event_RoundRestart", "a", "2&#Game_C", "2&#Game_w");
register_event("HLTV", "Event_RoundStart", "a", "1=0", "2=0");
register_forward(FM_SetModel, "Fakemeta_SetModel")
}
public Show_VipMenu(id)
{
if (!is_user_alive(id) || iVipFlag[id] <= Null)
return PLUGIN_HANDLED;
if (iRoundNum < MinRoundToOpenMenu)
{
UtilChatColor(id, "!g[!yViP!g] !yМеню не доступно. Жди ещё !team%i !yраунд", MinRoundToOpenMenu - iRoundNum);
return PLUGIN_HANDLED;
}
static szMenu[512], iLen;
iLen = formatex(szMenu, charsmax(szMenu), "\r[\wMA\r] VIP меню^n^n");
if (iVipFlag[id] == ViPGold)
{
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[\w1\r] \dВзять AK47^n");
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[\w2\r] \dВзять Scout^n");
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[\w3\r] \dВзять M4A1^n");
if(iRoundNum < AWP_LIMIT)
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[\w4\r] \dВзять AWP \r[c %d раунда]^n", AWP_LIMIT);
else
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[\w4\r] \wВзять AWP^n");
}
formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\r[\w0\r] \wВыход");
set_pdata_int(id, 205, 0);
show_menu(id, 1023, szMenu, -1, "Vip Menu");
return PLUGIN_HANDLED;
}
public Handle_VipMenu(id, iKey)
{
if (!is_user_alive(id))
return PLUGIN_HANDLED;
new iNewKey = iKey + 1;
static szWeaponName[][] = { "", "Gold AK", "Gold Scout", "Gold M4", "Gold AWP" };
static szChoosedWP[][] = { "", "weapon_ak47", "weapon_scout", "weapon_m4a1", "weapon_awp" };
static szChoosedBP[] = { 0, 90, 90, 90, 30 };
static iGoldKey[] = { 0, _Ak47, _Scout, _M4A1, _Awp };
static iRoundLimit[] = { 0, AWP_LIMIT };
switch (iNewKey)
{
case 1..3: give_item_ex2(id, szChoosedWP[iNewKey], szChoosedBP[iNewKey], true);
case 4..6:
{
if (iRoundNum < iRoundLimit[iNewKey - 3])
{
UtilChatColor(id, "!g[!yViP!g] !yДоступно только с !g%i !yраунда", iRoundLimit[iNewKey - 3]);
return PLUGIN_HANDLED;
}
else
{
give_item_ex2(id, szChoosedWP[iNewKey - 3], szChoosedBP[iNewKey - 3], true, iGoldKey[iNewKey - 3]);
}
}
default: return PLUGIN_HANDLED;
}
UtilChatColor(id, "!g[!yViP!g] !yВы получили: !g[!team%s!g]", szWeaponName[iNewKey]);
return PLUGIN_HANDLED;
}
public HamHook_Item_Deploy(const iItem)
{
if (pev_valid(iItem) != 2)
return HAM_IGNORED;
new iIndex = 0;
switch(pev(iItem, pev_impulse))
{
case _Ak47: iIndex = Ak47;
case _Awp: iIndex = Awp;
case _M4A1: iIndex = M4A1;
case _Scout: iIndex = Scout;
case _Deagle: iIndex = Deagle;
default: return HAM_IGNORED;
}
if (iIndex)
{
new iPlayer = get_pdata_cbase(iItem, 41, 4);
set_pev(iPlayer, pev_viewmodel2, szGoldV[ iIndex ]);
set_pev(iPlayer, pev_weaponmodel2, szGoldP[ iIndex ]);
}
return HAM_IGNORED;
}
public HamHook_Entity_TraceAttack(const iEntity, const iAttacker, Float:flDamage)
{
if (!is_user_alive(iAttacker) || !pev_valid(iEntity))
return HAM_IGNORED;
new iItem = get_pdata_cbase(iAttacker, 373, 5);
if (!pev_valid(iItem)) return HAM_IGNORED;
new Float:iIndex;
switch(pev(iItem, pev_impulse))
{
case _Ak47: iIndex = Damage_Ak4;
case _Awp: iIndex = Damage_Awp;
case _M4A1: iIndex = Damage_M4A1;
case _Scout: iIndex = Damage_Scout;
case _Deagle: iIndex = Damage_Deagle;
default: return HAM_IGNORED;
}
if (iIndex) SetHamParamFloat(3, flDamage * iIndex);
return HAM_IGNORED;
}
public HamHook_Player_Spawn(const iPlayer)
{
if (!is_user_alive(iPlayer) || is_user_bot(iPlayer))
return HAM_IGNORED;
if (iVipFlag[iPlayer] <= Null)
return HAM_IGNORED;
give_item_ex2(iPlayer, "weapon_hegrenade", 1);
give_item_ex2(iPlayer, "weapon_flashbang", 2);
give_item_ex2(iPlayer, "weapon_smokegrenade", 1);
if (!user_has_weapon(iPlayer, CSW_DEAGLE))
{
give_item_ex2(iPlayer, "weapon_deagle", 35, true, (iVipFlag[iPlayer] == ViPGold) ? _Deagle : Null);
}
cs_set_user_armor(iPlayer, 100, CS_ARMOR_VESTHELM);
return HAM_IGNORED;
}
public HamHook_Item_AttachToPlayer(const iItem, const iPlayer)
{
if (!pev_valid(iItem))
return HAM_IGNORED;
switch(pev(iItem, pev_impulse))
{
case _Deagle.._M4A1:
{
if (iVipFlag[iPlayer] != ViPGold)
return HAM_SUPERCEDE;
}
default: return HAM_IGNORED;
}
return HAM_IGNORED;
}
public Event_RoundRestart() iRoundNum = 0;
public Event_RoundStart() iRoundNum++;
public Fakemeta_SetModel(const iEntity, szModel[])
{
if(!pev_valid(iEntity))
return FMRES_IGNORED;
new szClassName[32];
pev(iEntity, pev_classname, szClassName, charsmax(szClassName));
if (!equali(szClassName, "weaponbox"))
return FMRES_IGNORED;
for(new iSlot, iWeapon, iIndex; iSlot < 6; iSlot++)
{
iWeapon = get_pdata_cbase(iEntity, 34 + iSlot, 4);
if (pev_valid(iWeapon))
{
switch(pev(iWeapon, pev_impulse))
{
case _Ak47: iIndex = Ak47;
case _Awp: iIndex = Awp;
case _M4A1: iIndex = M4A1;
case _Scout: iIndex = Scout;
case _Deagle: iIndex = Deagle;
}
if (iIndex)
{
engfunc(EngFunc_SetModel, iEntity, szGoldW[iIndex]);
return FMRES_SUPERCEDE;
}
}
}
return FMRES_IGNORED;
}
stock give_item_ex2(iPlayer, const szWeaponName[], iAmmo = 0, bool:bDrop = false, iKey = 0)
{
if (!equal(szWeaponName, "weapon_", 7))
return false;
new iWeapon = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, szWeaponName));
if (!pev_valid(iWeapon))
return false;
if (bDrop)
{
new szWeapon[ 32 ],
iSlot = ExecuteHamB(Ham_Item_ItemSlot, iWeapon),
iItem = get_pdata_cbase(iPlayer, 367 + iSlot, 5);
while ((pev_valid(iItem) == 2))
{
pev(iItem, pev_classname, szWeapon, charsmax(szWeapon));
switch(DROP_TYPE)
{
case 1: engclient_cmd(iPlayer, "drop", szWeapon);
case 2: ham_strip_weapon(iPlayer, szWeapon);
}
iItem = get_pdata_cbase(iItem, 42, 4);
}
}
set_pev(iWeapon, pev_spawnflags, pev(iWeapon, pev_spawnflags) | SF_NORESPAWN);
if (iKey > 0) set_pev(iWeapon, pev_impulse, iKey);
if (iAmmo > 0) cs_set_user_bpammo(iPlayer, get_weaponid(szWeaponName), iAmmo);
dllfunc(DLLFunc_Spawn, iWeapon);
dllfunc(DLLFunc_Touch, iWeapon, iPlayer);
return true;
}
stock GetUserFlags(const iPlayer)
{
if (!is_user_connected(iPlayer))
return -1;
new iFlags = get_user_flags(iPlayer);
new iReturnBit;
if (iFlags & read_flags(VipFlagGold))
{
iVipFlag[iPlayer] = ViPGold;
iReturnBit = ViPGold;
}
else if (iFlags & read_flags(VipFlagGold))
{
iVipFlag[iPlayer] = ViP;
iReturnBit = ViP;
}
else
{
iVipFlag[iPlayer] = Null;
iReturnBit = Null;
}
return iReturnBit;
}
public HamHook_Knife_Deploy(const iItem)
{
if (pev_valid(iItem) != 2)
return HAM_IGNORED;
new iPlayer = get_pdata_cbase(iItem, 41, 4);
if(iVipFlag[iPlayer] != ViPGold)
return HAM_IGNORED;
set_pev(iPlayer, pev_viewmodel2, szGoldV[ Knife ]);
set_pev(iPlayer, pev_weaponmodel2, szGoldP[ Knife ]);
return HAM_IGNORED;
}
stock ham_strip_weapon(id, weapon[])
{
if(!equal(weapon,"weapon_",7)) return 0
new wId = get_weaponid(weapon)
if(!wId) return 0
new wEnt
while((wEnt = engfunc(EngFunc_FindEntityByString, wEnt, "classname", weapon)) && pev(wEnt, pev_owner) != id) {}
if(!wEnt) return 0
new iTmp
if(get_user_weapon(id, iTmp, iTmp) == wId) ExecuteHamB(Ham_Weapon_RetireWeapon, wEnt)
if(!ExecuteHamB(Ham_RemovePlayerItem, id, any:wEnt)) return 0
ExecuteHamB(Ham_Item_Kill, wEnt)
set_pev(id, pev_weapons, pev(id, pev_weapons) & ~(1<<wId))
return 1
}
stock UtilChatColor(const iPlayer, const szInput[], any:...)
{
new iCount = 1, szPlayers[32];
static szMessage[191];
vformat(szMessage, charsmax(szMessage), szInput, 3);
replace_all(szMessage, charsmax(szMessage), "!g", "^4"); replace_all(szMessage, charsmax(szMessage), "!y", "^1"); replace_all(szMessage, charsmax(szMessage), "!team", "^3"); static g_SayText;
if (!g_SayText) g_SayText = get_user_msgid("SayText");
if(iPlayer) szPlayers[0] = iPlayer; else get_players(szPlayers, iCount, "ch");
{
for(new i = 0; i < iCount; i++)
{
if(!is_user_connected(szPlayers[i])) continue;
message_begin(MSG_ONE_UNRELIABLE, g_SayText, _, szPlayers[i]);
write_byte(szPlayers[i]);
write_string(szMessage);
message_end();
}
}
}
-
BESPERSPEKTIBN9AK
-
- Сообщения: 28
- Зарегистрирован: 19 окт 2020, 17:47
- Благодарил (а): 1 раз.
- Поблагодарили: 0 раз.
- Опыт программирования: Около года
- Языки программирования: С++
БиЗоН » 22 янв 2023, 18:13
Что значит не работает? Не открывается меню или что? Нужно конкретизировать проблемы, а не заставлять гадать о них других людей.
Как минимум, первое, что бросилось в глаза:
Регистрируется меню с названием-индексом
Show_VipMenu- Код: Выделить всё
register_menucmd(register_menuid("Show_VipMenu"), 1023, "Handle_VipMenu");
А используется название-индекс
Vip Menu- Код: Выделить всё
show_menu(id, 1023, szMenu, -1, "Vip Menu");
Дальше смотреть не стал.
Вечно занятой. Вечно в павне.
-
БиЗоН
-
- Сообщения: 165
- Зарегистрирован: 24 мар 2014, 21:05
- Благодарил (а): 10 раз.
- Поблагодарили: 49 раз.
- Опыт программирования: Больше трех лет
-
[N][E][M][E][C] » 22 янв 2023, 19:16
Это переделкины))), вроде поменял и сам незнает что менял
- Код: Выделить всё
enum _:eVipType { Null = 0, ViP, ViPGold };
enum _:eGoldList{ Knife = 0, Deagle, Awp, Scout, Ak47, M4A1 };
new szGoldV[eGoldList][32] =
{
"models/v_knife.mdl",
"models/v_deagle.mdl",
"models/weaponsVIP/v_awp.mdl",
"models/weaponsVIP/v_ak47.mdl",
"models/weaponsVIP/v_scout.mdl",
"models/weaponsVIP/v_m4a1.mdl"
};
new szGoldP[eGoldList][32] =
{
"models/p_knife.mdl",
"models/p_deagle.mdl",
"models/p_awp.mdl",
"models/p_ak47.mdl",
"models/p_scout.mdl",
"models/p_m4a1.mdl"
};
new szGoldW[eGoldList][32] =
{
"",
"models/w_deagle.mdl",
"models/w_awp.mdl",
"models/w_ak47.mdl",
"models/w_scout.mdl",
"models/w_m4a1.mdl"
};
enum _:eKeyGold{
_Deagle = 36895,
_Awp,
_Scout,
_Ak47,
_M4A1
};
new iRoundNum, iVipFlag[33];
public plugin_precache()
{
for(new i = 0; i < sizeof(szGoldV); i++) if (szGoldV[i][0]) precache_model(szGoldV[i]);
for(new i = 0; i < sizeof(szGoldP); i++) if (szGoldP[i][0]) precache_model(szGoldP[i]);
for(new i = 0; i < sizeof(szGoldW); i++) if (szGoldW[i][0]) precache_model(szGoldW[i]);
}
public plugin_init()
{
register_plugin("AUTHOR", "VERSION", "PLUGIN");
register_menucmd(register_menuid("Vip_Menu"), 1023, "Handle_VipMenu");
register_clcmd("say /vipmenu", "Show_VipMenu");
RegisterHam(Ham_Item_Deploy, "weapon_knife", "HamHook_Knife_Deploy", true);
RegisterHam(Ham_Item_Deploy, "weapon_ak47", "HamHook_Item_Deploy", true);
RegisterHam(Ham_Item_Deploy, "weapon_awp", "HamHook_Item_Deploy", true);
RegisterHam(Ham_Item_Deploy, "weapon_m4a1", "HamHook_Item_Deploy", true);
RegisterHam(Ham_Item_Deploy, "weapon_scout", "HamHook_Item_Deploy", true);
RegisterHam(Ham_Item_Deploy, "weapon_deagle","HamHook_Item_Deploy", true);
RegisterHam(Ham_Touch, "weapon_ak47", "HamHook_Item_AttachToPlayer", false);
RegisterHam(Ham_Touch, "weapon_m4a1", "HamHook_Item_AttachToPlayer", false);
RegisterHam(Ham_Touch, "weapon_scout", "HamHook_Item_AttachToPlayer", false);
RegisterHam(Ham_Touch, "weapon_awp", "HamHook_Item_AttachToPlayer", false);
RegisterHam(Ham_Touch, "weapon_deagle","HamHook_Item_AttachToPlayer", false);
RegisterHam(Ham_TraceAttack, "func_breakable", "HamHook_Entity_TraceAttack", false);
RegisterHam(Ham_TraceAttack, "hostage_entity", "HamHook_Entity_TraceAttack", false);
RegisterHam(Ham_TraceAttack, "info_target", "HamHook_Entity_TraceAttack", false);
RegisterHam(Ham_TraceAttack, "player", "HamHook_Entity_TraceAttack", false);
register_event("TextMsg", "Event_RoundRestart", "a", "2&#Game_C", "2&#Game_w");
register_event("HLTV", "Event_RoundStart", "a", "1=0", "2=0");
register_forward(FM_SetModel, "Fakemeta_SetModel")
}
public Show_VipMenu(id)
{
if (!is_user_alive(id) || iVipFlag[id] <= Null)
return PLUGIN_HANDLED;
if (iRoundNum < MinRoundToOpenMenu)
{
UtilChatColor(id, "!g[!yViP!g] !yМеню не доступно. Жди ещё !team%i !yраунд", MinRoundToOpenMenu - iRoundNum);
return PLUGIN_HANDLED;
}
static szMenu[512], iLen;
iLen = formatex(szMenu, charsmax(szMenu), "\r[\wMA\r] VIP меню^n^n");
if (iVipFlag[id] == ViPGold)
{
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[\w1\r] \dВзять AK47^n");
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[\w2\r] \dВзять Scout^n");
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[\w3\r] \dВзять M4A1^n");
if(iRoundNum < AWP_LIMIT)
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[\w4\r] \dВзять AWP \r[c %d раунда]^n", AWP_LIMIT);
else
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[\w4\r] \wВзять AWP^n");
}
formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\r[\w0\r] \wВыход");
set_pdata_int(id, 205, 0);
show_menu(id, 1023, szMenu, -1, "Vip_Menu");
return PLUGIN_HANDLED;
}
public Handle_VipMenu(id, iKey)
{
if (!is_user_alive(id))
return PLUGIN_HANDLED;
new iNewKey = iKey + 1;
static szWeaponName[][] = { "", "Gold AK", "Gold Scout", "Gold M4", "Gold AWP" };
static szChoosedWP[][] = { "", "weapon_ak47", "weapon_scout", "weapon_m4a1", "weapon_awp" };
static szChoosedBP[] = { 0, 90, 90, 90, 30 };
static iGoldKey[] = { 0, _Ak47, _Scout, _M4A1, _Awp };
static iRoundLimit[] = { 0, AWP_LIMIT };
switch (iNewKey)
{
case 1..3: give_item_ex2(id, szChoosedWP[iNewKey], szChoosedBP[iNewKey], true);
case 4..6:
{
if (iRoundNum < iRoundLimit[iNewKey - 3])
{
UtilChatColor(id, "!g[!yViP!g] !yДоступно только с !g%i !yраунда", iRoundLimit[iNewKey - 3]);
return PLUGIN_HANDLED;
}
else
{
give_item_ex2(id, szChoosedWP[iNewKey - 3], szChoosedBP[iNewKey - 3], true, iGoldKey[iNewKey - 3]);
}
}
default: return PLUGIN_HANDLED;
}
UtilChatColor(id, "!g[!yViP!g] !yВы получили: !g[!team%s!g]", szWeaponName[iNewKey]);
return PLUGIN_HANDLED;
}
public HamHook_Item_Deploy(const iItem)
{
if (pev_valid(iItem) != 2)
return HAM_IGNORED;
new iIndex = 0;
switch(pev(iItem, pev_impulse))
{
case _Ak47: iIndex = Ak47;
case _Awp: iIndex = Awp;
case _M4A1: iIndex = M4A1;
case _Scout: iIndex = Scout;
case _Deagle: iIndex = Deagle;
default: return HAM_IGNORED;
}
if (iIndex)
{
new iPlayer = get_pdata_cbase(iItem, 41, 4);
set_pev(iPlayer, pev_viewmodel2, szGoldV[ iIndex ]);
set_pev(iPlayer, pev_weaponmodel2, szGoldP[ iIndex ]);
}
return HAM_IGNORED;
}
public HamHook_Entity_TraceAttack(const iEntity, const iAttacker, Float:flDamage)
{
if (!is_user_alive(iAttacker) || !pev_valid(iEntity))
return HAM_IGNORED;
new iItem = get_pdata_cbase(iAttacker, 373, 5);
if (!pev_valid(iItem)) return HAM_IGNORED;
new Float:iIndex;
switch(pev(iItem, pev_impulse))
{
case _Ak47: iIndex = Damage_Ak4;
case _Awp: iIndex = Damage_Awp;
case _M4A1: iIndex = Damage_M4A1;
case _Scout: iIndex = Damage_Scout;
case _Deagle: iIndex = Damage_Deagle;
default: return HAM_IGNORED;
}
if (iIndex) SetHamParamFloat(3, flDamage * iIndex);
return HAM_IGNORED;
}
public HamHook_Player_Spawn(const iPlayer)
{
if (!is_user_alive(iPlayer) || is_user_bot(iPlayer))
return HAM_IGNORED;
if (iVipFlag[iPlayer] <= Null)
return HAM_IGNORED;
give_item_ex2(iPlayer, "weapon_hegrenade", 1);
give_item_ex2(iPlayer, "weapon_flashbang", 2);
give_item_ex2(iPlayer, "weapon_smokegrenade", 1);
if (!user_has_weapon(iPlayer, CSW_DEAGLE))
{
give_item_ex2(iPlayer, "weapon_deagle", 35, true, (iVipFlag[iPlayer] == ViPGold) ? _Deagle : Null);
}
cs_set_user_armor(iPlayer, 100, CS_ARMOR_VESTHELM);
return HAM_IGNORED;
}
public HamHook_Item_AttachToPlayer(const iItem, const iPlayer)
{
if (!pev_valid(iItem))
return HAM_IGNORED;
switch(pev(iItem, pev_impulse))
{
case _Deagle.._M4A1:
{
if (iVipFlag[iPlayer] != ViPGold)
return HAM_SUPERCEDE;
}
default: return HAM_IGNORED;
}
return HAM_IGNORED;
}
public Event_RoundRestart() iRoundNum = 0;
public Event_RoundStart() iRoundNum++;
public Fakemeta_SetModel(const iEntity, szModel[])
{
if(!pev_valid(iEntity))
return FMRES_IGNORED;
new szClassName[32];
pev(iEntity, pev_classname, szClassName, charsmax(szClassName));
if (!equali(szClassName, "weaponbox"))
return FMRES_IGNORED;
for(new iSlot, iWeapon, iIndex; iSlot < 6; iSlot++)
{
iWeapon = get_pdata_cbase(iEntity, 34 + iSlot, 4);
if (pev_valid(iWeapon))
{
switch(pev(iWeapon, pev_impulse))
{
case _Ak47: iIndex = Ak47;
case _Awp: iIndex = Awp;
case _M4A1: iIndex = M4A1;
case _Scout: iIndex = Scout;
case _Deagle: iIndex = Deagle;
}
if (iIndex)
{
engfunc(EngFunc_SetModel, iEntity, szGoldW[iIndex]);
return FMRES_SUPERCEDE;
}
}
}
return FMRES_IGNORED;
}
stock give_item_ex2(iPlayer, const szWeaponName[], iAmmo = 0, bool:bDrop = false, iKey = 0)
{
if (!equal(szWeaponName, "weapon_", 7))
return false;
new iWeapon = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, szWeaponName));
if (!pev_valid(iWeapon))
return false;
if (bDrop)
{
new szWeapon[ 32 ],
iSlot = ExecuteHamB(Ham_Item_ItemSlot, iWeapon),
iItem = get_pdata_cbase(iPlayer, 367 + iSlot, 5);
while ((pev_valid(iItem) == 2))
{
pev(iItem, pev_classname, szWeapon, charsmax(szWeapon));
switch(DROP_TYPE)
{
case 1: engclient_cmd(iPlayer, "drop", szWeapon);
case 2: ham_strip_weapon(iPlayer, szWeapon);
}
iItem = get_pdata_cbase(iItem, 42, 4);
}
}
set_pev(iWeapon, pev_spawnflags, pev(iWeapon, pev_spawnflags) | SF_NORESPAWN);
if (iKey > 0) set_pev(iWeapon, pev_impulse, iKey);
if (iAmmo > 0) cs_set_user_bpammo(iPlayer, get_weaponid(szWeaponName), iAmmo);
dllfunc(DLLFunc_Spawn, iWeapon);
dllfunc(DLLFunc_Touch, iWeapon, iPlayer);
return true;
}
stock GetUserFlags(const iPlayer)
{
if (!is_user_connected(iPlayer))
return -1;
new iFlags = get_user_flags(iPlayer);
new iReturnBit;
if (iFlags & read_flags(VipFlagGold))
{
iVipFlag[iPlayer] = ViPGold;
iReturnBit = ViPGold;
}
else if (iFlags & read_flags(VipFlagGold))
{
iVipFlag[iPlayer] = ViP;
iReturnBit = ViP;
}
else
{
iVipFlag[iPlayer] = Null;
iReturnBit = Null;
}
return iReturnBit;
}
public HamHook_Knife_Deploy(const iItem)
{
if (pev_valid(iItem) != 2)
return HAM_IGNORED;
new iPlayer = get_pdata_cbase(iItem, 41, 4);
if(iVipFlag[iPlayer] != ViPGold)
return HAM_IGNORED;
set_pev(iPlayer, pev_viewmodel2, szGoldV[ Knife ]);
set_pev(iPlayer, pev_weaponmodel2, szGoldP[ Knife ]);
return HAM_IGNORED;
}
stock ham_strip_weapon(id, weapon[])
{
if(!equal(weapon,"weapon_",7)) return 0
new wId = get_weaponid(weapon)
if(!wId) return 0
new wEnt
while((wEnt = engfunc(EngFunc_FindEntityByString, wEnt, "classname", weapon)) && pev(wEnt, pev_owner) != id) {}
if(!wEnt) return 0
new iTmp
if(get_user_weapon(id, iTmp, iTmp) == wId) ExecuteHamB(Ham_Weapon_RetireWeapon, wEnt)
if(!ExecuteHamB(Ham_RemovePlayerItem, id, any:wEnt)) return 0
ExecuteHamB(Ham_Item_Kill, wEnt)
set_pev(id, pev_weapons, pev(id, pev_weapons) & ~(1<<wId))
return 1
}
stock UtilChatColor(const iPlayer, const szInput[], any:...)
{
new iCount = 1, szPlayers[32];
static szMessage[191];
vformat(szMessage, charsmax(szMessage), szInput, 3);
replace_all(szMessage, charsmax(szMessage), "!g", "^4"); replace_all(szMessage, charsmax(szMessage), "!y", "^1"); replace_all(szMessage, charsmax(szMessage), "!team", "^3"); static g_SayText;
if (!g_SayText) g_SayText = get_user_msgid("SayText");
if(iPlayer) szPlayers[0] = iPlayer; else get_players(szPlayers, iCount, "ch");
{
for(new i = 0; i < iCount; i++)
{
if(!is_user_connected(szPlayers[i])) continue;
message_begin(MSG_ONE_UNRELIABLE, g_SayText, _, szPlayers[i]);
write_byte(szPlayers[i]);
write_string(szMessage);
message_end();
}
}
}
-
[N][E][M][E][C]
-
- Сообщения: 641
- Зарегистрирован: 14 фев 2021, 10:48
- Благодарил (а): 50 раз.
- Поблагодарили: 89 раз.
- Опыт программирования: Около года
- Языки программирования: Нуждаюсь в помощи
Вернуться в Скриптинг
Кто сейчас на конференции
Сейчас этот форум просматривают: Bing [Bot] и гости: 7