Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 20

Тема: Прыжки с парашюта

  1. #1
    Проверенный Аватар для ProG
    Регистрация
    06.04.2010
    Адрес
    localhost
    Возраст
    28
    Сообщений
    1,349
    Репутация: 122

    Звание: скоро придёт к известности

    Прыжки с парашюта

    Сегодня сделал такую системку: Прыжки с парашюта!
    Начнём:
    Ко всем new:
    PHP код:
    new Text3D:parawut;
    new 
    samolet[2];
    new 
    parajut;
    new 
    Sozdan[MAX_PLAYERS]
    new 
    Zapusk[MAX_PLAYERS];
    new 
    Delete[MAX_PLAYERS]; 
    Создаём команду в public OnPlayerCommandText(playerid, cmdtext[]):
    PHP код:
        if(strcmp(cmdtext"/samolet"true) == 0)
        {
            new 
    string[256], s[32], z[32], d[32];
              if(
    Sozdan[playerid] == 0) { "{FF0000}Не выполнено{ffffff}"; } else { "{00CD00}Выполнено{ffffff}"; }
              if(
    Zapusk[playerid] == 0) { "{FF0000}Не выполнено{ffffff}"; } else { "{00CD00}Выполнено{ffffff}"; }
              if(
    Delete[playerid] == 0) { "{FF0000}Не выполнено{ffffff}"; } else { "{00CD00}Выполнено{ffffff}"; }
            
    format(stringsizeof(string), "Создать самолёт [%s]\nЗапустить самолёт [%s]\nУдалить самолёт [%s]",s,z,d);
            
    ShowPlayerDialog(playerid,1,DIALOG_STYLE_LIST,"Меню",string,"Выбрать","Отмена");
            return 
    1;
        } 
    Далее создаём функции для диалога в public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]):
    PHP код:
        if(dialogid == 1)
         {
             if(
    response)
            {
                 if(
    listitem == 0)
                {
                     if(
    Sozdan[playerid] == 0)
                     {
                          
    parawut Create3DTextLabel"Парашют! :)"0x7FFF00FF2008.8929,-2532.5046,14.040.0);
                         
    samolet[0] = CreateObject(145531980.20, -2506.9125.82,   0.000.00220.00);
                        
    samolet[1] = CreateObject(145481983.20, -2510.5025.50,   0.000.00220.00);
                        for(new 
    i=0;i<MAX_PLAYERS;i++)
                        {
                            
    parajut 1;
                             
    SetPlayerCheckpoint(i2008.8929,-2532.5046,13.54691.0);
                            
    SendClientMessage(i0xff0000ff,"{ff0000}Внимание: {ffffff}Всех желающих попрыгать с парашюта ждём в {ADD8E6}Аэропорту Los Santos");
                            
    Sozdan[playerid] = 1;
                            
    Delete[playerid] = 0;
                        }
                    }
                        else
                    {
                        
    SendClientMessage(playerid0xff0000ff"Ошибка: {ffffff}Самолёт уже создан!");
                    }
                }
                 if(
    listitem == 1)
                 {
                     if(
    Sozdan[playerid] == 0) return SendClientMessage(playerid0xff0000ff"Ошибка: {ffffff}Самолёт не создан!");
                    if(
    Zapusk[playerid] == 0)
                    {
                         
    MoveObject(samolet[0], -10.251000404358, -264.278011474612000.3240);
                        
    MoveObject(samolet[1], -7.251000404358, -267.868011474612000.040);
                        
    Zapusk[playerid] = 1;
                        
    Delete3DTextLabel(Text3D:parawut);
                        for(new 
    i=0;i<MAX_PLAYERS;i++)
                        {
                            
    DisablePlayerCheckpoint(i);
                        }
                        return 
    1;
                    }
                        else
                    {
                        
    SendClientMessage(playerid0xff0000ff"Ошибка: {ffffff}Самолёт уже в полёте!");
                    }
                 }
                 if(
    listitem == 2)
                 {
                     if(
    Sozdan[playerid] == 0) return SendClientMessage(playerid0xff0000ff"Ошибка: {ffffff}Самолёт не создан!");
                     if(
    Delete[playerid] == 0)
                    {
                          
    Delete3DTextLabel(Text3D:id);
                          
    DestroyObject(samolet[0]);
                        
    DestroyObject(samolet[1]);
                        for(new 
    i=0;i<MAX_PLAYERS;i++)
                        {
                            
    DisablePlayerCheckpoint(i);
                        }
                        
    Delete[playerid] = 1;
                        
    Zapusk[playerid] = 0;
                        
    Sozdan[playerid] = 0;
                    }
                        else
                    {
                        
    SendClientMessage(playerid0xff0000ff"Ошибка: {ffffff}Самолёт уже удалён!");
                    }
                }
                    else
                {
                  }
              }
        } 
    И в public OnPlayerEnterCheckpoint(playerid):
    PHP код:
     if(parajut == 1)
     {
      
    GivePlayerWeapon(playerid,46,1);
      return 
    1;
     } 


    В принципе всё, опять же: над оптимизацией не работал, главное работает, кому надо тот сделает. Может где-то есть лишняя переменная, но вроде всё на месте
    Видео: http://www.youtube.com/watch?v=mrmMhgVu9ME


    Автор: ProG

  2. #2
    Друг админа Аватар для l1ghter
    Регистрация
    04.09.2011
    Адрес
    Москва
    Сообщений
    2,348
    Репутация: 188

    Звание: - весьма и весьма положительная личность

    Re: Прыжки с парашюта

    Да, код подкачивает...

  3. #3
    Проверенный Аватар для ProG
    Регистрация
    06.04.2010
    Адрес
    localhost
    Возраст
    28
    Сообщений
    1,349
    Репутация: 122

    Звание: скоро придёт к известности

    Re: Прыжки с парашюта

    Цитата Сообщение от LA1ghter Посмотреть сообщение
    Да, код подкачивает...
    Ага ;(

  4. #4
    Люблю Окса :3 Аватар для Folleah
    Регистрация
    26.09.2012
    Сообщений
    2,045
    Репутация: 184

    Звание: - весьма и весьма положительная личность

    Re: Прыжки с парашюта

    Нормально

  5. #5
    Почетный пользователь Аватар для Snoowker
    Регистрация
    06.04.2010
    Сообщений
    1,948
    Репутация: 279

    Звание: как роза среди колючек

    Re: Прыжки с парашюта

    if(Sozdan[playerid] == 0) { s = "{FF0000}Не выполнено{ffffff}"; } else { s = "{00CD00}Выполнено{ffffff}"; }
    if(Zapusk[playerid] == 0) { z = "{FF0000}Не выполнено{ffffff}"; } else { z = "{00CD00}Выполнено{ffffff}"; }
    if(Delete[playerid] == 0) { d = "{FF0000}Не выполнено{ffffff}"; } else { d = "{00CD00}Выполнено{ffffff}"; }

    Сблеванул.

    Нельзя заюзать new str[][] = {{"Не выполнено"}, {"Выполнено"}}; и обращаться к ним через str[значение]? Дальше этого кода смотреть перестал, Джексона начинает напоминать.

  6. #6
    Активный пользователь
    Регистрация
    11.12.2012
    Адрес
    Тюмень
    Возраст
    29
    Сообщений
    101
    Репутация: 18

    Звание: на пути к лучшему

    Re: Прыжки с парашюта

    Цитата Сообщение от Snoowker Посмотреть сообщение
    if(Sozdan[playerid] == 0) { s = "{FF0000}Не выполнено{ffffff}"; } else { s = "{00CD00}Выполнено{ffffff}"; }
    if(Zapusk[playerid] == 0) { z = "{FF0000}Не выполнено{ffffff}"; } else { z = "{00CD00}Выполнено{ffffff}"; }
    if(Delete[playerid] == 0) { d = "{FF0000}Не выполнено{ffffff}"; } else { d = "{00CD00}Выполнено{ffffff}"; }

    Сблеванул.

    Нельзя заюзать new str[][] = {{"Не выполнено"}, {"Выполнено"}}; и обращаться к ним через str[значение]? Дальше этого кода смотреть перестал, Джексона начинает напоминать.
    Он же написал:
    В принципе всё, опять же: над оптимизацией не работал, главное работает, кому надо тот сделает.
    На*** придираться?

  7. #7
    Активный пользователь Аватар для H1tman
    Регистрация
    11.07.2010
    Адрес
    Kazan
    Сообщений
    803
    Репутация: 16

    Звание: на пути к лучшему

    Re: Прыжки с парашюта

    Немного оптимизации не повредит

    PHP код:
    new Text3D:ParachutePlane[2];
    #define PLANE_DIALOG 12345 
    PHP код:
    if(!strcmp(cmdtext"/samolet"true))
    {
        static 
    dialog[150];
        
    format(dialogsizeof(dialog), "Создать самолёт [%s]\nЗапустить самолёт [%s]\nУдалить самолёт [%s]",
        (!
    GetPVarInt(playerid"PlaneCreated")) ? ("{FF0000}Не выполнено{ffffff}") : ("{00CD00}Выполнено{ffffff}"),
        (!
    GetPVarInt(playerid"PlaneMoved")) ? ("{FF0000}Не выполнено{ffffff}") : ("{00CD00}Выполнено{ffffff}"),
        (!
    GetPVarInt(playerid"PlaneRemove")) ? ("{FF0000}Не выполнено{ffffff}") : ("{00CD00}Выполнено{ffffff}"));
        return 
    ShowPlayerDialog(playerid,PLANE_DIALOG,DIALOG_STYLE_LIST,"{FF9900}Меню",string,"Выбрать","Отмена"), true;

    public OnDialogResponse(playerid)
    PHP код:
    if(dialogid == PLANE_DIALOG)
    {
        if(!
    response) return true;
        switch(
    listitem)
        {
            case 
    0:
            {
                if(
    GetPVarInt(playerid"PlaneCreated")) return SendClientMessage(playerid0xff0000ff"Ошибка: {ffffff}Самолёт уже создан!");
                
    Parachute Create3DTextLabel"Ïàðàøþò! :)"0x7FFF00FF2008.8929,-2532.5046,14.040.00);
                
    Plane[0] = CreateObject(145531980.20, -2506.9125.820.000.00220.00), Plane[1] = CreateObject(145481983.20, -2510.5025.500.000.00220.00);
                
    SetPVarInt(playerid"PlaneCreated"1);
                for(new 
    GetMaxPlayers() - 1!= -1i--)
                {
                    if(!
    IsPlayerConnected(i)) continue;
                    
    SetPlayerCheckpoint(i2008.8929,-2532.5046,13.54691.0), SetPVarInt(i"GotParachute"1);
                    
    SendClientMessage(i0xff0000ff,"{ff0000}Информация: {ffffff}Желающих полетать на парашюте прибыть в {ADD8E6}Аэропорт г.Лос-Сантос.");
                }
            }
            case 
    1:
            {
                if(!
    GetPVarInt(playerid"PlaneCreated")) return SendClientMessage(playerid0xff0000ff"Ошибка: {ffffff}Самолёт не создан!");
                if(
    GetPVarInt(playerid"PlaneMoved")) return SendClientMessage(playerid0xff0000ff"Ошибка: {ffffff}Самолёт уже запущен!");
                
    SetPVarInt(playerid"PlaneMoved"1);
                
    MoveObject(Plane[0], -10.251000404358, -264.278011474612000.3240);
                
    MoveObject(Plane[1], -7.251000404358, -267.868011474612000.040);
                
    Delete3DTextLabel(Parachute);
                for(new 
    GetMaxPlayers() - 1!= -1i--) if(IsPlayerConnected(i)) DisablePlayerCheckpoint(i), DeletePVar(i"GotParachute");
            }
            case 
    2:
            {
                if(!
    GetPVarInt(playerid"PlaneCreated")) return SendClientMessage(playerid0xff0000ff"Ошибка: {ffffff}Самолёт не создан!");
                if(
    GetPVarInt(playerid"PlaneRemove")) return SendClientMessage(playerid0xff0000ff"Ошибка: {ffffff}Самолёт удалён!");
                
    SetPVarInt(playerid"PlaneRemove"1);
                
    DeletePVar(playerid"PlaneCreated");
                
    DeletePVar(playerid"PlaneMoved");
                
    Delete3DTextLabel(Parachute), DestroyObject(Plane[0]), DestroyObject(Plane[1]);
                for(new 
    GetMaxPlayers() - 1!= -1i--) if(IsPlayerConnected(i)) DisablePlayerCheckpoint(i), DeletePVar(i"GotParachute");
            }
        }

    public OnPlayerEnterCheckpoint(playerid)
    PHP код:
    if(GetPVarInt(playerid"GotParachute"))
    {
        
    GivePlayerWeapon(playerid461);

    SAMP:
    ---

    Multi Theft Auto:
    [GM]DayZ | Beta 0.2b (проект: DeadAndreas)

  8. #8
    Друг админа Аватар для l1ghter
    Регистрация
    04.09.2011
    Адрес
    Москва
    Сообщений
    2,348
    Репутация: 188

    Звание: - весьма и весьма положительная личность

    Re: Прыжки с парашюта

    Ох, гангстер, снувкер же написал, как сделать лучше.

    PHP код:
    new _str[2][28] = {  "{FF0000}Не выполнено{ffffff}""{00CD00}Выполнено{ffffff}" } ; 
    и обращение:
    PHP код:
    _strGetPVarInt(playerid"PlaneCreated") ] 

  9. #9
    Активный пользователь Аватар для H1tman
    Регистрация
    11.07.2010
    Адрес
    Kazan
    Сообщений
    803
    Репутация: 16

    Звание: на пути к лучшему

    Re: Прыжки с парашюта

    Цитата Сообщение от LA1ghter Посмотреть сообщение
    Ох, гангстер, снувкер же написал, как сделать лучше.

    PHP код:
    new _str[2][28] = {  "{FF0000}Не выполнено{ffffff}""{00CD00}Выполнено{ffffff}" } ; 
    и обращение:
    PHP код:
    _strGetPVarInt(playerid"PlaneCreated") ] 
    Какая разница, какую проверку ставить? Тем более в моей не используется лишних переменных.
    SAMP:
    ---

    Multi Theft Auto:
    [GM]DayZ | Beta 0.2b (проект: DeadAndreas)

  10. #10
    кот Аватар для Ленивый
    Регистрация
    12.10.2011
    Адрес
    Балаково
    Возраст
    34
    Сообщений
    888
    Репутация: 102

    Звание: скоро придёт к известности

    Re: Прыжки с парашюта

    Цитата Сообщение от Gangster Посмотреть сообщение
    Какая разница, какую проверку ставить? Тем более в моей не используется лишних переменных.
    это не переменная это массив! ><

    > Про меня <


Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. деньги за прыжки
    от Narc56 в разделе Вопросы по скриптингу
    Ответов: 3
    Последнее сообщение: 24.11.2012, 14:08
  2. [FilterScript] Прыжки с парашютом
    от Flash Royal в разделе Скрипты
    Ответов: 12
    Последнее сообщение: 26.03.2012, 07:37
  3. бонус за прыжки
    от Drap в разделе Вопросы по скриптингу
    Ответов: 2
    Последнее сообщение: 03.07.2011, 01:33
  4. Ищу анимация падения без и с парашюта
    от TAP04eGG в разделе Ищу скрипт/мод/функцию/программу/плагин...
    Ответов: 5
    Последнее сообщение: 29.06.2011, 20:27

Ваши права

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