[VIP] Core

AZA

/reset
Сообщения
883
Реакции
162
R1KO, писать плагины сразу под новый синтаксис,да бы не сидеть на старом =)
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • Автор ресурса
  • #23
vaxa, я не могу написать вип на новом т.к. он сам не позволяет. Там нельзя приравнивать значения к функциям. Поэтому я не могу даже скомпилить старый синтаксис новым компилятором с новыми функциями получения стима.
Хотя там кажется варнинги но я очкую что будет работать не корректно.
 

SlavON

Добрая душа
Сообщения
1,582
Реакции
326
1. Думаю модули будут лучше. Я кроме стим ид не собираюсь юзать другую авторизацию, на кс го актуально как-то онли стим.
2. Ну если я добавил по стим ид и ник человек поменял, то думаю конечно надо).
3. Думаю так само то:
1. [STEAM] Игрок1
2. [STEAM] Игрок2
3. [IP] Игрок3
4. [NAME] Игрок4
Если например модуль только стим ид, то просто список без тега.
 

gibs

Фитиль народного волненья
Сообщения
722
Реакции
407
Мошенник
Ник обновляется только если авторизация по стиму/ип.


Но есть раздел No-Steam. Я автор, и я имею полное право поддерживать все игры, котрые хочу, в том числе и в34. Не я виновен в том что она сущевствует, что в неё играют и на ней держат серверы. Просто потом начнут писать и просить сделать по ип и прочее.

Оффтоп

Скорее всего сделаю стим, а остальное модулями (прийдется продумать еще это...)

А насчет обновления ника. Так удобно тем что когда игрок заходит под другим ником то в випке он будет уже под ним. Но некоторым лучше чтобы как в сб с админами. Добавил и этот ник остался за ним. Просто не знаю как будет всем удобно.

А что насчет нового синтаксиса:
PHP:
BAILOPAN:
It is no longer legal to store functions inside arrays. This will be fixed in a future release, but we will need to introduce a new array type.

А что тут думать. Делаешь форвард какой-нибудь типа "OnClientAuthorized" и пушишь рефы.

Тут политика твоя не совсем понятна. Если был релиз и это паблик версия, при чём с отдельной веткой на форуме, то где исходники? Ради интереса скачал какой-то модульный плагин - исходника не нашёл. Затем другой, и, прикинь, тоже самое.

Какой смысл пользователям вообще использовать твой вип плагин, если есть такие же, но с открытыми исходниками как, к примеру, Stumm на ам?

Оффтоп

ЗЫ: не нарушай лицензию
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • Автор ресурса
  • #26
Тут политика твоя не совсем понятна. Если был релиз и это паблик версия, при чём с отдельной веткой на форуме, то где исходники? Ради интереса скачал какой-то модульный плагин - исходника не нашёл. Затем другой, и, прикинь, тоже самое.
Какой смысл пользователям вообще использовать твой вип плагин, если есть такие же, но с открытыми исходниками как, к примеру, Stumm на ам?
Не ко всем модулям есть исходники (только к нескольким их нет) т.к. я не хочу выкладывать сырой код.

И к ядру так же. Много комментариев для себя и прочей грязи в коде, которая висит, и удалить жалко и заюзать не выходит. Как всё доведу до ума тогда и выложу.
Исходники же не скрыты прям вообще. Они есть у некоторых скриптеров.

Какой смысл пользователям вообще использовать твой вип плагин, если есть такие же, но с открытыми исходниками как, к примеру, Stumm на ам?
Я никого не завставляю ничего ставить и использовать.

А что тут думать. Делаешь форвард какой-нибудь типа "OnClientAuthorized" и пушишь рефы.

Тоесть?
 
Последнее редактирование:

gibs

Фитиль народного волненья
Сообщения
722
Реакции
407
Мошенник
Не ко всем модулям есть исходники (только к нескольким их нет) т.к. я не хочу выкладывать сырой код.

И к ядру так же. Много комментариев для себя и прочей грязи в коде, которая висит, и удалить жалко и заюзать не выходит. Как всё доведу до ума тогда и выложу.
Исходники же не скрыты прям вообще. Они есть у некоторых скриптеров.


Я никого не завставляю ничего ставить и использовать.



Тоесть?

Если ты делаешь релиз, то какой такой сырой код?

Ты спросил как сделать модульно авторизацию. Реф (англ. reference) означает ссылку, то-есть пушить в форвард переменные по ссылке, смотря как ты хранишь права в переменных.
В принципе, всё и так уже придумано. Тот же сорсмод взять с ребилдом. Можно было бы тебе помочь и посоветовать больше, но в релизе исходников увы нету))
 
Последнее редактирование модератором:

Argonavt

Участник
Сообщения
34
Реакции
8
R1KO, а есть уже структура таблиц базы? ее можно посмотреть?
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • Автор ресурса
  • #30
