SA-MP Forums

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

Reply
 
Thread Tools Display Modes
Old 12/03/2013, 11:31 AM   #1011
White_116
High-roller
 
Join Date: Sep 2010
Location: Russia/116
Posts: 1,495
Reputation: 69
Default Re: Оптимизация кода

if (score > 5000){ level[playerid] = 9999; return "Terminator";}

Дальше сам
__________________
White_116 is offline   Reply With Quote
Old 12/03/2013, 12:30 PM   #1012
Stepashka
Godfather
 
Stepashka's Avatar
 
Join Date: Jul 2008
Location: near PC
Posts: 5,763
Reputation: 142
Default Re: Оптимизация кода

Quote:
Originally Posted by proSeryoga View Post
(160) : error 001: expected token: ";", but found "if"
(160) : error 029: invalid expression, assumed zero
(160) : warning 215: expression has no effect
(161) : error 029: invalid expression, assumed zero
(161) : warning 215: expression has no effect
(161) : error 001: expected token: ";", but found "if"
(161) : error 029: invalid expression, assumed zero
(161) : fatal error 107: too many error messages on one line

ОМГ
Code:
    if (score > 5000) level[playerid] = 9999, return "Terminator";
    else if (score > 4000) level[playerid] = 5000, return "Legenda";
Это очевидно:
Quote:
new score = GetPlayerScore(playerid);
__________________
Клятва Страуструпа: "Я обязуюсь прилежно комментировать свой код, не использовать goto и следить за состоянием своих потоков и выделяемой памяти. Я обязуюсь не оставлять мусора в системе и избегать однобуквенных переменных. Ресет." © Куч
M&M GM
Status: ON HOLD

Stepashka is offline   Reply With Quote
Old 13/03/2013, 03:57 AM   #1013
OKStyle
High-roller
 
OKStyle's Avatar
 
Join Date: May 2008
Location: Russia, Orenburg Money: GTA$ 999,999,999
Posts: 3,125
Reputation: 142
Default Re: Оптимизация кода

И как ведёт себя мод при ретурне пустого текста?
pawn Code:
else level[playerid] = 0, return "";
__________________
O.K.Style™ Laboratory
Kalcor: "... it's makes the game look like it's not GTA. This mod is called San Andreas Multiplayer. It's not a custom game engine which you can script..."
OKStyle is offline   Reply With Quote
Old 17/03/2013, 10:28 AM   #1014
userfound
Little Clucker
 
Join Date: Apr 2012
Posts: 9
Reputation: 0
Default Re: Оптимизация кода

Привет! Подскажите, пожалуйста, как можно оптимизировать данный код?
pawn Code:
if (!strcmp(cmd,"/id",true))
    {
        tmp = strrest(cmdtext, idx);
        if(!strlen(tmp)) return SendClientMessage(playerid,CGRAY,"/id [Ник игрока]");
        new id, name[24], idcount=0;
        if(!isNumeric(tmp))
        {
            for(new i;i<MAX_PLAYERS;i++)
            {      
                if(!IsPlayerConnected(i)) continue;
                GetPlayerName(i,name,24);
                if(strfind(name,tmp,true) != -1) {
                    id = strval(tmp);
                    if(IsPlayerConnected(id)) {
                        GetPlayerName(id,name,24);
                        new mes[128];
                        format(mes,sizeof(mes),"%s [%d]",name,id);
                        SendClientMessage(playerid,CWHITE,mes);
                        if(idcount == 5) break;
                        idcount++;
                    }
                }
            }
            if(idcount == 0) return SendClientMessage(playerid,CGRAY,"Не найдено");
        }
        else
        {
            id = strval(tmp);
            if(!IsPlayerConnected(id)) return SendClientMessage(playerid,CGRAY,"Не верный ID");        
            GetPlayerName(id,name,24);
            new mes[128];
            format(mes,sizeof(mes),"%s [%d]",name,id);
            return SendClientMessage(playerid,CWHITE,mes);
        }
        return true;
    }
userfound is offline   Reply With Quote
Old 17/03/2013, 11:15 AM   #1015
stabker
High-roller
 
Join Date: Mar 2012
Posts: 1,311
Reputation: 86
Default Re: Оптимизация кода

Quote:
Originally Posted by userfound View Post
Привет! Подскажите, пожалуйста, как можно оптимизировать данный код?
pawn Code:
if (!strcmp(cmd,"/id",true))
    {
        tmp = strrest(cmdtext, idx);
        if(!strlen(tmp)) return SendClientMessage(playerid,CGRAY,"/id [Ник игрока]");
        new id, name[24], idcount=0;
        if(!isNumeric(tmp))
        {
            for(new i;i<MAX_PLAYERS;i++)
            {      
                if(!IsPlayerConnected(i)) continue;
                GetPlayerName(i,name,24);
                if(strfind(name,tmp,true) != -1) {
                    id = strval(tmp);
                    if(IsPlayerConnected(id)) {
                        GetPlayerName(id,name,24);
                        new mes[128];
                        format(mes,sizeof(mes),"%s [%d]",name,id);
                        SendClientMessage(playerid,CWHITE,mes);
                        if(idcount == 5) break;
                        idcount++;
                    }
                }
            }
            if(idcount == 0) return SendClientMessage(playerid,CGRAY,"Не найдено");
        }
        else
        {
            id = strval(tmp);
            if(!IsPlayerConnected(id)) return SendClientMessage(playerid,CGRAY,"Не верный ID");        
            GetPlayerName(id,name,24);
            new mes[128];
            format(mes,sizeof(mes),"%s [%d]",name,id);
            return SendClientMessage(playerid,CWHITE,mes);
        }
        return true;
    }
