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

 



 
          





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





Последние Файлы 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
Модератор форума: Alcoholik  
Вопрос | Ответ
BorogДата: Среда, 25.04.2012, 22:54 | Сообщение # 4081
Долгожитель
Группа: I'm V.I.P.
Сообщений: 1362
Награды: 43
Город: Москва
Репутация: 1249
Замечания: 20%
Статус:
[RD]Chez, Читал, что со скобками работает немного быстрее. Точно не помню, ибо не заострял на этом внимание. Толи компиль дольше на эти доли миллисекунд, толи работа кода.


Silver Break
http://s-break.ru/
http://vk.com/sbreak
RudeBoyДата: Четверг, 26.04.2012, 14:58 | Сообщение # 4082
Освоившийся
Группа: Продвинутые
Сообщений: 113
Награды: 1
Город: Киев
Репутация: -28
Замечания: 0%
Статус:
а тут что быстрее..

IPIO у меня это макрос IsPlayerInRangeOfPoint

Code
if(IPIO(i,7.5,2064.2842,-1831.4736,13.5469))   
if(IPIO(i,7.5,487.6401,-1739.9479,11.1385))   
if(IPIO(i,7.5,1024.8651,-1024.0870,32.1016))   
if(IPIO(i,7.5,617.5467,-2.0437,1000.5823))   
if(IPIO(i,7.5,615.2847,-124.2390,997.6888))   
if(IPIO(i,7.5,-1904.7019,284.5968,41.0469))   
if(IPIO(i,7.5,-2425.7822,1022.1392,50.3977))   
if(IPIO(i,7.5,-1420.5195,2584.2305,55.8433))   
if(IPIO(i,7.5,-99.9417,1117.9048,19.7417))   
if(IPIO(i,7.5,1975.2384,2162.5088,11.0703))
if(IPIO(i,7.5,720.0854,-457.8807,16.3359))   
if(IPIO(i,7.5,615.9690,-75.0127,997.9922))


или

Code
if(IPIO(i,7.5,2064.2842,-1831.4736,13.5469))   
else if(IPIO(i,7.5,487.6401,-1739.9479,11.1385))   
else if(IPIO(i,7.5,1024.8651,-1024.0870,32.1016))   
else if(IPIO(i,7.5,617.5467,-2.0437,1000.5823))   
else if(IPIO(i,7.5,615.2847,-124.2390,997.6888))   
else if(IPIO(i,7.5,-1904.7019,284.5968,41.0469))   
else if(IPIO(i,7.5,-2425.7822,1022.1392,50.3977))   
else if(IPIO(i,7.5,-1420.5195,2584.2305,55.8433))   
else if(IPIO(i,7.5,-99.9417,1117.9048,19.7417))   
else if(IPIO(i,7.5,1975.2384,2162.5088,11.0703))
else if(IPIO(i,7.5,720.0854,-457.8807,16.3359))   
else if(IPIO(i,7.5,615.9690,-75.0127,997.9922))


или всё же мой вариант которым давно пользуюсь

Code
if(IPIO(i,7.5,2064.2842,-1831.4736,13.5469) || IPIO(i,7.5,487.6401,-1739.9479,11.1385) || IPIO(i,7.5,1024.8651,-1024.0870,32.1016) || IPIO(i,7.5,617.5467,-2.0437,1000.5823)
     || IPIO(i,7.5,615.2847,-124.2390,997.6888) || IPIO(i,7.5,-1904.7019,284.5968,41.0469) || IPIO(i,7.5,-2425.7822,1022.1392,50.3977) || IPIO(i,7.5,-1420.5195,2584.2305,55.8433)
     || IPIO(i,7.5,-99.9417,1117.9048,19.7417) || IPIO(i,7.5,1975.2384,2162.5088,11.0703) || IPIO(i,7.5,720.0854,-457.8807,16.3359) || IPIO(i,7.5,615.9690,-75.0127,997.9922))



Сообщение отредактировал RudeBoy - Четверг, 26.04.2012, 14:59
BorogДата: Четверг, 26.04.2012, 23:11 | Сообщение # 4083
Долгожитель
Группа: I'm V.I.P.
Сообщений: 1362
Награды: 43
Город: Москва
Репутация: 1249
Замечания: 20%
Статус:
RudeBoy, Приведенный код некорректен, мало того, третий никак не связан с двумя другими.
Первый и второй - пустые проверки (уже ошибка, приведи хотя бы пример), с возможностью использовать в каждой что-то свое
Третий вариант - единственная проверка



Silver Break
http://s-break.ru/
http://vk.com/sbreak
RudeBoyДата: Пятница, 27.04.2012, 07:14 | Сообщение # 4084
Освоившийся
Группа: Продвинутые
Сообщений: 113
Награды: 1
Город: Киев
Репутация: -28
Замечания: 0%
Статус:
хорошо, тогда вот всё тоже самое но со значением, я ведь для примера приводил думал вы поймете )

