Скриптер
Участник
Пользователь
- Сообщения
- 685
- Реакции
- 581
- Предупреждения
- 8
- Помог
- 9 раз(а)
Nordic Warrior, это вопрос не ко мне. и можешь умничать другом месте.
Здравствуйте, у меня такая же проблема, я поставил код, который вы дали, и он работает, но когда я хочу поставить более 1 флага,например if(~get_user_flags(id) & ADMIN_CHAT & ADMIN_LEVEL_H) обычному игроку все равно в начале раунда дается Молотов, может кто-нибудь поправить, чтобы игроки с флагом z не получают проблем в начале каждого раунда.Заметил странное поведение плагина:
Выставил такие настройки в конфиге:C#:// Флаги доступа - для покупки или выдачи молотова (требует наличия вписанных - "abc" / пустая строка "" - покупка доступна всем) // - // Default: "" molotov_buy_access "i" // Автоматически выдавать молотов в начале раунда // - // Default: "0" // Minimum: "0.000000" // Maximum: "1.000000" molotov_equip_access "1" // Проверять находится ли игрок в зоне покупки // - // Default: "1" // Minimum: "0.000000" // Maximum: "1.000000" molotov_check_buyzone "0" // Цена молотова // - // Default: "800" // Minimum: "0.000000" molotov_cost "800" // Сколько молотовых можно купить за один раунд (значение: -1 убирает лимит) // - // Default: "1" // Minimum: "-1.000000" molotov_buy_limit "-1" // С какого раунда после начала игры будет доступен молотов // - // Default: "2" // Minimum: "0.000000" molotov_limit_round "1" // Сколько секунд с начала раунда можно купить молотов // Время на покупку // -2 - Подчиняться квару mp_buytime // -1 - Без ограничений // 0 - Выкл. покупку // 1 и более - Время в секундах // // Default: "25" // Minimum: "0.000000" molotov_limit_buytime "25" // Сколько урона наносить при попадании молотова в тело игрока // - // Default: "2" // Minimum: "0.000000" molotov_check_hit_player "2" // Показывать ли в киллфиде рядом с именем приставку [ᴍᴏʟᴏᴛᴏᴠ] // - // Default: "0" // Minimum: "0.000000" // Maximum: "1.000000" molotov_killfeed "0" // Радиус горения молотова // - // Default: "132.0" // Minimum: "0.000000" molotov_radius "132.0" // Сколько секунд молотов может находиться в полете перед взрывом // - // Default: "2.5" // Minimum: "0.000000" molotov_throwtime "2.5" // Сколько секунд будет гореть молотов // - // Default: "12" // Minimum: "0.000000" molotov_duration "12" // Кто получает урон от коктейля молотова (0 - только противники, 1 - противники и игрок бросивший коктейль молотова, 2 - все игроки) // - // Default: "1" // Minimum: "0.000000" // Maximum: "2.000000" molotov_demage_mode "2" // Как будет наноситься урон от огня (1 - через Ham_TakeDamage [урон фиксированный в любой точке радиуса горения], 2 - через rg_dmg_radius [урон зависит от даль // - // Default: "2" // Minimum: "1.000000" // Maximum: "2.000000" molotov_demage_radius_mode "2" // Периодичность нанесения урона // - // Default: "0.20" // Minimum: "0.000000" molotov_demage_time "0.20" // Количество нанесенного урона за период (molotov_demage_time) // - // Default: "20.0" // Minimum: "0.000000" molotov_demage_value "20.0" // Количество обрисовываемых волн огня // - // Default: "4" // Minimum: "0.000000" // Maximum: "10.000000" molotov_effect_num "4" // Тушить ли коктейль молотова дымовой гранатой // - // Default: "1" // Minimum: "0.000000" // Maximum: "1.000000" molotov_smoke_touch "1" // Путь до модели дымовой гранаты. (Стандартная: models/w_smokegrenade.mdl) // - // Default: "models/w_smokegrenade.mdl" molotov_smoke_owner "models/w_smokegrenade.mdl" // Тушить ли коктейль молотова при соприкосновении с водой // - // Default: "1" // Minimum: "0.000000" // Maximum: "1.000000" molotov_water_touch "1" // Удалять коктейль молотова при соприкосновении со скайбоксом карты // - // Default: "1" // Minimum: "0.000000" // Maximum: "1.000000" molotov_sky_force "1"
В чем прикол:
- По идее молотов должен выдаваться автоматически только игрокам с флагом ADMIN_CHAT но не тут то было. Он выдается всем.
Поковырялся в коде и понял что дело тут:
Я поменял строчку на:C#:public CBasePlayer_OnSpawnEquip_Post(const id){ if(!is_user_connected(id)) return; BuyLimit[id] = g_eCvar[CVAR_BUY_LIMIT]; new bitAccess = g_eCvar[CVAR_BUY_ACCESS]; if(g_eCvar[CVAR_EQUIP_ACCESS] < 1) return; // Вот в этой строчке кода весь прикол if (bitAccess && ~get_user_flags(id) & bitAccess) return; if(get_member_game(m_iTotalRoundsPlayed) + 1 < g_eCvar[CVAR_LIMIT_ROUND]) return; giveNade(id); }
if(~get_user_flags(id) & ADMIN_CHAT)
и вуаля, всё работает как часики.
Может это только у меня так?
Спасибо, проверю и напишу, все ли ок.
Верхний мой код некорректен. (там обязательно наличие суммы флагов)cgozzie,
Добавьте в свой код:
Код:const flags = ADMIN_CHAT + ADMIN_LEVEL_H if (!(get_user_flags(id) & flags == flags)) return
if(!((get_user_flags(id) & ADMIN_CHAT ) || (get_user_flags(id)& ADMIN_LEVEL_H)))
return
Большое спасибо, брат, код работает именно так, как я хотел.Верхний мой код некорректен. (там обязательно наличие суммы флагов)
Если вам нужно же блокировать игрока если у него нету одного из флагов то
Код:if(!((get_user_flags(id) & ADMIN_CHAT ) || (get_user_flags(id)& ADMIN_LEVEL_H))) return
if(!((get_user_flags(id) & ADMIN_CHAT ) || (get_user_flags(id)& ADMIN_LEVEL_H)))
return
public CBasePlayer_OnSpawnEquip_Post(const id){
if(!is_user_connected(id))
return;
BuyLimit[id] = g_eCvar[CVAR_BUY_LIMIT];
if(!g_eCvar[CVAR_EQUIP_ACCESS])
return;
new bitAccess = g_eCvar[CVAR_BUY_ACCESS];
if (bitAccess && ~get_user_flags(id) & bitAccess)
return;
if(!((get_user_flags(id) & ADMIN_LEVEL_B ) || (get_user_flags(id)& ADMIN_LEVEL_H) || (get_user_flags(id)& ADMIN_LEVEL_G)))
return
if(get_member_game(m_iTotalRoundsPlayed) + 1 < g_eCvar[CVAR_LIMIT_ROUND])
return;
giveNade(id, g_eCvar[CVAR_EQUIP_ACCESS], g_eCvar[CVAR_EQUIP_ACCESS]);
}
Здравствуйте, люди, можете ли вы помочь мне отобразить этот спрайт? Я не понимаю этих вещей, поэтому обращаюсь к вам, пожалуйста, не предлагайте мне оплату, я из Болгарии и не хочу. у меня есть банковские счета, чтобы поблагодарить людей, которые, возможно, смогут помочь мне это сделать.I want to ask how can I use this sprite ?
И этот вариант как добавить в плагин работает.Sorry friends I want to ask if you like these plugin options :
1. Buy Message
( I suppose you can put it in the text file, but that's how I use it in my version )
#include <cromchat>
Код:giveNade(id); CC_SendMatched( id, CC_COLOR_TEAM, "&x03You got &x04Molotov Cocktail Grenade &x01for &x04$%d&x01!", g_eCvar[CVAR_COST] ); BuyLimit[id]--;
2. Drop after death
So my point is, if you like this, do you want to include it in your new version?Код:bind_pcvar_num( create_cvar( "molotov_drop_nade_after_death", "1", FCVAR_SERVER, .description = "When player is killed and have a Molotov in him it will drop on the ground.", .has_min = true, .min_val = 0.0, .has_max = true, .max_val = 1.0 ), g_eCvar[DROP_NADE_AFTER_DEATH] );
[ 52] 51 [GRENADE] Molotov 1.0.2 medusa grenade_mol running
Привет еще раз, только что заметил, так как я сделал это таким образом, у меня все было в порядке до момента, когда начинается ночной вип, а потом случается, что Молотов больше не выдается даже 1 игроку, даже если у него есть флаги, которые мне нужны. перезапустите весь сервер, чтобы он работал над кодом, который вы мне дали.Верхний мой код некорректен. (там обязательно наличие суммы флагов)
Если вам нужно же блокировать игрока если у него нету одного из флагов то
Код:if(!((get_user_flags(id) & ADMIN_CHAT ) || (get_user_flags(id)& ADMIN_LEVEL_H))) return
public CBasePlayer_OnSpawnEquip_Post(const id){
if(!is_user_connected(id))
return;
BuyLimit[id] = g_eCvar[CVAR_BUY_LIMIT];
if(!g_eCvar[CVAR_EQUIP_ACCESS])
return;
new bitAccess = g_eCvar[CVAR_BUY_ACCESS];
if (bitAccess && ~get_user_flags(id) & bitAccess)
return;
if(!((get_user_flags(id) & ADMIN_LEVEL_B ) || (get_user_flags(id)& ADMIN_LEVEL_H) || (get_user_flags(id)& ADMIN_LEVEL_G)))
return
if(get_member_game(m_iTotalRoundsPlayed) + 1 < g_eCvar[CVAR_LIMIT_ROUND])
return;
giveNade(id, g_eCvar[CVAR_EQUIP_ACCESS], g_eCvar[CVAR_EQUIP_ACCESS]);
}
if(!((get_user_flags(id) & ADMIN_LEVEL_B ) || (get_user_flags(id)& ADMIN_LEVEL_H) || (get_user_flags(id)& ADMIN_LEVEL_G)))
return
giveNade(id, g_eCvar[CVAR_EQUIP_ACCESS], g_eCvar[CVAR_EQUIP_ACCESS]);