SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Русский/Russian

Reply
 
Thread Tools Display Modes
Old 16/12/2016, 06:16 PM   #1291
Diman777
Huge Clucker
 
Diman777's Avatar
 
Join Date: Aug 2011
Location: Ростов-на-Дону
Posts: 438
Reputation: 22
Default Re: Оптимизация кода

Да неужели всё так просто)
И при компиляции при подстановке там будет следующее:
PHP Code:
if (!(taxi_save_dvehid[taxiid] != (0xFFFF))) 
Гениально VVWVV
Diman777 is offline   Reply With Quote
Old 18/01/2017, 12:41 AM   #1292
Diman777
Huge Clucker
 
Diman777's Avatar
 
Join Date: Aug 2011
Location: Ростов-на-Дону
Posts: 438
Reputation: 22
Default Re: Оптимизация кода

Мне нужно сделать, чтобы деньги можно было передавать только когда игрок рядом.

Есть 2 варианта кода:
PHP Code:
//1
if ((GetPlayerVirtualWorld(from_id) == GetPlayerVirtualWorld(him_id))
&& (
GetPlayerInterior(from_id) == GetPlayerInterior(him_id)))
{
    new 
Float:axes[3];
    
GetPlayerPos(him_idaxes[0], axes[1], axes[2]);
    if (
GetPlayerDistanceFromPoint(from_idaxes[0], axes[1], axes[2]) < 10.0))
    {
        
// можно передать
    
}
}

//2
new Float:axes[3];
GetPlayerPos(him_idaxes[0], axes[1], axes[2]);
if ((
GetPlayerDistanceFromPoint(from_idaxes[0], axes[1], axes[2]) < 10.0)
&& (
GetPlayerInterior(from_id) == GetPlayerInterior(him_id))
&& (
GetPlayerVirtualWorld(from_id) == GetPlayerVirtualWorld(him_id)))
{
    
// можно передать

Правильно ли я понимаю, что 1-ый вариант кода оптимальней? Потому что быстрее проверить изначально на int значения, чем на float. Это так?

Last edited by Diman777; 18/01/2017 at 01:12 AM.
Diman777 is offline   Reply With Quote
Old 18/01/2017, 02:18 AM   #1293
stabker
High-roller
 
stabker's Avatar
 
Join Date: Mar 2012
Location: Andromeda Galaxy
Posts: 1,320
Reputation: 86
Default Re: Оптимизация кода

Diman777, да, первый вариант оптимальнее.
stabker is offline   Reply With Quote
Old 18/01/2017, 02:41 AM   #1294
ZiGGi
High-roller
 
ZiGGi's Avatar
 
Join Date: Sep 2008
Location: Russia
Posts: 1,718
Reputation: 334
Default Re: Оптимизация кода

Quote:
Originally Posted by Diman777 View Post
Мне нужно сделать, чтобы деньги можно было передавать только когда игрок рядом.

Есть 2 варианта кода:
PHP Code:
//1
if ((GetPlayerVirtualWorld(from_id) == GetPlayerVirtualWorld(him_id))
&& (
GetPlayerInterior(from_id) == GetPlayerInterior(him_id)))
{
    new 
Float:axes[3];
    
GetPlayerPos(him_idaxes[0], axes[1], axes[2]);
    if (
GetPlayerDistanceFromPoint(from_idaxes[0], axes[1], axes[2]) < 10.0))
    {
        
// можно передать
    
}
}

