Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.

Реклама


**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 200руб/мес, Текстовая 100руб/мес.
Показано с 1 по 7 из 7
  1. #1
    Аватар для Jeff_Monson
    Пользователь

    Статус
    Оффлайн
    Регистрация
    20.10.2013
    Сообщений
    40
    Репутация:
    1 ±

    Возвращение результаов функции в несколько переменных

    Всем добра! Можно-ли вернуть несколько значении при помощи return оператора?
    т.е для примера, я хочу узнать координаты игрока
    PHP код:
    stock player_getPos(playerid) {
        new 
    Float:xFloat:yFloat:z;//создаем переменные
        
    GetPlayerPos(playeridxyz);//узнаем координаты игрока и записываем в переменные координаты. (если память не изменяет)
        
    return xyz;//возвращаем координаты
    }

    public 
    OnPlayerCommandText(playeridcmdtext[]) {
        if (
    strcmp("/test"cmdtexttrue10) == 0) {
            new 
    xyplayer_getPos(playerid);
            
    printf("x = %f, y = %f, z = %f"xyz);//выводим данные
            
    return 1;
        }
        return 
    0;

    Возможно вопрос глуповатый, не кидайтесь помидорами =)

  2. #2
    Аватар для Londlem
    Модератор

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,362
    Репутация:
    771 ±
    В других ЯП, например в Lua – можно. В pawn же это можно сделать с помощью так называемых "костылей".

  3. #3
    Аватар для VVWVV
    Проверенный

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    607
    Репутация:
    289 ±
    Нет, возвращается только последнее значение, а именно значение переменной z.

    Можно сделать с помощью ссылок, например:
    PHP код:
    AnotherFunction(&a, &b)
    {
        
    b;
        
    5;

    Последний раз редактировалось VVWVV; 13.12.2015 в 22:49. Причина: --

  4. #4
    Аватар для Londlem
    Модератор

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,362
    Репутация:
    771 ±
    Как вариант, VVWVVV предложил вам использовать ссылки.

    Такие функции как:

    уже работают по данному способу.

  5. #5
    Аватар для VVWVV
    Проверенный

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    607
    Репутация:
    289 ±
    Цитата Сообщение от Londlem Посмотреть сообщение
    Как вариант, VVWVVV предложил вам использовать ссылки.

    Такие функции как GetPlayerPos, GetPlayerFacingAngle, GetPlayerHealth, etc... уже работает по данному способу.
    Забыл про ссылки, вспомнил, когда уже сохранял.

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

    Статус
    Оффлайн
    Регистрация
    20.10.2013
    Сообщений
    40
    Репутация:
    1 ±
    Цитата Сообщение от VVWVV Посмотреть сообщение
    Нет, возвращается только последнее значение, а именно значение переменной z.

    Можно сделать с помощью ссылок, например:
    PHP код:
    AnotherFunction(&a, &b)
    {
        
    b;
        
    5;

    Можно пример с моим примером?)

    - - - Добавлено - - -

    Цитата Сообщение от Londlem Посмотреть сообщение
    В других ЯП, например в Lua – можно. В pawn же это можно сделать с помощью так называемых "костылей".
    Согласен в Lua можно, Костыли везде костыли...

  7. #7
    Аватар для VVWVV
    Проверенный

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    607
    Репутация:
    289 ±
    Цитата Сообщение от Jeff_Monson Посмотреть сообщение
    Можно пример с моим примером?)

    - - - Добавлено - - -


    Согласен в Lua можно, Костыли везде костыли...
    PHP код:
    stock player_getPos(playerid, &Float:x, &Float:y, &Float:z) {
          
    GetPlayerPos(playeridxyz);//узнаем координаты игрока и записываем в переменные координаты. (если память не изменяет)  
          
    return 1;

    public 
    OnPlayerCommandText(playeridcmdtext[]) {
         if (
    strcmp("/test"cmdtexttrue10) == 0) {
             new 
    Float:xFloat:yFloat:z;
            
    player_getPos(playeridxyz);
             
    printf("x = %f, y = %f, z = %f"xyz);//выводим данные
             
    return 1;
         }
         return 
    0;
     } 

 

 

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

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

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

Ваши права

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