Русское сообщество по скриптингу

Плагин выдачи моделек по флагу

Новые плагины для AMX Mod X, которые были добавлены в базу плагинов нашего форума. Плагины еще не утвеждены администратором/модератором.

Модератор: Leonidddd

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

Данный раздел форума служит для добавления новых плагинов в базу нашего форума. После того, как администратор/модератор утвердит плагин, он будет перемещен в раздел "Утвежденные плагины".

Правила при добавлении новых плагинов:

1. При вставке кода плагина необходимо использовать тег [pawn], в противном случае, если тег [pawn] не отображает ваш код, можно использовать тег [code].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. Обязательно выкладывайте исходник sma плагина. Запрещено выкладывать amxx файл.
4. Обязательно указывайте настоящих авторов плагина, если вы использовали чьи-то наработки или функции, указывайте их авторов в сообщении.
5. Необходимо заполнять детальную информацию о плагине (версию, настройки, используемые модули, список изменений и другую).

Плагин выдачи моделек по флагу

Сообщение Шарль Перро » 07 июн 2014, 14:41

Приветствую вас, начинающие скриптеры. В этой статье я хотел бы вам рассказать, как простым способом назначить игрокам модели по флагу доступа. Все вопросы вы можете задать после обучения. Итак, приступим.(за помощь в работе и написании статьи благодарю оранжевую группировку
в лице subb98 и PRoSToTeM@)
1. Сперва мы подключаем необходимые библиотеки (инклуды) для работы данного плагина:

[pawn]
  1. #include <amxmodx>
[/pawn]
из которого мы будем использовать проверку на флаги и на подключение игрока к серверу, а также прекешируем модели, затем:

[pawn]
  1. #include <cstrike>
[/pawn]
при помощи которого мы будем проверять команду игрока и в зависимости от команды назначать игроку модель, затем:

[pawn]
  1. #include <hamsandwich>
[/pawn]
из которого мы будем использовать событие спауна игрока (спасибо Subb98 и PRoSToTeM@, за то, что объяснили, почему не стоит использовать ResetHUD в данном случае).

2. Приступаем к регистрации:

[pawn]
  1. public plugin_init

  2. {

  3.         //code

  4. }
[/pawn]
plugin_init - форвард-функция, которая вызывается при старте сервера, смене карты или рестарте сервера, в ней мы регистрируем событие спауна игрока:
3.
[pawn]
  1. RegisterHam(Ham_Spawn, "player", "SetModel", 1)
[/pawn]
4. Прекешируем файлы моделей:

[pawn]
  1. public plugin_precache()

  2. {

  3.         //code

  4. }
[/pawn]
Прописываем внутри функции пути до наших файлов моделей. Необходимо учесть, что конечная папка, в которой лежит модель, и название модели должны совпадать, например:

[pawn]
  1. precache_model("models/player/admin_ct/admin_tt.mdl")
[/pawn]
5. Прекешируем 2 модели (для Террористов и Контр-террористов):

[pawn]
  1. precache_model("models/player/admin_tt/admin_tt.mdl") // Для TT

  2. precache_model("models/player/admin_ct/admin_ct.mdl") // Для CT
[/pawn]
6. Обрабатываем функцию спауна игрока:

[pawn]
  1. public SetModel(const id)

  2. {

  3.         //code

  4. }
[/pawn]
6.1. Создаём новую переменную, в которой будем хранить id команды игрокаи переменную для упрощения кода проверки на флаг :

[pawn]
  1. new CsTeams:userTeam = cs_get_user_team(id), iFlags = get_user_flags(id)
[/pawn]
6.2. Проверяем игрока на подключение к серверу и наличие необходимого флага доступа для выдачи модели:

[pawn]
  1.  

  2. if(!is_user_connected(id)) return;

  3.  

  4. if(get_user_flags(id) & ADMIN_BAN)

  5. {

  6.         //code

  7. }
[/pawn]
6.3. Далее производим проверку на команду игрока:

[pawn]
  1. if(userTeam == CS_TEAM_T)

  2. {

  3.         //code

  4. }
[/pawn]
6.4. И, если игрок проходит данную проверку, назначаем ему модель Террориста:

[pawn]
  1. cs_set_user_model(id, "admin_tt")
[/pawn]
6.5. Аналогичным образом выполняем проверки для Контр-террориста, используя условный оператор else if:

[pawn]
  1. else if(userTeam == CS_TEAM_CT)

  2. {

  3.         cs_set_user_model(id, "admin_ct")

  4. }
[/pawn]
6.6. Если вы всё сделали верно, то в конечном итоге должен получиться такой код:

