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

    Статус
    Оффлайн
    Регистрация
    21.04.2013
    Адрес
    Россия
    Сообщений
    154
    Репутация:
    1 ±
    я не знаю как исправить:( кр4 не помогайте мне
    Разрабатываю свой собственный мод State RolePlay Mysql R38

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Ну так пробуй и учись. Думаешь, знания сами по себе появятся?
    Почитай о том, как работать с функцией printf. Посмотри на то, как я сделал логирование. А дальше просто найди создание переменных "X12,Y12, Z12" и начинай логировать все случаи, когда в них так или иначе изменяется значение. Таким образом ты найдёшь место, где данные "портятся". А дальше уже будем искать причину, по которой они портятся.

    Тут никто не желает бесплатно выполнять за тебя работу. Помочь с изучением языка или решением проблемы - пожалуйста. Но только если ты продемонстрируешь, что сам заинтересован в этом и прикладываешь к этому усилия, а не просто приходишь на форум и говоришь: "я вот не умею, поэтому сделайте за меня".
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  3. Пользователь сказал cпасибо:
    Dima_Tushin (19.06.2019)
  4. #13
    Аватар для Dima_Tushin
    Пользователь

    Статус
    Оффлайн
    Регистрация
    21.04.2013
    Адрес
    Россия
    Сообщений
    154
    Репутация:
    1 ±
    Понял спасибо сейчас все действия буду логировать
    Разрабатываю свой собственный мод State RolePlay Mysql R38

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

    Статус
    Оффлайн
    Регистрация
    21.04.2013
    Адрес
    Россия
    Сообщений
    154
    Репутация:
    1 ±
    нашел 2 ошибки:
    начнем пожалуй с таймера
    PHP код:
                if(SbotTime_2[i] > 0)
                {
                    
    SbotTime_2[i] --;
                    
    printf("SbotTime_2: %d"SbotTime_2[i]);
                    if(
    SbotTime_2[i] == 0)
                    {
                        new 
    randoms random(sizeof(SborFerm_1));
                        
    printf("SborFerm_1[0]: %f, SborFerm_1[1]: %f, SborFerm_1[2]: %f",SborFerm_1[randoms][0], SborFerm_1[randoms][1], SborFerm_1[randoms][2]);
                        if(
    IsPlayerInRangeOfPoint(i10.0SborFerm_1[randoms][0], SborFerm_1[randoms][1], SborFerm_1[randoms][2]))
                        {
                            new 
    carid GetPlayerVehicleID(i);
                            new 
    pID GetFarmCar(i);
                            new 
    string[30+MAX_PLAYER_NAME-2];
                            
    GetVehiclePos(caridX12Y12Z12);
                            static const 
    ferm[] = "Загруженно\n%d / 1000";
                            
    format(stringsizeof(string), fermFermInfo[f][fNytriCar][pID]);
                            
    //GetXYInFrontOfPlayer(i, X12, Y12, -3.0);
                            
    GetXYInFrontOfPlayer(iX12Y12, -3.0);
                            
    FermPickup[pID] = CreateDynamicPickup(1919723X12Y12Z12+3);
                            
    FermText3D[pID] = Create3DTextLabel(stringCOLOR_YELLOWX12Y12Z12+315.001);
                            
    SendClientMessage(iCOLOR_WHITE"{0289CC}Машина на месте. Теперь вы и ваши рабочие, могут загружать её");
                            
    SendClientMessage(iCOLOR_WHITE"{0289CC}Если решите завершить сбор урожая, /fpanel [9] завершить сбор урожая");
    //                            GetVehicleParamsEx(carid, engine, lights, alarm, doors, bonnet, boot, objective);
    //                            SetVehicleParamsEx(carid, VEHICLE_PARAMS_OFF, VEHICLE_PARAMS_OFF, alarm, doors, bonnet, boot, objective);
    //                            zavodis[i] = false;
                            
    DisablePlayerCheckpoint(i);//Удаляем чекпоинт!
                            
    printf("FERMA: 1 / %f, %f, %f\n"X12,Y12, -3.0);
                            return 
    1;
                        }
                    }
                } 
    после чего как поставил я автомобиль вылетело в логах
    PHP код:
    [21:26:58FERMA/ -1065.659179, -959.688354, -3.000000 
    все нормально это пикап сзади машины координаты
    теперь как только я взял пикап у машины у меня вылетело вот куда координаты для взятие куста
    PHP код:
    [21:27:37FERMA/ -996858624.000000, -999124160.000000129.208770 
    PHP код:
        if(pickupid == FermPickup[2] || pickupid == FermPickup[3])
        {
            for(new 
    0sizeof(FermInfo); f++)
            {
                if(
    PlayerKist[playerid] == true)
                {
                    new 
    pID GetFarmPickup(pickupid);
                    if(
    FermInfo[f][fNytriCar][pID] > 1000)//Если в машине меньше 1000 зерен то...
                    
    {
                        if(
    IsPlayerAttachedObjectSlotUsed(playerid3)) RemovePlayerAttachedObject(playerid3);
                        new 
    string[30+MAX_PLAYER_NAME-2];
                        
    FermInfo[f][fNytriCar][pID] = 1000;
                        
    SendClientMessage(playeridCOLOR_WHITE"Грузовик полон!");
                        static const 
    ferm_1[] = "Загруженно\n{ffffff}%d / 1000";
                        
    format(stringsizeof(string), ferm_1FermInfo[f][fNytriCar][pID]);
                        
    DisablePlayerCheckpoint(playerid);
                        
    PlayerKist[playerid] = false;
                    }
                    else
                    {
                        if(
    IsPlayerAttachedObjectSlotUsed(playerid3)) RemovePlayerAttachedObject(playerid3);
                        new 
    string[50+MAX_PLAYER_NAME-2];
                        
    FermInfo[f][fZaseeno] -= 5;//Отнимаем -5 засеености!
                        
    FermInfo[f][fNytriCar][pID] += 5;//Загрузили +5 зерен!
                        
    FermZarabotok[1] += FermInfo[f][fPayday];//Прибовляем заработок
                        
    static const ferm[] = "~b~count:~w~+%d$";
                        
    format(stringsizeof(string), fermFermZarabotok[1]);
                        
    GameTextForPlayer(playeridstring30001);
                        
    DisablePlayerCheckpoint(playerid);//Удалили чекпоинт
                        //GetXYInFrontOfPlayer(playerid, FarmX, FarmY, FarmZ);
                        //SetPlayerCheckpoint(playerid, FarmX+random(2)+3, FarmY+random(2)+3, FarmZ, 2.0);
                        
    GetXYInFrontOfPlayer(playeridX12Y12Z12);
                        
    X12+=random(2);
                        
    Y12+=random(2);
                        
    SetPlayerCheckpoint(playeridX12,Y12Z122.0);
                        
    printf("FERMA: 1 / %f, %f, %f\n"X12,Y12Z12);
                        static const 
    ferm_1[] = "Загруженно\n{ffffff}%d / 1000";
                        
    format(stringsizeof(string), ferm_1FermInfo[f][fNytriCar][pID]);
                        
    Update3DTextLabelText(FermText3D[pID], COLOR_YELLOWstring);
                        
    PlayerKist[playerid] = false;
                        if(
    gettime() - GetPVarInt(playerid"BotFarm") < 20)
                        {
                            if(
    GetPVarInt(playerid"BotCount") == 1)
                            {
                                if(
    GetPVarInt(playerid"FludTime") < gettime())
                                {
                                    static const 
    ferm_2[] = "<<Warning>> Игрок %s[%d]: Возможно бот фермер";
                                    
    format(stringsizeof(string), ferm_2PlayerInfo[playerid][pName], playerid);
                                    
    SendAdminMessage(COLOR_REDstring);
                                    
    SetPVarInt(playerid"BotCount"0);
                                    
    SetPVarInt(playerid,"FludTime",gettime()+10);
                                }
                            }
                        }
                        
    SetPVarInt(playerid"BotFarm"gettime());
                        
    SetPVarInt(playerid"BotCount"GetPVarInt(playerid"BotCount") +1);
                        
    PlayerCheck[1] = true;
                    }
                }
                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(playerid, FarmX, FarmY, FarmZ);
                    //SetPlayerCheckpoint(playerid, FarmX+random(2), FarmY+random(2), FarmZ, 2.0);
                    
    GetXYInFrontOfPlayer(playeridX12Y12Z12);
                    
    X12+=random(2);
                    
    Y12+=random(2);
                    
    SetPlayerCheckpoint(playeridX12,Y12Z122.0);
                    
    printf("FERMA: 1 / %f, %f, %f\n"X12,Y12Z12);
                    
    PlayerKist[playerid] = false;
                    
    PlayerCheck[1] = true;
                    return 
    1;
                }
            } 
    и теперь 2 ошибка это сами автомобили кары фермы
    например:
    Farm0: есть 2 кары у них когда садишься вылезает диалог
    PHP код:
    ShowPlayerDialog(playerid39DIALOG_STYLE_MSGBOX"\n""Вы хотите начать сбор урожая?""Да""Нет"); 
    потом как выхожу и опять сажусь у меня вылезает вот такой диалог
    PHP код:
    ShowPlayerDialog(playerid40DIALOG_STYLE_MSGBOX"\n""Вы хотите завершить сбор урожая?""Да""Нет"); 
    теперь переходим на Farm1:
    как только я сажусь в машину любую фермы 1 то у меня вылезает диалог
    PHP код:
    ShowPlayerDialog(playerid39DIALOG_STYLE_MSGBOX"\n""Вы хотите начать сбор урожая?""Да""Нет"); 
    Все правильно но как только я вылезаю и сажусь обратно у меня должен вылетать вот этот диалог
    PHP код:
    ShowPlayerDialog(playerid40DIALOG_STYLE_MSGBOX"\n""Вы хотите завершить сбор урожая?""Да""Нет"); 
    А на самом деле опять появляется вот этот
    PHP код:
    ShowPlayerDialog(playerid39DIALOG_STYLE_MSGBOX"\n""Вы хотите начать сбор урожая?""Да""Нет"); 
    Может суть ошибки вообще в автомобилях? незнаю вот что я заметил при выдачи логов
    Разрабатываю свой собственный мод State RolePlay Mysql R38

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

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

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

    Steve Pavlina

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

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

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

    Решил вопрос вот таким действием

    в пикапе убрал проверку
    PHP код:
    GetXYInFrontOfPlayer(playeridXYZ); 
    и заменил проверку позиции на игрока и поставил рандом чекпоинт ГОТОВО все заработало мне кажется дело было в функции
    PHP код:
    GetXYInFrontOfPlayer 
    но странно почему на ферме 0 все работало а на другой нет вот это будет для меня загадка)
    Ладно спасибо DeimoS что помогал мне если что обращусь еще)
    Последний раз редактировалось Dima_Tushin; 19.06.2019 в 19:50.
    Разрабатываю свой собственный мод State RolePlay Mysql R38

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

    Статус
    Оффлайн
    Регистрация
    21.04.2013
    Адрес
    Россия
    Сообщений
    154
    Репутация:
    1 ±
    помогите хочу сделать проверку на ID фермы.
    когда купил ферму 0 например еду на ферму 1 и сажусь спокойно в машины фермы 1.
    как сделать проверку?
    Разрабатываю свой собственный мод State RolePlay Mysql R38

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

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

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

    Steve Pavlina

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

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

    тут я сделал проверки на владельца ферм,зама,фермера и если из других фермеров захочет угнать не получиться))
    PHP код:
            if(carid >= FermCarID[3] && carid <= FermCarID[4])
            {
                if(
    JobGO[playerid] == false)
                {
                    
    SendClientMessage(playeridCOLOR_WHITE"Вы не Фермер/Владелец/Заместитель!");
                    
    RemovePlayerFromVehicle(playerid);
                    return 
    1;
                }
                for(new 
    0sizeof(FermInfo); f++)
                {
                    switch(
    PlayerInfo[playerid][pFarm])
                    {
                        case 
    1://проверка на владельца
                        
    {
                            if(
    FarmJob[playerid] == false)
                            {
                                
    ShowPlayerDialog(playerid52DIALOG_STYLE_MSGBOX"\n""Вы хотите начать сбор урожая?""Да""Нет");
                                return 
    1;
                            }
                            else if(
    FarmJob[playerid] == true)
                            {
                                
    ShowPlayerDialog(playerid53DIALOG_STYLE_MSGBOX"\n""Вы хотите завершить сбор урожая?""Да""Нет");
                                return 
    1;
                            }
                            switch(
    PlayerInfo[playerid][pFarmJob])//проверка на фермера/зама
                            
    {
                                case 
    12:
                                {
                                    if(
    FarmJob[playerid] == false)
                                    {
                                        
    ShowPlayerDialog(playerid52DIALOG_STYLE_MSGBOX"\n""Вы хотите начать сбор урожая?""Да""Нет");
                                        return 
    1;
                                    }
                                    else if(
    FarmJob[playerid] == true)
                                    {
                                        
    ShowPlayerDialog(playerid53DIALOG_STYLE_MSGBOX"\n""Вы хотите завершить сбор урожая?""Да""Нет");
                                        return 
    1;
                                    }
                                }
                                default:
                                {
                                    
    SendClientMessage(playeridCOLOR_WHITE"Вы не Фермер/Владелец/Заместитель!");
                                    
    RemovePlayerFromVehicle(playerid);
                                    return 
    1;
                                }
                            }
                        }
                        default:
                        {
                            
    SendClientMessage(playeridCOLOR_WHITE"Вы не Фермер/Владелец/Заместитель!");
                            
    RemovePlayerFromVehicle(playerid);
                            return 
    1;
                        }
                    }
                }
                return 
    1;
            } 
    мне кажется тут по максимуму все оптимизировано главное что работает и я добился чего хотел)
    Последний раз редактировалось Dima_Tushin; 22.06.2019 в 00:19.
    Разрабатываю свой собственный мод State RolePlay Mysql R38

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    PHP код:
    if(FarmJob[playerid] == false)
    else if(
    FarmJob[playerid] == true
    Лучше делать вот так:
    PHP код:
    if(FarmJob[playerid] == false)
    else 
    Смысл получится тот же, но в твоём варианте сервер будет два раза получать значение FarmJob, а в моём - один.

    И не совсем понятно зачем у тебя там цикл, если ты, в итоге, никак с ним не работаешь, а определяешь всё через switch.

    Код не идеален в плане оптимизации, но раз работает, то и не парься пока. Как опыта наберёшься, сможешь оптимизировать.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

 

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

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

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

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

Ваши права

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