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

    Статус
    Оффлайн
    Регистрация
    05.10.2019
    Адрес
    Планета Земля
    Сообщений
    318
    Репутация:
    7 ±

    Мод .pwn не видит функцию, объявленную в инклуде.

    Инклуд:

    1. /*
    2.   PickupAdvanced by Steve_Stage
    3.   Made in 2020
    4.   VK: vk.com/steve_stage
    5. */
    6.  
    7. #if !defined MAX_PLAYERS
    8. #error [PICKUP ADVANCED] <a_samp> must include before <pickup_advanced>!
    9. #if !defined _streamer_included
    10. #define __pu_adv_no_streamer
    11. #endif
    12. #if !defined MAX_DYNAMIC_PICKUPS
    13. #define MAX_DYNAMIC_PICKUPS 150
    14. #endif
    15.  
    16. enum __pu_adv_enum
    17. {
    18. Float:__pu_adv_x, Float:__pu_adv_y, Float:__pu_adv_z, __pu_adv_timer
    19. }
    20. new __pu_adv_arr[MAX_DYNAMIC_PICKUPS][__pu_adv_enum];
    21. static bool:__pu_adv_check[MAX_PLAYERS char];
    22.  
    23. #if !defined __pu_adv_no_streamer
    24. #define CreateDynamicPickup(%0,%1,%2,%3,%4,%5,%6,%7,%8,%9,%10) __pu_adv_CreateDynamicPickup(%0,%1,%2,%3,%4,%5,%6,%7,%8,%9,%10)
    25. stock __pu_adv_CreateDynamicPickup(__pu_adv_cdp_modelid,__pu_adv_cdp_type,Float:__pu_adv_cdp_x,Float:__pu_adv_cdp_y,Float:__pu_adv_cdp_z,__pu_adv_cdp_worldid,__pu_adv_cdp_interiorid,__pu_adv_cdp_playerid,Float:__pu_adv_cdp_streamdistance,__pu_adv_cdp_areaid,__pu_adv_cdp_priority)
    26. {
    27. static i = CreateDynamicPickup(__pu_adv_cdp_modelid,__pu_adv_cdp_type,Float:__pu_adv_cdp_x,Float:__pu_adv_cdp_y,Float:__pu_adv_cdp_z,__pu_adv_cdp_worldid,__pu_adv_cdp_interiorid,__pu_adv_cdp_playerid,Float:__pu_adv_cdp_streamdistance,__pu_adv_cdp_areaid,__pu_adv_cdp_priority);
    28. __pu_adv_arr[i][__pu_adv_x] = __pu_adv_cdp_x;
    29. __pu_adv_arr[i][__pu_adv_y] = __pu_adv_cdp_y;
    30. __pu_adv_arr[i][__pu_adv_z] = __pu_adv_cdp_z;
    31. return i;
    32. }
    33. public OnPlayerPickUpDynamicPickup(__pu_adv_oppudp_playerid,__pu_adv_oppudp_pickupid)
    34. {
    35. if(IsPlayerInRangeOfPoint(__pu_adv_oppudp_playerid,2.0,__pu_adv_arr[__pu_adv_oppudp_pickupid][__pu_adv_x],__pu_adv_arr[__pu_adv_oppudp_pickupid][__pu_adv_y],__pu_adv_arr[__pu_adv_oppudp_pickupid][__pu_adv_z]) && __pu_adv_check{__pu_adv_oppudp_playerid} == true) return false;
    36. if(__pu_adv_check{__pu_adv_oppudp_playerid} == false) __pu_adv_check{__pu_adv_oppudp_playerid} = true;
    37. __pu_adv_arr[__pu_adv_oppudp_pickupid][__pu_adv_timer] = SetTimerEx("@__pu_adv_update",300,false,"dd",__pu_adv_oppudp_playerid,__pu_adv_oppudp_pickupid);
    38. return true;
    39. }
    40. #else
    41. #define CreatePickup(%0,%1,%2,%3,%4,%5) __pu_adv_CreatePickup(%0,%1,%2,%3,%4,%5)
    42. stock __pu_adv_CreatePickup(__pu_adv_cp_model,__pu_adv_cp_type,Float:__pu_adv_cp_x,Float:__pu_adv_cp_y,Float:__pu_adv_cp_z,__pu_adv_cp_virtualworld)
    43. {
    44. static i = CreatePickup(__pu_adv_cp_model,__pu_adv_cp_type,Float:__pu_adv_cp_x,Float:__pu_adv_cp_y,Float:__pu_adv_cp_z,__pu_adv_cp_virtualworld);
    45. __pu_adv_arr[i][__pu_adv_x] = __pu_adv_cp_x;
    46. __pu_adv_arr[i][__pu_adv_y] = __pu_adv_cp_y;
    47. __pu_adv_arr[i][__pu_adv_z] = __pu_adv_cp_z;
    48. return i;
    49. }
    50. public OnPlayerPickUpPickup(__pu_adv_oppup_playerid,__pu_adv_oppup_pickupid)
    51. {
    52. if(IsPlayerInRangeOfPoint(__pu_adv_oppup_playerid, 2.0, __pu_adv_arr[__pu_adv_oppup_pickupid][__pu_adv_x],__pu_adv_arr[__pu_adv_oppup_pickupid][__pu_adv_y],__pu_adv_arr[__pu_adv_oppudp_pickupid][__pu_adv_z]) && __pu_adv_check{__pu_adv_oppup_playerid} == true) return false;
    53. if(__pu_adv_check{__pu_adv_oppup_playerid} == false) __pu_adv_check{__pu_adv_oppup_playerid} = true
    54. __pu_adv_arr[__pu_adv_oppup_pickupid][__pu_adv_timer] = SetTimerEx("@__pu_adv_update",300,false,"dd",__pu_adv_oppup_playerid,__pu_adv_oppup_pickupid);
    55. return true;
    56. }
    57. #endif
    58. stock GetPickupPos(__pu_adv_gpp_pickupid,&Float:__pu_adv_gpp_x,&Float:__pu_adv_gpp_y,&Float:__pu_adv_gpp_z)
    59. {
    60. __pu_adv_gpp_x = __pu_adv_arr[__pu_adv_gpp_pickupid][__pu_adv_x];
    61. __pu_adv_gpp_y = __pu_adv_arr[__pu_adv_gpp_pickupid][__pu_adv_y];
    62. __pu_adv_gpp_z = __pu_adv_arr[__pu_adv_gpp_pickupid][__pu_adv_z];
    63. return true;
    64. }
    65. @__pu_adv_update(__pu_adv_update_playerid,__pu_adv_update_pickupid);
    66. @__pu_adv_update(__pu_adv_update_playerid,__pu_adv_update_pickupid)
    67. {
    68. if(!IsPlayerInRangeOfPoint(__pu_adv_update_playerid,2.0,__pu_adv_arr[__pu_adv_update_pickupid][__pu_adv_x],__pu_adv_arr[__pu_adv_update_pickupid][__pu_adv_y],__pu_adv_arr[__pu_adv_update_pickupid][__pu_adv_z]))
    69. {
    70. __pu_adv_check{__pu_adv_update_playerid} = false;
    71. KillTimer(__pu_adv_arr[__pu_adv_update_pickupid][__pu_adv_timer]);
    72. return false;
    73. }
    74. __pu_adv_arr[__pu_adv_update_pickupid][__pu_adv_timer] = SetTimerEx("@__pu_adv_update",300,false,"dd",__pu_adv_update_playerid,__pu_adv_update_pickupid);
    75. return true;
    76. }


    Мод не видит сток GetPickupPos:

    1. error 017: undefined symbol "GetPickupPos"


    Как это исправить?
    Последний раз редактировалось SteveStage; 04.05.2020 в 21:00.

  2. #2
    Аватар для tnc
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.09.2019
    Сообщений
    121
    Репутация:
    26 ±
    Вы не закрыли if. Попробуйте так:

    1. /*
    2.   PickupAdvanced by Steve_Stage
    3.   Made in 2020
    4.   VK: vk.com/steve_stage
    5.   */
    6.  
    7. #if !defined MAX_PLAYERS
    8. #error [PICKUP ADVANCED] <a_samp> must include before <pickup_advanced>!
    9. #if !defined _streamer_included
    10. #define __pu_adv_no_streamer
    11. #endif
    12. #if !defined MAX_DYNAMIC_PICKUPS
    13. #define MAX_DYNAMIC_PICKUPS 150
    14. #endif
    15.  
    16. enum __pu_adv_enum
    17. {
    18. Float:__pu_adv_x, Float:__pu_adv_y, Float:__pu_adv_z, __pu_adv_timer
    19. }
    20. new __pu_adv_arr[MAX_DYNAMIC_PICKUPS][__pu_adv_enum];
    21. static bool:__pu_adv_check[MAX_PLAYERS char];
    22.  
    23. #if !defined __pu_adv_no_streamer
    24. #define CreateDynamicPickup(%0,%1,%2,%3,%4,%5,%6,%7,%8,%9,%10) __pu_adv_CreateDynamicPickup(%0,%1,%2,%3,%4,%5,%6,%7,%8,%9,%10)
    25. stock __pu_adv_CreateDynamicPickup(__pu_adv_cdp_modelid,__pu_adv_cdp_type,Float:__pu_adv_cdp_x,Float:__pu_adv_cdp_y,Float:__pu_adv_cdp_z,__pu_adv_cdp_worldid,__pu_adv_cdp_interiorid,__pu_adv_cdp_playerid,Float:__pu_adv_cdp_streamdistance,__pu_adv_cdp_areaid,__pu_adv_cdp_priority)
    26. {
    27. static i = CreateDynamicPickup(__pu_adv_cdp_modelid,__pu_adv_cdp_type,Float:__pu_adv_cdp_x,Float:__pu_adv_cdp_y,Float:__pu_adv_cdp_z,__pu_adv_cdp_worldid,__pu_adv_cdp_interiorid,__pu_adv_cdp_playerid,Float:__pu_adv_cdp_streamdistance,__pu_adv_cdp_areaid,__pu_adv_cdp_priority);
    28. __pu_adv_arr[i][__pu_adv_x] = __pu_adv_cdp_x;
    29. __pu_adv_arr[i][__pu_adv_y] = __pu_adv_cdp_y;
    30. __pu_adv_arr[i][__pu_adv_z] = __pu_adv_cdp_z;
    31. return i;
    32. }
    33. public OnPlayerPickUpDynamicPickup(__pu_adv_oppudp_playerid,__pu_adv_oppudp_pickupid)
    34. {
    35. if(IsPlayerInRangeOfPoint(__pu_adv_oppudp_playerid,2.0,__pu_adv_arr[__pu_adv_oppudp_pickupid][__pu_adv_x],__pu_adv_arr[__pu_adv_oppudp_pickupid][__pu_adv_y],__pu_adv_arr[__pu_adv_oppudp_pickupid][__pu_adv_z]) && __pu_adv_check{__pu_adv_oppudp_playerid} == true) return false;
    36. if(__pu_adv_check{__pu_adv_oppudp_playerid} == false) __pu_adv_check{__pu_adv_oppudp_playerid} = true;
    37. __pu_adv_arr[__pu_adv_oppudp_pickupid][__pu_adv_timer] = SetTimerEx("@__pu_adv_update",300,false,"dd",__pu_adv_oppudp_playerid,__pu_adv_oppudp_pickupid);
    38. return true;
    39. }
    40. #else
    41. #define CreatePickup(%0,%1,%2,%3,%4,%5) __pu_adv_CreatePickup(%0,%1,%2,%3,%4,%5)
    42. stock __pu_adv_CreatePickup(__pu_adv_cp_model,__pu_adv_cp_type,Float:__pu_adv_cp_x,Float:__pu_adv_cp_y,Float:__pu_adv_cp_z,__pu_adv_cp_virtualworld)
    43. {
    44. static i = CreatePickup(__pu_adv_cp_model,__pu_adv_cp_type,Float:__pu_adv_cp_x,Float:__pu_adv_cp_y,Float:__pu_adv_cp_z,__pu_adv_cp_virtualworld);
    45. __pu_adv_arr[i][__pu_adv_x] = __pu_adv_cp_x;
    46. __pu_adv_arr[i][__pu_adv_y] = __pu_adv_cp_y;
    47. __pu_adv_arr[i][__pu_adv_z] = __pu_adv_cp_z;
    48. return i;
    49. }
    50. public OnPlayerPickUpPickup(__pu_adv_oppup_playerid,__pu_adv_oppup_pickupid)
    51. {
    52. if(IsPlayerInRangeOfPoint(__pu_adv_oppup_playerid, 2.0, __pu_adv_arr[__pu_adv_oppup_pickupid][__pu_adv_x],__pu_adv_arr[__pu_adv_oppup_pickupid][__pu_adv_y],__pu_adv_arr[__pu_adv_oppudp_pickupid][__pu_adv_z]) && __pu_adv_check{__pu_adv_oppup_playerid} == true) return false;
    53. if(__pu_adv_check{__pu_adv_oppup_playerid} == false) __pu_adv_check{__pu_adv_oppup_playerid} = true
    54. __pu_adv_arr[__pu_adv_oppup_pickupid][__pu_adv_timer] = SetTimerEx("@__pu_adv_update",300,false,"dd",__pu_adv_oppup_playerid,__pu_adv_oppup_pickupid);
    55. return true;
    56. }
    57. #endif
    58. #endif
    59. stock GetPickupPos(__pu_adv_gpp_pickupid,&Float:__pu_adv_gpp_x,&Float:__pu_adv_gpp_y,&Float:__pu_adv_gpp_z)
    60. {
    61. __pu_adv_gpp_x = __pu_adv_arr[__pu_adv_gpp_pickupid][__pu_adv_x];
    62. __pu_adv_gpp_y = __pu_adv_arr[__pu_adv_gpp_pickupid][__pu_adv_y];
    63. __pu_adv_gpp_z = __pu_adv_arr[__pu_adv_gpp_pickupid][__pu_adv_z];
    64. return true;
    65. }
    66. @__pu_adv_update(__pu_adv_update_playerid,__pu_adv_update_pickupid);
    67. @__pu_adv_update(__pu_adv_update_playerid,__pu_adv_update_pickupid)
    68. {
    69. if(!IsPlayerInRangeOfPoint(__pu_adv_update_playerid,2.0,__pu_adv_arr[__pu_adv_update_pickupid][__pu_adv_x],__pu_adv_arr[__pu_adv_update_pickupid][__pu_adv_y],__pu_adv_arr[__pu_adv_update_pickupid][__pu_adv_z]))
    70. {
    71. __pu_adv_check{__pu_adv_update_playerid} = false;
    72. KillTimer(__pu_adv_arr[__pu_adv_update_pickupid][__pu_adv_timer]);
    73. return false;
    74. }
    75. __pu_adv_arr[__pu_adv_update_pickupid][__pu_adv_timer] = SetTimerEx("@__pu_adv_update",300,false,"dd",__pu_adv_update_playerid,__pu_adv_update_pickupid);
    76. return true;
    77. }
    Последний раз редактировалось tnc; 04.05.2020 в 22:28.

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2590 ±
    Так там же явно первый #if не закрыт (#if !defined MAX_PLAYERS).
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

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

    Статус
    Оффлайн
    Регистрация
    01.09.2019
    Сообщений
    121
    Репутация:
    26 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Так там же явно первый #if не закрыт (#if !defined MAX_PLAYERS).
    Да, причем об этом "нормальный" компилятор говорит.
    PHP код:
    \main.pwn(80) : error 001expected token"#endif"but found "-end of file-" 

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

    Статус
    Оффлайн
    Регистрация
    05.10.2019
    Адрес
    Планета Земля
    Сообщений
    318
    Репутация:
    7 ±
    Цитата Сообщение от tnc Посмотреть сообщение
    Да, причем об этом "нормальный" компилятор говорит.
    PHP код:
    \main.pwn(80) : error 001expected token"#endif"but found "-end of file-" 
    Я не использую pawno.exe, не заметил. Спасибо DC и tnc.

    И еще один вопрос - как перехватить калбэк OnPlayerPickUpDynamicPickup, чтобы его можно было потом использовать дальше в моде?

    Метод, который указан в инклуде не действует:
    1. error 021: symbol already defined: "OnPlayerPickUpDynamicPickup"
    Последний раз редактировалось SteveStage; 04.05.2020 в 23:01.

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

    Статус
    Оффлайн
    Регистрация
    04.01.2015
    Адрес
    Гомель, Беларусь
    Сообщений
    548
    Репутация:
    158 ±
    Цитата Сообщение от SteveStage Посмотреть сообщение
    Я не использую pawno.exe, не заметил.
    Редактор кода на это никак не влияет

    Цитата Сообщение от SteveStage Посмотреть сообщение
    И еще один вопрос - как перехватить калбэк OnPlayerPickUpDynamicPickup, чтобы его можно было потом использовать дальше в моде?
    Сокращать его название. Но учитывая, что у разных инклудов сокращения расходятся, самый универсальный на данный момент вариант такой:
    PHP код:
    public OnPlayerPickUpDynamicPickup(playeridpickupid)
    {
        
    #if defined my_OnPlayerPickUpDynamicPickup
            
    return my_OnPlayerPickUpDynamicPickup(playeridpickupid);
        
    #else
            
    return 1;
        
    #endif
    }

    #if defined _ALS_OnPlayerPickUpDynamicPicku\
        
    || defined _ALS_OnPlayerPickUpDynPickup\
        || 
    defined _ALS_OnPlayerPickUpDynamicPick\
        || 
    defined _ALS_OnPlayerPickUpDynamicPUp
        
    #undef OnPlayerPickUpDynamicPickup
    #else
        #define _ALS_OnPlayerPickUpDynamicPicku
        #define _ALS_OnPlayerPickUpDynPickup
        #define _ALS_OnPlayerPickUpDynamicPick
        #define _ALS_OnPlayerPickUpDynamicPUp
    #endif
    #define OnPlayerPickUpDynamicPickup my_OnPlayerPickUpDynamicPickup
    #if defined my_OnPlayerPickUpDynamicPickup
        
    forward my_OnPlayerPickUpDynamicPickup(playeridpickupid);
    #endif 
    Последний раз редактировалось Nexius_Tailer; 05.05.2020 в 03:21.
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker

 

 

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

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

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

Ваши права

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