Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 15

Тема: вопрос

  1. #1
    Аватар для Freaky
    Пользователь

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

    вопрос

    PHP код:
    if(newkeys== KEY_WALK)
        {
            if(
    IsPlayerInRangeOfPoint(playerid,2.0,246.7667,62.7068,1003.6406)) return tpint(playerid,001551.7064,-1675.6198,15.9680,89.9772); // Выход из LSPD центр.
            
    else if(IsPlayerInRangeOfPoint(playerid,2.0,1555.1411,-1675.6617,16.1953)) return tpint(playerid,61246.5239,65.9137,1003.6406,359.2728); // Вход в LSPD центр.
            
    {
               for(new 
    0TOTALATMa++)
            {
                if(!
    IsPlayerInRangeOfPoint(playerid,1.0ATMInfo[a][aCor][0], ATMInfo[a][aCor][1], ATMInfo[a][aCor][2])) continue;
                if(
    GetPlayerInterior(playerid) != ATMInfo[a][aWorld][0]) continue;
                if(
    GetPlayerVirtualWorld(playerid) != ATMInfo[a][aWorld][1]) continue;
                return 
    cmd_atm(playerid);
            }
            for(new 
    0TOTALSPRUNKa++)
             {
                if(!
    IsPlayerInRangeOfPoint(playerid,1.0SPRUNKInfo[a][aCor][0], SPRUNKInfo[a][aCor][1], SPRUNKInfo[a][aCor][2])) continue;
                if(
    GetPlayerInterior(playerid) != SPRUNKInfo[a][aWorld][0]) continue;
                if(
    GetPlayerVirtualWorld(playerid) != SPRUNKInfo[a][aWorld][1]) continue;
            }
             if(
    GetMoney(playerid) < 50) return SendClientMessage(playeridCOLOR_GREYYouDoNotHaveEnoughMoney);
            new 
    Floathealth;
             
    GetPlayerHealth(playerid,health);
            if(
    health >= 100) return SendClientMessage(playeridCOLOR_GREY,"У вас полное здоровье.");
            if(
    health 91SetPlayerHealth(playeridhealth 50);
            else 
    SetPlayerHealth(playerid100);
            
    GiveMoney(playerid, -50), PlayerPlaySound(playerid426000.00.00.0);
            
    ApplyAnimation(playerid"VENDING""VEND_DRINK2_P"4.1,0,0,0,0,0);
            return 
    1;
            }
        }
        return 
    1;

    Спранки работают по всех карте, в чем проблема?

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

    Статус
    Оффлайн
    Регистрация
    07.06.2016
    Адрес
    Minsk, Belarus
    Сообщений
    78
    Репутация:
    15 ±
    PHP код:
    if(newkeys == KEY_WALK)
    {
        if(
    IsPlayerInRangeOfPoint(playerid2.0,246.766762.70681003.6406)) 
            return 
    tpint(playerid,001551.7064,-1675.6198,15.968089.9772); // Выход из LSPD центр.
        
    else if(IsPlayerInRangeOfPoint(playerid2.01555.1411, -1675.661716.1953)) 
            return 
    tpint(playerid,61246.5239,65.9137,1003.6406,359.2728); // Вход в LSPD центр.
        
    {
            for(new 
    0TOTALATMa++)
            {
                if(!
    IsPlayerInRangeOfPoint(playerid,1.0ATMInfo[a][aCor][0], ATMInfo[a][aCor][1], ATMInfo[a][aCor][2])) continue;
                else if(
    GetPlayerInterior(playerid) != ATMInfo[a][aWorld][0]) continue;
                else if(
    GetPlayerVirtualWorld(playerid) != ATMInfo[a][aWorld][1]) continue;
                
                
    cmd_atm(playerid);

                return 
    1;
            }
            
            for(new 
    0TOTALSPRUNKa++)
            {
                if(!
    IsPlayerInRangeOfPoint(playerid,1.0SPRUNKInfo[a][aCor][0], SPRUNKInfo[a][aCor][1], SPRUNKInfo[a][aCor][2])) continue;
                else if(
    GetPlayerInterior(playerid) != SPRUNKInfo[a][aWorld][0]) continue;
                else if(
    GetPlayerVirtualWorld(playerid) != SPRUNKInfo[a][aWorld][1]) continue;
                
                if(
    GetMoney(playerid) < 50) return SendClientMessage(playeridCOLOR_GREYYouDoNotHaveEnoughMoney);
                
                new 
    Floathealth;
                
    GetPlayerHealth(playeridhealth);
                
                else if(
    health >= 100) return SendClientMessage(playeridCOLOR_GREY,"У вас полное здоровье.");
                
                if(
    health 91SetPlayerHealth(playeridhealth 50);
                else 
    SetPlayerHealth(playerid100);
                
                
    GiveMoney(playerid, -50), PlayerPlaySound(playerid426000.00.00.0);
                
    ApplyAnimation(playerid"VENDING""VEND_DRINK2_P"4.1,0,0,0,0,0);

                return 
    1;
            }
        }
        return 
    1;


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

    Статус
    Оффлайн
    Регистрация
    17.08.2016
    Сообщений
    17
    Репутация:
    0 ±
    Цитата Сообщение от Redsan Посмотреть сообщение
    PHP код:
    if(newkeys == KEY_WALK)
    {
        if(
    IsPlayerInRangeOfPoint(playerid2.0,246.766762.70681003.6406)) 
            return 
    tpint(playerid,001551.7064,-1675.6198,15.968089.9772); // Выход из LSPD центр.
        
    else if(IsPlayerInRangeOfPoint(playerid2.01555.1411, -1675.661716.1953)) 
            return 
    tpint(playerid,61246.5239,65.9137,1003.6406,359.2728); // Вход в LSPD центр.
        
    {
            for(new 
    0TOTALATMa++)
            {
                if(!
    IsPlayerInRangeOfPoint(playerid,1.0ATMInfo[a][aCor][0], ATMInfo[a][aCor][1], ATMInfo[a][aCor][2])) continue;
                else if(
    GetPlayerInterior(playerid) != ATMInfo[a][aWorld][0]) continue;
                else if(
    GetPlayerVirtualWorld(playerid) != ATMInfo[a][aWorld][1]) continue;
                
                
    cmd_atm(playerid);

                return 
    1;
            }
            
            for(new 
    0TOTALSPRUNKa++)
            {
                if(!
    IsPlayerInRangeOfPoint(playerid,1.0SPRUNKInfo[a][aCor][0], SPRUNKInfo[a][aCor][1], SPRUNKInfo[a][aCor][2])) continue;
                else if(
    GetPlayerInterior(playerid) != SPRUNKInfo[a][aWorld][0]) continue;
                else if(
    GetPlayerVirtualWorld(playerid) != SPRUNKInfo[a][aWorld][1]) continue;
                
                if(
    GetMoney(playerid) < 50) return SendClientMessage(playeridCOLOR_GREYYouDoNotHaveEnoughMoney);
                
                new 
    Floathealth;
                
    GetPlayerHealth(playeridhealth);
                
                else if(
    health >= 100) return SendClientMessage(playeridCOLOR_GREY,"У вас полное здоровье.");
                
                if(
    health 91SetPlayerHealth(playeridhealth 50);
                else 
    SetPlayerHealth(playerid100);
                
                
    GiveMoney(playerid, -50), PlayerPlaySound(playerid426000.00.00.0);
                
    ApplyAnimation(playerid"VENDING""VEND_DRINK2_P"4.1,0,0,0,0,0);

                return 
    1;
            }
        }
        return 
    1;

    Скобка пропущена.

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    PHP код:
    if(newkeys== KEY_WALK
    на
    PHP код:
    if(newkeys KEY_WALK
    ещё стоит заменить
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  5. #5
    Аватар для HarrWe
    Пользователь

    Статус
    Оффлайн
    Регистрация
    29.05.2016
    Сообщений
    144
    Репутация:
    11 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    PHP код:
    if(newkeys== KEY_WALK
    на
    PHP код:
    if(newkeys KEY_WALK
    ещё стоит заменить
    А в чём разница?Видел в разных модах по разному)Объяснишь?

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

    Статус
    Оффлайн
    Регистрация
    01.03.2015
    Сообщений
    245
    Репутация:
    55 ±
    Цитата Сообщение от HarrWe Посмотреть сообщение
    А в чём разница?Видел в разных модах по разному)Объяснишь?
    Первый вариант сработает только в том случае, если ты отпустишь все кнопки и нажмешь в данной случае на KEY_WALK, второй же вариант сработает независимо от того, сколько кнопок нажато одновременно

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

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

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от HarrWe Посмотреть сообщение
    А в чём разница?Видел в разных модах по разному)Объяснишь?
    "&" - это побитовое "и". Вот тут подробно об этом написано (пункт "How to check for a key").


    Если вкратце, то каждая клавиша имеет свой собственный бит для newkeys/oldkeys (некоторые клавиши имеют одинаковые биты, но они предназначены для разных состояний игрока[пешком/в автомобиле]). Точнее, не клавиша, а действие в настройках (именно действия отлавливаются SA-MP, а не конкретная кнопка. То бишь: "шаг", "спринт", "сесть/покинуть машину" и т.п. Все игровые настройки, крч).
    Клавиши передаются именно битами, а не чем-либо ещё. Сделано это для того, чтоб те самые параметры "newkeys/oldkeys" могли хранить в себе информацию не только об одной кнопке, а о нескольких (один аргумент, как и переменная, занимает в памяти 4 байта. 1 байт = 8 бит. 4*8 = 32 бита для хранения информации о нажатиях).

    Так вот. Если использовать "==", проверка
    PHP код:
    if(newkeys == KEY_WALK
    будет работать только когда игрок нажимает исключительно на клавишу ходьбы и ни на какую, отслеживаемую сампом, клавишу больше. Ибо если он нажмёт на какую-либо ещё клавишу, эта клавиша будет так же передана в newkeys, как и KEY_WALK, следовательно, в newkeys уже будет не только "KEY_WALK", а набор бит KEY_WALK+той клавиши, которую игрок нажал.
    Ну а побитовое "и" сравнивает именно биты и проверка будет работать всегда.
    Как-то так
    Последний раз редактировалось DeimoS; 08.09.2016 в 21:30.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    17.08.2016
    Сообщений
    17
    Репутация:
    0 ±
    Ну так кто помочь сможет? :(. Вариант Redsan не работает.

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

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    Я вот этот макрос юзал немного:
    PHP код:
    #define PRESSING(%0,%1) \
        
    (%& (%1)) 
    Он срабатывает не всегда, то есть при зажатых клавишах он не всегда срабатывал...

    После чего попробовал этот:
    PHP код:
    #define PRESSED(%0) \
        
    (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0))) 
    А этот прекрасно всегда любезно показывал какую я клавишу нажимал, даже если локтём упёрся на пол клавы и нажал он всегда срабатывал

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

    А от темы ушли, вот кстате код который наверняка нужен ТС))
    PHP код:
    if(newkeys == KEY_WALK)
    {
        if(
    IsPlayerInRangeOfPoint(playerid2.0,246.766762.70681003.6406)) 
        {
            
    tpint(playerid,001551.7064,-1675.6198,15.968089.9772); // Выход из LSPD центр.
        
    }
        else if(
    IsPlayerInRangeOfPoint(playerid2.01555.1411, -1675.661716.1953)) 
        {
            
    tpint(playerid,61246.5239,65.9137,1003.6406,359.2728); // Вход в LSPD центр.
        
    }
        else
        {
            new 
    inter GetPlayerInterior(playerid),
                
    virt GetPlayerVirtualWorld(playerid);
            for(new 
    0TOTALATMa++)
            {
                if(!
    IsPlayerInRangeOfPoint(playerid1.0ATMInfo[a][aCor][0], ATMInfo[a][aCor][1], ATMInfo[a][aCor][2])) continue;
                else if(
    inter != ATMInfo[a][aWorld][0]) continue;
                else if(
    virt != ATMInfo[a][aWorld][1]) continue;

                
    cmd_atm(playerid);
                break;
            }
            
            for(new 
    0TOTALSPRUNKa++)
            {
                if(!
    IsPlayerInRangeOfPoint(playerid1.0SPRUNKInfo[a][aCor][0], SPRUNKInfo[a][aCor][1], SPRUNKInfo[a][aCor][2])) continue;
                else if(
    inter != SPRUNKInfo[a][aWorld][0]) continue;
                else if(
    virt != SPRUNKInfo[a][aWorld][1]) continue;
                
                if(
    GetMoney(playerid) < 50)
                {
                    
    SendClientMessage(playeridCOLOR_GREYYouDoNotHaveEnoughMoney);
                    break;
                }
                
                new 
    Floathealth;
                
    GetPlayerHealth(playeridhealth);
                
                if(
    health >= 100.0)
                {
                    
    SendClientMessage(playeridCOLOR_GREY,"У вас полное здоровье.");
                    break;
                }
                else if(
    health 91.0)
                {
                    
    SetPlayerHealth(playeridhealth 50.0);
                }
                else
                {
                    
    SetPlayerHealth(playerid100.0);
                }
                
                
    GiveMoney(playerid, -50), PlayerPlaySound(playerid426000.00.00.0);
                
    ApplyAnimation(playerid"VENDING""VEND_DRINK2_P"4.1,0,0,0,0,0);
                break;
            }
        }
        return 
    1;

    Обновил...
    Последний раз редактировалось vovandolg; 08.09.2016 в 22:08.
    [Anticheat]___Invisible Fly Hack
    [Anticheat]____Weapon/Ammo Hack
    [Function]______ResetPlayerWeaponSlot
    [Function]_______FIX_SetPlayerAmmo
    [ServerMod]______TDM | Zombie Apokalypse

 

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

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

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

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

Ваши права

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