Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

amx_adminmodel + admin spy

Статус пользователя kritic
сообщение 12.3.2016, 4:16
Сообщение #1


Стаж: 11 лет

Сообщений: 1128
Благодарностей: 832
Полезность: 1488

Доброго утра/ночи!
Помогите нубу.
Юзаю я значит
amx_adminmodel
Код
#include <amxmodx>
#include <amxmisc>
#include <cstrike>

public plugin_init() {

        register_plugin("AMX Admin Model", "1.1.1", "whitemike")
        register_event("ResetHUD", "resetModel", "b")
        return PLUGIN_CONTINUE
}

public plugin_precache() {

        precache_model("models/player/adminsmit/adminsmit.mdl")
        precache_model("models/player/adminsmit/adminsmit.mdl")

        return PLUGIN_CONTINUE

}

public resetModel(id, level, cid) {

        if (get_user_flags(id) & ADMIN_IMMUNITY) {

                new CsTeams:userTeam = cs_get_user_team(id)

                if (userTeam == CS_TEAM_T) {
                        cs_set_user_model(id, "adminsmit")
                }
                else if(userTeam == CS_TEAM_CT) {
                        cs_set_user_model(id, "adminsmit")
                }
                else {
                        cs_reset_user_model(id)
                }
        }

        return PLUGIN_CONTINUE

}
и
admin spy.
Код
/* Plugin generated by Emilioneri */

#include <amxmodx>
#include <amxmisc>
#include <cstrike>

#define PLUGIN "Spy"
#define VERSION "1.0"
#define AUTHOR "Emilioneri"


public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    // Add your code here...
    register_concmd("amx_spy", "cmd_spy", ADMIN_SLAY, "< name | #userid > 1/0")
}

public plugin_precache()
{
    precache_model("models/player/sas/sas.mdl")
    precache_model("models/player/guerilla/guerilla.mdl")
}

public cmd_spy(id, level, cid)
{
    if (!cmd_access(id, level, cid, 3))
       return PLUGIN_HANDLED
      
    new Argument[32], status[4]
    
    read_argv(1, Argument, 31)
    read_argv(2, status, 3)
    
    new Target = cmd_target(id, Argument, CMDTARGET_ALLOW_SELF | CMDTARGET_OBEY_IMMUNITY)
    
    if (Target)
    {
        if (equal(status, "1"))
        {
            if (cs_get_user_team(Target) == CS_TEAM_CT)
            {
                cs_set_user_model(Target, "guerilla")
                return PLUGIN_HANDLED
            }
            else if(cs_get_user_team(Target) == CS_TEAM_T)
            {
                cs_set_user_model(Target, "sas")
                return PLUGIN_HANDLED
            }
            else
            {
                cs_reset_user_model(Target)
                return PLUGIN_HANDLED
            }
        }
        if (equal(status, "0"))
        {
            cs_reset_user_model(Target)
            return PLUGIN_HANDLED
        }
    }
    return PLUGIN_HANDLED
}
И вот у админов появилась такая прихоть как делать шпионами самих себя и,
закономерно, моделька у них не меняется.
Не подскажете как сделать чтобы при вводе команды "сделать шпионом" им менялась моделька на дефолтную,
противоположную их команде?
Ну совсем супер было бы "склеить" эти 2 плагина в 1 если такое возможно smile.gif

Отредактировал: kritic, - 12.3.2016, 4:22
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Danjkeee^
сообщение 12.3.2016, 9:02
Сообщение #2
Стаж: 14 лет
Город: Волгоград

Сообщений: 628
Благодарностей: 215
Полезность: 508

А сейчас что происходит при вводе данной команды? Подробнее опиши все что не так работает, и как должно работать
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя kritic
сообщение 12.3.2016, 15:47
Сообщение #3


Стаж: 11 лет

Сообщений: 1128
Благодарностей: 832
Полезность: 1488

Цитата(Danjkeee^ @ 12.3.2016, 10:02) *
А сейчас что происходит при вводе данной команды? Подробнее опиши все что не так работает, и как должно работать

