EventScripts PropsAdmin

WeSTMan

А вот тут текст!
Сообщения
833
Реакции
516
Добрый день. Я вот не могу понять команду получения SteamID'а игрока и внедрение его в сам скрипт, чтобы ТОЛЬКО человек с данным SteamID'ом мог открыть меню, сам плагин:
PHP:
block load
{
	popup create propsadmin
	popup addline propsadmin "---PropMenu для администраторов---"
	popup addline propsadmin "->1. Автомат с кокаколой"
	popup addline propsadmin "---PropMenu для администраторов---"
	popup menuselect propsadmin propsadmin/vending
	es_doblock propsadmin/cmd
}
block vending
{
	if (server_var(_popup_choice) == 1) do
	{
   es_setinfo crate_maker 0
   es_getcmduserid crate_maker
   es_prop_dynamic_create server_var(crate_maker) props/cs_office/vending_machine.mdl
   es popup send propsadmin event_var(userid)
   es_tell server_var(_popup_userid) #green "Успешно!"
	}
}
event player_say
{
	if (event_var(text) == !propsend) do
	{
			es_getplayersteamid playersteamid event_var(es_steamid)
			es_setinfo playersteamid "STEAM_0:1:65833927;"
			es popup send propsadmin server_var(playersteamid)
	}
		else do
		{
		es_tell server_var(_popup_userid) #green "Вы не админ!"
		}
}
block cmd
{
	es_regclientcmd vending propsadmin/vending
}
block unload
{
	es_unregclientcmd vending
}
 

WeSTMan

А вот тут текст!
Сообщения
833
Реакции
516
Извините, но eventscripts знаю больше.
 

Reiko1231

AlexTheRegent
Сообщения
508
Реакции
1,335
Извините, но eventscripts знаю больше.
Оффтоп

Вот исправленный код:
C-подобный:
block load
{
    // создали меню
    popup create propsadmin
    popup addline propsadmin "---PropMenu для администраторов---"
    popup addline propsadmin "->1. Автомат с кокаколой"
    popup addline propsadmin "---PropMenu для администраторов---"
    
    // указываем блок для обработки нажатий в меню
    popup menuselect propsadmin propsadmin/handle
    
    // зарегистрировали консольную команду 'vending'
    es_regclientcmd vending propsadmin/vending
}

block unload
{
    // удалили команду 'vending'
    es_unregclientcmd vending
}

block vending
{
    // обнулили переменные
    es_xset padmin_userid 0
    es_xset padmin_auth 0
    
    // получили userid вызвавшего команду
    es_getcmduserid padmin_userid
    // получили его стим
    es_getplayersteamid padmin_auth server_var(padmin_userid)
    
    // проверили его стим
    if (server_var(padmin_auth) = "STEAM_0:1:65833927") do
    {
        es popup send propsadmin server_var(padmin_userid)
    }
    else do
    {
        es_tell server_var(padmin_userid) #greenВы не администратор
    }
}

// блок для обработки нажатий в меню
block handle
{
    // если нажали '1' в меню
    if (server_var(_popup_choice) = 1) do
    {
        es_prop_dynamic_create server_var(_popup_userid) props/cs_office/vending_machine.mdl
        es popup send propsadmin server_var(_popup_userid)
        es_tell server_var(_popup_userid) #greenУспешно!
    }
}

event player_say
{
    if (event_var(text) = "!propsend") do
    {
        es_xset padmin_auth 0
        es_getplayersteamid padmin_auth event_var(userid)
            
        if (server_var(padmin_auth) = "STEAM_0:1:65833927") do
        {
            es popup send propsadmin event_var(userid)
        }
        else do
        {
            es_tell event_var(userid) #greenВы не администратор
        }
    }
}

Кароч как-то так...
 

WeSTMan

А вот тут текст!
Сообщения
833
Реакции
516
Все ли работает?
И последнее, как сделать так, чтобы на 2 удалял предмет, но только не через eventscripts, а через SM в меню eventscripts'a и чтобы можно было делать несколько администраторов в пропс админе
 
Последнее редактирование модератором:

wanted241

Real-Gamer.Ru
Сообщения
428
Реакции
161
Несколько:

es_xset admins_list "STEAM_0:0:124124;STEAM_0:0:949291;...."

Проверка:

if (server_var(padmin_auth) in server_var(admins_list)) do
{
Open Menu.....
}
 

Reiko1231

AlexTheRegent
Сообщения
508
Реакции
1,335
Несколько:

es_xset admins_list "STEAM_0:0:124124;STEAM_0:0:949291;...."

Проверка:

if (server_var(padmin_auth) in server_var(admins_list)) do
{
Open Menu.....
}

У такой проверки есть уязвимость:
Допустим, у меня стим "STEAM_0:0:12412". И мой стим "in server_var(admins_list)", но между тем, у меня не должно быть доступа к админке. Лучше перед if делать так:
C-подобный:
es_format padmin_auth "%1;" server_var(padmin_auth)
Таким образом, код будет выглядеть так:
C-подобный:
block load
{
    // создали меню
    popup create propsadmin
    popup addline propsadmin "---PropMenu для администраторов---"
    popup addline propsadmin "->1. Автомат с кокаколой"
    popup addline propsadmin "---PropMenu для администраторов---"
    
    // указываем блок для обработки нажатий в меню
    popup menuselect propsadmin propsadmin/handle
    
    // зарегистрировали консольную команду 'vending'
    es_regclientcmd vending propsadmin/vending
    
    // прописываем стимы каждого админа, не забывая в конце добавить ';'
    es_xset admins_list "STEAM_0:0:124124;STEAM_0:0:949291;"
}

block unload
{
    // удалили команду 'vending'
    es_unregclientcmd vending
}

block vending
{
    // обнулили переменные
    es_xset padmin_userid 0
    es_xset padmin_auth 0
    
    // получили userid вызвавшего команду
    es_getcmduserid padmin_userid
    // получили его стим
    es_getplayersteamid padmin_auth server_var(padmin_userid)
    // добавили к стиму ';'
    es_format padmin_auth "%1;" server_var(padmin_auth)
    
    // проверили его стим
    if (server_var(padmin_auth) in server_var(admins_list)) do
    {
        es popup send propsadmin server_var(padmin_userid)
    }
    else do
    {
        es_tell server_var(padmin_userid) #greenВы не администратор
    }
}

// блок для обработки нажатий в меню
block handle
{
    // если нажали '1' в меню
    if (server_var(_popup_choice) = 1) do
    {
        es_prop_dynamic_create server_var(_popup_userid) props/cs_office/vending_machine.mdl
        es popup send propsadmin server_var(_popup_userid)
        es_tell server_var(_popup_userid) #greenУспешно!
    }
}

event player_say
{
    if (event_var(text) = "!propsend") do
    {
        es_xset padmin_auth 0
        es_format padmin_auth "%1;" event_var(es_steamid)
            
        if (server_var(padmin_auth) in server_var(admins_list)) do
        {
            es popup send propsadmin event_var(userid)
        }
        else do
        {
            es_tell event_var(userid) #greenВы не администратор
        }
    }
}

А удалить предмет через ES используя чистый SM нельзя - в сурсмоде нет клиентской команды, позволяющей удалять предмет. Если только конечно не ставить какие-то дополнительные плагины, но об этом ничего не было сказано.
 

WeSTMan

А вот тут текст!
Сообщения
833
Реакции
516
хм.. А через EventScripts? Вот только вообще никак не понимаю этих групп и ключей. Добавите в скайп? в ЛС.
 

Vit_ amin

Добрая душа
Сообщения
1,504
Реакции
660
лучше всего использовать Authorthing basic для проверки Steam ID

Добавлено через 21 минуту
Оффтоп

Вот исправленный код:
C-подобный:
block load
{
    // создали меню
    popup create propsadmin
    popup addline propsadmin "---PropMenu для администраторов---"
    popup addline propsadmin "->1. Автомат с кокаколой"
    popup addline propsadmin "---PropMenu для администраторов---"
 
    // указываем блок для обработки нажатий в меню
    popup menuselect propsadmin propsadmin/handle
 
    // зарегистрировали консольную команду 'vending'
    es_regclientcmd vending propsadmin/vending
}
 
block unload
{
    // удалили команду 'vending'
    es_unregclientcmd vending
}
 
block vending
{
    // обнулили переменные
    es_xset padmin_userid 0
    es_xset padmin_auth 0
 
    // получили userid вызвавшего команду
    es_getcmduserid padmin_userid
    // получили его стим
    es_getplayersteamid padmin_auth server_var(padmin_userid)
 
    // проверили его стим
    if (server_var(padmin_auth) = "STEAM_0:1:65833927") do
    {
        es popup send propsadmin server_var(padmin_userid)
    }
    else do
    {
        es_tell server_var(padmin_userid) #greenВы не администратор
    }
}
 
// блок для обработки нажатий в меню
block handle
{
    // если нажали '1' в меню
    if (server_var(_popup_choice) = 1) do
    {
        es_prop_dynamic_create server_var(_popup_userid) props/cs_office/vending_machine.mdl
        es popup send propsadmin server_var(_popup_userid)
        es_tell server_var(_popup_userid) #greenУспешно!
    }
}
 
event player_say
{
    if (event_var(text) = "!propsend") do
    {
        es_xset padmin_auth 0
        es_getplayersteamid padmin_auth event_var(userid)
 
        if (server_var(padmin_auth) = "STEAM_0:1:65833927") do
        {
            es popup send propsadmin event_var(userid)
        }
        else do
        {
            es_tell event_var(userid) #greenВы не администратор
        }
    }
}

Кароч как-то так...
Зачем использвоать
// зарегистрировали консольную команду 'vending'
es_regclientcmd vending propsadmin/vending
и событие player_say если ты уже зарегал client cmd ?
 
Последнее редактирование:

Reiko1231

AlexTheRegent
Сообщения
508
Реакции
1,335
лучше всего использовать Authorthing basic для проверки Steam ID

Добавлено через 21 минуту

Зачем использвоать
// зарегистрировали консольную команду 'vending'
es_regclientcmd vending propsadmin/vending
и событие player_say если ты уже зарегал client cmd ?

Насколько я помню, ES, в отличии от SM, не регистрирует по консольной команде команду для чата, так что в этих целях две возможности открытия меню - через чат и через консоль.
 

Vit_ amin

Добрая душа
Сообщения
1,504
Реакции
660
Насколько я помню, ES, в отличии от SM, не регистрирует по консольной команде команду для чата, так что в этих целях две возможности открытия меню - через чат и через консоль.
event player_say по твоему для чего можно и так можно и этак ....

Добавлено через 1 минуту
Все ли работает?
И последнее, как сделать так, чтобы на 2 удалял предмет, но только не через eventscripts, а через SM в меню eventscripts'a и чтобы можно было делать несколько администраторов в пропс админе
Через индекс энтити eventscript_lastgive

Добавлено через 4 минуты
alex2131,
Оффтоп
И чем по твоему SM лучше ES ? Если в функциональности Source Python Extension и проблема решена

Добавлено через 7 минут
Добрый день. Я вот не могу понять команду получения SteamID'а игрока и внедрение его в сам скрипт, чтобы ТОЛЬКО человек с данным SteamID'ом мог открыть меню, сам плагин:
PHP:
block load
{
    popup create propsadmin
    popup addline propsadmin "---PropMenu для администраторов---"
    popup addline propsadmin "->1. Автомат с кокаколой"
    popup addline propsadmin "---PropMenu для администраторов---"
    popup menuselect propsadmin propsadmin/vending
    es_doblock propsadmin/cmd
}
block vending
{
    if (server_var(_popup_choice) == 1) do
    {
   es_setinfo crate_maker 0
   es_getcmduserid crate_maker
   es_prop_dynamic_create server_var(crate_maker) props/cs_office/vending_machine.mdl
   es popup send propsadmin event_var(userid)
   es_tell server_var(_popup_userid) #green "Успешно!"
    }
}
event player_say
{
    if (event_var(text) == !propsend) do
    {
            es_getplayersteamid playersteamid event_var(es_steamid)
            es_setinfo playersteamid "STEAM_0:1:65833927;"
            es popup send propsadmin server_var(playersteamid)
    }
        else do
        {
        es_tell server_var(_popup_userid) #green "Вы не админ!"
        }
}
block cmd
{
    es_regclientcmd vending propsadmin/vending
}
block unload
{
    es_unregclientcmd vending
}
Отвратительный код оптимизация нулевая и много условий нету ...
 
Последнее редактирование:

Vit_ amin

Добрая душа
Сообщения
1,504
Реакции
660
Хозяин - барин я ничего не говорю вот самый правильный и самый оптимизированный код
Тебе надо только в папке eventscripts/examples/auth/basic_auth/basic_auth.py вписать свой SteamID
Вот здесь : authlist = es.ServerVar("BASIC_AUTH_ADMIN_LIST", defaultvalue="STEAM_ID_LAN;",description="List of administrators for basic_auth")
После STEAM_ID_LAN
Только папку в eventscripts создай prop_create иначе скрипт не запуститься
 

Вложения

  • es_prop_create.txt
    1.2 КБ · Просмотры: 8
Сверху Снизу