//2
new Float:axes[3];
GetPlayerPos(him_idaxes[0], axes[1], axes[2]);
if ((
GetPlayerDistanceFromPoint(from_idaxes[0], axes[1], axes[2]) < 10.0)
&& (
GetPlayerInterior(from_id) == GetPlayerInterior(him_id))
&& (
GetPlayerVirtualWorld(from_id) == GetPlayerVirtualWorld(him_id)))
{
    
// можно передать

Правильно ли я понимаю, что 1-ый вариант кода оптимальней? Потому что быстрее проверить изначально на int значения, чем на float. Это так?
Второй вариант можно записать так, и это будет почти тоже самое, что и первый:
PHP Code:
new Float:axes[3];
GetPlayerPos(him_idaxes[0], axes[1], axes[2]);
if (
GetPlayerInterior(from_id) == GetPlayerInterior(him_id)
    && 
GetPlayerVirtualWorld(from_id) == GetPlayerVirtualWorld(him_id)
    && 
GetPlayerDistanceFromPoint(from_idaxes[0], axes[1], axes[2]) < 10.0)
{
    
// можно передать

Единственное - здесь возможен лишний вызов GetPlayerPos.
ZiGGi is offline   Reply With Quote
Old 18/01/2017, 03:46 AM   #1295
DartfoL
Gangsta
 
DartfoL's Avatar
 
Join Date: Apr 2012
Posts: 757
Reputation: 38
Default Re: Оптимизация кода

А вместо GetPlayerDistanceFromPoint ещё лучше будет IsPlayerInRangeOfPoint
__________________
DartfoL is offline   Reply With Quote
Old 18/01/2017, 01:12 PM   #1296
Diman777
Huge Clucker
 
Diman777's Avatar
 
Join Date: Aug 2011
Location: Ростов-на-Дону
Posts: 438
Reputation: 22
Default Re: Оптимизация кода

DartfoL почему?
Diman777 is offline   Reply With Quote
Old 18/01/2017, 01:39 PM   #1297
Stepashka
Godfather
 
Stepashka's Avatar
 
Join Date: Jul 2008
Location: near PC
Posts: 5,465
Reputation: 131
Default Re: Оптимизация кода

Quote:
Originally Posted by Diman777 View Post
DartfoL почему?
Она быстрей.
__________________
Клятва Страуструпа: "Я обязуюсь прилежно комментировать свой код, не использовать goto и следить за состоянием своих потоков и выделяемой памяти. Я обязуюсь не оставлять мусора в системе и избегать однобуквенных переменных. Ресет." © Куч
M&M GM
Status: ON HOLD

Stepashka is online now   Reply With Quote
Old 18/01/2017, 04:20 PM   #1298
DartfoL
Gangsta
 
DartfoL's Avatar
 
Join Date: Apr 2012
Posts: 757
Reputation: 38
Default Re: Оптимизация кода

Quote:
Originally Posted by Diman777 View Post
DartfoL почему?
возвращает 1 или 0, вместо значения, которое потом ещё сравнивать нужно
__________________
DartfoL is offline   Reply With Quote
Old 19/01/2017, 12:36 AM   #1299
Diman777
Huge Clucker
 
Diman777's Avatar
 
Join Date: Aug 2011
Location: Ростов-на-Дону
Posts: 438
Reputation: 22
Default Re: Оптимизация кода

Я тоже к этому склонялся, спс)
Diman777 is offline   Reply With Quote
Old 19/01/2017, 12:28 PM   #1300
OstGot
Gangsta
 
OstGot's Avatar
 
Join Date: Mar 2013
Location: Gomel, Belarus
Posts: 692
Reputation: 293
Default Re: Оптимизация кода

Quote:
Originally Posted by ZiGGi View Post
Второй вариант можно записать так, и это будет почти тоже самое, что и первый:
PHP Code:
new Float:axes[3];
GetPlayerPos(him_idaxes[0], axes[1], axes[2]);
if (
GetPlayerInterior(from_id) == GetPlayerInterior(him_id)
    && 
GetPlayerVirtualWorld(from_id) == GetPlayerVirtualWorld(him_id)
    && 
GetPlayerDistanceFromPoint(from_idaxes[0], axes[1], axes[2]) < 10.0)
{
    
// можно передать

Единственное - здесь возможен лишний вызов GetPlayerPos.
На выделение памяти тоже время затратится
__________________
aka Nexius
Don't want to always check for updates of my scripts?
Include it the last, after all others
Nexius's Update Checker
OstGot is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off



All times are GMT. The time now is 10:02 AM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.