1. Использовать командный обработчик
2. Использовать foreach
3. Использовать sscanf.

Если без этого всего, то посмотрите функцию ReturnUser (заметил, что IsNumeric есть у вас, так что, наверняка и ReturnUser тоже есть).
Плюс ко всему, в массивах завышенное количество ячеек, аж 128. Зачем столько? Вместо 128 можно поставить 30.
stabker is offline   Reply With Quote
Old 17/03/2013, 03:35 PM   #1016
AirKite
Gangsta
 
AirKite's Avatar
 
Join Date: Feb 2009
Posts: 733
Reputation: 21
Default Re: Оптимизация кода

Quote:
Originally Posted by userfound View Post
Привет! Подскажите, пожалуйста, как можно оптимизировать данный код?
pawn Code:
if (!strcmp(cmd,"/id",true))
    {
        tmp = strrest(cmdtext, idx);
        if(!strlen(tmp)) return SendClientMessage(playerid,CGRAY,"/id [Ник игрока]");
        new id, name[24], idcount=0;
        if(!isNumeric(tmp))
        {
            for(new i;i<MAX_PLAYERS;i++)
            {      
                if(!IsPlayerConnected(i)) continue;
                GetPlayerName(i,name,24);
                if(strfind(name,tmp,true) != -1) {
                    id = strval(tmp);
                    if(IsPlayerConnected(id)) {
                        GetPlayerName(id,name,24);
                        new mes[128];
                        format(mes,sizeof(mes),"%s [%d]",name,id);
                        SendClientMessage(playerid,CWHITE,mes);
                        if(idcount == 5) break;
                        idcount++;
                    }
                }
            }
            if(idcount == 0) return SendClientMessage(playerid,CGRAY,"Не найдено");
        }
        else
        {
            id = strval(tmp);
            if(!IsPlayerConnected(id)) return SendClientMessage(playerid,CGRAY,"Не верный ID");        
            GetPlayerName(id,name,24);
            new mes[128];
            format(mes,sizeof(mes),"%s [%d]",name,id);
            return SendClientMessage(playerid,CWHITE,mes);
        }
        return true;
    }
Никак, это абсолютно не годный код.
AirKite is offline   Reply With Quote
Old 18/03/2013, 06:27 PM   #1017
userfound
Little Clucker
 
Join Date: Apr 2012
Posts: 9
Reputation: 0
Default Re: Оптимизация кода

AirKite, подскажите, пожалуйста нубу, праильный вариант этого кода, я буду благодарен
userfound is offline   Reply With Quote
Old 18/03/2013, 07:09 PM   #1018
kamilot73
Huge Clucker
 
kamilot73's Avatar
 
Join Date: Jan 2011
Posts: 201
Reputation: -2
Default Re: Оптимизация кода

Quote:
Originally Posted by userfound View Post
AirKite, подскажите, пожалуйста нубу, праильный вариант этого кода, я буду благодарен
при-при-при древнейшее решение: http://forum.sa-mp.com/showthread.php?t=66278
__________________
a.k.a Rex_Doberman
ReFlash Role Play Developer
35.364 lines complete.
Sorry, for my bad English.
kamilot73 is offline   Reply With Quote
Old 19/03/2013, 11:23 AM   #1019
White_116
High-roller
 
Join Date: Sep 2010
Location: Russia/116
Posts: 1,495
Reputation: 69
Exclamation Re: Оптимизация кода

Подскажите пожалуйста как сделать оптимальную проверку такого типа:
PHP Code:
new Float:x34.56543;
new 
Float:y43.1233;
if(
!= y)//....
//if(34.5 != 43.1)// т.е. с округлением до одного знака поcле "запятой" 
Без каких либо танцев со строками или умножением на 10 с последующим превращение числа в integer.
__________________
White_116 is offline   Reply With Quote
Old 19/03/2013, 02:14 PM   #1020
dimonml
Gangsta
 
dimonml's Avatar
 
Join Date: Oct 2008
Location: Russia, Moscow
Posts: 688
Reputation: 28
Default Re: Оптимизация кода

Quote:
Originally Posted by White_116 View Post
Подскажите пожалуйста как сделать оптимальную проверку такого типа:
PHP Code:
new Float:x34.56543;
new 
Float:y43.1233;
if(
!= y)//....
//if(34.5 != 43.1)// т.е. с округлением до одного знака поcле "запятой" 
Без каких либо танцев со строками или умножением на 10 с последующим превращение числа в integer.
Вычитаем один флоат из второго и сверяем модуль этого с эпсилон, которое тебя устраивает. Что-то типа (может не компилироваться):
pawn Code:
if ((x>y ? x-y : y-x) < 0.1) {
  //будем считать, что x==y
}
__________________
dimonml 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 04:00 PM.


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