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

Тема: keystatechange

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

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

    keystatechange

    Всем привет, такая проблема, в паблике onplayerkeystatechange работают не все системы (закомнетил что работает, а что нет):

    PHP код:
    public OnPlayerKeyStateChange(playeridnewkeysoldkeys)
    {
         if(
    PRESSED(KEY_SUBMISSION)) // работает
        
    {
            if(!
    IsPlayerInAnyVehicle(playerid)) return true;
            if(
    GetPVarInt(playerid"Engining") > 0) return true;
            new 
    vehicleid GetPlayerVehicleID(playerid);
            if(
    GetPlayerState(playerid) != 2) return true;
              if(
    PlaneVeh(vehicleid) || BoatVeh(vehicleid) || BikeVeh(vehicleid)) return true;
            if(
    engine_car{vehicleid} == 0)
            {
                new 
    text[29+MAX_PLAYER_NAME];
                
    format(textsizeof(text), "%s вставляет ключ в замок зажигания."sendername(playerid));
                
    ProxDetectorEx(15.0playeridtextCOLOR_PURPLE);
                
    SetTimerEx("RandomEnginingCar"15000"%i"playerid);
                
    SetPVarInt(playerid"Engining"1);
            }
            else
            {
                
    engine_car{vehicleid} = 0;
                new 
    text2[19+MAX_PLAYER_NAME];
                
    format(text2sizeof(text2), "%s заглушил двигатель."sendername(playerid));
                
    ProxDetectorEx(15.0playeridtext2COLOR_PURPLE);
                
    GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective);
                
    SetVehicleParamsEx(vehicleid,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
                }
        }
        if(
    PRESSED(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 центр.

        
    new virtual_world GetPlayerInterior(playerid),
            
    interior GetPlayerInterior(playerid);

        for(new 
    0TOTALATMa++) // работает
        
    {
            if(!
    IsPlayerInRangeOfPoint(playerid
            
    ,
                
    1.0,
                
    ATMInfo[a][aCor][0],
                
    ATMInfo[a][aCor][1],
                
    ATMInfo[a][aCor][2]
            )
            && 
    virtual_world != ATMInfo[a][aWorld][0]
            && 
    interior != ATMInfo[a][aWorld][1])
                continue;

            return 
    cmd_atm(playerid);
        }
        for(new 
    0sizeof(HouseInfo); i++) // не работает
        
    {
            if(
    IsPlayerInRangeOfPoint(playerid,7,HouseInfo[i][hEntrx], HouseInfo[i][hEntry], HouseInfo[i][hEntrz]))
            {
                if(
    HouseInfo[i][hLock] == 0)
                {
                    
    SetPlayerInterior(playerid,HouseInfo[i][hInt]);
                    
    SetPlayerVirtualWorld(playerid,250+i);
                    
    //Pinfo[playerid][pLocal] = i;
                    
    SetCameraBehindPlayer(playerid);

                    return 
    SetPlayerPos(playerid,HouseInfo[i][hExitx],HouseInfo[i][hExity],HouseInfo[i][hExitz]);
                    }
                else return 
    GameTextForPlayer(playerid"~r~Closed"50001);
                }
        }
        for(new 
    0TOTALSPRUNKa++) // то же не работает.
        
    {
            if(!
    IsPlayerInRangeOfPoint(playerid
            
    ,
                
    1.0,
                
    SPRUNKInfo[a][aCor][0],
                
    SPRUNKInfo[a][aCor][1],
                
    SPRUNKInfo[a][aCor][2]
            )
            && 
    virtual_world != SPRUNKInfo[a][aWorld][0]
            && 
    interior != SPRUNKInfo[a][aWorld][1])
                continue;

            if(
    GetMoney(playerid) < 50)
                return 
    SendClientMessage(playeridCOLOR_GREYYouDoNotHaveEnoughMoney);

            new 
    Floathealth;
            
    GetPlayerHealth(playeridhealth);

            if(
    _:health >= _:100)
                return 
    SendClientMessage(playeridCOLOR_GREY, !"У вас полное здоровье.");

            if(
    _:health _:91)
                
    SetPlayerHealth(playeridhealth 50);

            else
                
    SetPlayerHealth(playerid100);

            
    GiveMoney(playerid, -50);
            
    PlayerPlaySound(playerid426000.00.00.0);
            return 
    ApplyAnimation(playerid, !"VENDING", !"VEND_DRINK2_P"4.1,0,0,0,0,0);
            }
        }
        return 
    1;

    В чем может быть проблема?

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

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

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    11.02.2016
    Адрес
    Геленджик
    Сообщений
    193
    Репутация:
    26 ±
    Return замени на break (только там, где return внутри циклов)

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

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    PHP код:
    if(_:health >= _:100)
    if(
    _:health _:91
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    [*] Для проверки на равенство/неравенство (==, !=) лучше использовать оператор переопределения тега : и сравнивать оба числа, как целые, минуя вызов нативной функции:
    PHP код:
    if(_:oper1 == _:oper2
    Внимание! Данную оптимизацию можно использовать только при использовании операторов == и !=. Проверки >, <, >= и <= будут работать неправильно, если привести операнды к целочисленному тегу.
    [Anticheat]___Invisible Fly Hack
    [Anticheat]____Weapon/Ammo Hack
    [Function]______ResetPlayerWeaponSlot
    [Function]_______FIX_SetPlayerAmmo
    [ServerMod]______TDM | Zombie Apokalypse

 

 

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

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

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

Ваши права

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