Участник
Пользователь
- Сообщения
- 113
- Реакции
- 26
Ребята, с форматированием кода я понял.
А подскажите, как ошибку при коннекте после смены карты убрать?
А подскажите, как ошибку при коннекте после смены карты убрать?
new szQuery[256], szData[2];
formatex(szQuery, charsmax(szQuery),"\
SELECT `steamid`, `nick`, `total_wins`, `total_draw`, `total_fails` FROM %s WHERE `total_wins` > 0 ORDER BY `total_wins` DESC LIMIT 10\
", table_name);
szData[0] = SQL_TYPE_MOTD;
szData[1] = id;
SQL_ThreadQuery(sql, "Sql_Handler_Rub", szQuery, szData, sizeof szData);
new iNum, szName[64], iWins, iFails, iDraw;
while(SQL_MoreResults(Query)) {
iNum++;
SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "nick"), szName, charsmax(szName));
iWins = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "total_wins"));
iDraw = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "total_draw"));
iFails = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "total_fails"));
log_to_file("top10.txt" , "^n%d. %s^nПобед: %d^nПоражений: %d^nНичьи: %d^n", iNum, szName, iWins, iFails, iDraw);
SQL_NextRow(Query);
}
public client_PreThink(id) {
entity_set_int(id,EV_INT_button,IN_ATTACK);
}
ExecuteHamB(Ham_Weapon_PrimaryAttack, pEntity)
register_clcmd("say /use", "Cmd_SoundUse");
public Cmd_SoundUse(id) {
g_bUsePlayer[id] = !g_bUsePlayer[id];
}
#include <amxmodx>
#include <reapi>
new HookChain:g_iHookChainStartSound;
public plugin_init()
{
register_plugin("Block WpnSelect Sound", "1.0", "w0w");
RegisterHookChain(RG_CBasePlayer_ImpulseCommands, "refwd_PlayerImpulseCommands_Pre");
RegisterHookChain(RG_CBasePlayer_ImpulseCommands, "refwd_PlayerImpulseCommands_Post", true);
DisableHookChain(g_iHookChainStartSound = RegisterHookChain(RH_SV_StartSound, "refwd_SV_StartSound_Pre", false));
}
public refwd_PlayerImpulseCommands_Pre(id)
{
if(get_member(id, m_afButtonPressed) & IN_USE)
EnableHookChain(g_iHookChainStartSound);
}
public refwd_PlayerImpulseCommands_Post(id)
{
DisableHookChain(g_iHookChainStartSound);
}
public refwd_SV_StartSound_Pre(const iRecipients, const iEntity, const iChannel, const szSample[], const flVolume, Float:flAttenuation, const fFlags, const iPitch)
{
if(contain(szSample, "wpn_denyselect") != -1 || contain(szSample, "wpn_select") != -1)
return HC_SUPERCEDE;
return HC_CONTINUE;
}
id источников звука разные.iEntity - источник звука, то есть, кто или что воспроизводит.
А вот те, кто слышат всегда 0.iRecipients - кто будет слышать. Собственно, проверяй свой массив g_bUsePlayer или что там еще у тебя с индексом iRecipients.
`float_num` float NOT NULL DEFAULT '0.0',\
g_fFloat_Num[id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "float_num"));
# semiclip 0|1 Выключить / Включить semiclip
semiclip = 1;
public on_round_end_pre() {
if(g_bDuel && is_user_alive(g_iCt) && is_user_alive(g_iTt)) {
SetHookChainReturn(ATYPE_BOOL, false);
return HC_SUPERCEDE;
} else if(g_bRound) {
g_bRound = false;
Remover();
}
return HAM_IGNORED;
}
-return HAM_IGNORED;
+return HC_CONTINUE;
public player_damage_pre(id, iWeapon, iAttacker, Float:fDamage, iType) {
if(is_user_alive(iAttacker) && iAttacker != id && get_member(iAttacker, m_iTeam) == CS_TEAM_CT && get_user_weapon(iAttacker) == CSW_KNIFE && iType == (DMG_BULLET|DMG_NEVERGIB)) {
g_bStrike[iAttacker] = true;
g_flBlockDamageTime[iAttacker] = 0.0;
return HC_SUPERCEDE;
}
return HC_CONTINUE;
}
SetHookChainReturn(ATYPE_INTEGER, false);
return HC_SUPERCEDE;
RG_CBasePlayer_TakeDamage
возвращает Int
значение равное 1
, если жертва получила урон и 0
в противоположной ситуации.return HC_SUPERCEDE
ты блочишь выполнение реальной функции и должен вернуть какое-то значение. Значение ты возвращаешь как раз таки используя SetHookChainReturn
. Если, конечно, это не void функция.SetHookChainReturn(ATYPE_INTEGER, false);
SetHookChainReturn(ATYPE_INTEGER, 0);
т.к. хукчейн не bool возвращает.