Ну должна моделька сас меняться на гориллу (и наоборот). Типа админ выбирает игрока на серве и делает его шпионом.
И всё было норм пока я плагин модели для админов не поставил. Теперь у админов модель смита и они не могут поменять себя
на саса или гориллу (видимо потому что для смены ты должен быть обязательно сасом или гориллой).
Тьфу. Пока это писал, до меня дошло: а если назвать модель смита сасом и гориллой. И положить в специальные папки
(смит сас, смит горилла). Прокатит?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя tr0uble
сообщение 12.3.2016, 16:58
Сообщение #4


Стаж: 12 лет

Сообщений: 88
Благодарностей: 31
Полезность: 273

Как вариант smile.gif
Не проверял.

Код:
#include <amxmodx>
#include <cstrike>
#include <colorchat>

public plugin_precache()
{
precache_model("models/player/sas/sas.mdl")
precache_model("models/player/guerilla/guerilla.mdl")
precache_model("models/player/adminsmit/adminsmit.mdl")
}

public plugin_init()
{
register_plugin("Admin Spy", "1.1", "AUTHOR")
register_clcmd("say /spy", "SpyMenu")
}

public SpyMenu(id)
{
if(get_user_flags(id) & ADMIN_BAN)
{

new menu = menu_create("\r[\yAdmin Spy\r] \wМеню шпиона", "spy_handler")

menu_additem(menu, "Стать шпионом T", "1" );
menu_additem(menu, "Стать шпионом CT", "2");
menu_additem(menu, "Вернуть модельку админа", "3");
menu_setprop(menu, MPROP_EXITNAME, "Выход^n^n")

menu_display(id, menu, 0)
}
else
{
ColorChat(id, 0, "^1[^4Admin Spy^1] Это меню только для ^4Администраторов!")
}
return PLUGIN_HANDLED;
}

public spy_handler(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED;
}

new data[6], iName[64], acces, callback

menu_item_getinfo(menu, item, acces,data, 5, iName, 64, callback)

new key = str_to_num(data)

switch(key)
{
case 1:
{
if(!is_user_alive(id))
{
ColorChat(id, 0, "^1[^4Admin Spy^1] Вы дожны быть живы!")
return PLUGIN_HANDLED
}

cs_set_user_model(id, "guerilla")

}
case 2:
{
if(!is_user_alive(id))
{
ColorChat(id, 0, "^1[^4Admin Spy^1] Вы должны быть живы!")
return PLUGIN_HANDLED
}

cs_set_user_model(id, "sas")

}
case 3:
{
if(!is_user_alive(id))
{
ColorChat(id, 0, "^1[^4Admin Spy^1] Вы должны быть живы!")
return PLUGIN_HANDLED
}

cs_set_user_model(id, "adminsmit")

}

}
return PLUGIN_HANDLED;
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя kritic
сообщение 12.3.2016, 17:03
Сообщение #5


Стаж: 11 лет

Сообщений: 1128
Благодарностей: 832
Полезность: 1488

tr0uble, а игроков-то можно делать шпионами?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя tr0uble
сообщение 12.3.2016, 17:10
Сообщение #6


Стаж: 12 лет

Сообщений: 88
Благодарностей: 31
Полезность: 273

Цитата(kritic @ 12.3.2016, 19:03) *
tr0uble, а игроков-то можно делать шпионами?

Тут только для Админов.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя kritic
сообщение 12.3.2016, 17:18
Сообщение #7


Стаж: 11 лет

Сообщений: 1128
Благодарностей: 832
Полезность: 1488

tr0uble, а можно сделать чтоб работали оба плагина:
т.е. админы делают шпионами кого хотят (в том числе себя), при этом у них
изначально стоит модель смита?

в конце концов можно изменить плагин шпиона так чтобы админы могли менять модель
кому угодно на одну из трёх: смит, обычный мент, обычный тер. а у них самих изначально смит.
так наверно проще объяснил)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя kritic
сообщение 12.3.2016, 21:12
Сообщение #8


Стаж: 11 лет

Сообщений: 1128
Благодарностей: 832
Полезность: 1488

tr0uble,
Немного "отредактировал"
ваш код
Код
#include <amxmodx>
#include <cstrike>
#include <colorchat>

public plugin_precache()
{
    precache_model("models/player/sas/sas.mdl")
    precache_model("models/player/guerilla/guerilla.mdl")
    precache_model("models/player/adminsmit/adminsmit.mdl")
}

public plugin_init()
{
   register_plugin("Admin Spy", "1.1", "AUTHOR")
   register_clcmd("say /spy", "SpyMenu")
}

public SpyMenu(id)
{
   if(get_user_flags(id) & ADMIN_BAN)
   {
      
      new menu = menu_create("\r[\yAdmin Spy\r] \wМеню шпиона", "spy_handler")
    
      menu_additem(menu, "Стать шпионом CT", "1" );
      menu_additem(menu, "Стать шпионом T", "2");
      menu_additem(menu, "Стать Агентом Смитом", "3");
      menu_setprop(menu, MPROP_EXITNAME, "Выход^n^n")
    
      menu_display(id, menu, 0)
   }
   else
   {
      ColorChat(id, 0, "^1[^4Admin Spy^1] Это меню только для ^4Администраторов!")
   }
   return PLUGIN_HANDLED;
}

public spy_handler(id, menu, item)
{
   if(item == MENU_EXIT)
   {
      menu_destroy(menu)
      return PLUGIN_HANDLED;
   }
    
   new data[6], iName[64], acces, callback
    
   menu_item_getinfo(menu, item, acces,data, 5, iName, 64, callback)
    
   new key = str_to_num(data)
    
   switch(key)
   {
      case 1:
      {
         if(!is_user_alive(id))
         {
            ColorChat(id, 0, "^1[^4Admin Spy^1] Вы дожны быть живы!")
            return PLUGIN_HANDLED
         }      

         cs_set_user_model(id, "sas")
          
      }
      case 2:
      {
         if(!is_user_alive(id))
         {
            ColorChat(id, 0, "^1[^4Admin Spy^1] Вы должны быть живы!")
            return PLUGIN_HANDLED
         }  
      
                        cs_set_user_model(id, "guerilla")
          
      }
      case 3:
      {
         if(!is_user_alive(id))
         {
            ColorChat(id, 0, "^1[^4Admin Spy^1] Вы должны быть живы!")
            return PLUGIN_HANDLED
         }
          
                        cs_set_user_model(id, "adminsmit")
          
      }
      
   }
   return PLUGIN_HANDLED;
}
(просто поменял пункты 1 и 2 местами и назвал по-другому пункт 3)
При компиляции веб-компилятором с форума есть ошибки:
adminspy.sma(74) : warning 217: loose indentation
adminspy.sma(85) : warning 217: loose indentation
(были и до моей "редакции"). Из гуглинга понял, что скобки в соответствующих
строках расставлены не по фэн-шую. Как это исправить и опасно ли это? Плагин вроде "running"

Отредактировал: kritic, - 12.3.2016, 21:13
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя tr0uble
сообщение 13.3.2016, 0:07
Сообщение #9


Стаж: 12 лет

Сообщений: 88
Благодарностей: 31
Полезность: 273

kritic, пользуюсь 2 редакторами, в одном код нормальный, а в другом часть кода некорректна.
По поводу ошибки, это не ошибка, а предупреждение, что где-то что-то нужно уравнять. Но опять таки, у меня в одном редакторе нормально отображается, а если через другой открыть, то часть кода не выравнена. Эти предупреждения никак не влияют на работу плагина.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя kritic
сообщение 13.3.2016, 18:56
Сообщение #10


Стаж: 11 лет

Сообщений: 1128
Благодарностей: 832
Полезность: 1488

Цитата(tr0uble @ 13.3.2016, 1:07) *
kritic, пользуюсь 2 редакторами, в одном код нормальный, а в другом часть кода некорректна.
По поводу ошибки, это не ошибка, а предупреждение, что где-то что-то нужно уравнять. Но опять таки, у меня в одном редакторе нормально отображается, а если через другой открыть, то часть кода не выравнена. Эти предупреждения никак не влияют на работу плагина.

Благодарю, всё работает отлично, админов плагин устраивает thank_you2.gif
Не первый раз обращаюсь за помощью с плагинами и получаю её бесплатно,
что подтверждает наличие разбирающихся в плагинах, бескорыстных людей на проекте!

Отредактировал: kritic, - 13.3.2016, 19:00
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: