SA-MP Forums

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

Reply
 
Thread Tools Display Modes
Old 11/06/2010, 10:39 AM   #1
RAEN
Huge Clucker
 
Join Date: Nov 2007
Posts: 244
Reputation: 4
Thumbs up Оптимизация кода

Rто может сказать как можно оптимизировать мод с помощью функций: continue; break;
На примере кода (с коментами плз):

Code:
for(new i = 0; i < MAX_PLAYERS; i++)
	{
	 if(IsPlayerConnected(i))
       {
	   if(playerid=3)
	   {
	    SendClientMessage(i, COLOR_YELLOW, "ТЕСТ");
	   }
	 }
     }
RAEN is offline   Reply With Quote
Old 11/06/2010, 10:48 AM   #2
BaRRyS3R
Little Clucker
 
Join Date: Aug 2008
Posts: 43
Reputation: 0
Default Оптимизация кода

код - бред.

во первых проще сделать так:

Code:
SendClientmessage(3, COLOR_YELLOW, "TEST");
во вторых у тебя переменной playerid пытаються присвоить значение, что не возможно вданном случае, т.к нужно делать прверку ( == ), а не присваивание.
в третьих, у тебя цикл просто так пробежит, ибо ты ищешь переменную i, а сравниваешь - playerid.

я думаю тебе еще рано брейк, и континью юзать =\
BaRRyS3R is offline   Reply With Quote
Old 11/06/2010, 11:19 AM   #3
RAEN
Huge Clucker
 
Join Date: Nov 2007
Posts: 244
Reputation: 4
Default Оптимизация кода

омг да этот код я для теста привел чтобы могли показать примеры оптимизации кода (подумаешь очепятка)... Вот другой

Code:
for(new i = 0; i < MAX_PLAYERS; i++)
	{
	 if(IsPlayerConnected(i))
       {
	   if(i != 3 )
	   {
	    SendClientMessage(i, COLOR_YELLOW, "ТЕСТ");
	   }
	 }
     }
RAEN is offline   Reply With Quote
Old 11/06/2010, 11:30 AM   #4
Fro1sha
Big Clucker
 
Fro1sha's Avatar
 
Join Date: Nov 2009
Posts: 168
Reputation: 28
Default Оптимизация кода

Code:
for(new i = 0; i < MAX_PLAYERS; i++)
	{
	 if(!IsPlayerConnected(i)) continue;
	  if(i == 3 )
	   {
	   SendClientMessage(i, COLOR_YELLOW, "ТЕСТ");
        break;
	   }
	 }
     }
__________________
[Plugin] MultiThread
[Plugin] GMT Timezone
[Plugin] Regular expression

Development any plugins, for the money.
Разработка любых плагинов за деньги.
Fro1sha is offline   Reply With Quote
Old 11/06/2010, 11:34 AM   #5
RAEN
Huge Clucker
 
Join Date: Nov 2007
Posts: 244
Reputation: 4
Default Оптимизация кода

Fro1sha спасибо за коментарии и то что ничего не объяснил... И кстати твой пример работает только для 1 игрока а не для 499 как в моем.
RAEN is offline   Reply With Quote
Old 11/06/2010, 11:51 AM   #6
Fro1sha
Big Clucker
 
Fro1sha's Avatar
 
Join Date: Nov 2009
Posts: 168
Reputation: 28
Default Оптимизация кода

Quote:
Originally Posted by RAEN
Fro1sha спасибо за коментарии и то что ничего не объяснил...
Оно будет работать для стольки игроков сколько онлайн. Эта строчка значит "if(!IsPlayerConnected(i)) continue;", что если игрок не онлайн продолжить дальше.
if( i == 3 )
{
SendClientMessage(i, COLOR_YELLOW, "ТЕСТ");
break;
}

Это значит что если i = 3, то послать сообщение 3 иду и закончить цикл break

Quote:
Originally Posted by RAEN
И кстати твой пример работает только для 1 игрока а не для 499 как в моем.
У тебя тоже самое, только цикл будет идти до конца
__________________
[Plugin] MultiThread
[Plugin] GMT Timezone
[Plugin] Regular expression

Development any plugins, for the money.
Разработка любых плагинов за деньги.
Fro1sha is offline   Reply With Quote
Old 11/06/2010, 12:09 PM   #7
RAEN
Huge Clucker
 
Join Date: Nov 2007
Posts: 244
Reputation: 4
Default Оптимизация кода

Quote:
И кстати твой пример работает только для 1 игрока а не для 499 как в моем.
У тебя тоже самое, только цикл будет идти до конца
Дык в моём случае, как я понял break; уже применить не получится...т.к. выполняется не для 1 игрока.
RAEN is offline   Reply With Quote
Old 11/06/2010, 12:30 PM   #8
BaRRyS3R
Little Clucker
 
Join Date: Aug 2008
Posts: 43
Reputation: 0
Default Оптимизация кода

break; в твоём примере - закончит выполнять цикл. без него, после наахождения ид 3 он пойдет дальше до 500.
BaRRyS3R is offline   Reply With Quote
Old 11/06/2010, 12:46 PM   #9
RAEN
Huge Clucker
 
Join Date: Nov 2007
Posts: 244
Reputation: 4
Default Оптимизация кода

BaRRyS3R это понятно... я и говорю что её поулчается нельзя применять в циклах, где нужно применить определенное действие к нескольким игрокам (как в моём примере)... Можно применить только в примере Fro1sha
RAEN is offline   Reply With Quote
Old 11/06/2010, 12:51 PM   #10
Fro1sha
Big Clucker
 
Fro1sha's Avatar
 
Join Date: Nov 2009
Posts: 168
Reputation: 28
Default Оптимизация кода

break удобна тем, что когда что-то ищешь в цикле, нашел, остановил, чтобы не тратить время дальше
__________________
[Plugin] MultiThread
[Plugin] GMT Timezone
[Plugin] Regular expression

Development any plugins, for the money.
Разработка любых плагинов за деньги.
Fro1sha 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 08:29 PM.


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