AMX MOD X
Пятница, 26.04.2024, 16:28:16



Приветствую Вас Гость | RSS
[ Главная ] [ Отключение плагина посредством одного квара - AMX Mod X Форум ] [ Регистрация ] [ Вход ]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/

  • Страница 1 из 1
  • 1
Модератор форума: slogic, AlMod  
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » Отключение плагина посредством одного квара
Отключение плагина посредством одного квара
makSuSДата: Вторник, 10.02.2009, 00:34:32 | Сообщение # 1
Подполковник
Группа: Пользователи
Сообщений: 111
Репутация: 0
Статус: Не в сети
написал следующую часть кода:
Code
#define PLUGIN "Plugin"
#define VERSION "0.1"
#define AUTHOR "NeoXidant"

#include <amxmodx>
#include <amxmisc>

new a_enable

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)

    register_dictionary("test.txt")
    register_dictionary("common.txt")

    register_concmd("amx_plugindisen", "cmdDisEn", ADMIN_RCON, "<1|0> - Enables/Disables this plugin")
       
    a_enable = register_cvar("amx_plugindisen", "1")

    return PLUGIN_CONTINUE
}

public cmdDisEn(id, level, cid)
{
    if (!cmd_access(id, level, cid, 2))
     return PLUGIN_HANDLED
        
    new arg[2]
    read_argv(1, arg, 1)

    if (equali(arg, "1"))
    {
     if(get_cvar_num("a_enable") != 0)
     {
      set_pcvar_num(a_enable, 1)
      console_print(id, "%L", LANG_SERVER, "ENABLED")
     }
     else
      console_print(id, "%L", LANG_SERVER, "ALREADY_ENABLED")
    }
     else if (equali(arg, "0"))
    {
     if(get_cvar_num("a_enable") != 1)
       
      console_print(id, "%L", LANG_SERVER, "ALREADY_DISABLED")
       
     else
     {
      set_pcvar_num(a_enable, 0)
      console_print(id, "%L", LANG_SERVER, "DISABLED")
     }
    }
     else
      console_print(id, "%L: amx_plugindisen <1|0>", LANG_SERVER, "USAGE")
    return PLUGIN_CONTINUE
}

public any_function()
{
    if(get_cvar_num("q_enable") != 1)
     return PLUGIN_CONTINUE
..............
}

если ввести в консоли amx_plugindisen, то пишет все как положено:

Quote
Usage:  amx_plugindisen <1|0> - Enables/Disables this plugin

если ввести в консоли amx_plugindisen <любая цифра, кроме 1|0>, то пишет все как положено:
Quote
Usage: amx_plugindisen <1|0>

если ввести в консоли amx_plugindisen <1 или 0>, то начинается бред - при любом значении посылает сообщение, которое обозначено как "ALREADY_DISABLED(ENABLED)"
Quote
ALREADY_ENABLED = The command is ignored. Plugin are already enabled.
ALREADY_DISABLED = The command is ignored. Plugin are already disabled.

а "нужные" сообщения так и не посылаются
Quote
ENABLED = Plugin enabled!
DISABLED = Plugin disabled!

P.S. ucoz сбил отсупы <_<

Сообщение отредактировал makSuS - Вторник, 10.02.2009, 00:36:41
 
draftДата: Вторник, 10.02.2009, 11:21:58 | Сообщение # 2
Полковник
Группа: Пользователи
Сообщений: 225
Репутация: 3
Статус: Не в сети
Ошибка в том, что ты в половине мест используешь pcvar, а в половине написал просто cvar.
То есть get_cvar_num("a_enable") != 1 вот это всегда будет "0", поскольку переменной a_enable не существует. Надо использовать !get_pcvar_num(a_enable)


Сообщение отредактировал draft - Вторник, 10.02.2009, 11:22:30
 
makSuSДата: Вторник, 10.02.2009, 14:35:44 | Сообщение # 3
Подполковник
Группа: Пользователи
Сообщений: 111
Репутация: 0
Статус: Не в сети
если я использую !get_pcvar_num, то возникает ошибка
Code
Error: Argument type mismatch (argument 1) on line xxx

Добавлено (2009-02-10, 2:35 Pm)
---------------------------------------------
починил. вот конечный код:

Code
#define PLUGIN "Plugin"
#define VERSION "0.1"
#define AUTHOR "NeoXidant"

#include <amxmodx>
#include <amxmisc>

new a_enable

public plugin_init()
{
     register_plugin(PLUGIN, VERSION, AUTHOR)

     register_dictionary("test.txt")
     register_dictionary("common.txt")

     register_concmd("amx_plugindisen", "cmdDisEn", ADMIN_RCON, "<1|0> - Enables/Disables this plugin")
         
     a_enable = register_cvar("amx_plugindisen", "1")

     return PLUGIN_CONTINUE
}

public cmdDisEn(id, level, cid)
{
     if (!cmd_access(id, level, cid, 2))
      return PLUGIN_HANDLED
          
  new arg[2]
  read_argv(1, arg, 1)

  if (equali(arg, "1"))
  {
   if (get_pcvar_num(a_enable))
    console_print(id, "%L", LANG_SERVER, "ALREADY_ENABLED")
   else
   {
    set_pcvar_num(a_enable, 1)
    console_print(id, "%L", LANG_SERVER, "ENABLED")
   }
  }
  else if (equali(arg, "0"))
  {
   if (get_pcvar_num(a_enable))
   {
    set_pcvar_num(a_enable, 0)
    console_print(id, "%L", LANG_SERVER, "DISABLED")
   }
   else
    console_print(id, "%L", LANG_SERVER, "ALREADY_DISABLED")
  }
  else
   console_print(id, "%L: amx_plugindisen <1|0>", LANG_SERVER, "USAGE")

  return PLUGIN_HANDLED
}

public any_function()
{
if(get_cvar_num("q_enable") != 1)
return PLUGIN_CONTINUE
..............
}
 
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » Отключение плагина посредством одного квара
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2024