Форум Pawn.Wiki - Воплоти мечту в реальность!: Анти Телепорт - Форум Pawn.Wiki - Воплоти мечту в реальность!

Перейти к содержимому

  • (3 Страниц) +
  • 1
  • 2
  • 3
  • Вы не можете создать новую тему
  • Тема закрыта

[ Scr ][ All ]
Анти Телепорт New
Оценка: -----

#1
Пользователь офлайн   Макс 

  • Местный
  • Вставить ник
  • Раскрыть информацию
Анти Телепорт кикает после 5 секунд .
Можно было поставить после 1 но могут быть ложные срабатывания.
Так вот приступим.

Ко всем new:
new LastCheck[MAX_PLAYERS];
new IsPlayerAirBreaking[MAX_PLAYERS];
new Float: CurrentPos[MAX_PLAYERS][3];
new FullyConnected[MAX_PLAYERS];


Добавим в OnGameModeInit:
SetTimer("AntiAirBreak", 100, true); // Можно заменить таймер до кика 100


Потом OnPlayerConnect:
FullyConnected[playerid] = true;
IsPlayerAirBreaking[playerid] = 0;


В public OnPlayerDisconnect:
FullyConnected[playerid] = false;


И в конец мода добавим Паблики:
forward AntiAirBreak();
public AntiAirBreak()
{
	new Float:x, Float:y, Float:z;
	new pstate;
	new string[256];

	for(new i = 0; i < GetMaxPlayers(); i++)
	{
		if(!IsPlayerNPC(i) && FullyConnected[i] && GetPlayerPos(i, x, y, z))
		{
			pstate = GetPlayerState(i);

			if(pstate == PLAYER_STATE_ONFOOT || (pstate == PLAYER_STATE_DRIVER && GetPlayerSpeed(i) < 10))
			{
				new var = (floatround(floatsqroot(GetSquareDistance(x, y, z, CurrentPos[i][0], CurrentPos[i][1], CurrentPos[i][2])) * 3600) / (GetTickCount() - LastCheck[i]));

				if(var >= 320 && var <= 10000) // Минимал 320 макс 10000
			 	{
					IsPlayerAirBreaking[i] = 1;
					format(string, sizeof(string), "CEPBEP:{FF00FF} %s[%d] {00FF00}was kicked, reason: {FFFFFF}AirBag", PlayerName(i), i);
					SendClientMessageToAll(-1, string);
					Kick(i);
				}
			}
		}

		CurrentPos[i][0] = x;
		CurrentPos[i][1] = y;
		CurrentPos[i][2] = z;
		LastCheck[i] = GetTickCount();
	}

	return 1;
}

stock GetPlayerSpeed(playerid)
{
	new Float:x, Float:y, Float:z;

	if(IsPlayerInAnyVehicle(playerid))
		GetVehicleVelocity(GetPlayerVehicleID(playerid), x, y, z);
	else
		GetPlayerVelocity(playerid, x, y, z);

	return floatround(floatsqroot(x * x + y * y + z * z) * 160.0);
}

stock GetSquareDistance(Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2)
{
	x1 -= x2;
	y1 -= y2;
	z1 -= z2;
	x1 *= x1;
	y1 *= y1;
	z1 *= z1;

	return floatround(x1 + y1 + z1);
}

stock PlayerName(playerid)
{
	new pname[MAX_PLAYER_NAME];
	GetPlayerName(playerid, pname, MAX_PLAYER_NAME);
	return pname;
}


Автор: Leonardo_Gun
-2

#2
Пользователь офлайн   Little 

  • Знаток
  • Вставить ник
  • Раскрыть информацию
В принципи все отлично, но а как же при прыжке с парашютом, разве ложного срабатывания не будет ?
Я думаю стоит проверку всунуть
if(IsApplyAnimation(i, "FALL_fall"))  return 1;

Сообщение отредактировал Little: 31 августа 2012 - 20:36

0

#3
Пользователь офлайн   Patrick Jane 

  • Вернусь 1 Июня 2014 Года
  • Вставить ник
  • Раскрыть информацию

 Little (31 августа 2012 - 20:35) писал:

В принципи все отлично, но а как же при прыжке с парашютом, разве ложного срабатывания не будет ?
Я думаю стоит проверку всунуть
if(IsApplyAnimation(i, "FALL_fall"))  return 1;


Куда эту проверку запихать?
0

#4
Пользователь офлайн   •Anonymous• 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
Впринципе орегинально только
if(var>=320 && var<=10000) // Минимал 320 макс 10000


Дай пояснение
0

#5
Пользователь офлайн   Fernando_Leonza 

  • Пользователь
  • Вставить ник
  • Раскрыть информацию

 Макс (31 августа 2012 - 19:21) писал:

...


Касячно делаешь! ошибки выдало... и не надо ляля про "руки из жопы растут"
0

#6
Пользователь офлайн   Dante2410 

  • Новичок
  • Вставить ник
  • Раскрыть информацию
Чётко!! Спасибо.
0

#7
Пользователь офлайн   Jayden_Wright 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
От куда взяли такие переменные как, CurrentPos и FullyConnected?
0

#8
Пользователь офлайн   Neshta 

  • Профессионал
  • Вставить ник
  • Раскрыть информацию

 Jayden_Wright (31 января 2015 - 14:04) писал:

От куда взяли такие переменные как, CurrentPos и FullyConnected?

Слепой?

 Макс (31 августа 2012 - 19:21) писал:

Ко всем New:
new LastCheck[MAX_PLAYERS];
new IsPlayerAirBreaking[MAX_PLAYERS];
new CurrentPos[MAX_PLAYERS][3];
new FullyConnected[MAX_PLAYERS];


0

#9
Пользователь офлайн   san2014ches 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
Умоляю помогите ! Вадёт ошибку ! Умные люди ответьте !
D:\Games\Grace Global-Rp v2.0 (Оригинал )\filterscripts\AntiTPbyME.pwn(58) : error 017: undefined symbol "FullyConnected"
D:\Games\Grace Global-Rp v2.0 (Оригинал )\filterscripts\AntiTPbyME.pwn(58) : warning 215: expression has no effect
D:\Games\Grace Global-Rp v2.0 (Оригинал )\filterscripts\AntiTPbyME.pwn(58) : error 001: expected token: ";", but found "]"
D:\Games\Grace Global-Rp v2.0 (Оригинал )\filterscripts\AntiTPbyME.pwn(58) : error 029: invalid expression, assumed zero
D:\Games\Grace Global-Rp v2.0 (Оригинал )\filterscripts\AntiTPbyME.pwn(58) : fatal error 107: too many error messages on one line
1

#10
Пользователь офлайн   Neshta 

  • Профессионал
  • Вставить ник
  • Раскрыть информацию

 san2014ches (18 февраля 2015 - 14:47) писал:

Умоляю помогите ! Вадёт ошибку ! Умные люди ответьте !
D:\Games\Grace Global-Rp v2.0 (Оригинал )\filterscripts\AntiTPbyME.pwn(58) : error 017: undefined symbol "FullyConnected"
D:\Games\Grace Global-Rp v2.0 (Оригинал )\filterscripts\AntiTPbyME.pwn(58) : warning 215: expression has no effect
D:\Games\Grace Global-Rp v2.0 (Оригинал )\filterscripts\AntiTPbyME.pwn(58) : error 001: expected token: ";", but found "]"
D:\Games\Grace Global-Rp v2.0 (Оригинал )\filterscripts\AntiTPbyME.pwn(58) : error 029: invalid expression, assumed zero
D:\Games\Grace Global-Rp v2.0 (Оригинал )\filterscripts\AntiTPbyME.pwn(58) : fatal error 107: too many error messages on one line


 Макс (31 августа 2012 - 19:21) писал:

Ко всем New:
new FullyConnected[MAX_PLAYERS];

0

Поделиться темой:


  • (3 Страниц) +
  • 1
  • 2
  • 3
  • Вы не можете создать новую тему
  • Тема закрыта

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей


Яндекс.Метрика