Зачем лишние действия (нажать +use), есть же готовая альтернатива?Как написать данною задумку: При убийстве игрока, от него остается тело, при нажатии +use на тело - оно окрашивается и игроку который нажал выдается награда в шоп кредитах?
Для условного ттт режимаЗачем лишние действия (нажать +use), есть же готовая альтернатива?
![]()
Ядро плагина - [Gifts] Core
Плагин создает подарки над убитыми игроками. Модули позволяют выдавать игрокам различные бонусы за поднятие подарка. Модели подарков можно взять здесь [CSS/CSGO] Модели подарков Модули будут добавляться постепенно. Пишите свои предложения по...hlmod.net
L 03/04/2022 - 00:08:32: [SM] Exception reported: Invalid Cookie handle 0 (error 4)
L 03/04/2022 - 00:08:32: [SM] Blaming: legend_weapongiver.smx
L 03/04/2022 - 00:08:32: [SM] Call stack trace:
L 03/04/2022 - 00:08:32: [SM] [0] GetClientCookie
L 03/04/2022 - 00:08:32: [SM] [1] Line 20, C:\Users\Miaka\Desktop\scripting\legend_weapongiver.sp::OnClientCookiesCached
Handle g_hWeaponCookie, g_hOnOffCookie;
char g_sWeapon[MAXPLAYERS+1][32];
bool g_bWeaponOnOff[MAXPLAYERS+1];
public void OnPluginStart()
{
for (int i; ++i <= MaxClients;)
{
if (!IsClientInGame(i) || IsFakeClient(i) || !AreClientCookiesCached(i))
continue;
OnClientCookiesCached(i);
}
}
public void OnClientCookiesCached(int iClient)
{
char sBuffer[32];
GetClientCookie(iClient, g_hOnOffCookie, sBuffer, sizeof(sBuffer));
if(sBuffer[0]) g_bWeaponOnOff[iClient] = view_as<bool>(StringToInt(sBuffer, sizeof(sBuffer)));
else g_bWeaponOnOff[iClient] = false;
GetClientCookie(iClient, g_hWeaponCookie, sBuffer, sizeof(sBuffer));
if(sBuffer[0]) g_sWeapon[iClient] = sBuffer; //не знаю зачем, но пробовал FormatEx(g_sWeapon[iClient], 32, sBuffer); и в строке ниже - та же самая ошибка
else g_sWeapon[iClient] = "weapon_ak47";
//так то же самое
//GetClientCookie(iClient, g_hWeaponCookie, g_sWeapon[iClient], 32);
// if(!g_sWeapon[iClient][0]) g_sWeapon[iClient] = "weapon_ak47";
}
public void OnClientDisconnect(int iClient)
{
if(!IsFakeClient(iClient))
{
char sBuffer[8];
IntToString(view_as<int>(g_bWeaponOnOff[iClient]), sBuffer, sizeof(sBuffer));
SetClientCookie(iClient, g_hOnOffCookie, sBuffer);
SetClientCookie(iClient, g_hWeaponCookie, g_sWeapon[iClient]);
}
}
Но куки даже не зареганыДобрый вечер
Помогите пожалуйста исправить ошибку
C-подобный:L 03/04/2022 - 00:08:32: [SM] Exception reported: Invalid Cookie handle 0 (error 4) L 03/04/2022 - 00:08:32: [SM] Blaming: legend_weapongiver.smx L 03/04/2022 - 00:08:32: [SM] Call stack trace: L 03/04/2022 - 00:08:32: [SM] [0] GetClientCookie L 03/04/2022 - 00:08:32: [SM] [1] Line 20, C:\Users\Miaka\Desktop\scripting\legend_weapongiver.sp::OnClientCookiesCached
C-подобный:Handle g_hWeaponCookie, g_hOnOffCookie; char g_sWeapon[MAXPLAYERS+1][32]; bool g_bWeaponOnOff[MAXPLAYERS+1]; public void OnPluginStart() { for (int i; ++i <= MaxClients;) { if (!IsClientInGame(i) || IsFakeClient(i) || !AreClientCookiesCached(i)) continue; OnClientCookiesCached(i); } } public void OnClientCookiesCached(int iClient) { char sBuffer[32]; GetClientCookie(iClient, g_hOnOffCookie, sBuffer, sizeof(sBuffer)); if(sBuffer[0]) g_bWeaponOnOff[iClient] = view_as<bool>(StringToInt(sBuffer, sizeof(sBuffer))); else g_bWeaponOnOff[iClient] = false; GetClientCookie(iClient, g_hWeaponCookie, sBuffer, sizeof(sBuffer)); if(sBuffer[0]) g_sWeapon[iClient] = sBuffer; //не знаю зачем, но пробовал FormatEx(g_sWeapon[iClient], 32, sBuffer); и в строке ниже - та же самая ошибка else g_sWeapon[iClient] = "weapon_ak47"; //так то же самое //GetClientCookie(iClient, g_hWeaponCookie, g_sWeapon[iClient], 32); // if(!g_sWeapon[iClient][0]) g_sWeapon[iClient] = "weapon_ak47"; } public void OnClientDisconnect(int iClient) { if(!IsFakeClient(iClient)) { char sBuffer[8]; IntToString(view_as<int>(g_bWeaponOnOff[iClient]), sBuffer, sizeof(sBuffer)); SetClientCookie(iClient, g_hOnOffCookie, sBuffer); SetClientCookie(iClient, g_hWeaponCookie, g_sWeapon[iClient]); } }
public void OnMapStart()
{
g_bPrimaryOn = false;
g_bSecondaryOn = false;
char sKey_p[64], sKey_s[64], sMap[64];
GetCurrentMap(sMap, sizeof(sMap));
config.Rewind();
if(config.JumpToKey("maps_primary") && config.GotoFirstSubKey(false))
{
do
{
config.GetSectionName(sKey_p, sizeof(sKey_p));
if(sKey_p[0] && strcmp(sKey_p, sMap) == 0) g_bPrimaryOn = true;
}
while config.GotoNextKey(false);
}
config.Rewind();
if(config.JumpToKey("maps_secondary") && config.GotoFirstSubKey(false))
{
do
{
config.GetSectionName(sKey_s, sizeof(sKey_s));
if(sKey_s[0] && strcmp(sKey_s, sMap) == 0) g_bSecondaryOn = true;
}
while config.GotoNextKey(false);
}
}
"weapon_giver"
{
"primary"
{
"AK-47" "weapon_ak47"
"M4A4" "weapon_m4a1"
"MP7" "weapon_mp7"
}
"secondary"
{
"Desert Eagle" "weapon_deagle"
"Five-SeveN" "weapon_fiveseven"
"Glock" "weapon_glock"
"P250" "weapon_p250"
}
"maps_primary" //карты, на которых выдается основное оружие
{
"$2000$_csgo_hdr"
"fy_snow_oldschool_hdr"
"winterlude"
}
"maps_secondary" //карты, на которых выдается пистолет
{
"$2000$_csgo_hdr"
"fy_snow_oldschool_hdr"
"winterlude"
"de_mirage"
"de_dust2"
"de_inferno"
"cs_office"
"cs_italy"
"de_cache"
}
}
Попробуй вместо strcmp, использовать StrContains или StrEqual, ну и можешь удалить из кода config.GotoFirstSubKey(false) (просто какой в этом смысл)C-подобный:public void OnMapStart() { g_bPrimaryOn = false; g_bSecondaryOn = false; char sKey_p[64], sKey_s[64], sMap[64]; GetCurrentMap(sMap, sizeof(sMap)); config.Rewind(); if(config.JumpToKey("maps_primary") && config.GotoFirstSubKey(false)) { do { config.GetSectionName(sKey_p, sizeof(sKey_p)); if(sKey_p[0] && strcmp(sKey_p, sMap) == 0) g_bPrimaryOn = true; } while config.GotoNextKey(false); } config.Rewind(); if(config.JumpToKey("maps_secondary") && config.GotoFirstSubKey(false)) { do { config.GetSectionName(sKey_s, sizeof(sKey_s)); if(sKey_s[0] && strcmp(sKey_s, sMap) == 0) g_bSecondaryOn = true; } while config.GotoNextKey(false); } }
как ни пинаю, не хочет работать на карте fy_snow_oldschool_hdr (на ней и g_bPrimaryOn, и g_bSecondaryOn = false)C-подобный:"weapon_giver" { "primary" { "AK-47" "weapon_ak47" "M4A4" "weapon_m4a1" "MP7" "weapon_mp7" } "secondary" { "Desert Eagle" "weapon_deagle" "Five-SeveN" "weapon_fiveseven" "Glock" "weapon_glock" "P250" "weapon_p250" } "maps_primary" //карты, на которых выдается основное оружие { "$2000$_csgo_hdr" "fy_snow_oldschool_hdr" "winterlude" } "maps_secondary" //карты, на которых выдается пистолет { "$2000$_csgo_hdr" "fy_snow_oldschool_hdr" "winterlude" "de_mirage" "de_dust2" "de_inferno" "cs_office" "cs_italy" "de_cache" } }
на остальных вроде как работает нормально
помогите пожалуйста, что не так?
"maps_primary" //карты, на которых выдается основное оружие
{
"$2000$_csgo_hdr" ""
"fy_snow_oldschool_hdr" ""
"winterlude" ""
}
KvJumpToKey(config, sMap), а не циклом с проверкой имениЗаработало. Остается загадкой, почему на некоторых картах работало нормально. Спасибо.@Ice_Sochi, ты в конфиге после имён карт забыл поставить пустые кавычки, кмк
C-подобный:"maps_primary" //карты, на которых выдается основное оружие { "$2000$_csgo_hdr" "" "fy_snow_oldschool_hdr" "" "winterlude" "" }Сообщения автоматически склеены:
и вообще нужно имена карт было искать черезKvJumpToKey(config, sMap), а не циклом с проверкой имени
цикл нужен только если тебе нужно частичное совпадение, а не полное
Спасибо за ответ, как минимум ознакомлюсь с этими функциямиПопробуй вместо strcmp, использовать StrContains или StrEqual, ну и можешь удалить из кода config.GotoFirstSubKey(false) (просто какой в этом смысл)
Потому что каждое чётное имя карты считало за значение, а нечётное - за ключ, кмк.Остается загадкой, почему на некоторых картах работало нормально.
KickClient(client, "AFK");
Можно ли скрыть имя администратора?Может, пригодится. Когда-то себе заказывал просто спектров, потом переделал под ClientMod. Если будут проблемы, сорян, поддержку не оказываю, мне лень.
Но, в целом, нормально работает
Там специально есть конфигМожно ли скрыть имя администратора?
Не сработалоПопробуйте 21 строку поставить в true
Всем доброго времени суток. Есть плагин на отображение урона в стиле фейсит, отредактированный @Faya™
Хотелось бы чтобы он по умолчанию был включен у всех. Сейчас его нужно включать командой !damage