Code
if(IsPlayerInRangeOfPoint(i,7.5,2064.2842,-1831.4736,13.5469)) { ((действие)); }
if(IsPlayerInRangeOfPoint(i,7.5,487.6401,-1739.9479,11.1385)) { ((действие)); }
if(IsPlayerInRangeOfPoint(i,7.5,1024.8651,-1024.0870,32.1016)) { ((действие)); }
if(IsPlayerInRangeOfPoint(i,7.5,617.5467,-2.0437,1000.5823)) { ((действие)); }
if(IsPlayerInRangeOfPoint(i,7.5,615.2847,-124.2390,997.6888)) { ((действие)); }
if(IsPlayerInRangeOfPoint(i,7.5,-1904.7019,284.5968,41.0469)) { ((действие)); }
if(IsPlayerInRangeOfPoint(i,7.5,-2425.7822,1022.1392,50.3977)) { ((действие)); }
if(IsPlayerInRangeOfPoint(i,7.5,-1420.5195,2584.2305,55.8433)) { ((действие)); }
if(IsPlayerInRangeOfPoint(i,7.5,-99.9417,1117.9048,19.7417)) { ((действие)); }
if(IsPlayerInRangeOfPoint(i,7.5,1975.2384,2162.508 8,11.0703)) { ((действие)); }
if(IsPlayerInRangeOfPoint(i,7.5,720.0854,-457.8807,16.3359)) { ((действие)); }
if(IsPlayerInRangeOfPoint(i,7.5,615.9690,-75.0127,997.9922)) { ((действие)); }


2

Code
if(IsPlayerInRangeOfPoint(i,7.5,2064.2842,-1831.4736,13.5469)) { ((действие)); }
else if(IsPlayerInRangeOfPoint(i,7.5,487.6401,-1739.9479,11.1385)) { ((действие)); }
else if(IsPlayerInRangeOfPoint(i,7.5,1024.8651,-1024.0870,32.1016)) { ((действие)); }
else if(IsPlayerInRangeOfPoint(i,7.5,617.5467,-2.0437,1000.5823)) { ((действие)); }
else if(IsPlayerInRangeOfPoint(i,7.5,615.2847,-124.2390,997.6888)) { ((действие)); }
else if(IsPlayerInRangeOfPoint(i,7.5,-1904.7019,284.5968,41.0469)) { ((действие)); }
else if(IsPlayerInRangeOfPoint(i,7.5,-2425.7822,1022.1392,50.3977)) { ((действие)); }
else if(IsPlayerInRangeOfPoint(i,7.5,-1420.5195,2584.2305,55.8433)) { ((действие)); }
else if(IsPlayerInRangeOfPoint(i,7.5,-99.9417,1117.9048,19.7417)) { ((действие)); }
else if(IsPlayerInRangeOfPoint(i,7.5,1975.2384,2162.508 8,11.0703)) { ((действие)); }
else if(IsPlayerInRangeOfPoint(i,7.5,720.0854,-457.8807,16.3359)) { ((действие)); }
else if(IsPlayerInRangeOfPoint(i,7.5,615.9690,-75.0127,997.9922)) { ((действие)); }


3

Code
if(IPIO(i,7.5,2064.2842,-1831.4736,13.5469) || IPIO(i,7.5,487.6401,-1739.9479,11.1385) || IPIO(i,7.5,1024.8651,-1024.0870,32.1016) || IPIO(i,7.5,617.5467,-2.0437,1000.5823)
|| IPIO(i,7.5,615.2847,-124.2390,997.6888) || IPIO(i,7.5,-1904.7019,284.5968,41.0469) || IPIO(i,7.5,-2425.7822,1022.1392,50.3977) || IPIO(i,7.5,-1420.5195,2584.2305,55.8433)
|| IPIO(i,7.5,-99.9417,1117.9048,19.7417) || IPIO(i,7.5,1975.2384,2162.5088,11.0703) || IPIO(i,7.5,720.0854,-457.8807,16.3359) || IPIO(i,7.5,615.9690,-75.0127,997.9922))
{
((действие));
}


Quote (Borog)
третий никак не связан с двумя другими.


третий тоже самое что и другие (координаты те же самые) просто сжат в одну большую проверку с единственным значением

У всех вариантов должно быть одинаковое действие, что быстрее в итоге, третий получается? p.s. сорри что глупость полнейшую спрашиваю когда сам знаю ответ :D wall я просто не знаю что спросить

а по делу, никто не знает когда примерно выйдет 0.3e ?

Добавлено (27.04.2012, 07:14)
---------------------------------------------
а ннееет стойте, вот уже серьезный вопрос