[pawn]
  1. #include <amxmodx>

  2. #include <cstrike>

  3. #include <hamsandwich>

  4.  

  5. public plugin_init()

  6. {

  7.         RegisterHam(Ham_Spawn, "player", "SetModel", 1)

  8. }

  9.  

  10. public plugin_precache()

  11. {

  12.         precache_model("models/player/admin_ct/admin_ct.mdl")

  13.         precache_model("models/player/admin_tt/admin_tt.mdl")

  14. }

  15.  

  16. public SetModel(const id)

  17. {

  18.         if(!is_user_connected(id)) return;

  19.         new CsTeams:userTeam = cs_get_user_team(id), iFlags = get_user_flags(id)

  20.         if(iFlags & ADMIN_BAN)

  21.         {

  22.                 if(userTeam == CS_TEAM_T)

  23.                 {

  24.                         cs_set_user_model(id, "admin_tt")

  25.                 }

  26.                 else if(userTeam == CS_TEAM_CT)

  27.                 {

  28.                         cs_set_user_model(id, "admin_ct")

  29.                 }

  30.         }

  31. }
[/pawn]
Также прилагаю код для двух флагов: для админа и вип-игрока:

[pawn]
  1. #include <amxmodx>

  2. #include <cstrike>

  3. #include <hamsandwich>

  4.  

  5. public plugin_init()

  6. {

  7.         RegisterHam(Ham_Spawn, "player", "SetModel", 1)

  8. }

  9.  

  10. public plugin_precache()

  11. {

  12.         precache_model("models/player/admin_tt/admin_tt.mdl")

  13.         precache_model("models/player/admin_ct/admin_ct.mdl")

  14.         precache_model("models/player/vip_tt/vip_tt.mdl")

  15.         precache_model("models/player/vip_ct/vip_ct.mdl")

  16. }

  17.  

  18. public SetModel(const id)

  19. {

  20.         if(!is_user_connected(id)) return;

  21.         new CsTeams:userTeam = cs_get_user_team(id), iFlags = get_user_flags(id)

  22.         if(iFlags & ADMIN_BAN)

  23.         {

  24.                 if(userTeam == CS_TEAM_T)

  25.                 {

  26.                         cs_set_user_model(id, "admin_tt")

  27.                 }

  28.                 else if(userTeam == CS_TEAM_CT)

  29.                 {

  30.                         cs_set_user_model(id, "admin_ct")

  31.                 }

  32.         }

  33.         else if(iFlags & ADMIN_LEVEL_H)

  34.         {

  35.                 if(userTeam == CS_TEAM_T)

  36.                 {

  37.                         cs_set_user_model(id, "vip_tt")

  38.                 }

  39.                 else if(userTeam == CS_TEAM_CT)

  40.                 {

  41.                         cs_set_user_model(id, "vip_ct")

  42.                 }

  43.         }

  44. }
[/pawn]
А также прилагаю список констант флагов доступа (информация взята из amxconst.inc):

[pawn]
  1. #define ADMIN_ALL               0       /* everyone */

  2. #define ADMIN_IMMUNITY          (1<<0)  /* flag "a" */

  3. #define ADMIN_RESERVATION       (1<<1)  /* flag "b" */

  4. #define ADMIN_KICK              (1<<2)  /* flag "c" */

  5. #define ADMIN_BAN               (1<<3)  /* flag "d" */

  6. #define ADMIN_SLAY              (1<<4)  /* flag "e" */

  7. #define ADMIN_MAP               (1<<5)  /* flag "f" */

  8. #define ADMIN_CVAR              (1<<6)  /* flag "g" */

  9. #define ADMIN_CFG               (1<<7)  /* flag "h" */

  10. #define ADMIN_CHAT              (1<<8)  /* flag "i" */

  11. #define ADMIN_VOTE              (1<<9)  /* flag "j" */

  12. #define ADMIN_PASSWORD          (1<<10) /* flag "k" */

  13. #define ADMIN_RCON              (1<<11) /* flag "l" */

  14. #define ADMIN_LEVEL_A           (1<<12) /* flag "m" */

  15. #define ADMIN_LEVEL_B           (1<<13) /* flag "n" */

  16. #define ADMIN_LEVEL_C           (1<<14) /* flag "o" */

  17. #define ADMIN_LEVEL_D           (1<<15) /* flag "p" */

  18. #define ADMIN_LEVEL_E           (1<<16) /* flag "q" */

  19. #define ADMIN_LEVEL_F           (1<<17) /* flag "r" */

  20. #define ADMIN_LEVEL_G           (1<<18) /* flag "s" */

  21. #define ADMIN_LEVEL_H           (1<<19) /* flag "t" */

  22. #define ADMIN_MENU              (1<<20) /* flag "u" */

  23. #define ADMIN_ADMIN             (1<<24) /* flag "y" */

  24. #define ADMIN_USER              (1<<25) /* flag "z" */
