Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 3 из 5 ПерваяПервая 1 2 3 4 5 ПоследняяПоследняя
Показано с 21 по 30 из 43
  1. #21
    Аватар для pawnoholic
    Пользователь

    Статус
    Оффлайн
    Регистрация
    18.01.2018
    Сообщений
    128
    Репутация:
    15 ±
    Цитата Сообщение от VVWVV Посмотреть сообщение
    Вот как это объявлено тут.
    Я знаю, я видел это, но там другой вариант, более к классическому стилю.

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

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

  3. Пользователь сказал cпасибо:
    pawnoholic (17.06.2018)
  4. #23
    Аватар для pawnoholic
    Пользователь

    Статус
    Оффлайн
    Регистрация
    18.01.2018
    Сообщений
    128
    Репутация:
    15 ±
    Пришло время снова попробовать.

    Код:
    1. #define Player. OO_TYPE(PLAYER,Player)
    2.  
    3. enum E_PLAYER_Vehicle
    4. {
    5. Float:E_PLAYER_Vehicle_x,
    6. Float:E_PLAYER_Vehicle_y,
    7. Float:E_PLAYER_Vehicle_z,
    8. Float:E_PLAYER_Vehicle_a
    9. };
    10. new Player@Vehicle[MAX_PLAYERS][E_PLAYER_Vehicle];
    11.  
    12. main() {
    13. Player.Vehicle[0].x = 10.0;
    14. }

    Результат:
    1. (error) must be lvalue (non-constant)
    2. (error) invalid expression, assumed zero
    3. (warning) expression has no effect

    Я думаю проблема скорее в отсутствии макросов для @vb: и @va:

    Я их нашел, но не думаю что подходят к этому варианту, либо Y-Less забыл про них, либо они не нужны и я что то не так делаю.
    1. #define OO_TYPE(%6,%7)%0[%1] (_:@vb:@va:%6:%7@%0[%1]
    2. #define @va:%6:%7@%0[%1][@%2] %7%0[%1])[E_%6_%0_%2]
    3. #define @vb:@va:%6:%7@%0[%1][%2][@%3] %7%0[%1])[%2][E_%6_%0_%3]
    Последний раз редактировалось pawnoholic; 20.06.2018 в 00:53.

  5. #24
    Аватар для DeimoS
    Модератор?

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

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    18.01.2018
    Сообщений
    128
    Репутация:
    15 ±
    1. // by Y-Less
    2. #define OO_TYPE(%6,%7)%0[%1]%2. (_:@vb:@va:%6:%7@%0[%1]%2[E_%6_%0:@vw:@vx:@vy:@vz:@vs:$E_%6_%0_]
    3. #define @va:%6:%7@%0[%1][@%2] %7%0[%1])[E_%6_%0_%2]
    4. #define @vb:@va:%6:%7@%0[%1][%2][@%3] %7%0[%1])[%2][E_%6_%0_%3]
    5.  
    6. // First move the ] out as far as required.
    7. #define @vw:%9$%0]%1[ @vv:@vu:@vt:@vr:@vq$%0%1][
    8. #define @vx:%9$%0]%1; @vv:@vu:@vt:@vr:@vq$%0%1];
    9. #define @vy:%9$%0]%1) @vv:@vu:@vt:@vr:@vq$%0%1])
    10. #define @vz:%9$%0]%1, @vv:@vu:@vt:@vr:@vq$%0%1],
    11. #define @vs:%9$%0]%1: @vv:@vu:@vt:@vr:@vq$%0%1]:
    12.  
    13. // Second, move it in again to constrain the contents. We don't need to scan
    14. // for `[` again since it was the first one looked for above and so can't
    15. // possibly be within the square brackets. This is good, because scanning for
    16. // `[` from within `[]` is problematic.
    17.  
    18. #define @vv:%9$%0;%1] %9$%0];%1
    19. #define @vu:%9$%0)%1] %9$%0])%1
    20. #define @vt:%9$%0,%1] %9$%0],%1
    21. #define @vr:%9$%0:%1] %9$%0]:%1
    22.  
    23. #define @vq$
    24.  
    25. #define Player. OO_TYPE(PLAYER,Player)
    26.  
    27. enum E_PLAYER_Vehicle
    28. {
    29. Float:E_PLAYER_Vehicle_x,
    30. Float:E_PLAYER_Vehicle_y,
    31. Float:E_PLAYER_Vehicle_z,
    32. Float:E_PLAYER_Vehicle_a
    33. };
    34. new PlayerVehicle[MAX_PLAYERS][E_PLAYER_Vehicle];
    35.  
    36. public OnPlayerConnect(playerid)
    37. {
    38. Player.Vehicle[playerid].x = 0.0;
    39. Player.Vehicle[playerid].y = 0.0;
    40. Player.Vehicle[playerid].z = 0.0;
    41. Player.Vehicle[playerid].a = 0.0;
    42.  
    43. return 1;
    44. }

  7. #26
    Аватар для VVWVV
    ?

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±
    1) Массив должен быть назван так: Player@Vehicle.
    2) Данный парсер не рассчитан на какие-либо операции, поскольку нет таковых условий, поэтому знак равно, да и в общем-то любые знаки записываются в квадратные скобки.

    Вот результат работы препроцессора:
    1. enum E_PLAYER_Vehicle
    2. {
    3. Float:E_PLAYER_Vehicle_x,
    4. Float:E_PLAYER_Vehicle_y,
    5. Float:E_PLAYER_Vehicle_z,
    6. Float:E_PLAYER_Vehicle_a
    7. };
    8. new Player@Vehicle[MAX_PLAYERS][E_PLAYER_Vehicle];
    9.  
    10. public OnPlayerConnect(playerid)
    11. {
    12. (_:@vb:@va:PLAYER:Player@Vehicle[playerid][E_PLAYER_Vehicle:@vw:@vv:@vu:@vt:@vr:E_PLAYER_Vehicle_x = 0.0];
    13. (_:@vb:@va:PLAYER:Player@Vehicle[playerid][E_PLAYER_Vehicle:@vw:@vv:@vu:@vt:@vr:E_PLAYER_Vehicle_y = 0.0];
    14. (_:@vb:@va:PLAYER:Player@Vehicle[playerid][E_PLAYER_Vehicle:@vw:@vv:@vu:@vt:@vr:E_PLAYER_Vehicle_z = 0.0];
    15. (_:@vb:@va:PLAYER:Player@Vehicle[playerid][E_PLAYER_Vehicle:@vw:@vv:@vu:@vt:@vr:E_PLAYER_Vehicle_a = 0.0];
    16.  
    17. return 1;
    18. }

  8. Пользователь сказал cпасибо:
    pawnoholic (20.06.2018)
  9. #27
    Аватар для pawnoholic
    Пользователь

    Статус
    Оффлайн
    Регистрация
    18.01.2018
    Сообщений
    128
    Репутация:
    15 ±
    Уже очень много времени не могу понять по какому принципу пишутся препроцессорные парсеры, подскажите как можно реализовать вот такой вызов этого макроса:
    1. SendClientMessage(playerid, COLOR(RED,500), "Добро пожаловать!"); // Сейчас
    2. SendClientMessage(playerid, COLOR(RED, 500), "Добро пожаловать!"); // Не возможно поставить пробел между аргументами
    3. SendClientMessage(playerid, COLOR(RED), "Добро пожаловать!"); // Вызов функции без второго аргумента, который по умолчанию заменяется на COLOR@RED@500


    Код:
    1. #define COLOR@RED@100<%1,%2> (%1FFCDD2%2)
    2. #define COLOR@RED@200<%1,%2> (%1EF9A9A%2)
    3. #define COLOR@RED@300<%1,%2> (%1E57373%2)
    4. #define COLOR@RED@400<%1,%2> (%1EF5350%2)
    5. #define COLOR@RED@500<%1,%2> (%1F44336%2)
    6. #define COLOR@RED@600<%1,%2> (%1E53935%2)
    7. #define COLOR@RED@700<%1,%2> (%1D32F2F%2)
    8. #define COLOR@RED@800<%1,%2> (%1C62828%2)
    9. #define COLOR@RED@900<%1,%2> (%1B71C1C%2)
    10.  
    11. #define COLOR(%0,%1) (COLOR@%0@%1<0x,AA>)

  10. #28
    Аватар для VVWVV
    ?

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±
    Цитата Сообщение от pawnoholic Посмотреть сообщение
    Уже очень много времени не могу понять по какому принципу пишутся препроцессорные парсеры, подскажите как можно реализовать вот такой вызов этого макроса:
    1. SendClientMessage(playerid, COLOR(RED,500), "Добро пожаловать!"); // Сейчас
    2. SendClientMessage(playerid, COLOR(RED, 500), "Добро пожаловать!"); // Не возможно поставить пробел между аргументами
    3. SendClientMessage(playerid, COLOR(RED), "Добро пожаловать!"); // Вызов функции без второго аргумента, который по умолчанию заменяется на COLOR@RED@500


    Код:
    1. #define COLOR@RED@100<%1,%2> (%1FFCDD2%2)
    2. #define COLOR@RED@200<%1,%2> (%1EF9A9A%2)
    3. #define COLOR@RED@300<%1,%2> (%1E57373%2)
    4. #define COLOR@RED@400<%1,%2> (%1EF5350%2)
    5. #define COLOR@RED@500<%1,%2> (%1F44336%2)
    6. #define COLOR@RED@600<%1,%2> (%1E53935%2)
    7. #define COLOR@RED@700<%1,%2> (%1D32F2F%2)
    8. #define COLOR@RED@800<%1,%2> (%1C62828%2)
    9. #define COLOR@RED@900<%1,%2> (%1B71C1C%2)
    10.  
    11. #define COLOR(%0,%1) (COLOR@%0@%1<0x,AA>)
    Делаем две проверки на символ ','

    1. #define COLOR@RED@100<%1,%2> (%1FFCDD2%2)
    2. #define COLOR@RED@200<%1,%2> (%1EF9A9A%2)
    3. #define COLOR@RED@300<%1,%2> (%1E57373%2)
    4. #define COLOR@RED@400<%1,%2> (%1EF5350%2)
    5. #define COLOR@RED@500<%1,%2> (%1F44336%2)
    6. #define COLOR@RED@600<%1,%2> (%1E53935%2)
    7. #define COLOR@RED@700<%1,%2> (%1D32F2F%2)
    8. #define COLOR@RED@800<%1,%2> (%1C62828%2)
    9. #define COLOR@RED@900<%1,%2> (%1B71C1C%2)
    10.  
    11. #define COLOR(%1) (_:clr@aM:clr@aN:$%1)
    12. #define clr@aM:%8$%0,%1) clr@rS:COLOR@%0@%1<0x,AA>)
    13. #define clr@aN:%8$%0) clr@rS:COLOR@%0@100<0x,AA>) // 100 - default value.
    14. #define clr@rS:%1\32;%0) clr@rS:%1%0)
    15.  
    16. COLOR(RED, 800)

  11. Пользователь сказал cпасибо:
    pawnoholic (16.07.2018)
  12. #29
    Аватар для pawnoholic
    Пользователь

    Статус
    Оффлайн
    Регистрация
    18.01.2018
    Сообщений
    128
    Репутация:
    15 ±
    1. SendClientMessage(playerid, COLOR(RED), "Добро пожаловать!");

    undefined symbol "@COLOR@RED"
    invalid expression, assumed zero
    array must be indexed (variable "-unknown-")
    too many error messages on one line

  13. #30
    Аватар для VVWVV
    ?

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±

 

 
Страница 3 из 5 ПерваяПервая 1 2 3 4 5 ПоследняяПоследняя

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

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

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

Ваши права

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