Для примера выдрал этот код откуда-то и сделал прямо сейчас оптимизацию с break и continue, правильно ли?

Code
for(new h = 0; h < sizeof(SBizzInfo); h++)
        {
         if(IsATruck(tmpcar) && IPIO(i, 10.0, SBizzInfo[h][sbEntranceX], SBizzInfo[h][sbEntranceY], SBizzInfo[h][sbEntranceZ]))
         {
          format(string, sizeof(string), "~w~%s~n~~r~Products Required~w~: %d~n~~y~Price per Product: ~w~: $%d~n~~g~Funds: ~w~: $%d",SBizzInfo[h][sbMessage],(SBizzInfo[h][sbMaxProducts]-SBizzInfo[h][sbProducts]),SBizzInfo[h][sbPriceProd],SBizzInfo[h][sbTill]);
          GameTextForPlayer(i, string, 5000, 3);
          break;
         }
         else if(IPIO(i, 2.0, SBizzInfo[h][sbEntranceX], SBizzInfo[h][sbEntranceY], SBizzInfo[h][sbEntranceZ]))
         {
          if(SBizzInfo[h][sbOwned] == 1)
          {
           format(string, sizeof(string), "{666666}ID бизнеса: {00ff00}%d\n{666666}Название: {00ff00}%s\n{666666}Плата за вход: {00ff00}%d\n\n{666666}Владелец: {00ff00}%s\n{666666}Заместитель: {00ff00}%s\n{666666}Уровень: {00ff00}%d",h,SBizzInfo[h][sbMessage],SBizzInfo[h][sbEntranceCost],SBizzInfo[h][sbOwner],SBizzInfo[h][sbExtortion],SBizzInfo[h][sbLevelNeeded]);
           ShowPlayerDialog(i, 161, 0, "Бизнес", string, "Выбор", "Отмена");
           break;
          }
          else
          {
           format(string, sizeof(string), "{666666}ID бизнеса: {00ff00}%d\n{666666}Название: {00ff00}%s\n{666666}Цена бизнеса: {00ff00}$%d\n{666666}Уровень: {00ff00}%d\n\n...",h,SBizzInfo[h][sbMessage],SBizzInfo[h][sbBuyPrice],SBizzInfo[h][sbLevelNeeded]);
          }
          ShowPlayerDialog(i, 162, 0, "Бизнес", string, "Выбор", "Отмена");
          break;
         }
         continue;
        }
        for(new h = 0; h < sizeof(HouseInfo); h++)
        {
         if(IPIO(i, 1.0, HouseInfo[h][hEntrancex], HouseInfo[h][hEntrancey], HouseInfo[h][hEntrancez]))
         {
          if(HouseInfo[h][hOwned] == 1)
          {
           if(HouseInfo[h][hRentabil] == 0)
           {
            format(string, sizeof(string), "{666666}Владелец: {00ff00}%s\n{666666}Уровень: {00ff00}%d\n{666666}ID дома: {00ff00}%d",HouseInfo[h][hOwner],HouseInfo[h][hLevel],h);
           }
           else
           {
            format(string, sizeof(string), "{666666}Владелец: {00ff00}%s\n{666666}Стоймость аренды: {00ff00}$%d\n{666666}Уровень: {00ff00}%d\n{666666}ID дома: {00ff00}%d\n...",HouseInfo[h][hOwner],HouseInfo[h][hRent],HouseInfo[h][hLevel],h);
           }
           ShowPlayerDialog(i,6,DIALOG_STYLE_MSGBOX,"Дом",string,"Войти","Отмена");
           break;
          }
          else
          {
           format(string, sizeof(string), "Продаётся\n\nОписание: {00ff00}%s\n{666666}Цена: {00ff00}$%d\n{666666}Уровень: {00ff00}%d\n{666666}ID дома: {00ff00}%d\n",HouseInfo[h][hDiscription],HouseInfo[h][hValue],HouseInfo[h][hLevel],h);
          }
          ShowPlayerDialog(i,7,DIALOG_STYLE_MSGBOX,"Дом",string,"Выбор","Отмена");
          break;
         }
         else if(IPIO(i, 1.0, HouseInfo[h][hExitx], HouseInfo[h][hExity], HouseInfo[h][hExitz]))
         {
             ShowPlayerDialog(i, 163, DIALOG_STYLE_MSGBOX, "{33CCFF}Дом", "...", "Выбор", "Отмена");
          break;
         }
         continue;
        }


Допустим (для примера) мне надо чтобы данный цикл при просмотре 1 игроком завершался сразу же при найденном значении чтобы не тратить время дальше благодаря break, либо в случае если 1 цикл прошел мимо

(гл.проверки из 1 цикла)
if(IsATruck(tmpcar) && IPIO(i, 10.0, SBizzInfo[h][sbEntranceX], SBizzInfo[h][sbEntranceY], SBizzInfo[h][sbEntranceZ]))
else if(IPIO(i, 2.0, SBizzInfo[h][sbEntranceX], SBizzInfo[h][sbEntranceY], SBizzInfo[h][sbEntranceZ]))
... если проверки не прошли то цикл не тратит время благодаря continue; и приступает к другому циклу верно ведь?



Сообщение отредактировал RudeBoy - Пятница, 27.04.2012, 07:24
BorogДата: Пятница, 27.04.2012, 09:50 | Сообщение # 4085
Долгожитель
Группа: I'm V.I.P.
Сообщений: 1362
Награды: 43
Город: Москва
Репутация: 1249
Замечания: 20%
Статус:
Quote (RudeBoy)
третий тоже самое что и другие

Третий вариант содержит сборку всех проверок, однако проверка всего одна. т.о. если все условия удовлетворяются, то выполняется действие.
В двух первых же для каждой проверки свое действие. Если оно одно и тоже, то ты его просто будешь 100500 раз переписывать. Тогда само собой, что третий проще. Однако если придерживаться здравой логики и понимать, что первый и второй - отдельно, а третий - отдельно, тогда между первым и вторым перерывчик небольшой более оптимизированный второй, т.к. коду не придется бегать по всем проверкам. Хотя, опять же, все зависит от смысла (почему я и говорю, что нельзя однозначно ответить на этот вопрос без конкретных примеров)

Quote (RudeBoy)
я просто не знаю что спросить

Может и не стоит, раз не знаешь?



Silver Break
http://s-break.ru/
http://vk.com/sbreak
RudeBoyДата: Пятница, 27.04.2012, 16:45 | Сообщение # 4086
Освоившийся
Группа: Продвинутые
Сообщений: 113
Награды: 1
Город: Киев
Репутация: -28
Замечания: 0%
Статус:
Quote (Borog)
Третий вариант содержит сборку всех проверок, однако проверка всего одна. т.о. если все условия удовлетворяются, то выполняется действие.


либо я вас не понял на этой фразе, либо вы сами)

Code
т.о. если все условия удовлетворяются, то выполняется действие

- зачем все? одного условия (одной координаты) будет достаточно для выполнения действия, т.к. там стоит разделение ||, разделение и && две разные вещи

------------------------------------------

if(IPIO(i,7.5,2064.2842,-1831.4736,13.5469) || IPIO(i,7.5,487.6401,-1739.9479,11.1385) || IPIO(i,7.5,1024.8651,-1024.0870,32.1016) || IPIO(i,7.5,617.5467,-2.0437,1000.5823)
|| IPIO(i,7.5,615.2847,-124.2390,997.6888) [bgcolor=blue]|| IPIO(i,7.5,-1904.7019,284.5968,41.0469) || IPIO(i,7.5,-2425.7822,1022.1392,50.3977) || IPIO(i,7.5,-1420.5195,2584.2305,55.8433)
|| IPIO(i,7.5,-99.9417,1117.9048,19.7417) || IPIO(i,7.5,1975.2384,2162.5088,11.0703) || IPIO(i,7.5,720.0854,-457.8807,16.3359) || IPIO(i,7.5,615.9690,-75.0127,997.9922))[/bgcolor]
{
((действие));
return true;

}

всё таки это максимально быстрейшая проверка как мне кажется.. ведь ему стоит найти определенное место на отрезке как тут же начнет выполнять действие которое тут же завершит return true;, всё гениально быстро же new_russian Koshechka_08 быстрее придумать просто не реально ;) я гений современной науки

и кстати, тоже самое у меня везде и с пикапами, например вот

if(pickupid == healash || pickupid == healz || pickupid == healz2 || pickupid == healz3 [bgcolor=blue]|| pickupid == healz4 || pickupid == healz5 || pickupid == adminsudheal
|| pickupid == bolheal || pickupid == bolheal2 || pickupid == motoheal || pickupid == autoheal || pickupid == derbiheal || pickupid == libertyheal || pickupid == adminsudheal2)[/bgcolor]
{
SPA(playerid, 100.0); (жизни взять)
return true;

}

тоже получается быстро new_russian

Quote (Borog)
Третий вариант содержит сборку всех проверок, однако проверка всего одна. т.о. если все условия удовлетворяются, то выполняется действие. В двух первых же для каждой проверки свое действие. Если оно одно и тоже, то ты его просто будешь 100500 раз переписывать. Тогда само собой, что третий проще. Однако если придерживаться здравой логики и понимать, что первый и второй - отдельно, а третий - отдельно, тогда между первым и вторым перерывчик небольшой более оптимизированный второй, т.к. коду не придется бегать по всем проверкам. Хотя, опять же, все зависит от смысла (почему я и говорю, что нельзя однозначно ответить на этот вопрос без конкретных примеров)


зачем столько лишних слов? я ведь сам чуть ниже там ответил сам себе на вопрос yes

вы лучше скажите правильно ли у меня там расставлены continue; - т.к. я ранее с ними не работал и еще достоверно полностью не изучил, т.е. скажите либо да или либо нет и причина почему этого хватит ;)



Сообщение отредактировал RudeBoy - Пятница, 27.04.2012, 17:12
BorogДата: Пятница, 27.04.2012, 23:11 | Сообщение # 4087
Долгожитель
Группа: I'm V.I.P.
Сообщений: 1362
Награды: 43
Город: Москва
Репутация: 1249
Замечания: 20%
Статус:
Quote (RudeBoy)
зачем столько лишних слов?

Пытаюсь тебе разъяснить суть и донести, что ты привел 3 разных кода
А то, что ты писал, никак нельзя принять за "ответ на вопрос"
Но раз ты все понял, то и не будем об этом kiss

Quote (RudeBoy)
вы лучше скажите правильно ли у меня там расставлены continue;

Честно - лень разбирать код



Silver Break
http://s-break.ru/
http://vk.com/sbreak
[RD]ChezДата: Суббота, 28.04.2012, 02:04 | Сообщение # 4088
Мастер джэдай
Группа: Продвинутые
Сообщений: 3687
Награды: 206
Город: St. P
Репутация: 0
Замечания: 20%
Статус:
Quote (RudeBoy)
всё таки это максимально быстрейшая проверка как мне кажется..

Правильно. C++ и многие основанные на нем языки в || условии ждут первого true значения, а затем сразу прекращают свою работу. Однако в некоторых случаях правило Де Моргана быстрее (не в этом).

Code
for(new h = 0; h < sizeof(SBizzInfo); h++)  
{  
  if(IsATruck(tmpcar) && IPIO(i, 10.0, SBizzInfo[h][sbEntranceX], SBizzInfo[h][sbEntranceY], SBizzInfo[h][sbEntranceZ]))  
  {  
   format(string, sizeof(string), "~w~%s~n~~r~Products Required~w~: %d~n~~y~Price per Product: ~w~: $%d~n~~g~Funds: ~w~: $%d",SBizzInfo[h][sbMessage],(SBizzInfo[h][sbMaxProducts]-SBizzInfo[h][sbProducts]),SBizzInfo[h][sbPriceProd],SBizzInfo[h][sbTill]);  
   GameTextForPlayer(i, string, 5000, 3);  
   break;  
  }  
  else if(IPIO(i, 2.0, SBizzInfo[h][sbEntranceX], SBizzInfo[h][sbEntranceY], SBizzInfo[h][sbEntranceZ]))  
  {  
   if(SBizzInfo[h][sbOwned] == 1)  
   {  
    format(string, sizeof(string), "{666666}ID бизнеса: {00ff00}%d\n{666666}Название: {00ff00}%s\n{666666}Плата за вход: {00ff00}%d\n\n{666666}Владелец: {00ff00}%s\n{666666}Заместитель: {00ff00}%s\n{666666}Уровень: {00ff00}%d",h,SBizzInfo[h][sbMessage],SBizzInfo[h][sbEntranceCost],SBizzInfo[h][sbOwner],SBizzInfo[h][sbExtortion],SBizzInfo[h][sbLevelNeeded]);  
    ShowPlayerDialog(i, 161, 0, "Бизнес", string, "Выбор", "Отмена");  
    break;  
   }  
   else  
   {  
    format(string, sizeof(string), "{666666}ID бизнеса: {00ff00}%d\n{666666}Название: {00ff00}%s\n{666666}Цена бизнеса: {00ff00}$%d\n{666666}Уровень: {00ff00}%d\n\n...",h,SBizzInfo[h][sbMessage],SBizzInfo[h][sbBuyPrice],SBizzInfo[h][sbLevelNeeded]);  
   }  
   ShowPlayerDialog(i, 162, 0, "Бизнес", string, "Выбор", "Отмена");  
   break;  
  }  
  continue;  
}  
for(new h = 0; h < sizeof(HouseInfo); h++)  
{  
  if(IPIO(i, 1.0, HouseInfo[h][hEntrancex], HouseInfo[h][hEntrancey], HouseInfo[h][hEntrancez]))  
  {  
   if(HouseInfo[h][hOwned] == 1)  
   {  
    if(HouseInfo[h][hRentabil] == 0)  
    {  
     format(string, sizeof(string), "{666666}Владелец: {00ff00}%s\n{666666}Уровень: {00ff00}%d\n{666666}ID дома: {00ff00}%d",HouseInfo[h][hOwner],HouseInfo[h][hLevel],h);  
    }  
    else  
    {  
     format(string, sizeof(string), "{666666}Владелец: {00ff00}%s\n{666666}Стоймость аренды: {00ff00}$%d\n{666666}Уровень: {00ff00}%d\n{666666}ID дома: {00ff00}%d\n...",HouseInfo[h][hOwner],HouseInfo[h][hRent],HouseInfo[h][hLevel],h);  
    }  
    ShowPlayerDialog(i,6,DIALOG_STYLE_MSGBOX,"Дом",string,"Войти","Отмена");  
    break;  
   }  
   else  
   {  
    format(string, sizeof(string), "Продаётся\n\nОписание: {00ff00}%s\n{666666}Цена: {00ff00}$%d\n{666666}Уровень: {00ff00}%d\n{666666}ID дома: {00ff00}%d\n",HouseInfo[h][hDiscription],HouseInfo[h][hValue],HouseInfo[h][hLevel],h);  
   }  
   ShowPlayerDialog(i,7,DIALOG_STYLE_MSGBOX,"Дом",string,"Выбор","Отмена");  
   break;  
  }  
  else if(IPIO(i, 1.0, HouseInfo[h][hExitx], HouseInfo[h][hExity], HouseInfo[h][hExitz]))  
  {  
   ShowPlayerDialog(i, 163, DIALOG_STYLE_MSGBOX, "{33CCFF}Дом", "...", "Выбор", "Отмена");  
   break;  
  }  
  continue;  
}


В данном контексте continue вообще не нужен, он лишь вызовет пару дополнительных итераций (точное кол-во не скажу, возможно 1 или 2), т.к. и так конец шага цикла.

continue имеет смысл вызывать, если хочешь прервать шаг цикла и перети на следующий. Что-то сродни goto }, где "}" - собственно граница цикл, после пересечения которой индекс увеличивается или уменьшается в соответствии с тем, как это требуется.

Добавлено (28.04.2012, 01:59)
---------------------------------------------
Borog, Его ответ на свой вопрос вполне полон и доходчив, см.выше мой пост.

Quote (Borog)
Честно - лень разбирать код

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

Добавлено (28.04.2012, 02:04)
---------------------------------------------

Quote (RudeBoy)
if(!IsPlayerConnected(i)) continue; быстрее фильтрует.. мне тоже так кажется, но с другой стороны if(IsPlayerConnected(i)) { ........ }

красивее - первый вариант.
быстрее на один дополнительный вызов функции IsPlayerConnected - второй, если не существует хеширования.
Но так как наши мощности компьютеров способны проглотить и не заметить разницу в пару итераций, зачем выпендриваться? Пишите красиво, и все. Это ценнее сейчас.
Вообще в каждую команду пихатьэту проверку нет смысла. Достаточно в заголовок паблика или иной не адресованной amx машиной функции, в котором эта проверка часта, поставить. Объем кода сократится, скорость работы не изменится, красота усилится)



1 час моей работы стоит минимум 800 рублей для срочных работ.
Знаю CodeIgniter, Kohana, втч. кастом(php), Вникаю в Yii. jQuery на должном уровне, немного разбираюсь в RightJS.
Алсо, 6 лет павно, 2 года в шарпе, понимаю си и плюсы.
Немного ассемблер.
Ох**тельный верстальщик какб.

Если ваш заказ потребует неделю работы и вы собираетесь заплатить 100 рублей - лес там ->> ^^^^^

chezrd@gmail.com
lance@chez-lab.ru
RudeBoyДата: Суббота, 28.04.2012, 08:35 | Сообщение # 4089
Освоившийся
Группа: Продвинутые
Сообщений: 113
Награды: 1
Город: Киев
Репутация: -28
Замечания: 0%
Статус:
Quote (|RD|Chez)
В данном контексте continue вообще не нужен, он лишь вызовет пару дополнительных итераций (точное кол-во не скажу, возможно 1 или 2), т.к. и так конец шага цикла. continue имеет смысл вызывать, если хочешь прервать шаг цикла и перети на следующий. Что-то сродни goto }, где "}" - собственно граница цикл, после пересечения которой индекс увеличивается или уменьшается в соответствии с тем, как это требуется.


о, ясно спасибо ;)

