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

 



 
          





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





Последние Файлы 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
  • Страница 1 из 1
  • 1
Модератор форума: AXE, Weddew  
#define, и в том же направлении...
VagrantДата: Понедельник, 24.05.2010, 17:13 | Сообщение # 1
Уважаемый человек
Группа: I'm V.I.P.
Сообщений: 904
Награды: 21
Город: Находка
Репутация: 489
Замечания: 0%
Статус:
Всем доброго времени суток. Возник вопрос по поводу #define и всё что идёт далее после него синим текстом. Вот из чего возник вопрос:

#define dcmd(%1,%2,%3) if (!strcmp((%3)[1], #%1, true, (%2)) && ((((%3)[(%2) + 1] == '\0') && (dcmd_%1(playerid, ""))) || (((%3)[(%2) + 1] == ' ') && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1

Не понятно вот что: %1,%2,%3 - почему именно 1,2,3 а не 0,1,2 и вообще почему цифры и проценты. Второе, не могу понять вот этот код: !strcmp((%3)[1], #%1. А конкретно вот эту часть: (%3)[1], #%1 и (%2). Кароче дальше всё так же не понятно. Я единственное знаю что условие обозночается там в одну строку и ровно ставится просто одним ровно а не как в обычном условии (==). И условие там закрывается #endif а else пишется #else. Ну вот в принципе и всё. Может кто-нибудь разобрать эту строку от начала и до конца. Вот эту (dcmd_%1(playerid, "")) часть полностью почему с _ и почему в ковычках ничего не написано. И зачем их поставили если там ничего не написали. Ещё видел пишут в условиях символ деления ( / ) в которых в принципе делить нечего. Зачем и что он означает?


Человек учась ходить падает, и только падая, он учится ходить!
Мои работы:
[GM] W.F.S.A. V. 1.0 - 100%
[GM] San Fierro Enigmatic (TDM) V. 1.0 - 100%
[FS] Clan House V. 1.0 - 100%
[FS] Save Car Tun System V. 1.0 - 100%
[FS] Vagrant Anti-CapsLock V. 2.1 - 100%
[FS] Vagrant Anti-Advertise V. 1.1, V. 2.0 - 100%
[APP] SA-MP Interior Viewer V. 1.0 - 100%

Принимаю заказы на помощь в скриптинге!


Сообщение отредактировал Vagrant - Понедельник, 24.05.2010, 17:22
stepmexДата: Понедельник, 24.05.2010, 17:59 | Сообщение # 2
Мастер джэдай
Группа: Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус:
%1,%2,%3 - так обозначаются переменные
(%3)[1] - взять переменную %3, в данном случае строка, и проверять её начиная с позиуии 1, в нулевой позиции храниться "/"
про решотку не скажу - не наю. blush2
Quote (Vagrant)
Кароче дальше всё так же не понятно. Я единственное знаю что условие обозночается там в одну строку и ровно ставится просто одним ровно а не как в обычном условии (==). И условие там закрывается #endif а else пишется #else.
бред
Quote (Vagrant)
Вот эту (dcmd_%1(playerid, "")) часть полностью почему с _ и почему в ковычках ничего не написано.
это вызов какой-то другой функции с именем "dcmd_'какой-то символ'".
Quote (Vagrant)
Ещё видел пишут в условиях символ деления ( / ) в которых в принципе делить нечего.
пример можно?



И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
MaccerДата: Вторник, 25.05.2010, 02:38 | Сообщение # 3
Уверенный в себе
Группа: Продвинутые
Сообщений: 281
Награды: 7
Город: Санкт-Петербург
Репутация: 100
Замечания: 40%
Статус:
Это директивы препроцессора.
Функции описанные с их помощью называют еще макросами.
все они имеют вид #define x y
где x то что надо заменить а y то на что заменить и между ними пробел, а стало быть в самих выражения x и y пробелов быть не должно, поэтому вместо return 1; там будет return(1); и прочие извращения
писать в одну строку длинные макросы не удобно, поэтому используется символ \ который означает что продолжение макроса идет на следующей строке.
если перед некоторой переменной напишешь # то она заменится на строчку представляющую собой имя той переменной

new test_var = 7;
print(#test_var);

#define test_def 7
print(#test_def);

в первом случае выведется имя переменной, во втором случае выведется 7, так как test_def заменится на 7

#define mini(%1,%2) ((%1)<(%2)?(%1):(%2))
вот пример простого макроса

когда ты напишешь код типа
#define mini(%1,%2) ((%1)<(%2)?(%1):(%2))

new a = 3, b = 4;
new c = mini(a,b);

препроцессор перед компиляцией заменит его на следующий:
new a = 3, b = 4;
new c = ((a)<(b)?(a):(b));

Зайди на этот сайт и скачай от туда The pawn booklet 1. Language Guide (1.3 MiB; 2008-10-22) (раздел Documentation)
там прочитай с 93 страницы и со 118 - все это описание препроцессора и его директив.


есть вопросы по sa-mp или pawn?
помогу за $$
VagrantДата: Вторник, 25.05.2010, 14:35 | Сообщение # 4
Уважаемый человек
Группа: I'm V.I.P.
Сообщений: 904
Награды: 21
Город: Находка
Репутация: 489
Замечания: 0%
Статус:
Спасибо Maccer, stepmex. Обоим по + поставил.
Quote (stepmex)

пример можно?

Чё-то я чуть-чуть прогнал... :) там не условие было.
Code

#define PRESSED(%0) \  // перенос на след строку
     (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))

by stepmex из темы Detonator.



Человек учась ходить падает, и только падая, он учится ходить!
Мои работы:
[GM] W.F.S.A. V. 1.0 - 100%
[GM] San Fierro Enigmatic (TDM) V. 1.0 - 100%
[FS] Clan House V. 1.0 - 100%
[FS] Save Car Tun System V. 1.0 - 100%
[FS] Vagrant Anti-CapsLock V. 2.1 - 100%
[FS] Vagrant Anti-Advertise V. 1.1, V. 2.0 - 100%
[APP] SA-MP Interior Viewer V. 1.0 - 100%

Принимаю заказы на помощь в скриптинге!


Сообщение отредактировал Vagrant - Вторник, 25.05.2010, 14:36
stepmexДата: Вторник, 25.05.2010, 15:43 | Сообщение # 5
Мастер джэдай
Группа: Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус:
Vagrant, дак это не симво деления, эьто обратный слэш :)
Quote (Maccer)
писать в одну строку длинные макросы не удобно, поэтому используется символ \ который означает что продолжение макроса идет на следующей строке.



И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
  • Страница 1 из 1
  • 1
Поиск:





 


 


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