[/pawn]
Последний раз редактировалось Шарль Перро 08 июн 2014, 19:50, всего редактировалось 18 раз(а).
NEW IRS[IN`DEX Rank System]
ГОТОВ.
[spoiler]тык
185.22.234.222:27018[/spoiler]
Аватара пользователя
Шарль Перро
 
Сообщения: 362
Зарегистрирован: 07 май 2014, 18:02
Забанен
Благодарил (а): 93 раз.
Поблагодарили: 91 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6

Re: Плагин выдачи моделек по флагу

Сообщение D34by » 08 июн 2014, 16:49

В такой теме как скрипты, своя правильность может быть хуже предлагаемой
(Это я просто так на заметку сказал)
:-)
Work with Zombie Plague ver. 4|5, Biohazard, Zombie Engine, Public, Weapon System
Аватара пользователя
D34by
 
Сообщения: 537
Зарегистрирован: 13 фев 2014, 12:45
Благодарил (а): 15 раз.
Поблагодарили: 192 раз.
Опыт программирования: Больше трех лет
Языки программирования: пешка
сишка

Re: Плагин выдачи моделек по флагу

Сообщение prefed801 » 08 июн 2014, 16:50

D34by писал(а):Быдло способ через ResetHUD ? окай


Любой способ будет работать нормально, если руки с того места :-D
Аватара пользователя
prefed801
 
Сообщения: 680
Зарегистрирован: 24 янв 2013, 22:09
Забанен
Благодарил (а): 0 раз.
Поблагодарили: 147 раз.

Re: Плагин выдачи моделек по флагу

Сообщение D34by » 08 июн 2014, 17:08

tom94ok писал(а):
D34by писал(а):Быдло способ через ResetHUD ? окай


Любой способ будет работать нормально, если руки с того места :-D

D34by писал(а):Этот как спорить, как лучше модели ставить, Curweapon или Ham_Item_Deploy :ROFL:

Почему не доходит смысл слов, непонятно
Work with Zombie Plague ver. 4|5, Biohazard, Zombie Engine, Public, Weapon System
Аватара пользователя
D34by
 
Сообщения: 537
Зарегистрирован: 13 фев 2014, 12:45
Благодарил (а): 15 раз.
Поблагодарили: 192 раз.
Опыт программирования: Больше трех лет
Языки программирования: пешка
сишка

Re: Плагин выдачи моделек по флагу

Сообщение prefed801 » 08 июн 2014, 17:15

D34by писал(а):
tom94ok писал(а):
D34by писал(а):Быдло способ через ResetHUD ? окай


Любой способ будет работать нормально, если руки с того места :-D

D34by писал(а):Этот как спорить, как лучше модели ставить, Curweapon или Ham_Item_Deploy :ROFL:

Почему не доходит смысл слов, непонятно


В голове только curweapon и ham?
Аватара пользователя
prefed801
 
Сообщения: 680
Зарегистрирован: 24 янв 2013, 22:09
Забанен
Благодарил (а): 0 раз.
Поблагодарили: 147 раз.

Re: Плагин выдачи моделек по флагу

Сообщение D34by » 08 июн 2014, 17:19

Много всего, только некоторым это не понять
(с) Оставим сумасшедшего в его сумасшествии :-D
Больше тут отписываться не буду, кто-то не хочет воспринимать и понимать инфу
Work with Zombie Plague ver. 4|5, Biohazard, Zombie Engine, Public, Weapon System
Аватара пользователя
D34by
 
Сообщения: 537
Зарегистрирован: 13 фев 2014, 12:45
Благодарил (а): 15 раз.
Поблагодарили: 192 раз.
Опыт программирования: Больше трех лет
Языки программирования: пешка
сишка

Re: Плагин выдачи моделек по флагу

Сообщение prefed801 » 08 июн 2014, 17:45

(с) Оставим сумасшедшего в его сумасшествии :-D


Я согласен, что ты сумасшедший :-D
Аватара пользователя
prefed801
 
Сообщения: 680
Зарегистрирован: 24 янв 2013, 22:09
Забанен
Благодарил (а): 0 раз.
Поблагодарили: 147 раз.

Re: Плагин выдачи моделек по флагу

Сообщение sa1me » 08 июн 2014, 18:28

Еще я не понял смысла делать в форварде SetModel, индекс id константой.
Больше тут отписываться не буду, кто-то не хочет воспринимать и понимать инфу

У меня в принципе тоже всё.
Аватара пользователя
sa1me
 
Сообщения: 361
Зарегистрирован: 07 апр 2014, 20:51
Откуда: pfnAddToFullPack
Благодарил (а): 174 раз.
Поблагодарили: 177 раз.
Опыт программирования: Меньше недели

Re: Плагин выдачи моделек по флагу

Сообщение Subb98 » 08 июн 2014, 19:02

Eriurias писал(а):Еще я не понял смысла делать в форварде SetModel, индекс id константой.

Это моих рук дело. "Стилистика", если хотите. Не вижу смысла оставлять непостоянным значение передаваемого аргумента, который никогда не будет изменён.
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 5485
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1329 раз.
Поблагодарили: 2343 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: Плагин выдачи моделек по флагу

Сообщение Nellson » 18 май 2016, 08:25

Хороший урок, поставил "Спасибо".
Аватара пользователя
Nellson
 
Сообщения: 1
Зарегистрирован: 17 май 2016, 22:54
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6

Пред.

Вернуться в Добавленные новые плагины

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2