SA-MP Forums Archive
Скриптинг курилка - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Скриптинг курилка (/showthread.php?tid=111279)



Re: Скриптинг курилка - joker2020pro - 10.11.2016

В дробных частях координат, указанных в GangZoneCreate, округли их до целого.


Re: Скриптинг курилка - cm666 - 10.11.2016

Quote:
Originally Posted by SCALOlaz
Посмотреть сообщение
Добавил гангзону на территории Fort Carson'a, при повороте камеры на радаре гангзона начинает ехать в разные углы, НО на большой карте отображается всё нормально

В чем может быть проблема?
Корды местами поменяй


Re: Скриптинг курилка - SCALOlaz - 10.11.2016

Благодарю, у меня ещё бывает такая ситуация
На определенной ганг зоне когда нахожусь вызывает крэш игры

Никто не сталкивался с такой проблемой?


Re: Скриптинг курилка - Stepashka - 10.11.2016

Quote:
Originally Posted by SCALOlaz
Посмотреть сообщение
Благодарю, у меня ещё бывает такая ситуация
На определенной ганг зоне когда нахожусь вызывает крэш игры

Никто не сталкивался с такой проблемой?
Модификации клиента есть?


Re: Скриптинг курилка - SCALOlaz - 12.11.2016

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
Модификации клиента есть?
Нету, причина была в загрузке зон с базы

Решил написать систему простоя игрока в АФК
Имеется таймер на 1 секунду
Quote:

if(Player[playerid][AFK] == 0) Player[playerid][AFK] -= 1;
else if(Player[playerid][AFK] == -1)
{
Player[playerid][AFK] = 1;
new string[128];
format(string, sizeof(string), "АФК: %s", ConvertSeconds(Player[playerid][AFK]));
SetPlayerChatBubble(playerid, string, COLOR_WHITE, 10.0, 70000000);
}
else if(Player[playerid][AFK] > 0)
{
new string[255];
Player[playerid][AFK] += 1;
format(string, sizeof(string), "АФК: %s", ConvertSeconds(Player[playerid][AFK]));
SetPlayerChatBubble(playerid, string, COLOR_WHITE, 10.0, 70000000);

if(Player[playerid][AFK] >= 30)
{
Kick(playerid);
}
}

Часто случается такое, что игрок выйдя с АФК остаётся надпись AFK: 1 секунда
В условии где то нагрешил?


Re: Скриптинг курилка - joker2020pro - 13.11.2016

Укажи в SetPlayerChatBubble время отображения около 1500 (как раз хватит для секундного таймера), а не 70000000.


Re: Скриптинг курилка - Mcc - 13.11.2016

Поделитесь античитом на tslapper.


Re: Скриптинг курилка - OstGot - 13.11.2016

Quote:
Originally Posted by Mcc
Посмотреть сообщение
Поделитесь античитом на tslapper.
Абсолютно все подобные читы работают как обычный спидхак пешком.


Re: Скриптинг курилка - Mcc - 13.11.2016

Разве античит на рванку тогда не должен цеплять и чит на слап?


Re: Скриптинг курилка - OstGot - 13.11.2016

Quote:
Originally Posted by Mcc
Посмотреть сообщение
Разве античит на рванку тогда не должен цеплять и чит на слап?
Да, должен

Хотя если есть варианты подобных читов, которые не детектит анти-сх пешком - 99% что этот вариант словит анти-телепорт пешком


Re: Скриптинг курилка - SanDev - 13.11.2016

У меня вопрос, Как уменьшить размер прыжка?


Re: Скриптинг курилка - ZiGGi - 13.11.2016

Quote:
Originally Posted by SanDev
Посмотреть сообщение
У меня вопрос, Как уменьшить размер прыжка?
Нормальных методов нет. На ум приходит добавить проверку на нажатые кнопки или на анимацию в OnPlayerUpdate, запомнить время и, по истечении нужного времени, в том же OnPlayerUpdate опустить игрока на землю с помощью связки GetPlayerPos + SetPlayerPosFindZ. Но, как по мне, оно того не стоит)


Re: Скриптинг курилка - OstGot - 13.11.2016

Quote:
Originally Posted by ZiGGi
Посмотреть сообщение
Quote:
Originally Posted by SanDev
Посмотреть сообщение
У меня вопрос, Как уменьшить размер прыжка?
Нормальных методов нет. На ум приходит добавить проверку на нажатые кнопки или на анимацию в OnPlayerUpdate, запомнить время и, по истечении нужного времени, в том же OnPlayerUpdate опустить игрока на землю с помощью связки GetPlayerPos + SetPlayerPosFindZ. Но, как по мне, оно того не стоит)
1. Можно ускорение чуть меньшее выдавать. Но, опять же, вариант тот ещё, потому что при пинге будет заметно отставание, из-за чего возможны вообще не те эффекты, которые ожидались
2. Увеличить значение гравитации. Но тогда это ощущаться будет не только на прыжки


