02:50
ОбновитьСмайлыУправление мини-чатом
МИНИ-ЧАТ
Главная страница!

 



 
          





Рекомендуем:





Последние Файлы GTA 4 Последние Файлы GTA-MP Реклама
Скрипт GTA 4 элементы Watch... 07.09.2014
Ferrari 360 Spider [EPM con... 13.12.2013
Porsche Cayenne Turbo 2012 ... 13.12.2013
Shelby Terlingua Mustang v1... 13.12.2013
Hamann Lamborghini Gallardo... 27.10.2013
[GM] The Big PEN1:LS v2.00 ... 04.12.2017
Dgun (AvnanceRP,SampRP,Dimo... 19.03.2016
SAMP скрипт SX Events (MySQ... 03.03.2016
Карта ASL мэрия для SAMP се... 03.03.2016
AIM для SA-MP 0.3.7 22.02.2016
  • Страница 1 из 1
  • 1
Модератор форума: AXE, Weddew  
IsPlayerInRangeOfPoint
SanSayДата: Суббота, 06.08.2011, 14:18 | Сообщение # 1
Долгожитель
Группа: Продвинутые
Сообщений: 1662
Награды: 25
Город: Наб.Челны
Репутация: 280
Замечания: 0%
Статус:
IsPlayerInRangeOfPoint(playerid, 100.0, x, y, z)
меняется ли нагрузка на серв, если радиус указать 5 или 1000?

или лучше сделать несколько проверок с меньшим радиусом.. например
вместо
if(IsPlayerInRangeOfPoint(playerid, 100.0, x, y, z))

сделать
подрят
if(IsPlayerInRangeOfPoint(playerid, 10.0, x, y, z) || IsPlayerInRangeOfPoint(playerid, 10.0, x1, y1, z1)|| IsPlayerInRangeOfPoint(playerid, 10.0, x2, y2, z2))



simhost.org:8888 Mode:PEN1(LS)+GTO(банды+кач) v4.23_SAMP_0.3с
PEN1(LS)+GTO(банды+кач)v3.92_SAMP_0.3с(ifolder)*** AntiBot*** [FS] Car Export vs SanSay*** [FS] anti_s0beit_FakeKill_Ver2


Сообщение отредактировал SanSay - Суббота, 06.08.2011, 14:26
EakwarpДата: Суббота, 06.08.2011, 14:47 | Сообщение # 2
Мастер джэдай
Группа: Продвинутые
Сообщений: 4874
Награды: 179
Город: Москва
Репутация: 2543
Замечания: 60%
Статус:
Вызов функции будет замедлять ее выполнение, но да, чем больше радиус, тем медленнее она выполняется, но это не фатально, использование одной гораздо продуктивнее.


More than 4 years of development, more than 250,000 lines of source code, more than a hundred units and more than 3400 revisions. Valakas Roleplay - choose your role.


Valakas Roleplay on Twitter

Платные консультации, разработка, в ICQ. Дорого.
Дикий_БиллДата: Суббота, 06.08.2011, 14:51 | Сообщение # 3
Освоившийся
Группа: Пользователи
Сообщений: 76
Награды: 1
Город: ...
Репутация: -46
Замечания: 100%
Статус:
Quote (SanSay)
IsPlayerInRangeOfPoint(playerid, 100.0, x, y, z) меняется ли нагрузка на серв, если радиус указать 5 или 1000?

Естественно больше, ведь срабатывать чаще будет.
Quote (SanSay)
или лучше сделать несколько проверок с меньшим радиусом.. например вместо if(IsPlayerInRangeOfPoint(playerid, 100.0, x, y, z)) сделать подрят if(IsPlayerInRangeOfPoint(playerid, 10.0, x, y, z) || IsPlayerInRangeOfPoint(playerid, 10.0, x1, y1, z1)|| IsPlayerInRangeOfPoint(playerid, 10.0, x2, y2, z2))

О_О Это что во обще за порнуха...
Конечно 1 вариант...

MarkeloFFДата: Суббота, 06.08.2011, 15:18 | Сообщение # 4
Советчик
Группа: I'm V.I.P.
Сообщений: 1033
Награды: 14
Город: Калининград
Репутация: 191
Замечания: 80%
Статус:
Попробуй ставить сначало 5,потом через Диспетчер посомтри чё там жрёт серв, потом поставь 1000 и опять посмотри...
GoshikДата: Суббота, 06.08.2011, 15:28 | Сообщение # 5
Уверенный в себе
Группа: Пользователи
Сообщений: 280
Награды: 1
Город: ---
Репутация: 18
Замечания: 60%
Статус:
Code
     new Float:pos[3];
      GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
       
    new count = GetTickCount();
    for(new i; i < 1_000_000; i ++)
    {
     if(IsPlayerInRangeOfPoint(playerid, 1.0, pos[0], pos[1], pos[2])) {}
   }
   printf("1.0: %d", GetTickCount() - count);
    
   count = GetTickCount();
    for(new i; i < 1_000_000; i ++)
    {
     if(IsPlayerInRangeOfPoint(playerid, 99999.0, pos[0], pos[1], pos[2])) {}
   }
   printf("99999.0: %d", GetTickCount() - count);

[15:26:49] 1.0: 109
[15:26:49] 99999.0: 113

[15:26:51] 1.0: 114
[15:26:51] 99999.0: 106

[15:26:53] 1.0: 126
[15:26:53] 99999.0: 118

так сложно было это сделать?

SanSayДата: Суббота, 06.08.2011, 16:47 | Сообщение # 6
Долгожитель
Группа: Продвинутые
Сообщений: 1662
Награды: 25
Город: Наб.Челны
Репутация: 280
Замечания: 0%
Статус:
Goshik, да, спс, не реально сложно было сделать... не знал о такой возможности в принципе, ща буду знать... при этом
сделал несколько проверок:
1) координаты проверки совпадают с координатами игрока
[cut=проверка 1 время обработки 125 мс]
if(strcmp(cmd, "/qq", true) == 0)
{
new Float:pos[3];
GetPlayerPos(playerid, pos[0], pos[1], pos[2]);

new count = GetTickCount();
for(new i; i < 1_000_000; i ++)
{
if(IsPlayerInRangeOfPoint(playerid, 100.0, pos[0], pos[1], pos[2])) {}
}
format(string, sizeof(string), "1: %d", GetTickCount() - count);
SendClientMessage(playerid, COLOR_GREEN, string);
return 1;
}[/cut]
2) координаты проверки просто какая то зона... например место спавна
[cut=проверка 2 время обработки 85 мс]
if(strcmp(cmd, "/qq1", true) == 0)
{
new Float:pos[3];
GetPlayerPos(playerid, pos[0], pos[1], pos[2]);

new count = GetTickCount();
for(new i; i < 1_000_000; i ++)
{
if(IsPlayerInRangeOfPoint(playerid, 100.0, 2229.0,-1159.8,25.7)) {}
}
format(string, sizeof(string), "2: %d", GetTickCount() - count);
SendClientMessage(playerid, COLOR_GREEN, string);
return 1;
}[/cut]
3) присутсвует несколько координат проверки
[cut=проверка 3 время обработки 87-240 мс]if(strcmp(cmd, "/qq2", true) == 0)
{
new Float:pos[3];
GetPlayerPos(playerid, pos[0], pos[1], pos[2]);

new count = GetTickCount();
for(new i; i < 1_000_000; i ++)
{
if(IsPlayerInRangeOfPoint(playerid, 100.0, 2229.0,-1159.8,25.7) || IsPlayerInRangeOfPoint(playerid, 100.0, 1229.0,-1159.8,25.7) || IsPlayerInRangeOfPoint(playerid, 100.0, 2229.0,-2159.8,25.7)) {}
}
format(string, sizeof(string), "3: %d", GetTickCount() - count);
SendClientMessage(playerid, COLOR_GREEN, string);
return 1;
}[/cut]

поюзав заметил следующую херь:
1 вариант выполняется ДОЛЬШЕ чем 2 - почему?
самая не понятная херь с 3-им вариантом:
если игрок находится в зоне проверки, то время обработки 87 мс практически как у второго варианта, но если игрок выходит из зоны проверки, то время обработки вырастает до 240 мс
при этом если игрок так же НЕ находится в зоне проверки, то у второй проверки время проверки не меняется!!!

чет я короче не догоняю, кто может разжевать?

Добавлено (06.08.2011, 16:47)
---------------------------------------------
кстати, а что означает
1_000_000

написал просто 1000000 время такое же, что и 1_000_000, зачем тогда писать 1_000_000?

П.С. если проверять чисто по игрокам (MAX_PLAYERS) то время равно нулю... как такое возможно, пусть провека не сложная, но не 0 мс же она занимает... хоть скока то должна занимать... или я не прав?


simhost.org:8888 Mode:PEN1(LS)+GTO(банды+кач) v4.23_SAMP_0.3с
PEN1(LS)+GTO(банды+кач)v3.92_SAMP_0.3с(ifolder)*** AntiBot*** [FS] Car Export vs SanSay*** [FS] anti_s0beit_FakeKill_Ver2
GoshikДата: Суббота, 06.08.2011, 16:53 | Сообщение # 7
Уверенный в себе
Группа: Пользователи
Сообщений: 280
Награды: 1
Город: ---
Репутация: 18
Замечания: 60%
Статус:
Quote (SanSay)
П.С. если проверять чисто по игрокам (MAX_PLAYERS) то время равно нулю... как такое возможно, пусть провека не сложная, но не 0 мс же она занимает... хоть скока то должна занимать... или я не прав?

выполняется меньше 1мсек + погрешность тиков
Quote (SanSay)
написал просто 1000000 время такое же, что и 1_000_000, зачем тогда писать 1_000_000?

мне так удобней
Quote (SanSay)
3) присутсвует несколько координат проверки

видимо 1 проверка совпала, остальные 2 выполняться не стали уже

короче делай 1 проверку, радиус не влияет на скорость

  • Страница 1 из 1
  • 1
Поиск:





 


 


 
Хостинг от uCoz samp.at.ua