Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 79 из 133 ПерваяПервая ... 29 69 77 78 79 80 81 89 129 ... ПоследняяПоследняя
Показано с 781 по 790 из 1325
  1. #781
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    У всех функций для работы со строками есть параметр, отвечающий за размер строки. Укажи его вручную, а не прописывай sizeof, ибо sizeof не умеет определять размер многомерных массивов.
    Если уже прописывал, то покажи пример кода
    sizeof умеет определять размер многомерных массивов, но он не дружит с enum.

    DeimoS: Я именно это и хотел написать... :D Ну да ладно
    Последний раз редактировалось DeimoS; 10.03.2017 в 18:53.

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

    Статус
    Оффлайн
    Регистрация
    06.03.2017
    Сообщений
    82
    Репутация:
    0 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    У всех функций для работы со строками есть параметр, отвечающий за размер строки. Укажи его вручную, а не прописывай sizeof, ибо sizeof не умеет определять размер многомерных массивов.
    Если уже прописывал, то покажи пример кода
    Прописывал. Пытался даже просто передать передать значение в обычную переменную, выводит (в той же функции) бред.

    PHP код:
    new chars[3][MAX_PLAYERS]; //глобальная переменная 
    PHP код:
    enum CHAR_INFO {
        ...
        
    cName,
        ...
    };
    new 
    Char[MAX_PLAYERS][CHAR_INFO]; 
    PHP код:
    Char[playerid][cName] = chars[i][playerid
    - - - Добавлено - - -

    chars[i][playerid] передает верные значения, с ней все хорошо.

  3. #783
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Эмм, а ничего, что cName ты не как массив создаёшь? О_о

    PHP код:
    enum CHAR_INFO {
        ...
        
    cName[MAX_PLAYER_NAME],
        ...
    };
    new 
    Char[MAX_PLAYERS][CHAR_INFO]; 
    PHP код:
    format(Char[playerid][cName], MAX_PLAYER_NAMEchars[i][playerid]); 
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    06.03.2017
    Сообщений
    82
    Репутация:
    0 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Эмм, а ничего, что cName ты не как массив создаёшь? О_о

    PHP код:
    enum CHAR_INFO {
        ...
        
    cName[MAX_PLAYER_NAME],
        ...
    };
    new 
    Char[MAX_PLAYERS][CHAR_INFO]; 
    PHP код:
    format(Char[playerid][cName], MAX_PLAYER_NAMEchars[i][playerid]); 
    Лол, так вот оно как можно. Думал параметр вида "%s" обязателен. Спасибо.

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Outsider Посмотреть сообщение
    Лол, так вот оно как можно. Думал параметр вида "%s" обязателен. Спасибо.
    Можно и так
    PHP код:
    format(Char[playerid][cName], MAX_PLAYER_NAME"%s"chars[i][playerid]); 
    Разницы нет.
    Проблема не в этом была
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  6. Пользователь сказал cпасибо:
    Outsider (10.03.2017)
  7. #786
    Аватар для HAV
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.03.2017
    Адрес
    Россия
    Сообщений
    2
    Репутация:
    0 ±
    Всем доброго времени суток. Возникла проблема с макросом DCMD.
    Есть команда на strtok:
      Открыть/закрыть
    PHP код:
    if(!strcmp(cmd"/veh"true))
    {
        if (!
    IsPlayerAdmin(playerid)) return SendClientMessage(playeridCOLOR_RED"Ошибка: Недостаточно прав доступа.");
        if (
    GetPlayerState(playerid) == || GetPlayerState(playerid) == || GetPlayerState(playerid) == 9) return SendClientMessage(playeridCOLOR_RED"Ошибка: Вы должны быть заспавлены.");
        new 
    tmp[256];

        
    tmp strtok(cmdtextidx);
        if(!
    strlen(tmp)) return SendClientMessage(playeridCOLOR_YELLOW"Использование: /veh [id транспорта] [цвет 1] [цвет 2].");
        new 
    car strval(tmp);
        if(
    car 400 || car 611) { SendClientMessage(playeridCOLOR_RED"Ошибка: Неверный ID транспорта. Используйте значение от 400 до 611."); return 1; }

        
    tmp strtok(cmdtextidx);
        new 
    color1 strval(tmp);
        if(
    color1 || color1 255) { SendClientMessage(playeridCOLOR_RED"Ошибка: Неверный цвет транспорта. Используйте значение от 0 до 255."); return 1; }

        
    tmp strtok(cmdtextidx);
        new 
    color2 strval(tmp);
        if(
    color2 || color2 255) { SendClientMessage(playeridCOLOR_RED"Ошибка: Неверный цвет транспорта. Используйте значение от 0 до 255."); return 1; }

        if(!
    strlen(tmp)) { color1 random(255); color2 random(255); }

        new 
    Float:X,Float:Y,Float:Z;
        
    GetPlayerPos(playeridX,Y,Z);
        new 
    carid CreateVehicle(carX,Y+5,Z0.0color1color2, -1);
        
    gVehCount[gCreatedVeh] = carid;
        
    gCreatedVeh ++;
        
    LinkVehicleToInterior(caridGetPlayerInterior(playerid));
        new 
    message1[MAX_CHAT_MESSAGE];
        
    format(message1sizeof(message1), "Транспорт создан: ID %d Порядковый номер %d."carcarid);
        
    SendClientMessage(playeridCOLOR_YELLOWmessage1);
        new 
    message2[MAX_CHAT_MESSAGE];
        
    format(message2sizeof(message2), "Администратор %s создал транспорт: ID %d Порядковый номер %d."GetName(playerid), carcarid);
        
    SendClientMessageToAll(COLOR_REDmessage2);
        return 
    1;


    И есть та же самая команда, которую я пытаюсь адаптировать под DCMD:
      Открыть/закрыть
    PHP код:
    dcmd_veh(playeridparams[])
    {
        if (!
    IsPlayerAdmin(playerid)) return SendClientMessage(playeridCOLOR_RED"Ошибка: Недостаточно прав доступа.");
        if (
    GetPlayerState(playerid) == || GetPlayerState(playerid) == || GetPlayerState(playerid) == 9) return SendClientMessage(playeridCOLOR_RED"Ошибка: Вы должны быть заспавлены.");
        if (!
    strlen(params[0])) return SendClientMessage(playeridCOLOR_YELLOW"Использование: /veh [id транспорта] [цвет 1] [цвет 2].");
        new 
    vehmod strval(params[0]);
        new 
    color1 strval(params[1]);
        new 
    color2 strval(params[2]);
        if (
    vehmod 400 || vehmod 611) { SendClientMessage(playeridCOLOR_RED"Ошибка: Неверный ID транспорта. Используйте значение от 400 до 611."); return 1; }
        if ((
    color1 || color1 255) || (color2 || color2 255)) { SendClientMessage(playeridCOLOR_RED"Ошибка: Неверный цвет транспорта. Используйте значение от 0 до 255."); return 1; }
        if (!
    strlen(params[1]) || !strlen(params[2])) { color1 random(255); color2 random(255); }
        new 
    Float:XFloat:YFloat:Z;
        
    GetPlayerPos(playeridX,Y,Z);
        new 
    vehid CreateVehicle(vehmodXY+5Z0.0color1color2, -1);
        
    LinkVehicleToInterior(vehidGetPlayerInterior(playerid));
        
    PutPlayerInVehicle(playeridvehid0);
        
    gVehCount[gCreatedVeh] = vehid;
        
    gCreatedVeh ++;
        new 
    message1[MAX_CHAT_MESSAGE];
        
    format(message1sizeof(message1), "Транспорт создан: ID %d Порядковый номер %d. %d %d"vehmodvehidcolor1color2);
        
    SendClientMessage(playeridCOLOR_YELLOWmessage1);
        new 
    message2[MAX_CHAT_MESSAGE];
        
    format(message2sizeof(message2), "Администратор %s создал транспорт: ID %d Порядковый номер %d."GetName(playerid), vehmodvehid);
        
    SendClientMessageToAll(COLOR_REDmessage2);
        return 
    1;


    Все компилируется без ошибок и вроде даже работает... но вариант на DCMD почему-то присваивает color1 (params[1]) и color2 (params[2]) значения из vehmod (params[0]). Получается как-то так - создаю транспорт с моделью 411, получаю Infernus с цветами 11 и 1. Создаю с моделью 451, получаю Turismo с цветами 51 и 1. И так с любыми моделями и заданными цветами. Более того, не работают даже чужие примеры из мануалов. Подскажите, пожалуйста, в чем может быть проблема? Что я упустил?

  8. #787
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Параметры нужно обрабатывать через sscanf
    PHP код:
    dcmd_veh(playeridparams[]) 

        if (!
    IsPlayerAdmin(playerid)) return SendClientMessage(playeridCOLOR_RED"Ошибка: Недостаточно прав доступа."); 
        if (
    GetPlayerState(playerid) == || GetPlayerState(playerid) == || GetPlayerState(playerid) == 9) return SendClientMessage(playeridCOLOR_RED"Ошибка: Вы должны быть заспавлены."); 
        new 
    vehmod,
            
    color1,
            
    color2

        if(
    sscanf(params"iI(-1)I(-1)"vehmodcolor1color2)) return SendClientMessage(playeridCOLOR_YELLOW"Использование: /veh [id транспорта] [цвет 1] [цвет 2]."); 
        

        if (
    vehmod 400 || vehmod 611) { SendClientMessage(playeridCOLOR_RED"Ошибка: Неверный ID транспорта. Используйте значение от 400 до 611."); return 1; } 
        if (
    color1 == -|| color2 == -1) { color1 random(255); color2 random(255); } 
        if ((
    color1 || color1 255) || (color2 || color2 255)) { SendClientMessage(playeridCOLOR_RED"Ошибка: Неверный цвет транспорта. Используйте значение от 0 до 255."); return 1; } 
        new 
    Float:XFloat:YFloat:Z
        
    GetPlayerPos(playeridX,Y,Z); 
        new 
    vehid CreateVehicle(vehmodXY+5Z0.0color1color2, -1); 
        
    LinkVehicleToInterior(vehidGetPlayerInterior(playerid)); 
        
    PutPlayerInVehicle(playeridvehid0); 
        
    gVehCount[gCreatedVeh] = vehid
        
    gCreatedVeh ++; 
        new 
    message1[MAX_CHAT_MESSAGE]; 
        
    format(message1sizeof(message1), "Транспорт создан: ID %d Порядковый номер %d. %d %d"vehmodvehidcolor1color2); 
        
    SendClientMessage(playeridCOLOR_YELLOWmessage1); 
        new 
    message2[MAX_CHAT_MESSAGE]; 
        
    format(message2sizeof(message2), "Администратор %s создал транспорт: ID %d Порядковый номер %d."GetName(playerid), vehmodvehid); 
        
    SendClientMessageToAll(COLOR_REDmessage2); 
        return 
    1

    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  9. Пользователь сказал cпасибо:
    HAV (17.03.2017)
  10. #788
    Аватар для HAV
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.03.2017
    Адрес
    Россия
    Сообщений
    2
    Репутация:
    0 ±
    Без sscanf, как в этом гайде, не получится?

  11. #789
    Аватар для 123
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.02.2014
    Сообщений
    93
    Репутация:
    8 ±
    Цитата Сообщение от HAV Посмотреть сообщение
    Без sscanf, как в этом гайде, не получится?
    Нет. В примере всего один параметр, а тебе нужно разделить целых 3. Без sscanf можно, но добавится очень много кода))

  12. Пользователь сказал cпасибо:
    HAV (17.03.2017)
  13. #790
    Аватар для _lizard
    Пользователь

    Статус
    Оффлайн
    Регистрация
    11.02.2016
    Адрес
    Геленджик
    Сообщений
    193
    Репутация:
    26 ±
    Где-то на этом форуме видел, где рассказывалось о способе нумерации диалогов с помощью enum, можете дать ссылку, кто помнит? Гугл подвёл

 

 
Страница 79 из 133 ПерваяПервая ... 29 69 77 78 79 80 81 89 129 ... ПоследняяПоследняя

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

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

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

Ваши права

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