Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 7 из 7
  1. #1
    Аватар для Hidden
    Пользователь

    Статус
    Оффлайн
    Регистрация
    25.11.2013
    Сообщений
    73
    Репутация:
    43 ±

    Выражения и операторы PAWN.

    PHP код:
    new var_1var_2result// некоторые переменные 

     Арифметические выражения
    Арифметические выражения: Пример Пояснение
    + result = var_1 + var_2; Результатом (result) будет сумма var_1 и var_2.
    - result = var_1 - var_2;

    -var_1
    Результатом (result) будет разность var_1 и var_2.


    Отрицательное значение.
    * result = var_1 * var_2; Результатом (result) будет произведение var_1 и var_2.
    / result = var_1 / var_2; Результатом (result) будет частное var_1 и var_2.
    % result = var_1 % var_2; Результатом будет остаток деления var_1 и var_2.
    ++ var_1++


    ++var_1
    Прибавление единицы (1). Результатом будет значение var_1 перед прибавлением единицы (1).

    Прибавление единицы (1). Результатом будет значение var_1 после прибавления единицы (1).
    -- var_1--


    --var_1
    Уменьшение на единицу (1). Результатом будет значение var_1 перед уменьшением на единицу (1).

    Уменьшение на единицу (1). Результатом будет значение var_1 после уменьшения на единицу (1).



     Операторы присваивания
    Операторы присваивания: Пример Пояснение
    += var_1 += var_2; Прибавить к значению var_1 значение var_2.
    -= var_1 -= var_2; Отнять от значения var_1 значение var_2.
    *= var_1 *= var_2; Умножить значение var_1 на значение var_2.
    /= var_1 /= var_2; Разделить значение var_1 на значение var_2.
    %= var_1 %= var_2; Присвоить значению var_1 остаток от деления var на var_2.
    &= var_1 &= var_2; Применяет побитовое "и" к var_1 и var_2 и присваивает результат к var_1.
    |= var_1 |= var_2; Применяет побитовое "или" к var_1 и var_2 и присваивает результат к var_1.
    ^= var_1 ^= var_2; Применяет побитовое "исключающее или" к var_1 и var_2 и присваивает результат к var_1.
    = var_1 = var_2; Присваивает значению var_1 значение var_2.



     Операторы сравнения
    Операторы сравнения:
    (обычно используются
    с оператором if)
    Пример Пояснение
    == if(var_1 == var_2) Если var_1 равно var_2.
    != if(var_1 != var_2) Если var_1 не равно var_2.
    > if(var_1 > var_2) Если var_1 больше var_2.
    < if(var_1 < var_2) Если var_1 меньше var_2.
    >= if(var_1 >= var_2) Если var_1 больше либо равно var_2.
    <= if(var_1 <= var_2) Если var_1 меньше либо равно var_2.



     Логические операторы
    Логические операторы: Пример Пояснение
    ! if(!IsPlayerConnected(playerid)) Логическое "НЕ" (если игрок не подключён).
    || if(var_1 == 0 || var_2 == 0) Логическое "ИЛИ" (если var_1 равно нулю или var_2 равно нулю).
    && if(var_1 == 0 && var_2 == 0) Логическое "И" (если и var_1, и var_2 равны нулю).



     Побитовые операторы
    Побитовые операторы: Автор темы: Pop ссылка



     Операторы ветвления
    Операторы ветвления: Пример Пояснение
    if
    PHP код:
    if(var_1 == 256) print("var_1 равно 256"); 
    Если (if) var_1 равно 256, то в консоли выведет "var_1 равно 256".
    else
    PHP код:
    if(var_1 == 256) print("var_1 равно 256");
    else print(
    "var_1 не равно 256"); 
    Если (if) var_1 равно 256, то в консоли выведет "var_1 равно 256", а если иначе (else), то выведет "var_1 не равно 256".
    else if
    PHP код:
    if(var_1 == 256) print("var_1 равно 256");
    else if(
    var_1 == 255) print("var_1 равно 255");
    else print(
    "var_1 не равно ни 256, ни 255"); 
    Если (if) var_1 равно 256, то в консоли выведет "var_1 равно 256", если же (else if) var_1 равно 255 - выведет "var_1 равно 255", а если иначе (else) - выведет "var_1 не равно ни 256, ни 255".



     Оператор варианта
    Оператор варианта: Пример Пояснение
    switch
    PHP код:
    switch(var_1)
    {
        case 
    256: print("var_1 равно 256");
        case 
    255: print("var_1 равно 255");
        default: print(
    "var_1 не равно ни 256, ни 255");

    switch как бы перебирает все значения var_1. В случае, если var_1 = 256 (case 256), в консоли выведет "var_1 равно 256", если же var_1 равно 255 (case 255) - выведет "var_1 равно 255", а если иначе (default) - выведет "var_1 не равно ни 256, ни 255".
    case
    PHP код:
    case 1..100// Пример 1
    case 135577// Пример 2

    #define SOME_TEXT 0 // Пример 3
    switch(var_1)
    {
        case 
    SOME_TEXT: print("var_1 равно нулю"); 
        
    // равносильно:
        // case 0: print("var_1 равно нулю");

    Если рассмотреть отдельно case, то его можно использовать по-разному: можно просто число (пример выше), можно ряд чисел (Пример 1, от 1 до 100), можно несколько чисел (Пример 2). Также, можно задефайнить (#define*) значение и использовать задефайненный текст (Пример 3).
    *#define - директива. Информация о директивах - click.



     Оператор sizeof
    Оператор sizeof: Пример Пояснение
    sizeof
    PHP код:
    new array[25]; // создадим массив на 25 ячеек
    printf("Размер массива array - %i."sizeof(array)); 
    // выведем сообщение в консоль 
    Данный оператор позволяет узнать размер переменных (в консоли выведет "Размер массива array - 25.").



     Операторы циклов/функции, связанные с циклами
    Оператор циклов/функции,
    связанные с циклами
    Пример Пояснение
    for
    (начальное действие; условие повторения; шаг цикла)
    PHP код:
    new i, array[5];
    for(
    0sizeof(array); i++)
    {
        array[
    i] = 5

    Данный цикл содержит в себе счётчик, то есть цикл не остановится, пока переменная i меньше размера массива array, то бишь меньше 5 (в примере присваиваем переменным array[0], array[1], array[2], array[3] и array[4] значение 5).
    while
    (условие повторения)
    PHP код:
    new 2, array[5];
    while(
    5)
    {
        array[
    i] = 5;
        
    i++; 

    Особенность цикла заключается в том, что он не будет работать, если условие повторения не выполняется, то есть значения переменной проверяются перед запуском цикла, отчего данный цикл называют циклом с предусловием (в примере присваиваем переменным array[2], array[3], array[4] значение 5).
    do-while
    PHP код:
    new 2;
    do
    {
        
    i++; 
    }
    while(
    10);
    // пока i меньше 10, выполняем цикл ещё раз 
    Особенность цикла заключается в том, что он сначала выполняет действие, а потом проверяет соответствие условию, отчего данный цикл называют циклом с постусловием (в примере сначала прибавляем к i единицу, а потом проверяем, i меньше десяти или нет).
    if-goto
    PHP код:
    new 8;
    loop_start:
    if (
    10)
    {
        
    printf("Число: %i"i);
        
    i++;
        goto 
    loop_start;

    В этом цикле мы создаём переменную со значением 8 (new i = 8), присваиваем циклу loop_start проверку на значение i (if(i < 10)). Если значение истинно, то есть i действительно меньше 10, то выводим значение переменной i, прибавляем к этой переменной единицу и с помощью функции goto запускаем цикл снова (goto loop_start;), только теперь i будет равняться 9. И так далее.
    break
    PHP код:
    new i;
    for(
    010i++)
    {
        if(
    == 5) break;

    break обрывает действие цикла. Цикл будет прибавлять к i единицу до того момента, когда i станет равной 5. Когда это произойдёт (if(i == 5)), цикл остановится (break;).
    continue
    PHP код:
    new i;
    for(
    010i++)
    {
        if(
    == 5) continue;
        
    printf("%i"i);

    continue пропускает действие цикла. Цикл будет выводить в консоль значения i, а когда i станет равной 5, цикл пропустит это действие, то есть число 5 в консоль не выведется.



     Операторы возврата return
    Оператор возврата return: Автор темы: DeimoS ссылка



     Тернарный оператор
    Тернарный оператор: Пример Пояснение
    ? :
    PHP код:
    new 206c;
    = (b) ? b;

    // Пояснение на примере if/else:
    new 206c;
    if(
    ba;
    else 
    b
    Тернарный оператор, по сути, то же самое, что и операторы ветвления (if/else), только в нём код записывается в одну строку.
    Вид (если используются числа): условие ? выражение 1 : выражение 2
    Вид (если используется текст): условие ? (текст 1) : (текст 2)



     Прочее
    Прочее: Пример Пояснение
    [ ] new a[20];
    a[5] = 2;
    Индекс обычного массива (ячейки).
    { } new a[20 char];
    a{5} = 2;
    Индекс сжатого массива (символы).


    Использованы материалы из http://wiki.sa-mp.com/, PAWN_Language_Guide.pdf.
    Последний раз редактировалось Hidden; 14.12.2014 в 01:08.
    Hidden (Kenny Hellwood)

    Темы:
    [Мануал] Система двигателя [for new.pwn] - click.
    [Мануал] Запись нескольких значений в один столбец через запятую [mysql r7] - click.
    [Мануал] Табличка на прицепы - click.
    [Info] Выражения и операторы PAWN - click.

  2. 10 пользователя(ей) сказали cпасибо:
    codeo (15.06.2014) DeimoS (10.07.2016) DmitriyVasilev (11.08.2019) Elaid (23.10.2014) Josan_Solomon (16.02.2019) Just_Fenix (25.05.2014) MR_BEN (26.05.2014) Salvacore (24.05.2014) [ForD] (24.05.2014) Антон01 (27.01.2016)
  3. #2
    Аватар для Salvacore
    Инжунер-погромист

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Адрес
    Аҧсуа бызшәа
    Сообщений
    2,271
    Репутация:
    418 ±
    Отлично!

  4. #3
    Аватар для Just_Fenix
    Пользователь

    Статус
    Оффлайн
    Регистрация
    05.05.2014
    Сообщений
    47
    Репутация:
    11 ±
    Хороший урок, молодец.

  5. #4
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Убедительная просьба топикстартеру: когда оформляете тему, включайте хоть иногда темный стиль форума и убедитесь, что на нём всё видно.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  6. #5
    Аватар для Hidden
    Пользователь

    Статус
    Оффлайн
    Регистрация
    25.11.2013
    Сообщений
    73
    Репутация:
    43 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Убедительная просьба топикстартеру: когда оформляете тему, включайте хоть иногда темный стиль форума и убедитесь, что на нём всё видно.
    Внёс соответствующие поправки. Спасибо.
    Hidden (Kenny Hellwood)

    Темы:
    [Мануал] Система двигателя [for new.pwn] - click.
    [Мануал] Запись нескольких значений в один столбец через запятую [mysql r7] - click.
    [Мануал] Табличка на прицепы - click.
    [Info] Выражения и операторы PAWN - click.

  7. #6
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Может лучше таблицы внести под спойлеры? И каждый спойлер подписать. Дабы не листать и не выискивать нужную таблицу среди всех
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  8. Пользователь сказал cпасибо:
    Just_Fenix (26.05.2014)
  9. #7
    Аватар для Maxim_Black
    Пользователь

    Статус
    Оффлайн
    Регистрация
    30.10.2014
    Сообщений
    2
    Репутация:
    1 ±
    Отличный урок, молодец. Спасибо.

    break обрывает действие цикла. Цикл будет прибавлять к i единицу то того момента, когда i станет равной 5. Когда это произойдёт (if(i == 5)), цикл остановится (break;).

  10. Пользователь сказал cпасибо:
    Hidden (14.12.2014)
 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •