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

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

    Устанавливаем номера[DC_CMD]

    PHP код:
    CMD:numberplate(playeridparams[])
    {
        if(
    GetPlayerState(playerid) != PLAYER_STATE_DRIVER//Проверка, в машине ли вы?
            
    return SendClientMessage(playerid,-1,"Сядьте в машину!");
        if(
    isnull(params))
            return 
    SendClientMessage(playerid,-1"/номера [Что будет на номерах]");
        if(!(
    strlen(params) < 19)) //Проверка на количество символов
            
    return SendClientMessage(playerid0xFF0000AA"Количество символов должно быть от 3 до 18!");
        new 
    vehid GetPlayerVehicleID(playerid);
        new 
    Float:xFloat:yFloat:zFloat:a;
        
    GetVehiclePos(vehidxyz); //Получаем координаты машины
        
    GetVehicleZAngle(vehida); //Получаем угол поворота машины
        
    SetVehicleNumberPlate(vehidparams); //Ставим номера на машину
        
    SetVehicleToRespawn(vehid); //Зареспавним машину
        
    SetVehiclePos(vehidxyz); //Установим координаты машине
        
    SetVehicleZAngle(vehida); //Установим угол поворота
        
    PutPlayerInVehicle(playeridvehid0); //Запихнём вас в машину :3
        
    static const fmt_str[] = "Вы поставили новый номер: '%s'";
        const 
    fmt_size sizeof(fmt_str)-2+18;
        new 
    string[fmt_size];
        
    format(stringsizeof(string), fmt_strparams);
        return 
    SendClientMessage(playerid,-1string); //Выводим сообщение
    }
    ALTX:numberplate("/номера"); 
     Что для этого нужно?

    1. Прямые руки
    2. DC_CMD

    Автор: Salvador (Salvacore)


     Вариант от "Londlem"

    PHP код:
    CMD:numberplate(playeridparams[])
    {
        if(
    GetPlayerState(playerid) != PLAYER_STATE_DRIVER)
            return 
    SendClientMessage(playerid, -1"Вы должны быть в транспорте.");
        if(
    isnull(params))
            return 
    SendClientMessage(playerid, -1"Используйте: /номера [номер]");
        if(!(
    <= strlen(params) <= 8))
            return 
    SendClientMessage(playerid0xFF0000AA"Количество символов должно быть от 3 до 8.");

        new
            
    vehicleid GetPlayerVehicleID(playerid),
            
    Floatveh_pos_x,
            
    Floatveh_pos_y,
            
    Floatveh_pos_z,
            
    Floatveh_pos_a;

        
    GetVehiclePos(vehicleidveh_pos_xveh_pos_yveh_pos_z);
        
    GetVehicleZAngle(vehicleidveh_pos_a);

        
    SetVehicleNumberPlate(vehicleidparams);
        
    SetVehicleToRespawn(vehicleid);
        
    SetVehiclePos(vehicleidveh_pos_xveh_pos_yveh_pos_z);
        
    SetVehicleZAngle(vehicleidveh_pos_a);
        
        
    PutPlayerInVehicle(playeridvehicleid0);

        new
            
    str[35];

        
    str "Вы поставили новый номер: "strcat(strparams);
        return 
    SendClientMessage(playerid, -1str);
    }
    ALTX:nomer("/номера"); 
    Последний раз редактировалось L0ndl3m; 27.10.2014 в 22:14.

  2. 8 пользователя(ей) сказали cпасибо:
    #ball (18.06.2014) krasava299 (13.10.2014) L0ndl3m (04.10.2014) Michele_Orlando (23.05.2016) Nurick (04.10.2014) Unreal (03.10.2014) Иван Бубнов (02.04.2016) КотВаська (11.04.2014)
  3. #2
    Аватар для Unreal
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.09.2014
    Сообщений
    133
    Репутация:
    4 ±
    я использую так

    PHP код:
    CMD:nomer(playeridparams[])
    {
        if(
    GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid,-1,"Сядьте в машину!");
        if(
    sscanf(params,"s[24]",params[0])) return SendClientMessage(playerid,-1"/номера [Что будет на номерах]");
        if(
    params[0] < || params[0] > 18) return SendClientMessage(playerid0xFF0000AA"Количество символов должно быть от 3 до 18!");
        
    SetVehicleNumberPlate(GetPlayerVehicleID(playerid), params[0]); //Ставим номера на машину
        
    new string[26+18+1-2];
        
    format(stringsizeof(string),"Вы поставили новый номер: %s"params[0]);
        return 
    SendClientMessage(playerid,-1string); //Выводим сообщение
    }
    ALTX:nomer("/номера"); 
    Но думаю твой лучше.

  4. Пользователь сказал cпасибо:
    krasava299 (13.10.2014)
  5. #3
    Аватар для L0ndl3m
    Пользователь

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

    PHP код:
    CMD:numberplate(playeridparams[])
    {
        if(
    GetPlayerState(playerid) != PLAYER_STATE_DRIVER)
            return 
    SendClientMessage(playerid, -1"Вы должны быть в транспорте.");
        if(
    isnull(params))
            return 
    SendClientMessage(playerid, -1"Используйте: /номера [номер]");
        if(!(
    <= strlen(params) <= 8))
            return 
    SendClientMessage(playerid0xFF0000AA"Количество символов должно быть от 3 до 8.");

        new
            
    vehicleid GetPlayerVehicleID(playerid),
            
    Floatveh_pos_x,
            
    Floatveh_pos_y,
            
    Floatveh_pos_z,
            
    Floatveh_pos_a;

        
    GetVehiclePos(vehicleidveh_pos_xveh_pos_yveh_pos_z);
        
    GetVehicleZAngle(vehicleidveh_pos_a);

        
    SetVehicleNumberPlate(vehicleidparams);
        
    SetVehicleToRespawn(vehicleid);
        
    SetVehiclePos(vehicleidveh_pos_xveh_pos_yveh_pos_z);
        
    SetVehicleZAngle(vehicleidveh_pos_a);
        
        
    PutPlayerInVehicle(playeridvehicleid0);

        new
            
    str[35];

        
    str "Вы поставили новый номер: "strcat(strparams);
        return 
    SendClientMessage(playerid, -1str);
    }
    ALTX:nomer("/номера"); 
    Что изменено?

    1. Вместо sscanf использовал макрос isnull, который можно использовать если во входной строке только один строковой параметр;
    2. Вместо максимальных 18 символов укоротил до 8, не думаю, что есть такой вид транспорта, у которого можно поставить более 8 символов;
    3. Изменил размер массива, до минимума, лишние ячейки будут засорять память, так как никогда не будут использоваться;
    4. Вместо стандартной функции format приравнял массив к строке, далее с помощью функции strcat "прицепил" текст, который будет введён в единственном параметре команды. Этот способ работает быстрее чем использование функции format
    Последний раз редактировалось L0ndl3m; 27.10.2014 в 21:02.

  6. 3 пользователя(ей) сказали cпасибо:
    Brendan (03.01.2015) krasava299 (13.10.2014) Unreal (04.10.2014)
  7. #4
    Аватар для L0ndl3m
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    Поправил предложенную команду в своём посте выше ( раньше работала некорректно ). Обновил первый пост.
    Последний раз редактировалось L0ndl3m; 27.10.2014 в 21:00.

  8. Пользователь сказал cпасибо:
    [ForD] (27.10.2014)
 

 

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

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

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

Ваши права

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