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

Реклама


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

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

    Steve Pavlina

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

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

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

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,360
    Репутация:
    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)

Ваши права

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