Re: Скриптинг курилка - ZiGGi - 13.11.2016

Quote:
Originally Posted by OstGot
Посмотреть сообщение
2. Увеличить значение гравитации. Но тогда это ощущаться будет не только на прыжки
Если бы в SA-MP можно было бы менять гравитацию для игрока (хотя в YSF можно, желающие могут пользоваться), то это был бы самый лучший способ - уменьшать гравитацию только на время прыжка. Но да, из-за пинга всё это будет криво.


Re: Скриптинг курилка - OneHitWonder - 16.11.2016

А антисх пешком, есть нормальный, поделится кто?


Re: Скриптинг курилка - OstGot - 17.11.2016

Quote:
Originally Posted by OneHitWonder
Посмотреть сообщение
А антисх пешком, есть нормальный, поделится кто?
Код:
new
	Float:OldSpeed[MAX_PLAYERS],
	SpeedTime[MAX_PLAYERS];

public OnPlayerSpawn(playerid)
{
	OldSpeed[playerid] = 0.0;
	return 1;
}

public OnPlayerUpdate(playerid)
{
	if(GetPlayerState(playerid) != PLAYER_STATE_SPECTATING &&
	GetPlayerSurfingVehicleID(playerid) == INVALID_VEHICLE_ID &&
	GetPlayerSurfingObjectID(playerid) == INVALID_OBJECT_ID)
	{
		new Float:vX, Float:vY, Float:vZ;
		GetPlayerVelocity(playerid, vX, vY, vZ);
		vX = GetSpeed(vX, vY, vZ);
		if(vX > 212.0 && vX > OldSpeed[playerid] && GetTickCount() > SpeedTime[playerid] + 500)
		{
			Kick(playerid); //Наказание своё
			return 0; //Рассинхрон, это важно
		}
		OldSpeed[playerid] = vX;
	}
	return 1;
}

public OnPlayerStateChange(playerid, newstate, oldstate)
{
	if(PLAYER_STATE_DRIVER <= oldstate <= PLAYER_STATE_PASSENGER)
	{
		new Float:vX, Float:vY, Float:vZ;
		GetPlayerVelocity(playerid, vX, vY, vZ);
		OldSpeed[playerid] = GetSpeed(vX, vY, vZ);
		SpeedTime[playerid] = GetTickCount();
	}
	return 1;
}

GetSpeed(Float:X, Float:Y, Float:Z = 0.0)
	return floatround(VectorSize(X, Y, Z) * 179.28625);
Также важно:
1. Максимальная скорость (212) замерялась именно под эту формулу в функции GetSpeed
2. Если в скрипте используется SetPlayerVelocity, и скорость через неё будет задана больше максимально допустимой - игрока кикнет как читера (это нужно учитывать)


Re: Скриптинг курилка - stabker - 17.11.2016

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


Re: Скриптинг курилка - OstGot - 17.11.2016

Quote:
Originally Posted by stabker
Посмотреть сообщение
Как была замерена максимальная скорость? Что-то у вас все чересчур просто, 212 и все. Я когда делал такой античит, то замерял максимальную скорость для каждой ситуации (в воде, при прыжках, при залезании на преграды и т.п.) и там еще куча всяких проверок, например, не сбила ли игрока машина.
В свободном падении замерял. С парашютом, насколько помню, он летит медленнее, чем без него.
И пока что никаких проблем с этим замечено не было.


Re: Скриптинг курилка - stabker - 17.11.2016

Quote:
Originally Posted by OstGot
Посмотреть сообщение
В свободном падении замерял. С парашютом, насколько помню, он летит медленнее, чем без него.
И пока что никаких проблем с этим замечено не было.
Просто если убавить скорость всего-лишь немного, то от античита нет толку.


Re: Скриптинг курилка - OstGot - 17.11.2016

Quote:
Originally Posted by stabker
Посмотреть сообщение
Просто если убавить скорость всего-лишь немного, то от античита нет толку.
Ну так во-первых это уметь надо, и в паблике пока таких вариантов с настройкой не видел, а во-вторых не факт, что при скорости в 212 можно достичь эффекта всех этих кикеров (насколько я помню, когда тестировал, там она была за 1000). Хотя конечно хорошо бы иметь более гибкий вариант с учётом всех игровых ситуаций, но это, пожалуй, самый простой из рабочих.