Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.
Модераторы: Subb98, liFe iS GoOD
Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.
В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.
Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.
nemec21 » 08 мар 2017, 11:01
Доброе утро всем!!
Ребят есть у кого сток на проверку, есть ли админ на сервере?
Заранее спасибо
что нибудь подобное этому
- Код: Выделить всё
stock bool:is_user_steam(id)
{
static dp_pointer
if(dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider")))
{
server_cmd("dp_clientinfo %d", id)
server_exec()
return (get_pcvar_num(dp_pointer) == 2) ? true : false
}
return false
}
Тема перемещена в раздел "Скриптинг" // Subb98
Добавлено спустя 6 минут 27 секунд:Это подходит?
- Код: Выделить всё
stock is_admin(id)
{
new flags = get_user_flags(id)
return(flags > 0 && !(flags & ADMIN_USER))
}
-
nemec21
-
- Сообщения: 799
- Зарегистрирован: 07 фев 2016, 17:08
- Откуда: Беларусь
- Благодарил (а): 212 раз.
- Поблагодарили: 44 раз.
- Опыт программирования: Около 6 месяцев
- Языки программирования: Counter-Strike 1.6
Subb98 » 08 мар 2017, 11:03
- Код: Выделить всё
stock bool:have_admins() {
new players[32], playersnum;
get_players(players, playersnum, "ch");
for(new i; i < playersnum; i++) {
if(get_user_flags(players[i]) & ADMIN_BAN) {
return true;
}
}
return false;
}
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
-
Subb98
-
- Сообщения: 5485
- Зарегистрирован: 24 мар 2011, 19:42
- Откуда: г. Пермь
- Благодарил (а): 1329 раз.
- Поблагодарили: 2343 раз.
- Опыт программирования: Больше трех лет
- Языки программирования: PHP
nemec21 » 08 мар 2017, 11:10
а куда можно всунуть проверку на админа тут?
- Код: Выделить всё
new g_szBlockMapPrefixList[][] =
{
"$2000$",
"awp_india",
"aim_usp",
"aim_deagle",
"aim_headshot",
"aim_aztec",
"awp_india"
}
new g_num, g_maxplayers
new szMapName[32]
public plugin_init()
{
register_plugin( "no players", "1.0", "//")
get_mapname(szMapName, charsmax(szMapName))
for(new i; i < sizeof(g_szBlockMapPrefixList); i++)
{
if (contain(g_szBlockMapPrefixList[i], szMapName) != INVALID_HANDLE)
{
pause("d");
}
}
g_maxplayers = get_maxplayers()
set_task(20.0, "check_players", 0, _, _, "b")
}
public check_clients()
{
g_num = 0
for (new playerid = 1; playerid <= g_maxplayers; playerid++)
{
if (is_user_connected(playerid))
g_num++
}
return g_num
}
public check_players()
{
new currentMap[32]
new map[] = "de_dust2"
get_mapname(currentMap, 31)
if (check_clients() < 7 && !equali(map, currentMap))
{
set_task(10.0, "change_map", 0, map, charsmax(map))
ChatColor(0, "^3[^4ONLINER gamer^3] ^1ìåíüøå^3 7 èãðîêîâ^1,ïîýòîìó êàðòà ñåíèòñÿ íà ^3%s", map)
}
return PLUGIN_CONTINUE
}
public change_map(map[])
{
server_cmd("changelevel %s", map)
}
stock check_admins()
{
new players[32], playersnum;
get_players(players, playersnum, "ch")
for(new i; i < playersnum; i++)
{
if(get_user_flags(players[i]) & ADMIN_BAN)
{
return true;
}
}
return false
}
stock ChatColor(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
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, get_user_msgid("SayText"), _, players[i])
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}
-
nemec21
-
- Сообщения: 799
- Зарегистрирован: 07 фев 2016, 17:08
- Откуда: Беларусь
- Благодарил (а): 212 раз.
- Поблагодарили: 44 раз.
- Опыт программирования: Около 6 месяцев
- Языки программирования: Counter-Strike 1.6
NEoMASTERR » 08 мар 2017, 11:11
А зачем?
-
NEoMASTERR
-
- Сообщения: 832
- Зарегистрирован: 05 янв 2015, 16:38
- Благодарил (а): 43 раз.
- Поблагодарили: 188 раз.
- Опыт программирования: Около года
- Языки программирования: Counter-Strike 1.6
-
Subb98 » 08 мар 2017, 11:12
nemec21, где нужно, там и используй. Учись читать код.
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
-
Subb98
-
- Сообщения: 5485
- Зарегистрирован: 24 мар 2011, 19:42
- Откуда: г. Пермь
- Благодарил (а): 1329 раз.
- Поблагодарили: 2343 раз.
- Опыт программирования: Больше трех лет
- Языки программирования: PHP
nemec21 » 08 мар 2017, 11:16
Subb98. да учусь на примерах.я не для себя делаю. Мне интересно смотреть примеры и пробовать потом
Добавлено спустя 59 секунд:
NEoMASTERR, хочу к примеру сделать - если админ на сервере не проихадила смена карты
-
nemec21
-
- Сообщения: 799
- Зарегистрирован: 07 фев 2016, 17:08
- Откуда: Беларусь
- Благодарил (а): 212 раз.
- Поблагодарили: 44 раз.
- Опыт программирования: Около 6 месяцев
- Языки программирования: Counter-Strike 1.6
Subb98 » 08 мар 2017, 11:16
nemec21, ты уже не первый день занимаешься скриптингом. Эти навыки у тебя уже должны быть.
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
-
Subb98
-
- Сообщения: 5485
- Зарегистрирован: 24 мар 2011, 19:42
- Откуда: г. Пермь
- Благодарил (а): 1329 раз.
- Поблагодарили: 2343 раз.
- Опыт программирования: Больше трех лет
- Языки программирования: PHP
nemec21 » 08 мар 2017, 11:23
я попробовал так ну не знаю что выйде, думаю плагин станет на паузу))
- Код: Выделить всё
public plugin_init()
{
register_plugin( "no players", "1.0", "//")
get_mapname(szMapName, charsmax(szMapName))
for(new i; i < sizeof(g_szBlockMapPrefixList); i++)
{
if ((contain(g_szBlockMapPrefixList[i], szMapName) != INVALID_HANDLE) || check_admins())
{
pause("d");
}
}
g_maxplayers = get_maxplayers()
set_task(20.0, "check_players", 0, _, _, "b")
}
Добавлено спустя 47 секунд:Subb98. Не ну я понимаю. Так правильно что я выше написал?
Добавлено спустя 3 минуты 38 секунд:проверка же говорит от что если админ на сервере то плагин на паузе
-
nemec21
-
- Сообщения: 799
- Зарегистрирован: 07 фев 2016, 17:08
- Откуда: Беларусь
- Благодарил (а): 212 раз.
- Поблагодарили: 44 раз.
- Опыт программирования: Около 6 месяцев
- Языки программирования: Counter-Strike 1.6
Subb98 » 08 мар 2017, 11:28
nemec21, не туда условие добавил, подумай ещё.
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
-
Subb98
-
- Сообщения: 5485
- Зарегистрирован: 24 мар 2011, 19:42
- Откуда: г. Пермь
- Благодарил (а): 1329 раз.
- Поблагодарили: 2343 раз.
- Опыт программирования: Больше трех лет
- Языки программирования: PHP
nemec21 » 08 мар 2017, 11:32
- Код: Выделить всё
public check_players()
{
if(!check_admins())
{
new currentMap[32]
new map[] = "de_dust2"
get_mapname(currentMap, 31)
if (check_clients() < 7 && !equali(map, currentMap))
{
set_task(10.0, "change_map", 0, map, charsmax(map))
ChatColor(0, "^3[ ^4ONLINER gamer ^3] ^1ìåíüøå^3 7 èãðîêîâ^1,ïîýòîìó êàðòà ñåíèòñÿ íà ^3%s", map)
}
}
}
Последний раз редактировалось
nemec21 08 мар 2017, 11:34, всего редактировалось 1 раз.
-
nemec21
-
- Сообщения: 799
- Зарегистрирован: 07 фев 2016, 17:08
- Откуда: Беларусь
- Благодарил (а): 212 раз.
- Поблагодарили: 44 раз.
- Опыт программирования: Около 6 месяцев
- Языки программирования: Counter-Strike 1.6
Вернуться в Скриптинг
Кто сейчас на конференции
Сейчас этот форум просматривают: Bing [Bot], Google [Bot] и гости: 12