ocelote

Бонус за онлайн с проверкой от Gepard Shield

19 сообщений в этой теме

Каждый день входим в игру -> получаем бонус. Расчитано на 31 день.

Создаем таблицу в базе :


create table `daily_bonus` (
`unique_id` int(11),
`ip` varchar (100),
`account_id` int(11),
`day` tinyint (2)
);

Сам скрипт: GitHub.

Проверка на мультов идет по IP + UniqueID от Gepard Shield

Изменено пользователем ocelote
1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не совсем понял насчет блока аккаунта из этой системы

Ну и

dispbottom "≈жедневные награды активированы.";

Изменено пользователем botka4aet
0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В общем, заходишь в игру > идет проверка если в базе есть данный IP или UniqueID то текущего персонажа блокируют, и он не будет получать бонусов.

#blocked_from_bonus = 0; // игрока нет в системе

#blocked_from_bonus = 1; // игрок прошел проверку, получает бонус

#blocked_from_bonus = 2; // игрок забанен в системе и не будет получать бонусов.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Но эта проверка происходит только в первый раз. Те главное в первый раз зайти на новый аккаунт с другого компа, а после ничто не помешает тебе фармить на одном компе любое число акков, тк проверки на гепард и айпи потом просто нет

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Нет, смотри.

Берем 2 аккаунта назовем их 1 и 2

1 заходит в игру, активирует бонусы, тем самым занося свой аккаунт, IP, UniqueID в базу

2 заходит в игру > идет проверка его IP + UniqueID. Система находит его IP ИЛИ UniqueID в базе и сразу блокирует его.

Ну а вообще так как ты сказал это да, но можно будет конечно еще одну влепить проверку, это не проблема)

Изменено пользователем ocelote
0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Обновил скрипт, добавил проверку при каждом входе, теперь будет блокировать каждый раз после захода, если найдет идентичный IP или UniqueID в базе.

Залил все на Github.

1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Снова обновил.

Добавил еще проверок:

Теперь IP и ID будут сверяться каждый раз при входе в игру.

Например : Игрок имеет 2 ПК, 1 дома 1 на работе.

Идет на работу, входит первый раз в игру и его IP+ID записываются в базу, затем он идет домой и на следующий день хочет забрать бонус из дому. Но не тут то было! Скрипт сверяет IP + ID которые записаны в базе (с работы) с текущими (с дому) и если они не соответствуют друг другу - игрока блокирует и он больше не получает бонусы.

В общем, больше я не знаю что придумать, чтоб не жульничали. Если уже у человека 2 разных пк и 2 разных инета дома то мне кажется это уже никак не проверить)

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

К примеру:

- ставишь непися

- при разговоре с неписем можно активировать N компов, с которых можно забирать награду

- записывается ID

- при добавлении компа дается задержка на активацию подарка

А с айпи может быть шляпа из-за динамического

1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Можно, но это я делаю для своего сервера, поэтому мне так более подходит.

Возможно когда-нибудь и реализую, а сейчас тупо не для кого. Мало кто юзает уже неписей с паблика.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Апну чтоль, опыт подсказал что использование аккаунтских переменных на такие скрипты - плохая затея, чуток изменил скрипт + добавил массив с белым списком, если внести туда ID аккаунтов они будут получать бонусы без проверки ID+IP. Вроде пока проблем не возникло, и если что-то пойдет не так, и скрипт заблокирует не того персонажа, то можно изменить в таблице значение blocked с 1 на 0, и все будет отлично.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 24.09.2015в4:44 PM, ocelote сказал:

Каждый день входим в игру -> получаем бонус. Расчитано на 31 день.

Создаем таблицу в базе :

Где можно скачать етот скрипт

В 24.09.2015в4:44 PM, ocelote сказал:

 

 
create table `daily_bonus` (
`unique_id` int(11),
`ip` varchar (100),
`account_id` int(11),
`day` tinyint (2)
);

 

Сам скрипт: GitHub.

Проверка на мультов идет по IP + UniqueID от Gepard Shield

 

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Где можно скачать етот скрипт

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, MalaX сказал:

Где можно скачать етот скрипт

// ALTER TABLE `daily_bonus` ADD `blocked` smallint(1) NOT NULL DEFAULT '0'

-	script	Bonus_DailyDB	-1,{
OnPCLoginEvent:
	if(#daily_bonus_block == 2) end;
	if(!#daily_bonus_block) {
		query_sql("SELECT last_ip, last_unique_id FROM `login` WHERE `account_id` = '"+getcharid(3)+"'", [email protected]$, [email protected]$);
		query_sql("SELECT unique_id, ip FROM `daily_bonus` WHERE `unique_id`= '"[email protected]$+"' OR `ip` = '"[email protected]$+"'", [email protected]_check$, [email protected]_check$);
		// На всякий случай ----------
		if([email protected]$ == "" || [email protected]$ == "" || [email protected]_check$ != "" || [email protected]_check$ != "") callfunc("Bonus_Block", getcharid(3));
		// ---------------------------
		query_sql("INSERT INTO `daily_bonus` (`unique_id`,`ip`,`account_id`,`day`,`blocked`) VALUES ('"[email protected]$+"', '"[email protected]$+"', '"+getcharid(3)+"', '1', '0')");
		#daily_bonus_block = 1;
		message strcharinfo(0), "Система Ежедневных наград активирована!";
		#day ++;
		setd "#day_" + getcharid(3), #day;
		callfunc("Bonus_DB", getd("#day_" + getcharid(3)), getcharid(3), 0);
		end;
	} else if(#daily_bonus_block == 1) {
		query_sql("SELECT login.account_id, login.last_ip, login.last_unique_id, daily_bonus.unique_id, daily_bonus.ip, daily_bonus.account_id, daily_bonus.blocked FROM `daily_bonus`  LEFT JOIN `login` ON login.account_id = daily_bonus.account_id WHERE daily_bonus.account_id = '"+getcharid(3)+"'", [email protected], [email protected]$, [email protected]$, [email protected]$, [email protected]$, [email protected], [email protected]);
		
		if(getarraysize([email protected]$) > 1 || getarraysize([email protected]$) > 1) callfunc("Bonus_Block", getcharid(3));
		callfunc("Daily_Check", [email protected]$, [email protected]$, [email protected]$, [email protected]$);
		if(getd("#day_" + getcharid(3)) == 0) setd "#day_" + getcharid(3), 1;
		callfunc("Bonus_DB", getd("#day_" + getcharid(3)), [email protected], [email protected]);		
		end;
	}
}

function	script	Daily_Check	{
	if(getarg(0) != getarg(2)) callfunc("Bonus_Block", getcharid(3));
	if(getarg(1) != getarg(3)) callfunc("Bonus_Block", getcharid(3));
	return;
}

function	script	Bonus_Block	{
	if(!getarg(0)) end;
	query_sql("UPDATE `daily_bonus` SET `blocked` = '1' WHERE `account_id` = '"+getarg(0)+"'");
	#daily_bonus_block = 2;
	message strcharinfo(0), "Вы были заблокированы в системе Ежедневных наград!";
	end;
}

function	script	Bonus_DB	{
	//	arg(0)		->	day
	//	arg(1)		->	acc_id
	//	arg(2)		->	blocked?
	if(getarg(0) > 31 || getarg(2) == 1) return;
	if(!getarg(0) || !getarg(1)) return;
	[email protected]_prize = [email protected]_prize = [email protected]_days = 0;
	if(getd("#delay_bonus_" + getarg(1)) > gettimetick(2)) return;
	if(getd("#day_" +  getarg(1)) == 0) setd "#day_" + getarg(1), 1;
	set [email protected]_days, getd("#day_" + getarg(1));
	switch([email protected]_days) {
		case 0: return;
		case 1:
			[email protected]_prize = 14545;
			[email protected]_prize = 1;
			break;
		case 2:
			[email protected]_prize = 12214;
			[email protected]_prize = 1;
			break;
		case 3:
			[email protected]_prize = 12210;
			[email protected]_prize = 1;
			break;
		case 4:
			[email protected]_prize = 7621;
			[email protected]_prize = 1;
			break;
		case 5:
			[email protected]_prize = 7539;
			[email protected]_prize = 10;
			break;
		case 6:
			[email protected]_prize = 12103;
			[email protected]_prize = 1;
			break;
		case 7:
			[email protected]_prize = 6241;
			[email protected]_prize = 1;
			break;
		case 8:
			[email protected]_prize = 6240;
			[email protected]_prize = 1;
			break;
		case 9:
			[email protected]_prize = 7621;
			[email protected]_prize = 2;
			break;
		case 10:
			[email protected]_prize = 14170;
			[email protected]_prize = 1;
			break;
		case 11:
			[email protected]_prize = 14169;
			[email protected]_prize = 1;
			break;
		case 12:
			[email protected]_prize = 12214;
			[email protected]_prize = 3;
			break;
		case 13:
			[email protected]_prize = 7539;
			[email protected]_prize = 30;
			break;
		case 14:
			[email protected]_prize = 12103;
			[email protected]_prize = 3;
			break;
		case 15:
			[email protected]_prize = 14154;
			[email protected]_prize = 1;
			break;
		case 16:
			[email protected]_prize = 675;
			[email protected]_prize = 30;
			break;
		case 17:
			[email protected]_prize = 671;
			[email protected]_prize = 200;
			break;
		case 18:
			[email protected]_prize = 7621;
			[email protected]_prize = 5;
			break;
		case 19:
			[email protected]_prize = 6226;
			[email protected]_prize = 1;
			break;	
		case 20:
			[email protected]_prize = 6225;
			[email protected]_prize = 1;
			break;
		case 21:
			[email protected]_prize = 12214;
			[email protected]_prize = 5;
			break;
		case 22:
			[email protected]_prize = 12103;
			[email protected]_prize = 2;
			break;
		case 23:
			[email protected]_prize = 7539;
			[email protected]_prize = 50;
			break;
		case 24:
			[email protected]_prize = 7828;
			[email protected]_prize = 50;
			break;
		case 25:
			[email protected]_prize = 7829;
			[email protected]_prize = 50;
			break;
		case 26:
			[email protected]_prize = 7773;
			[email protected]_prize = 50;
			break;
		case 27:
			[email protected]_prize = 675;
			[email protected]_prize = 50;
			break;
		case 28:
			[email protected]_prize = 671;
			[email protected]_prize = 400;
			break;
		case 29:
			[email protected]_prize = 12103;
			[email protected]_prize = 3;
			break;
		case 30:
			[email protected]_prize = 22721;
			[email protected]_prize = 1;
			break;
		case 31:
			[email protected]_prize = 12246;
			[email protected]_prize = 1;
			break;			
	}
	
	if([email protected]_prize && [email protected]_prize) getitem [email protected]_prize, [email protected]_prize;
	setd "#delay_bonus_" + getarg(1), gettimetick(2) + 86400;
	message strcharinfo(0), "Система Ежедневных наград: День - "+getd("#day_" + getarg(1))+". Вы получили "+getitemname([email protected]_prize)+", "[email protected]_prize+"шт.";
	#day ++;
	setd "#day_" + getarg(1), #day;
	return;
}

на гитхабе потерял.
 

Изменено пользователем Gendalf
1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

То ли я идиот... То ли лыжи не те...

А если серьёзно, то что я пропустил в установке.

Это первый заход на сервер.

daily_bonus.jpg

 

Изменено пользователем Kreol89
0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У тебя стоит Gepard Shield?

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Эм... Нет...

 

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 минуту назад, Kreol89 сказал:

Эм... Нет...

 

Ну тогда не заработает =)

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А по поводу Gepard Shield, это я так понимаю к Functor'у?

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ага.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас