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

    Статус
    Оффлайн
    Регистрация
    21.04.2013
    Адрес
    Россия
    Сообщений
    154
    Репутация:
    1 ±

    Ферма (пикапы сбора)

    Всем привет делал на сервер ферму и столкнулся с проблемой не могу исправить уже давно все мучаюсь и мучаюсь не могу исправить и теперь решил выложить сюда может вы мне поможете суть ошибки когда садишься в машину фермера Walton едишь на поле да все приехал на чекпоинт 5 сек прошло пикап появился (пикап работает ) потом иду за 2 машиной Walton тоже еду на поле все приехал пикап появился (получается уже 2 пикапа на поле загрузки ) вот суть ошибки: 1 пикап который мы поставили 1 машины Walton не работает а последнюю машину которую поставили на поле пикап работает как сделать чтобы все 2 пикапа функционировали

    Код:

    PHP код:
    new FermPickup;//Пикап для сбора урожая 
    PHP код:
            if(carid >= FermCar[0] && carid <= FermCar[1])
            {
                if(
    PlayerInfo[playerid][pFerma] != 255 || PlayerInfo[playerid][pFermaJob] == || PlayerInfo[playerid][pFermaJob] == 2)
                {
                    if(
    LoadZern[carid-FermCar[0]] < 1000)//Если в машине меньше 0 зёрен то...
                    
    {
                        new 
    string[50+MAX_PLAYER_NAME-2];
                        static const 
    ferm[] = "В грузовике %d / 1000 зёрен";
                        
    format(stringsizeof(string), fermLoadZern[carid-FermCar[0]]);
                        
    SendClientMessage(playeridCOLOR_GREENstring);
                        new 
    rand random(sizeof(SborFerm_0));//Рандомное значение на собирание кустиков!
                        
    SetPlayerCheckpoint(playeridSborFerm_0[rand][0], SborFerm_0[rand][1], SborFerm_0[rand][2],5.0);
                    }
                    else
    //Если больше 1000 то...
                    
    {
                        
    LoadZern[carid-FermCar[0]] = 1000;//Приравниваем значение зёрен к 1000 чтобы не было бага с количеством!
                        
    new string[50+MAX_PLAYER_NAME-2];
                        static const 
    ferm[] = "В грузовике %d / 1000 зёрен";
                        
    format(stringsizeof(string), fermLoadZern[carid-FermCar[0]]);
                        
    SendClientMessage(playeridCOLOR_GREENstring);
                        
    SendClientMessage(playeridCOLOR_GREEN"Сбор урожая завершен. Теперь направляйтесь к ферме и разгрузитесь{FFFFFF} (( Командой: /funload ))");
                        
    DestroyDynamicPickup(FermPickup);//Удалили пикап
                        
    Delete3DTextLabel(FermText3D[playerid]);//Удалили текст
                        
    if(IsPlayerAttachedObjectSlotUsed(playerid3)) RemovePlayerAttachedObject(playerid3);
                        
    DisablePlayerCheckpoint(playerid);//Удалили чекпоинт
                    
    }
                }
                else
                {
                    
    SendClientMessage(playeridCOLOR_WHITE"Вы не Фермер/Владелец/Заместитель!");
                    
    RemovePlayerFromVehicleAC(playerid);
                    
    SetTimerEx("RemovePlayerFromVehicleEx"3000false"i"playerid);
                    return 
    1;
                }
            } 
    PHP код:
    public OnPlayerPickUpDynamicPickup(playeridpickupid)
    {
        
    printf("Ferm pickupid %d"pickupid);
        if(
    pickupid == FermPickup)
        {
            if(
    PlayerKist[playerid] == true)
            {
                for(new 
    0sizeof(FermInfo); f++)
                {
                    new 
    carid = !GetPlayerVehicleID(playerid);
                    if(
    LoadZern[carid-FermCar[0]] > 1000)//Если в машине меньше 1000 зерен то...
                    
    {
                        new 
    string[30+MAX_PLAYER_NAME-2];
                        
    LoadZern[carid-FermCar[0]] = 1000;
                        
    SendClientMessage(playeridCOLOR_WHITE"Грузовик полон!");
                        static const 
    ferm_1[] = "Загруженно\n{ffffff}%d / 1000";
                        
    format(stringsizeof(string), ferm_1LoadZern[carid-FermCar[0]]);
                        
    DisablePlayerCheckpoint(playerid);
                        if(
    IsPlayerAttachedObjectSlotUsed(playerid3)) RemovePlayerAttachedObject(playerid3);
                        
    PlayerKist[playerid] = false;
                    }
                    else
                    {
                        new 
    string[50+MAX_PLAYER_NAME-2];
                        
    FermInfo[f][fZaseeno] -= 5;//Отнимаем -5 засеености!
                        
    LoadZern[carid-FermCar[0]] += 5;//Загрузили +5 зерен!
                        
    FermZarabotok[playerid] += FermInfo[f][fPayday];//Прибовляем заработок
                        
    static const ferm[] = "~b~count:~w~+%d$";
                        
    format(stringsizeof(string), fermFermZarabotok[playerid]);
                        
    GameTextForPlayer(playeridstring30001);
                        
    DisablePlayerCheckpoint(playerid);//Удалили чекпоинт
                        
    GetXYInFrontOfPlayer(playeridX12Y12Z12);
                        
    SetPlayerCheckpoint(playeridX12+random(10), Y12+random(10), Z121.0);
                        if(
    IsPlayerAttachedObjectSlotUsed(playerid3)) RemovePlayerAttachedObject(playerid3);
                        static const 
    ferm_1[] = "Загруженно\n{ffffff}%d / 1000";
                        
    format(stringsizeof(string), ferm_1LoadZern[carid-FermCar[0]]);
                        
    Update3DTextLabelText(FermText3D[playerid], COLOR_YELLOWstring);
                        
    PlayerKist[playerid] = false;
                        if(
    gettime() - GetPVarInt(playerid"BotFarm") < 20)
                        {
                            if(
    GetPVarInt(playerid"BotCount") == 1)
                            {
                                static const 
    ferm_2[] = "<<Warning>> Игрок %s[%d]: Возможно бот фермер";
                                
    format(stringsizeof(string), ferm_2PlayerInfo[playerid][pName], playerid);
                                
    SendAdminMessage(COLOR_ADMINstring);
                                
    SetPVarInt(playerid"BotCount"0);
                            }
                        }
                        
    SetPVarInt(playerid"BotFarm"gettime());
                        
    SetPVarInt(playerid"BotCount"GetPVarInt(playerid"BotCount") +1);
                    }
                }
            }
            else
            {
                
    SendClientMessage(playeridCOLOR_GREEN"{00D607} Для начала соберите урожай {FFFFFF}(( Встаньте на красный чекпоинт, и ждите 15 секунд ))");
                
    SendClientMessage(playeridCOLOR_GREEN"{00D607} Когда соберёте положите в кузов автомобиля {FFFFFF}(( Встаньте на желтую стрелку ))");
                
    SendClientMessage(playeridCOLOR_GREEN"{00D607} Если захотите завершить работу, пройдите к раздевалке {FFFFFF}(( Встаньте на синий пикап у фермы ))");
                
    SendClientMessage(playeridCOLOR_GREEN"{00D607} Если вы фермер, то просто сядьте в машину для завершения сбора урожая, /funload - разгрузить урожай");
                
    DisablePlayerCheckpoint(playerid);
                if(
    IsPlayerAttachedObjectSlotUsed(playerid3)) RemovePlayerAttachedObject(playerid3);
                
    GetXYInFrontOfPlayer(playeridX12Y12Z12);
                
    SetPlayerCheckpoint(playeridX12+random(10), Y12+random(10), Z121.0);
                
    PlayerKist[playerid] = false;
            }
        }
        return 
    1;

    таймер после которого ставиться пикап
    PHP код:
            if(SbotTime_1[i] > 0)
            {
                
    SbotTime_1[i]--;
                if(
    SbotTime_1[i] == 0)
                {
                    
    SbotTime_1[i] = 0;
                    for(new 
    04q++)//Цикл место сбора урожая
                    
    {
                        if(
    IsPlayerInRangeOfPoint(i5.0SborFerm_0[q][0], SborFerm_0[q][1], SborFerm_0[q][2]))//Проверяем есть ли игрок в радиусе 5 метров от чекпоинта!
                        
    {
                            new 
    carid GetPlayerVehicleID(i);
                            
    GetVehiclePos(caridX12Y12Z12);
                            
    GetXYInFrontOfPlayer(iX12Y12,-3.0);
                            
    FermPickup CreateDynamicPickup(1919723X12Y12Z12+0.3);
                            
    GetVehicleParamsEx(caridenginelightsalarmdoorsbonnetbootobjective);
                            
    SetVehicleParamsEx(caridVEHICLE_PARAMS_OFFVEHICLE_PARAMS_OFFalarmdoorsbonnetbootobjective);
                            
    zavodis[i] = false;
                            new 
    string[30+MAX_PLAYER_NAME-2];
                            static const 
    ferm[] = "Загруженно\n%d / 1000";
                            
    format(stringsizeof(string), fermLoadZern[carid-FermCar[0]]);
                            
    FermText3D[i] = Create3DTextLabel(stringCOLOR_YELLOWX12Y12Z12+0.515.001);
                            
    SendClientMessage(iCOLOR_WHITE"{0289CC}Машина на месте. Теперь вы и ваши рабочие, могут загружать её");
                            
    SendClientMessage(iCOLOR_WHITE"{0289CC}Если решите завершить сбор урожая, /fpanel [9] завершить сбор урожая");
                            
    DisablePlayerCheckpoint(i);//Удаляем чекпоинт!
                        
    }
                    }
                }
            } 

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

    Статус
    Оффлайн
    Регистрация
    01.03.2015
    Сообщений
    245
    Репутация:
    55 ±
    Цитата Сообщение от Dima_Tushin Посмотреть сообщение
    Всем привет делал на сервер ферму и столкнулся с проблемой не могу исправить уже давно все мучаюсь и мучаюсь не могу исправить и теперь решил выложить сюда может вы мне поможете суть ошибки когда садишься в машину фермера Walton едишь на поле да все приехал на чекпоинт 5 сек прошло пикап появился (пикап работает ) потом иду за 2 машиной Walton тоже еду на поле все приехал пикап появился (получается уже 2 пикапа на поле загрузки ) вот суть ошибки: 1 пикап который мы поставили 1 машины Walton не работает а последнюю машину которую поставили на поле пикап работает как сделать чтобы все 2 пикапа функционировали

    Код:

    PHP код:
    new FermPickup;//Пикап для сбора урожая 
    PHP код:
            if(carid >= FermCar[0] && carid <= FermCar[1])
            {
                if(
    PlayerInfo[playerid][pFerma] != 255 || PlayerInfo[playerid][pFermaJob] == || PlayerInfo[playerid][pFermaJob] == 2)
                {
                    if(
    LoadZern[carid-FermCar[0]] < 1000)//Если в машине меньше 0 зёрен то...
                    
    {
                        new 
    string[50+MAX_PLAYER_NAME-2];
                        static const 
    ferm[] = "В грузовике %d / 1000 зёрен";
                        
    format(stringsizeof(string), fermLoadZern[carid-FermCar[0]]);
                        
    SendClientMessage(playeridCOLOR_GREENstring);
                        new 
    rand random(sizeof(SborFerm_0));//Рандомное значение на собирание кустиков!
                        
    SetPlayerCheckpoint(playeridSborFerm_0[rand][0], SborFerm_0[rand][1], SborFerm_0[rand][2],5.0);
                    }
                    else
    //Если больше 1000 то...
                    
    {
                        
    LoadZern[carid-FermCar[0]] = 1000;//Приравниваем значение зёрен к 1000 чтобы не было бага с количеством!
                        
    new string[50+MAX_PLAYER_NAME-2];
                        static const 
    ferm[] = "В грузовике %d / 1000 зёрен";
                        
    format(stringsizeof(string), fermLoadZern[carid-FermCar[0]]);
                        
    SendClientMessage(playeridCOLOR_GREENstring);
                        
    SendClientMessage(playeridCOLOR_GREEN"Сбор урожая завершен. Теперь направляйтесь к ферме и разгрузитесь{FFFFFF} (( Командой: /funload ))");
                        
    DestroyDynamicPickup(FermPickup);//Удалили пикап
                        
    Delete3DTextLabel(FermText3D[playerid]);//Удалили текст
                        
    if(IsPlayerAttachedObjectSlotUsed(playerid3)) RemovePlayerAttachedObject(playerid3);
                        
    DisablePlayerCheckpoint(playerid);//Удалили чекпоинт
                    
    }
                }
                else
                {
                    
    SendClientMessage(playeridCOLOR_WHITE"Вы не Фермер/Владелец/Заместитель!");
                    
    RemovePlayerFromVehicleAC(playerid);
                    
    SetTimerEx("RemovePlayerFromVehicleEx"3000false"i"playerid);
                    return 
    1;
                }
            } 
    PHP код:
    public OnPlayerPickUpDynamicPickup(playeridpickupid)
    {
        
    printf("Ferm pickupid %d"pickupid);
        if(
    pickupid == FermPickup)
        {
            if(
    PlayerKist[playerid] == true)
            {
                for(new 
    0sizeof(FermInfo); f++)
                {
                    new 
    carid = !GetPlayerVehicleID(playerid);
                    if(
    LoadZern[carid-FermCar[0]] > 1000)//Если в машине меньше 1000 зерен то...
                    
    {
                        new 
    string[30+MAX_PLAYER_NAME-2];
                        
    LoadZern[carid-FermCar[0]] = 1000;
                        
    SendClientMessage(playeridCOLOR_WHITE"Грузовик полон!");
                        static const 
    ferm_1[] = "Загруженно\n{ffffff}%d / 1000";
                        
    format(stringsizeof(string), ferm_1LoadZern[carid-FermCar[0]]);
                        
    DisablePlayerCheckpoint(playerid);
                        if(
    IsPlayerAttachedObjectSlotUsed(playerid3)) RemovePlayerAttachedObject(playerid3);
                        
    PlayerKist[playerid] = false;
                    }
                    else
                    {
                        new 
    string[50+MAX_PLAYER_NAME-2];
                        
    FermInfo[f][fZaseeno] -= 5;//Отнимаем -5 засеености!
                        
    LoadZern[carid-FermCar[0]] += 5;//Загрузили +5 зерен!
                        
    FermZarabotok[playerid] += FermInfo[f][fPayday];//Прибовляем заработок
                        
    static const ferm[] = "~b~count:~w~+%d$";
                        
    format(stringsizeof(string), fermFermZarabotok[playerid]);
                        
    GameTextForPlayer(playeridstring30001);
                        
    DisablePlayerCheckpoint(playerid);//Удалили чекпоинт
                        
    GetXYInFrontOfPlayer(playeridX12Y12Z12);
                        
    SetPlayerCheckpoint(playeridX12+random(10), Y12+random(10), Z121.0);
                        if(
    IsPlayerAttachedObjectSlotUsed(playerid3)) RemovePlayerAttachedObject(playerid3);
                        static const 
    ferm_1[] = "Загруженно\n{ffffff}%d / 1000";
                        
    format(stringsizeof(string), ferm_1LoadZern[carid-FermCar[0]]);
                        
    Update3DTextLabelText(FermText3D[playerid], COLOR_YELLOWstring);
                        
    PlayerKist[playerid] = false;
                        if(
    gettime() - GetPVarInt(playerid"BotFarm") < 20)
                        {
                            if(
    GetPVarInt(playerid"BotCount") == 1)
                            {
                                static const 
    ferm_2[] = "<<Warning>> Игрок %s[%d]: Возможно бот фермер";
                                
    format(stringsizeof(string), ferm_2PlayerInfo[playerid][pName], playerid);
                                
    SendAdminMessage(COLOR_ADMINstring);
                                
    SetPVarInt(playerid"BotCount"0);
                            }
                        }
                        
    SetPVarInt(playerid"BotFarm"gettime());
                        
    SetPVarInt(playerid"BotCount"GetPVarInt(playerid"BotCount") +1);
                    }
                }
            }
            else
            {
                
    SendClientMessage(playeridCOLOR_GREEN"{00D607} Для начала соберите урожай {FFFFFF}(( Встаньте на красный чекпоинт, и ждите 15 секунд ))");
                
    SendClientMessage(playeridCOLOR_GREEN"{00D607} Когда соберёте положите в кузов автомобиля {FFFFFF}(( Встаньте на желтую стрелку ))");
                
    SendClientMessage(playeridCOLOR_GREEN"{00D607} Если захотите завершить работу, пройдите к раздевалке {FFFFFF}(( Встаньте на синий пикап у фермы ))");
                
    SendClientMessage(playeridCOLOR_GREEN"{00D607} Если вы фермер, то просто сядьте в машину для завершения сбора урожая, /funload - разгрузить урожай");
                
    DisablePlayerCheckpoint(playerid);
                if(
    IsPlayerAttachedObjectSlotUsed(playerid3)) RemovePlayerAttachedObject(playerid3);
                
    GetXYInFrontOfPlayer(playeridX12Y12Z12);
                
    SetPlayerCheckpoint(playeridX12+random(10), Y12+random(10), Z121.0);
                
    PlayerKist[playerid] = false;
            }
        }
        return 
    1;

    таймер после которого ставиться пикап
    PHP код:
            if(SbotTime_1[i] > 0)
            {
                
    SbotTime_1[i]--;
                if(
    SbotTime_1[i] == 0)
                {
                    
    SbotTime_1[i] = 0;
                    for(new 
    04q++)//Цикл место сбора урожая
                    
    {
                        if(
    IsPlayerInRangeOfPoint(i5.0SborFerm_0[q][0], SborFerm_0[q][1], SborFerm_0[q][2]))//Проверяем есть ли игрок в радиусе 5 метров от чекпоинта!
                        
    {
                            new 
    carid GetPlayerVehicleID(i);
                            
    GetVehiclePos(caridX12Y12Z12);
                            
    GetXYInFrontOfPlayer(iX12Y12,-3.0);
                            
    FermPickup CreateDynamicPickup(1919723X12Y12Z12+0.3);
                            
    GetVehicleParamsEx(caridenginelightsalarmdoorsbonnetbootobjective);
                            
    SetVehicleParamsEx(caridVEHICLE_PARAMS_OFFVEHICLE_PARAMS_OFFalarmdoorsbonnetbootobjective);
                            
    zavodis[i] = false;
                            new 
    string[30+MAX_PLAYER_NAME-2];
                            static const 
    ferm[] = "Загруженно\n%d / 1000";
                            
    format(stringsizeof(string), fermLoadZern[carid-FermCar[0]]);
                            
    FermText3D[i] = Create3DTextLabel(stringCOLOR_YELLOWX12Y12Z12+0.515.001);
                            
    SendClientMessage(iCOLOR_WHITE"{0289CC}Машина на месте. Теперь вы и ваши рабочие, могут загружать её");
                            
    SendClientMessage(iCOLOR_WHITE"{0289CC}Если решите завершить сбор урожая, /fpanel [9] завершить сбор урожая");
                            
    DisablePlayerCheckpoint(i);//Удаляем чекпоинт!
                        
    }
                    }
                }
            } 
    Ты создаешь 2 пикапа, но приравниваешь их ID к одной переменной, а значит при создании второго пикапа - его ID перезапишется в переменной. Следовательно привяжи пикап к нужной ячейки в зависимости от выбранной машины.
    PHP код:
    new FermPickup[2];//Пикап для сбора урожая 

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

    Статус
    Оффлайн
    Регистрация
    21.04.2013
    Адрес
    Россия
    Сообщений
    154
    Репутация:
    1 ±
    Ну сейчас попробую еще раз делать я так делал я много способов сделал но повторение мать учение)))

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

    Статус
    Оффлайн
    Регистрация
    21.04.2013
    Адрес
    Россия
    Сообщений
    154
    Репутация:
    1 ±
    Блин не получается или я не понимаю как сделать сделай на примере.

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

    Статус
    Оффлайн
    Регистрация
    15.08.2015
    Сообщений
    106
    Репутация:
    8 ±
    Держи как временное решение: http://pastebin.com/iDh1VPTA но будет баг с обновление 3д текста у пикапов, исправить легко если сделаешь по примеру который исправил пикапы. + еще лучше переписать это все, код очень плохой можно в несколько раз попроще сделать, или как вариант найти скриптера который реализует правильно за деньги

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

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    Код:
    new carid = !GetPlayerVehicleID(playerid);
    что это даёт кстате?
    [Anticheat]___Invisible Fly Hack
    [Anticheat]____Weapon/Ammo Hack
    [Function]______ResetPlayerWeaponSlot
    [Function]_______FIX_SetPlayerAmmo
    [ServerMod]______TDM | Zombie Apokalypse

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

    Статус
    Оффлайн
    Регистрация
    11.02.2016
    Адрес
    Геленджик
    Сообщений
    193
    Репутация:
    26 ±
    Цитата Сообщение от vovandolg Посмотреть сообщение
    Код:
    new carid = !GetPlayerVehicleID(playerid);
    что это даёт кстате?
    Если функция вернёт 0, то переменной присвоется 1, если вернет положительное число, то присвоется 0

  8. Пользователь сказал cпасибо:
    Dima_Tushin (13.09.2016)
  9. #8
    Аватар для Dima_Tushin
    Пользователь

    Статус
    Оффлайн
    Регистрация
    21.04.2013
    Адрес
    Россия
    Сообщений
    154
    Репутация:
    1 ±
    я сам сделаю! не нужен скриптер я кто :)

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

    Спасибо работает решено огромное спасибо)))

    Тему можно закрывать ну или удалить!

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

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

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

    Статус
    Оффлайн
    Регистрация
    11.02.2016
    Адрес
    Геленджик
    Сообщений
    193
    Репутация:
    26 ±
    Цитата Сообщение от vovandolg Посмотреть сообщение
    И зачем делать такую инверсию?)) Таким вроде чит мэйстеры занимаются чтобы их код не смогли читать
    Я тоже особо не понял смысла этого кода

 

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

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

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

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

Ваши права

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