Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Мануал IsPlayerInVehicle_Ex

Статус
В этой теме нельзя размещать новые ответы.

Prolific

Специалист
Всем привет, давно использую у себя в модах свою функцию IsPlayerInVehicle_Ex
Её плюсы:
  • Работает быстрее нежели стандартный IsPlayerInVehicle
  • Заменяет native GetPlayerVehicleID
  • Заменяет native IsPlayerInAnyVehicle

Параметры: ИД игрока.
Возвращает: ИД т/с, в противном случае 0 (иды машин стартуют с 1, так что все очень удобно).

Кстати, надеюсь я не изобрел велосипед, ибо на форумах такого не видел.

Суть:
В начало мода кидаем массивчик (обнуляйте его при выходе игрока).
PHP:
new Player_Veh_ID[MAX_PLAYERS];
В OnPlayerStateChange
PHP:
if(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER) Player_Veh_ID[playerid] = GetPlayerVehicleID(playerid);
else if(oldstate == PLAYER_STATE_DRIVER || oldstate == PLAYER_STATE_PASSENGER) Player_Veh_ID[playerid] = 0;
Макрос для удобства:
PHP:
#define IsPlayerInVehicle_Ex(%0) Player_Veh_ID[%0]
Тесты скорости:
PHP:
CMD:test(playerid)
{
	new tick = GetTickCount();
    for(new i; i < 1000000; i++)
	{
		IsPlayerInVehicle(playerid, i);
	}
	printf("IsPlayerInVehicle = %i", GetTickCount() - tick);
    tick = GetTickCount();
    for(new i; i < 1000000; i++)
	{
		IsPlayerInVehicle_Ex(playerid);
	}
    printf("IsPlayerInVehicle_Ex = %i", GetTickCount() - tick);
    tick = GetTickCount();
    for(new i; i < 1000000; i++)
	{
		GetPlayerVehicleID(playerid);
	}
    printf("GetPlayerVehicleID = %i", GetTickCount() - tick);
    SCMTA(-1, "ALL");
}
Код:
[09:00:30] IsPlayerInVehicle = 919
[09:00:30] IsPlayerInVehicle_Ex = 252
[09:00:31] GetPlayerVehicleID = 880
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу