 |
|
 |
|
|
|
Последние Файлы GTA 4 |
Последние Файлы GTA-MP |
Реклама |
|
|
|
|
|
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 проверку, радиус не влияет на скорость
|
| |
|
|
|
 |
|
 | |
| |
|