Argonavt,
PHP:
if (g_bDBMySQL)
	{
		SQL_TQuery(g_hDatabase, SQL_Callback_ErrorCheck, "CREATE TABLE IF NOT EXISTS `vip_users` (\
																`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,\
																`auth` VARCHAR(32) UNIQUE NULL default NULL,\
																`name` VARCHAR(64) NOT NULL default 'unknown',\
																`ip` VARCHAR(32) default NULL,\
																`auth_type` INT(3) NOT NULL default '0',\
																`pass_key` VARCHAR(64) default NULL,\
																`password` VARCHAR(64) default NULL,\
																`group` VARCHAR(64) default NULL,\
																`expires` INT(11) UNSIGNED NOT NULL default '0',\
																PRIMARY KEY (`id`)) ENGINE=MyISAM default CHARSET=utf8 AUTO_INCREMENT=1;");

		SQL_TQuery(g_hDatabase, SQL_Callback_ErrorCheck, "CREATE TABLE IF NOT EXISTS `vip_users_overrides` (\
																`user_id` INT UNSIGNED NOT NULL,\
																`server_id` INT UNSIGNED NOT NULL,\
																PRIMARY KEY  (`user_id`,`server_id`)) ENGINE=MyISAM default CHARSET=utf8;");
	}
	else
	{
		SQL_TQuery(g_hDatabase, SQL_Callback_ErrorCheck, "CREATE TABLE IF NOT EXISTS `vip_users` (\
																`id` INT UNSIGNED NOT NULL INTEGER PRIMARY KEY AUTOINCREMENT,\
																`auth` VARCHAR(32) UNIQUE NULL default NULL,\
																`name` VARCHAR(64) NOT NULL default 'unknown',\
																`ip` VARCHAR(32) default NULL,\
																`auth_type` INT(3) NOT NULL default '0',\
																`pass_key` VARCHAR(64) default NULL,\
																`password` VARCHAR(64) default NULL,\
																`group` VARCHAR(64) default NULL,\
																`expires` INT(11) UNSIGNED NOT NULL default '0');");
	}

По поводу ип еще думаю. Если придумаю хороший способ сделать авторизацию через модульность то этого столбца не будет.

У кого есть замечания/пожелания/предложения по структуре - готов выслушать.
 
Последнее редактирование:

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • Автор ресурса
  • #31
Вот выкладываю проверить на предмет ошибок.
Что нужно проверить:
  • Добавление игроков
  • Корректность работы паролей и групп
  • Удаление игроков (работает только командой)

Для использования MySQL в databases.cfg прописать:
C-подобный:
"vip"
{
	"driver"		"mysql"
	"host"			"ip"			// ip сервера где находится ваш mysql 
	"database"		"vip"		// название базы данных
	"user"			"root"			// имя пользователя базы данных
	"pass"			"pass"			// пароль для этого пользователя
}

Удалите старый vip_core.cfg и перезапустите сервер. Появится новый конфиг. В нем установите id сервера на значение больше 0. И так на каждом сервере (ид должны быть разными)
 

Вложения

  • VIP_Core.smx
    41.7 КБ · Просмотры: 8

Argonavt

Участник
Сообщения
34
Реакции
8
Есть пару предложений:
  • Поменять тип движка с MyISAM на InnoDB;
  • Тип поля expires, изменить на datetime (с данным типом не всегда удобно работать в скриптах, но удобно во всех остальных случаях);

Если игрок покупает второй раз вип, он будет добавлен заново или обновится старая запись?

Не совсем понял для чего нужен "pass_key".
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • Автор ресурса
  • #33
Тип поля expires, изменить на datetime (с данным типом не всегда удобно работать в скриптах, но удобно во всех остальных случаях);
datetime мне не подходит т.к. удобнее всего работать с unix.
Тем более в плагине есть преобразование в нормальный вип, да и в php тоже есть.

Поменять тип движка с MyISAM на InnoDB;
Преимущества?

Если игрок покупает второй раз вип, он будет добавлен заново или обновится старая запись?
Это уже вопросы к тому кто будет писать веб часть. Вип игроку нельзя выдать вип повторно.
Сделаю команду для продления.


Не совсем понял для чего нужен "pass_key".
Это переменная, по которой будет получаться пароль из клиента. Например если pass_key == "vip"
то игрок должен писать так: setinfo "vip" "пароль".
 

Argonavt

Участник
Сообщения
34
Реакции
8
При использовании datetime, к нему доступны MySQL функции дат, типа BETWEEN, DATE_ADD. Также очень удобно делать поиск и добавления даты вручную. Я знаю что есть некоторые неудобства в скриптах, об этом я писал, но преимуществ с этим типом явно больше.

Использовать MyISAM лучше в таблицах, которых преобладает один вид доступа: чтение (новостной сайт) или запись (например, логирование) ;
Использование InnoDB имеет смысл во всех остальных случаях и случаях повышенных требований по сохранности данных. (С) http://itif.ru/otlichiya-myisam-innodb/

Таблицы типа MyISAM, очень часто крашатся, проверено личным, горьким опытом.
 
  • Мне нравится
Реакции: R1KO

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • Автор ресурса
  • #35
