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

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

    Мусорные баки для бомжей

    Доброго времени мои дорогие друзья!
    Сделал систему мусорных баков для себя, и решил выложить её сюда может кому и пригодится.
    Можно использовать на респах для пропитание бомжей.





    Где нибудь в начале мода добавим константу и enum.


    PHP код:
    enum e_MUSOR_INFO
    {
        
    m_text[33],
        
    m_id,
        
    Floatm_x,
        
    Floatm_y,
        
    Floatm_z,
        
    Floatm_a
    }

    static const 
    m_info[][e_MUSOR_INFO] = {
        {
    "Мусорный бак #1\nНажмите [ ALT ]",      1345,         1162.67163, -1764.0513913.36153,          -90.00002}, // Ls Автовогзал
        
    {"Мусорный бак #2\nНажмите [ ALT ]",      1345,         1445.02893, -1743.5316213.25893,          0.00000}, // мерия LS
        
    {"Мусорный бак #3\nНажмите [ ALT ]",      1345,         1766.54126, -1906.4193113.26053,          0.00000}, // жд вокзал LS
        
    {"Мусорный бак #5\nНажмите [ ALT ]",      1345,         -2017.93311, -89.9794835.09048,           89.99998// автошкола SF
    }; 
    Подробнее
      Открыть/закрыть
    PHP код:
    static const m_info[][e_MUSOR_INFO] = {
        {
    /*3d текст над баком*//*ид бака*//*координата X*//*координата Y*/,  /*координата Z*/,  /*координата A*/},
        
    //Для того чтобы добавить новый бак, просто добавьте сюда новую строчку, и заполните необходимыми данными!
    }; 




    Теперь в public OnGameModeInit() добавим цикл, который будет загружать наши баки.


    PHP код:
    for(new msizeof(m_info); m++)
    {
        
    CreateObject(m_info[m][m_id], m_info[m][m_x], m_info[m][m_y], m_info[m][m_z], 0.000000.00000m_info[m][m_a]); // создаём баки
        
    Create3DTextLabel(m_info[m][m_text], 0xFFFF00AAm_info[m][m_x], m_info[m][m_y], m_info[m][m_z]+15.00); // создаём текст над баками

    В public OnPlayerKeyStateChange

    PHP код:
    if(newkeys KEY_WALK)
    {
        for(new 
    msizeof(m_info); m++)
        {
            if(!
    IsPlayerInRangeOfPoint(playerid2.0m_info[m][m_x], m_info[m][m_y], m_info[m][m_z])) continue;

            if(
    GetPVarInt(playerid"food") != 0)
                return 
    SendClientMessage(playerid, -1"У вас уже есть еда в руках");

            static const 
    fmt_str[] = "* %s копается в мусорном баке"// выводим текст на экран
            
    new str[sizeof fmt_str MAX_PLAYER_NAME],
                
    playername[MAX_PLAYER_NAME];


            
    GetPlayerName(playeridplayernamesizeof(playername)); // узнаём ник игрока

            
    SetTimer("RandomFoods"5000false); // запускаем таймер на 4 секунды
            
    ApplyAnimation(playerid"GANGS""smkcig_prtl" 4.1000000); // включаем анимацию для игрока
            
    SetPlayerFacingAngle(playeridm_info[m][m_a]+180); // поворачеваем игрока к баку если повёрнут жопой :D

            
    format(strsizeof(str), fmt_strplayername); // форматируем текст
            
    ProxDetector(playerid20.00xC2A2DAAAstr);
        }
    }
    if(
    GetPVarInt(playerid"food") == 1)
    {
        if(
    newkeys KEY_FIRE)
        {
            
    //ваша переменная хп, или сытости
            
    SetPlayerChatBubble(playerid"Кушает...", -1152000); // выводим сообщения над игроком
            
    ApplyAnimation(playerid"FOOD""EAT_Burger"4.0000001); // включаем анимацию для игрока
            
    if(IsPlayerAttachedObjectSlotUsed(playerid1)) RemovePlayerAttachedObject(playerid1); // удаляем объект с игрока
            
    DeletePVar(playerid,  "food"); // удоляем PVar
        
    }

    Где нибудь в конце мода добавим паблик.
    PHP код:
    forward RandomFood(playerid);
    public 
    RandomFood(playerid)
    {
        static const
            
    fmt_str[] = "* %s находит в мусорном баке %s"// выводим текст в чат
            
    random_messsage_food[][] = // выводим рандомный текст в чат
            
    {
                
    "Гнилую капусту",
                
    "Тухлые помидоры",
                
    "Пиццу с муравьями",
                
    "Кусочек хлеба",
                
    "Бургер",
                
    "Пюре"
            
    };
        new 
    str[sizeof fmt_str MAX_PLAYER_NAME],
            
    playername[MAX_PLAYER_NAME],
            
    rand random(sizeof(random_messsage_food));
        
        
    GetPlayerName(playeridplayernamesizeof(playername)); // узнаём ник игрока

        
    format(strsizeof(str), fmt_strplayernamerandom_messsage_food[rand]); // форматируем текст
        
    ProxDetector(playerid20.00xC2A2DAAAstr);
        
        
    ClearAnimations(playerid); // удаляем анимацию.
        
    SetPVarInt(playerid"food"1); // записываем в PVar значения 1
        
    SetPlayerAttachedObject(playerid127036,  0.0339990.0480000.002000,  0.000000
               
    25.099998, -105.700027,  0.6990000.8099990.794000); // атачим объект к игроку
        
    return true;

    ProхDetector (если не имеется у вас)

      Открыть/закрыть
    PHP код:
    ProxDetector(playeridFloat:max_rangecolorstring[], Float:max_ratio 1.6)
    {
        new
            
    Float:pos_x,
            
    Float:pos_y,
            
    Float:pos_z,
            
    Float:range,
            
    Float:range_ratio,
            
    Float:range_with_ratio,
            
    clr_rclr_gclr_b,
            
    Float:color_rFloat:color_gFloat:color_b;

        if (!
    GetPlayerPos(playeridpos_xpos_ypos_z)) {
            return 
    0;
        }

        
    color_r float(color >> 24 0xFF);
        
    color_g float(color >> 16 0xFF);
        
    color_b float(color >> 0xFF);
        
    range_with_ratio max_range max_ratio;

    #if defined foreach
        
    foreach (new Player) {
    #else
        
    for (new GetPlayerPoolSize(); != -1i--) {
    #endif
            
    if (!IsPlayerStreamedIn(playeridi))
            {
                continue;
            }

            
    range GetPlayerDistanceFromPoint(ipos_xpos_ypos_z);
            if (
    range max_range)
            {
                continue;
            }
            
    range_ratio = (range_with_ratio range) / range_with_ratio;
            
    clr_r floatround(range_ratio color_r);
            
    clr_g floatround(range_ratio color_g);
            
    clr_b floatround(range_ratio color_b);

            
    SendClientMessage(i, (color 0xFF) | (clr_b << 8) | (clr_g << 16) | (clr_r << 24), string);
        }

        
    SendClientMessage(playeridcolorstring);
        return 
    1;








    Вот и всё, может пригодится кому)))
    Автор: Jack_Shepard

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

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    аха) ради прикола добавить ему дилдак к руке который он хавает))
    Мусорка же
    [Anticheat]___Invisible Fly Hack
    [Anticheat]____Weapon/Ammo Hack
    [Function]______ResetPlayerWeaponSlot
    [Function]_______FIX_SetPlayerAmmo
    [ServerMod]______TDM | Zombie Apokalypse

  3. #3
    Аватар для Jack_Shepard
    Пользователь

    Статус
    Оффлайн
    Регистрация
    07.02.2017
    Сообщений
    1
    Репутация:
    0 ±
    Цитата Сообщение от vovandolg Посмотреть сообщение
    аха) ради прикола добавить ему дилдак к руке который он хавает))
    Мусорка же
    Добавил ему гамбургер)) больше не чего не нашёл))

 

 

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

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

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

Ваши права

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