LagutinДата: Суббота, 28.04.2012, 12:37 | Сообщение # 4090
Новенький
Группа: Пользователи
Сообщений: 2
Награды: 0
Город: Arkadak
Репутация: 0
Замечания: 0%
Статус:
Помогите с перевозкой продуктов. Когда садишься в машину и пишешь команду(/load и т.д) то пишет Unknown.Вот команды:
[cut noguest=команды]
Code
else if(strcmp(cmd, "/load", true) == 0)
  {
   new tmpcar = GetPlayerVehicleID(playerid);
   if(!IsATruck(tmpcar)) return GameTextForPlayer(playerid, "~r~You are not in a delivery truck", 5000, 1);
   format(string, sizeof(string), "Продукты: %d/%d.", PlayerHaul[tmpcar][pLoad],PlayerHaul[tmpcar][pCapasity]);
   send(playerid, 0x00D900C8, string);
   return 1;
  }
  else if(strcmp(cmd, "/buyprods", true) == 0)
  {
   new tmpcar = GetPlayerVehicleID(playerid), compcost = 50;
   if(PlayerToPoint(60.0, playerid, 2787.8,-2436.3,13.7))
   {
    if(!IsATruck(tmpcar)) return send(playerid, 0x00D900C8, "* Вы не в грузовике для перевоза продуктов.");
    if(PlayerHaul[tmpcar][pLoad] < PlayerHaul[tmpcar][pCapasity])
    {
        new amount; if(sscanf(params, "d", amount)) return send(playerid, COLOR_GRAD1, "Используйте: /buyprods [кол-во продуктов(1-100)]");
     if(amount < 1 || amount > 100) return send(playerid, COLOR_GREY, "* Можно купить продуктов не менее 1 и не более 100.");
     new check= PlayerHaul[tmpcar][pLoad] + amount;
     if(check > PlayerHaul[tmpcar][pCapasity]) format(string, sizeof(string), "   You went over the Truck Products Carry Limit of %d, you currently carry %d.",PlayerHaul[tmpcar][pCapasity],PlayerHaul[tmpcar][pLoad]), send(playerid, COLOR_GREY, string);
     new cost = amount*compcost;
     if(GetPlayerMoney(playerid) >= cost)
     {
      PlayerHaul[tmpcar][pLoad] += amount;
      format(string, sizeof(string), "Продукты: %d/%d.", PlayerHaul[tmpcar][pLoad],PlayerHaul[tmpcar][pCapasity]);
      send(playerid, 0x00D900C8, string);
      format(string, sizeof(string), "* Вы купили %d продуктов, за $%d.", amount,cost);
      send(playerid, 0x00D900C8, string);
      GivePlayerMoney(playerid,-cost);
      PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
      return 1;
     }
     else return format(string, sizeof(string), "* У вас нехватает средств на %d продуктов. Нужно $%d!", amount,cost), send(playerid, 0x00D900C8, string);
    }
    else return format(string, sizeof(string), "Продукты: %d/%d.", PlayerHaul[tmpcar][pLoad],PlayerHaul[tmpcar][pCapasity]), send(playerid, 0x00D900C8, string);
   }
   return 1;
  }
  else if(strcmp(cmd, "/sellprods", true) == 0)
  {
      new cashmade;
      new tmpcar;
      if(IsPlayerConnected(playerid))
   {
    tmpcar = GetPlayerVehicleID(playerid);
    if(!IsATruck(tmpcar)) return send(playerid, 0x00D900C8, "* Вы не в грузовике для перевоза продуктов.");
    if(PlayerHaul[tmpcar][pLoad] == 0)
    {
     GameTextForPlayer(playerid, "~r~Truck is empty, return to the stock house", 5000, 1);
     format(string, sizeof(string), "Продукты: %d/%d.", PlayerHaul[tmpcar][pLoad],PlayerHaul[tmpcar][pCapasity]);
     send(playerid, 0x00D900C8, string);
     return 1;
    }
    for(new i = 0; i < sizeof(BizzInfo); i++)
    {
     if (PlayerToPoint(10, playerid,BizzInfo[i][bEntranceX], BizzInfo[i][bEntranceY], BizzInfo[i][bEntranceZ]))
     {
      for(new l = PlayerHaul[tmpcar][pLoad]; l > 0; l--)
      {
       if(BizzInfo[i][bProducts] == BizzInfo[i][bMaxProducts])
       {
        GameTextForPlayer(playerid, "~r~Our stores are full", 5000, 1);
        format(string, sizeof(string), "Cash Earned $%d.", cashmade);
        send(playerid, 0x00D900C8, string);
        format(string, sizeof(string), "Products: %d/%d.", PlayerHaul[tmpcar][pLoad],PlayerHaul[tmpcar][pCapasity]);
        send(playerid, 0x00D900C8, string);
        PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
        return 1;
       }
       if(BizzInfo[i][bPriceProd] > BizzInfo[i][bTill])
       {
        GameTextForPlayer(playerid, "~r~We Cant Afford The Deal", 5000, 1);
        format(string, sizeof(string), "Cash Earned $%d.", cashmade);
        send(playerid, 0x00D900C8, string);
        format(string, sizeof(string), "Products: %d/%d.", PlayerHaul[tmpcar][pLoad],PlayerHaul[tmpcar][pCapasity]);
        send(playerid, 0x00D900C8, string);
        PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
        return 1;
       }
       PlayerHaul[tmpcar][pLoad]--;
       BizzInfo[i][bProducts]++;
       cashmade = cashmade+BizzInfo[i][bPriceProd];
       ConsumingMoney[playerid] = 1;
       GivePlayerMoney(playerid,BizzInfo[i][bPriceProd]);
       BizzInfo[i][bTill] -= BizzInfo[i][bPriceProd];
       if(PlayerHaul[tmpcar][pLoad] == 0)
       {
        GameTextForPlayer(playerid, "~r~Truck is empty, return to the stock house", 5000, 1);
        format(string, sizeof(string), "Cash Earned $%d.", cashmade);
        send(playerid, 0x00D900C8, string);
        format(string, sizeof(string), "Products: %d/%d.", PlayerHaul[tmpcar][pLoad],PlayerHaul[tmpcar][pCapasity]);
        send(playerid, 0x00D900C8, string);
        PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
        return 1;
       }
      }
      OnPropUpdate();
      return 1;
     }
    }
   }
[/cut]

вот сток
Code
stock IsATruck(carid)
{
  if(carid >= truckcar[0] && carid <= truckcar[1]) return 1;
  return 0;
}

вывод сообщения когда в машине
Code
  if(IsATruck(newcar))
   {
    format(string, sizeof(string), "Продукты: %d/%d", PlayerHaul[newcar][pLoad],PlayerHaul[newcar][pCapasity]);
    send(playerid, 0x00D900C8, string);
    send(playerid, COLOR_WHITE, "Информация: Вы можете продавать продукты бизнесам.");
    send(playerid, COLOR_WHITE, "Информация: Используйте: /load /buyprods /sellprods");
   }

RudeBoyДата: Суббота, 28.04.2012, 13:16 | Сообщение # 4091
Освоившийся
Группа: Продвинутые
Сообщений: 113
Награды: 1
Город: Киев
Репутация: -28
Замечания: 0%
Статус:
Quote (Lagutin)
stock IsATruck(carid) {   if(carid >= truckcar[0] && carid <= truckcar[1]) return 1;   return 0; }


убедитесь что truckcar точно привязан к продуктовым авто, возможно причина в этом

если вывод сообщения =

Quote (Lagutin)
  if(IsATruck(newcar))    {     format(string, sizeof(string), "Продукты: %d/%d", PlayerHaul[newcar][pLoad],PlayerHaul[newcar][pCapasity]);     send(playerid, 0x00D900C8, string);     send(playerid, COLOR_WHITE, "Информация: Вы можете продавать продукты бизнесам.");     send(playerid, COLOR_WHITE, "Информация: Используйте: /load /buyprods /sellprods");    }


= всё же происходит когда вы садитесь в это авто то причина в другом.

также советую посмотреть на максимальный размер груза для каждого авто, возможно где-то не хватает либо вообще чего-то нет.

скиньте заодно переменные с грузом для авто ((PlayerHaul))



Сообщение отредактировал RudeBoy - Суббота, 28.04.2012, 13:25
LagutinДата: Суббота, 28.04.2012, 16:09 | Сообщение # 4092
Новенький
Группа: Пользователи
Сообщений: 2
Награды: 0
Город: Arkadak
Репутация: 0
Замечания: 0%
Статус:
Кароч я заменил другой системой развозки. Спасиб за помощь!
[exe]eccoДата: Среда, 09.05.2012, 19:30 | Сообщение # 4093
Группа: Пользователи
Сообщений: 559
Награды: 3
Город: Киев
Репутация: 4
Замечания: 0%
Статус:
Помогите сделать анти рекламу на /me и в чат а то anti-adv на пашет на такое 1_1_1_1:1111 как сделать еще так чтоб мут давало?? с меня 10 плюсов


AwmДата: Четверг, 10.05.2012, 13:57 | Сообщение # 4094
Группа: I'm V.I.P.
Сообщений: 3235
Награды: 55
Город: Tallinn
Репутация: 1661
Замечания: 0%
Статус:
ecco nu ti skin kod svoego antiadv tam uze budem smotret'



"Life is hard... life is harder if you're stupid." - John Wayne
MarkeloFFДата: Четверг, 10.05.2012, 14:10 | Сообщение # 4095
Советчик
Группа: I'm V.I.P.
Сообщений: 1033
Награды: 14
Город: Калининград
Репутация: 191
Замечания: 80%
Статус:
[exe]ecco, вставь там где 1.1 и т.д. PlayerInfo[playerid][pMute] = 1; и PlayerInfo[playerid][pMuteTime] = время мута в секундах;
Поиск:





 


 


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