Обновленная версия 2.0.0
Что нового:
  • Сделано удаление VIP-игроков консольной командой.
  • Исправлена работа MySQL.
  • Исправлены и оптимизированы запросы создания таблиц (спасибо Argonavt и Onotole).
  • Проведено первичное тестирование всего сделанного.
  • Исправлена ошибка Client 1 is not VIP (Спасибо September за тестирование).
  • Мелкие коррекции кода.

При обновлении удалите старые таблицы (касается и MySQL и SQL).

Для использования MySQL в databases.cfg прописать:
C-подобный:
"vip"
{
	"driver"		"mysql"
	"host"			"ip"			// ip сервера где находится ваш mysql 
	"database"		"vip"		// название базы данных
	"user"			"root"			// имя пользователя базы данных
	"pass"			"pass"			// пароль для этого пользователя
}

Удалите старый vip_core.cfg и перезапустите сервер. Появится новый конфиг. В нем установите id сервера на значение больше 0. И так на каждом сервере (ид должны быть разными)

Вот новые запросы:
PHP:
if (g_bDBMySQL)
	{
		SQL_TQuery(g_hDatabase, SQL_Callback_ErrorCheck,	"CREATE TABLE IF NOT EXISTS `vip_users` (\
																		`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,\
																		`auth` VARCHAR(32) UNIQUE NULL default NULL,\
																		`name` VARCHAR(64) NOT NULL default 'unknown',\
																		`ip` VARCHAR(32) default NULL,\
																		`auth_type` TINYINT(2) UNSIGNED NOT NULL default '0',\
																		`pass_key` VARCHAR(64) default NULL,\
																		`password` VARCHAR(64) default NULL,\
																		`group` VARCHAR(64) default NULL,\
																		`expires` INT(10) UNSIGNED NOT NULL default '0',\
																		PRIMARY KEY (`id`)) ENGINE=InnoDB default CHARSET=utf8 AUTO_INCREMENT=1;");

		SQL_TQuery(g_hDatabase, SQL_Callback_ErrorCheck,	"CREATE TABLE IF NOT EXISTS `vip_users_overrides` (\
																		`index_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,\ 
																		`user_id` INT(10) UNSIGNED NOT NULL,\ 
																		`server_id` INT(10) UNSIGNED NOT NULL,\ 
																		PRIMARY KEY  (`index_id`)) ENGINE=InnoDB default CHARSET=utf8 AUTO_INCREMENT=1;");
	}
	else
	{
		SQL_TQuery(g_hDatabase, SQL_Callback_ErrorCheck,	"CREATE TABLE IF NOT EXISTS `vip_users` (\
																		`id` INTEGER PRIMARY KEY AUTOINCREMENT,\
																		`auth` VARCHAR(32) UNIQUE NULL default NULL,\
																		`name` VARCHAR(64) NOT NULL default 'unknown',\
																		`ip` VARCHAR(32) default NULL,\
																		`auth_type` INTEGER UNSIGNED NOT NULL default '0',\
																		`pass_key` VARCHAR(64) default NULL,\
																		`password` VARCHAR(64) default NULL,\
																		`group` VARCHAR(64) default NULL,\
																		`expires` INTEGER UNSIGNED NOT NULL default '0');");
	}

Они еще не конечные, еще думаю над организацией модульности авторизации.
 

Вложения

  • VIP_Core.smx
    41.7 КБ · Просмотры: 18
  • vip_core.phrases.txt
    18.6 КБ · Просмотры: 23
Последнее редактирование:

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • Автор ресурса
  • #36
Как вариант, группу, пароль (+ ключ) и время перенести в таблицу vip_users_overrides.
Тогда можно будет указывать разные группы, пароли и время на разные сервера.
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • Автор ресурса
  • #38
Как вариант, группу, пароль (+ ключ) и время перенести в таблицу vip_users_overrides.
Тогда можно будет указывать разные группы, пароли и время на разные сервера.

Я так понял что на это всем плевать. Поэтому буду делать на свое усмотрение.
Это немного усложнит задачу для тех кто будет делать веб-часть зато даст больше возможностей.

SaInT.P, Сейчас решаю как сделать авторизацию модульно.
 

MrTonik

Участник
Сообщения
244
Реакции
36
Вопрос №3
В списке вип игроков (в админке) делать как было раньше:
1. Стим
2. ип
3. ник
При выборе - списки игроков.
или сделать так:
1. [STEAM] Игрок1
2. [STEAM] Игрок2
3. [IP] Игрок3
4. [NAME] Игрок4

чтоб писало STEAM,Name,IP
 

Argonavt

Участник
Сообщения
34
Реакции
8
Я так понял что на это всем плевать. Поэтому буду делать на свое усмотрение.
Это немного усложнит задачу для тех кто будет делать веб-часть зато даст больше возможностей.

SaInT.P, Сейчас решаю как сделать авторизацию модульно.

Рико, а зачем вообще данный функционал? Разве стим айди или айпи не достаточно?
 
Сверху Снизу