Проблема со стримерским чекпоинтом
#1

PHP код:
public OnPlayerEnterDynamicRaceCP(playeridcheckpointid)
{
    
DisablePlayerRaceCheckpoint(playerid);
    
DestroyDynamicRaceCP(checkpointid);
    if(
checkpointid == AppleFarm[1][AppleCP][20])DestroyDynamicRaceCP(AppleFarm[1][AppleCP][20]),AppleFarm[1][AppleCP][21] = CreateDynamicRaceCP(31483.0815,-114.0174,48.0954,1428.7725,-100.6920,50.39658.000playerid200),SCM(playerid,-1,"Срабатывает 20");
    else if(
checkpointid == AppleFarm[1][AppleCP][21])DestroyDynamicRaceCP(AppleFarm[1][AppleCP][21]),AppleFarm[1][AppleCP][22] = CreateDynamicRaceCP(31428.7725,-100.6920,50.3965,1417.7074,-67.7608,46.28468.000playerid200);
    else if(
checkpointid == AppleFarm[1][AppleCP][22])DestroyDynamicRaceCP(AppleFarm[1][AppleCP][22]),AppleFarm[1][AppleCP][23] = CreateDynamicRaceCP(31417.7074,-67.7608,46.2846,1436.2653,-53.9990,46.06538.000playerid200);
    else if(
checkpointid == AppleFarm[1][AppleCP][23])DestroyDynamicRaceCP(AppleFarm[1][AppleCP][23]),AppleFarm[1][AppleCP][24] = CreateDynamicRaceCP(31436.2653,-53.9990,46.0653,1455.6155,-38.3150,42.58688.000playerid200);
    else if(
checkpointid == AppleFarm[1][AppleCP][24])DestroyDynamicRaceCP(AppleFarm[1][AppleCP][24]),AppleFarm[1][AppleCP][25] = CreateDynamicRaceCP(31455.6155,-38.3150,42.5868,1475.0677,-45.2246,49.91468.000playerid200);
    else if(
checkpointid == AppleFarm[1][AppleCP][25])DestroyDynamicRaceCP(AppleFarm[1][AppleCP][25]),AppleFarm[1][AppleCP][26] = CreateDynamicRaceCP(31475.0677,-45.2246,49.9146,1457.6677,-78.1288,40.20918.000playerid200);
    else if(
checkpointid == AppleFarm[1][AppleCP][26])DestroyDynamicRaceCP(AppleFarm[1][AppleCP][26]),AppleFarm[1][AppleCP][27] = CreateDynamicRaceCP(31457.6677,-78.1288,40.2091,1553.8613,-50.3115,21.04418.000playerid200);
    else if(
checkpointid == AppleFarm[1][AppleCP][27])DestroyDynamicRaceCP(AppleFarm[1][AppleCP][27]),AppleFarm[1][AppleCP][28] = CreateDynamicRaceCP(41553.8613,-50.3115,21.0441,1553.8613,-50.3115,21.04418.000playerid200);
    else if(
checkpointid == AppleFarm[1][AppleCP][28])
    {
        
SCM(playerid,-1,"Вы закончили распиление яблунь. Получили 4 зарплаты");
        
Player[playerid][LastJobEx] +=4;
        
AppleFarm[1][AppleDobr] -= 1;
        
AppleFarm[1][AppleMaterial] = 1000;
    }

Есть код. Но с ним твориться неведомое.
Сначала первый пикап берется со второго раза. Второй пикап вообще берется бесконечно раз.
Видел в поиске несколько людей с такими же проблемами? Может дело в третьем типе чекпоинта? Может баг в нём?
Reply
#2

А зачем ты их удаляешь при наступлении, а потом опять удаляешь ?
Reply
#3

Я по разному пробовал
Reply
#4

Quote:
Originally Posted by Aizov
Посмотреть сообщение
Я по разному пробовал
Покажи создание первого чекпойнта и объявление AppleFarm
Не код а гуано, можно иначе сделать.
Reply
#5

PHP код:
if(vehicleid == AppleFarm[1][Car][4])
    {
        if(
Player[playerid][LastJob] != 3)
        {
            if(
Player[playerid][pLicense] !=1)return SCM(playerid,-1,"У вас нету лицензии на полёты"),RemovePlayerFromVehicle(playerid);
            
SCM(playerid,-1,"Вы начали распиливать удобрение. Следуйте за указаной в GPS точке");
            
AppleFarm[1][AppleCP][20] = CreateDynamicRaceCP(31511.5688,-91.8408,48.54001483.0815,-114.0174,48.09548.000playerid200);
        }
        else 
SCM(playerid,-1,"Вы не работаете на Яблочной ферме");
    } 
Объявление. В enum Просто AppleCP[40]
Reply
#6

В общем, код гуано, логику так и не проследил, ошибка в очистке AppleFarm[1][AppleCP][хх]

Переделал всё, в некоторых местах сделай допил. Не забывай чистить переменные AppleCP_State и Job
Сделано с учётом того, что может быть несколько ферм (маршрутов).
PHP код:
#include <a_samp>
#define MAX_APPLE_FARM 2
#define MAX_APPLE_FARM_CP 16
new AppleFarmCPCount[MAX_APPLE_FARM],
    
AppleFarmCPT[MAX_APPLE_FARM][MAX_APPLE_FARM_CP],
    
Float:AppleFarmCPX[MAX_APPLE_FARM][MAX_APPLE_FARM_CP],
    
Float:AppleFarmCPY[MAX_APPLE_FARM][MAX_APPLE_FARM_CP],
    
Float:AppleFarmCPZ[MAX_APPLE_FARM][MAX_APPLE_FARM_CP],
    
Float:AppleFarmCPRX[MAX_APPLE_FARM][MAX_APPLE_FARM_CP],
    
Float:AppleFarmCPRY[MAX_APPLE_FARM][MAX_APPLE_FARM_CP],
    
Float:AppleFarmCPRZ[MAX_APPLE_FARM][MAX_APPLE_FARM_CP];
stock CreateAppleFarmCP(farmtFloat:xFloatyFloatzFloat:rxFloatryFloatrz)
{
    
AppleFarmCPRZ[farm][AppleFarmCPCount[farm]] = rz;
    
AppleFarmCPRY[farm][AppleFarmCPCount[farm]] = ry;
    
AppleFarmCPRX[farm][AppleFarmCPCount[farm]] = rx;
    
AppleFarmCPZ[farm][AppleFarmCPCount[farm]] = z;
    
AppleFarmCPY[farm][AppleFarmCPCount[farm]] = y;
    
AppleFarmCPX[farm][AppleFarmCPCount[farm]] = x;
    
AppleFarmCPT[farm][AppleFarmCPCount[farm]] = t;
    return 
AppleFarmCPCount[farm]++;
}
stock InitAppleFarmCP()// <<<<<<<<<<<<<<<<<<<<<< GameModeInit
{
    
//... your code
    //====
    
AppleFarmCPCount[1] = 0;
    
CreateAppleFarmCP(1,    3,    1511.5688,    -91.8408,    48.5400,    1483.0815,    -114.0174,    48.0954),
    
CreateAppleFarmCP(1,    3,    1483.0815,    -114.0174,    48.0954,    1428.7725,    -100.6920,    50.3965),
    
CreateAppleFarmCP(1,    3,    1428.7725,    -100.6920,    50.3965,    1417.7074,    -67.7608,    46.2846),
    
CreateAppleFarmCP(1,    3,    1417.7074,    -67.7608,    46.2846,    1436.2653,    -53.9990,    46.0653),
    
CreateAppleFarmCP(1,    3,    1436.2653,    -53.9990,    46.0653,    1455.6155,    -38.3150,    42.5868),
    
CreateAppleFarmCP(1,    3,    1455.6155,    -38.3150,    42.5868,    1475.0677,    -45.2246,    49.9146),
    
CreateAppleFarmCP(1,    3,    1475.0677,    -45.2246,    49.9146,    1457.6677,    -78.1288,    40.2091),
    
CreateAppleFarmCP(1,    3,    1457.6677,    -78.1288,    40.2091,    1553.8613,    -50.3115,    21.0441),
    
CreateAppleFarmCP(1,    4,    1553.8613,    -50.3115,    21.0441,    1553.8613,    -50.3115,    21.0441);
    
//====
    //... your code
}
public 
OnPlayerEnterDynamicRaceCP(playeridcheckpointid)
{
    
#define FarmID ???// <<<<<<<<<<<<<<<<<<<<<< your mem
    #define State Player[playerid][AppleCP_State][FarmID]// <<<<<<<<<<<<<<<<<<<<<< new mem on the ENUM
    
if(checkpointid == AppleFarm[FarmID][AppleCP])
    {
        
DestroyDynamicRaceCP(AppleFarm[FarmID][AppleCP]);
        
AppleFarm[FarmID][AppleCP] = -1//Забыл
        
if(State == AppleFarmCPCount[FarmID])
        {
            
Player[playerid][LastJobEx] += 4;
            
AppleFarm[FarmID][AppleDobr] -= 1;
            
AppleFarm[FarmID][AppleMaterial] = 1000;
            
State 0;
            return 
SCM(playerid, -1"Вы закончили удобрять яблони. Вы получили 4 опыта за проделанную работу."); 
        }
        else
        {
            
AppleFarm[FarmID][AppleCP] = CreateDynamicRaceCP
            
(
                
AppleFarmCPT[FarmID][State],
                
AppleFarmCPX[FarmID][State],
                
AppleFarmCPY[FarmID][State],
                
AppleFarmCPZ[FarmID][State],
                
AppleFarmCPRX[FarmID][State],
                
AppleFarmCPRY[FarmID][State],
                
AppleFarmCPRZ[FarmID][State],
                
8.000playerid200.0
            
);
            
State++;
            return 
SCM(playerid, -1"Летите к следующей метке.");
        }
    }
    
#undef State
    #undef FarmID
}
//======================
#define FarmID ???// <<<<<<<<<<<<<<<<<<<<<< your mem
#define State Player[playerid][AppleCP_State][FarmID]// <<<<<<<<<<<<<<<<<<<<<< new mem on the ENUM
if(vehicleid == AppleFarm[FarmID][Car][4])
{
    if(
Player[playerid][LastJob] != 3)
    {
        if(
Player[playerid][pLicense] != 1)
        {
            
RemovePlayerFromVehicle(playerid);
            return 
SCM(playerid, -1"У вас нету лицензии на полёты");
        }
        
        if(
State)
        {
            return 
SCM(playerid, -1"Вы всё ещё выполняете эту работу!");
        }
        
        
AppleFarm[FarmID][AppleCP] = CreateDynamicRaceCP
        
(
            
AppleFarmCPT[FarmID][State],
            
AppleFarmCPX[FarmID][State],
            
AppleFarmCPY[FarmID][State],
            
AppleFarmCPZ[FarmID][State],
            
AppleFarmCPRX[FarmID][State],
            
AppleFarmCPRY[FarmID][State],
            
AppleFarmCPRZ[FarmID][State],
            
8.000playerid200.0
        
);
        
State 1;
        return 
SCM(playerid, -1"Вы начали распылять удобрение. Следуйте к точке указанной в GPS.");
    }
    else
    {
        return 
SCM(playerid, -1"Вы не работаете на яблочной ферме");
    }
}
#undef FarmID
#undef State
//====================== 
Подправил.
Reply
#7

Спасибо. Посмотрим. Но я уже выбрал позицию использовать стандартные чеки. С ними все вроде путём
Reply
#8

Quote:
Originally Posted by Aizov
Посмотреть сообщение
Спасибо. Посмотрим. Но я уже выбрал позицию использовать стандартные чеки. С ними все вроде путём
Проблема в коде а не в чекпойнтах.
Reply
#9

Я просто обнулил AppleFarm[1][AppleCP][Чекпоинт который используется] = 0;
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)