Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.

Реклама


**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 200руб/мес, Текстовая 100руб/мес.
Страница 1 из 2 12 ПоследняяПоследняя
Показано с 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
    Адрес
    Восточный Мордор
    Сообщений
    3,931
    Репутация:
    1502 ±
    PHP код:
    if(newkeys== KEY_WALK
    на
    PHP код:
    if(newkeys KEY_WALK
    ещё стоит заменить
    Связаться со мной можно в личных сообщениях этой группы

    Широко известно, что идеи стоят 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
    Сообщений
    239
    Репутация:
    50 ±
    Цитата Сообщение от HarrWe Посмотреть сообщение
    А в чём разница?Видел в разных модах по разному)Объяснишь?
    Первый вариант сработает только в том случае, если ты отпустишь все кнопки и нажмешь в данной случае на KEY_WALK, второй же вариант сработает независимо от того, сколько кнопок нажато одновременно

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

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,360
    Репутация:
    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
    Адрес
    Восточный Мордор
    Сообщений
    3,931
    Репутация:
    1502 ±
    Цитата Сообщение от 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.
    Связаться со мной можно в личных сообщениях этой группы

    Широко известно, что идеи стоят 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,360
    Репутация:
    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 12 ПоследняяПоследняя

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

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

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

Ваши права

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