Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 24

Тема: [Anticheat] Античит на прыжки из автомобиля в автомобиль

  1. #11
    ыыыыы Аватар для Mexanizm
    Регистрация
    16.01.2012
    Адрес
    Россия. Воронеж
    Возраст
    30
    Сообщений
    2,450
    Репутация: 287

    Звание: как роза среди колючек

    Re: [Anticheat] Античит на прыжки из автомобиля в автомобиль

    Цитата Сообщение от georJik Посмотреть сообщение
    На твой взгляд лучше, а на взгляд сервера хуже. Не тупи, даже на каком-то из порталов была посвящена этому тема.
    Да помоему тупиш ты щас и по страшному. Не видел я подобных тем когда даже специально искал всю инфу про таймеры.
    Modern RP





  2. #12
    Проверенный Аватар для georJik
    Регистрация
    07.07.2013
    Сообщений
    1,370
    Репутация: 427

    Звание: - очень-очень хороший человек

    Re: [Anticheat] Античит на прыжки из автомобиля в автомобиль

    Цитата Сообщение от Mexanizm Посмотреть сообщение
    Да помоему тупиш ты щас и по страшному. Не видел я подобных тем когда даже специально искал всю инфу про таймеры.
    Специально для тебя:
    Цитата Сообщение от XemyL
    В этом уроке я хочу донести до вас довольно значимый способ оптимизации мода, который известен далеко не всем. Но сразу предупреждаю, если вы очень слабый скриптер, не читайте дальше и не пишите ничего в этой теме.
    Итак, таймеры. Многие считают что использовать кучу таймеров в моде - ужасно плохо, но это не так, если использовать их разумно. Нагружают сервер действия, срабатываемые в таймере, а не сами таймеры (совсем немного). Поэтому 1000 разумно сделанных таймеров будут полезнее чем 5 кое-как сделанных. Если вы это понимаете - идём дальше, иначе закрывайте тему.

    Почти в каждом моде есть таймер, допустим на 1 секунду. В этом таймере есть цикл на всех игроков сервера, где с ними производятся действия. Например:

    PHP код:
    public Timer1Second()
    {
    foreach(...)
    {
    // Действия
    }
    return 1;
    }
    Именно из за таких таймеров серверы с большим онлайном начинают испытывать лаги и ищут более мощный хостинг. Всё дело в том, что одно срабатывание из foreach (для одного игрока) проходит например за 0.25 - 1 мс (в зависимости от оптимизации и мощности процессора), что впрочем то не так уж и страшно. Но когда игроков 200, выполнение таймера занимает уже от 50 мс до 200 мс каждую секунду и пока весь таймер не закончит своё действие, сервер своими делами не займётся (синхронизация игроков и т.п.), поэтому в эти 200 мс сервер тупо висит - вот она причина лагов. Теперь давайте разберём как избавиться от этого и не мешать серверу заниматься необходимыми для работы сервера делами.

    1) Убрать из ВСЕХ таймеров такие циклы с игроками.
    2) Объявить глобальный массив (ко всем new):
    PHP код:
    new PlayerTimerID[MAX_PLAYERS];
    3) Ко всем forward:
    PHP код:
    forward PlayerUpdate(playerid);
    4) В OnPlayerConnect:
    PHP код:
    PlayerTimerID[playerid] = SetTimerEx("PlayerUpdate", 250, 1, "d", playerid);
    5) В OnPlayerDisconnect:
    PHP код:
    KillTimer(PlayerTimerID[playerid]);
    6) В конце мода:
    PHP код:
    public PlayerUpdate(playerid)
    {
    return 1;
    }
    В итоге мы получим индивидуальный таймер для каждого игрока, да, их будет 1000 при максимальном онлайне, но ничего страшного - серверу только лучше. Теперь все действия с игроком нужно использовать в PlayerUpdate (он срабатывает каждые 250 мс). Отдельные таймеры на 1 сек и т.п. создавать не нужно, просто подсчитывайте количество срабатываний PlayerUpdate (1 сек = 4 срабатывания) и выполняйте нужные действия.

    И что же нам это всё даст? Когда сервер выполнял цикл, он выполнял его полностью на всех игроков и пока не закончил - другими делами не занимался. В нашем случае для каждого игрока идут отдельные таймеры, срабатывающие в разное время, а не сразу все. Поэтому между срабатываниями таймеров, пусть оно будет даже 0,01 мс, но сервер в это время займётся своими делами и ему хватит этого времени, а значит сервер не будет останавливаться в ожидании.

    На этом всё, надеюсь что объяснил достаточно понятно. Удачного скриптинга!

  3. #13
    ыыыыы Аватар для Mexanizm
    Регистрация
    16.01.2012
    Адрес
    Россия. Воронеж
    Возраст
    30
    Сообщений
    2,450
    Репутация: 287

    Звание: как роза среди колючек

    Re: [Anticheat] Античит на прыжки из автомобиля в автомобиль

    Цитата Сообщение от georJik Посмотреть сообщение
    Специально для тебя:
    Дак а какая хрен разница когда самп однопоточен.
    Что я цикл прогоню и проверю на коннект игрока, и если он подключён то выполню действие, или же если у меня будет овер 500 таймеров висеть будут выполняться все те же действия.
    Цикл то гнать нужно тоже не бездумно и не раз в 1 млск

    Ну делай делай по уроку. Как говориться флаг в руки итд но я по своему всё равно буду делать.
    Modern RP





  4. #14
    Проверенный Аватар для georJik
    Регистрация
    07.07.2013
    Сообщений
    1,370
    Репутация: 427

    Звание: - очень-очень хороший человек

    Re: [Anticheat] Античит на прыжки из автомобиля в автомобиль

    Цитата Сообщение от Mexanizm Посмотреть сообщение
    Дак а какая хрен разница когда самп однопоточен.
    Что я цикл прогоню и проверю на коннект игрока, и если он подключён то выполню действие, или же если у меня будет овер 500 таймеров висеть будут выполняться все те же действия.
    Цикл то гнать нужно тоже не бездумно и не раз в 1 млск

    Ну делай делай по уроку. Как говориться флаг в руки итд но я по своему всё равно буду делать.

  5. #15
    ыыыыы Аватар для Mexanizm
    Регистрация
    16.01.2012
    Адрес
    Россия. Воронеж
    Возраст
    30
    Сообщений
    2,450
    Репутация: 287

    Звание: как роза среди колючек

    Re: [Anticheat] Античит на прыжки из автомобиля в автомобиль

    Цитата Сообщение от georJik Посмотреть сообщение
    Скорее ты всосёш в своей теории.
    Ну делай делай по уроку. Как говориться флаг в руки итд но я по своему всё равно буду делать.
    Modern RP





  6. #16
    Истеричка
    Регистрация
    11.12.2011
    Возраст
    26
    Сообщений
    2,324
    Репутация: 323

    Звание: как роза среди колючек

    Re: [Anticheat] Античит на прыжки из автомобиля в автомобиль

    Цитата Сообщение от georJik Посмотреть сообщение
    На твой взгляд лучше, а на взгляд сервера хуже. Не тупи, даже на каком-то из порталов была посвящена этому тема.
    Ага, давайте теперь все будем слушать ахинею великих праргамистав в павно с п-и.
    Дело не количестве таймеров, а в коде, который в них находится. Кому интересно узнать все самп ком вас ожидает

  7. #17
    unknown2154
    Бродяга

    Re: [Anticheat] Античит на прыжки из автомобиля в автомобиль

    Цитата Сообщение от georJik Посмотреть сообщение
    Специально для тебя:
    И что? Один таймер с циклом ты заменишь на 1000 таймеров, тем самым увеличишь цикл, который намного чаще вызывается.



    Код:
    void CScriptTimers::Process(int iElapsedTime)
    {
    	DwordTimerMap::iterator itor;
    	CGameMode *pGameMode;
    	for (itor = m_Timers.begin(); itor != m_Timers.end(); itor++)
    	{
    		itor->second->iRemainingTime -= iElapsedTime;
    		if (itor->second->iRemainingTime <= 0)
    		{
    			DwordTimerMap::iterator itor_tmp = ++itor; itor--;
    			if (!itor->second->bKilled)
    			{
    				pGameMode = pNetGame->GetGameMode();
    				if (pGameMode)
    				{
    					int idx;
    					AMX* amx = itor->second->pAMX;
    					if (amx && !amx_FindPublic(amx, itor->second->szScriptFunc, &idx))
    					{
    						cell ret;
    						//cell releases[16];
    						int count = itor->second->iParamCount;
    						int i = 0;
    						if (count > 0)
    						{
    							//strings = PushList(amx, (cell*)itor->second->cellParams, count);
    							cell* pars = (cell*)itor->second->cellParams;
    							while (i < count)
    							{
    								amx_Push(amx, pars[i]);
    								i++; // Go forwards to maintain push order
    							}
    						}
    						amx_Exec(amx, &ret, idx);
    						/*if (itor->second->iParamCount > 0)
    						{
    							while (strings)
    							{
    								strings--;
    								amx_Release(amx, releases[strings]);
    							}
    						}*/
    					}
    				}
    			}
    	
    			if (itor->second->bRepeating)
    			{
    				itor->second->iRemainingTime = itor->second->iTotalTime;
    			}
    			else
    			{
    				// Release parameter memory
    				FreeMem(itor->second);
    				Delete(itor->first);
    			}
    			itor = itor_tmp;
    		}
    		if (itor == m_Timers.end()) break;
    	}
    }

  8. #18
    ыыыыы Аватар для Mexanizm
    Регистрация
    16.01.2012
    Адрес
    Россия. Воронеж
    Возраст
    30
    Сообщений
    2,450
    Репутация: 287

    Звание: как роза среди колючек

    Re: [Anticheat] Античит на прыжки из автомобиля в автомобиль

    Цитата Сообщение от Seregamil Посмотреть сообщение
    Ага, давайте теперь все будем слушать ахинею великих праргамистав в павно с п-и.
    Дело не количестве таймеров, а в коде, который в них находится. Кому интересно узнать все самп ком вас ожидает
    Цитата Сообщение от Hidden125660 Посмотреть сообщение
    И что? Один таймер с циклом ты заменишь на 1000 таймеров, тем самым увеличишь цикл, который намного чаще вызывается.

    Безполезно... ему не докажешь. Как об стенку горохом.
    Пусть ***рит 1 к таймеров. Его дело

    Ещё не дай бог догадается спросить откуда у нас исходник сампа...
    Modern RP





  9. #19
    Истеричка
    Регистрация
    11.12.2011
    Возраст
    26
    Сообщений
    2,324
    Репутация: 323

    Звание: как роза среди колючек

    Re: [Anticheat] Античит на прыжки из автомобиля в автомобиль

    Цитата Сообщение от Mexanizm Посмотреть сообщение
    Безполезно... ему не докажешь. Как об стенку горохом.
    Пусть ***рит 1 к таймеров. Его дело

    Ещё не дай бог догадается спросить откуда у нас исходник сампа...
    он у всех походу есть...

  10. #20
    Проверенный Аватар для georJik
    Регистрация
    07.07.2013
    Сообщений
    1,370
    Репутация: 427

    Звание: - очень-очень хороший человек

    Re: [Anticheat] Античит на прыжки из автомобиля в автомобиль

    Mexanizm, попизди мне тут.

    Провел замеры нагрузки, и вправду, таймер потреблял на 20 кбайт больше.
    Исходник я даже сам где-то выкладывал. Поговаривают что гуляет исходник 0.3d

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя

Похожие темы

  1. Прыжки с парашюта
    от ProG в разделе Скрипты для любого мода
    Ответов: 19
    Последнее сообщение: 18.08.2015, 09:59
  2. [Продам] Keeper Plugin AntiCheat
    от Tumba в разделе Магазин
    Ответов: 20
    Последнее сообщение: 28.12.2013, 16:28
  3. 2 вопроса про автомобиль
    от DeadLine в разделе Вопросы по скриптингу
    Ответов: 9
    Последнее сообщение: 19.10.2013, 22:02
  4. Проверка на автомобиль
    от 1kla$ в разделе Вопросы по скриптингу
    Ответов: 7
    Последнее сообщение: 09.09.2013, 17:31
  5. Anticheat /FakeKill/
    от K3DR в разделе Античиты (AntiCheats)
    Ответов: 15
    Последнее сообщение: 23.06.2013, 16:33

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •