SA-MP Forums Archive
SetPlayerCheckpoint - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: SetPlayerCheckpoint (/showthread.php?tid=514232)



SetPlayerCheckpoint - AroseKhanNiazi - 20.05.2014

SetPlayerCheckpoint Not Working
i removed the dynamic checkpoints in the streamer
got the streamer include no error / warning in compiling
pawn Код:
enum hInfo
{
    Float:h_cpx,
    Float:h_cpy,
    Float:h_cpz,
    h_cpsize,
    h_cptype,
    h_cpbustype,
    h_cpmarker,
    Float:h_cp_radius,
    Float:h_entry_x,
    Float:h_entry_y,
    Float:h_entry_z,
    Float:h_entry_a,
    h_entry_i,
    h_entry_w,
    Float:h_exit_x,
    Float:h_exit_y,
    Float:h_exit_z,
    Float:h_exit_a,
    h_HouseIntName[256],
    h_HouseExtName[256]

};
new pInfo[MAX_PLAYERS][PlayerInfo];
new HouseInfo[][hInfo] =
{
    {2463.996337, 2244.893066, 10.820312,       2, CP_TYPE_ENTRY,   BUS_TYPE_BANK,  52, 30.0        ,2309.408447, -15.663831, 26.749565, 277.688171     ,0,310  ,2463.949462, 2241.169433, 10.820312, 179.010665,   "The Bank" ,"Roca Escalante"},
    {2306.059814, -16.113458, 26.749565,        2, CP_TYPE_EXIT,    0,  0, 4.0   ,0.0,0.0,0.0,0.0       ,0,0    ,0.0,0.0,0.0,0.0,   "Bank Exit" ,"Exterior N/A"}
};
pawn Код:
forward checkpointUpdate();
public checkpointUpdate()
{
    for(new i; i < GetMaxPlayers(); i++)
    {

        if(IsPlayerConnected(i) && pInfo[i][pSpawn] == 1)
        {


                        new j = GetClosestCheckpoint(i);


                        if (j > 0)
                        {

                        if(pInfo[i][pCheckpoint] != j)
                        {

                        pInfo[i][pCheckpoint] = j;
                        SetPlayerCheckpoint(i,HouseInfo[j][h_cpx], HouseInfo[j][h_cpy], HouseInfo[j][h_cpz],HouseInfo[j][h_cpsize]);


                        //format(string, sizeof(string), "Checkpoint %d",j);
                        //SendClientMessage(i, COLOR_YELLOW, string);
                        }

                        }else{

                        if (pInfo[i][pCheckpoint] != 0)
                        {
                        pInfo[i][pCheckpoint] = 0;
                        DisablePlayerCheckpoint(i);
                        }

                        }

        }//End Of For connection and spawn check

    }//End Of For Loop

    //return 1;
}
ongamemodeinit
pawn Код:
CheckPointTimer = SetTimerEx("checkpointUpdate", 1000, 1, "d", "d");



Re: SetPlayerCheckpoint - AroseKhanNiazi - 21.05.2014

How can i edit an plugin want to remove the dymnic cp from stremer


Re: SetPlayerCheckpoint - Threshold - 21.05.2014

The streamer won't interfere with SetPlayerCheckpoint. So there's no need to edit it, and editing plugins/includes isn't recommended as they can become unstable if they don't have the right data.

And firstly, you don't need to use SetTimerEx if the function doesn't even use parameters..
pawn Код:
CheckPointTimer = SetTimer("checkpointUpdate", 1000, true);



Re: SetPlayerCheckpoint - AroseKhanNiazi - 21.05.2014

Still not working


Re: SetPlayerCheckpoint - MacT - 21.05.2014

Maybe you try using IsPlayerInRangeOfPoint and also make automatic dialog, it's just suggestion for you. I try later repair your bugged script.


Re: SetPlayerCheckpoint - AroseKhanNiazi - 21.05.2014

pawn Код:
stock GetClosestCheckpoint(playerid)
{
    //new Float:dis = 20.0;
    new Float:tmpdis;
    new cpid = 0;
    for(new i = 0; i < sizeof(HouseInfo); i++)
    {
            GetDistanceToPoint(playerid,HouseInfo[i][h_cpx], HouseInfo[i][h_cpy], HouseInfo[i][h_cpz],tmpdis);
            if(tmpdis < HouseInfo[i][h_cp_radius])
            {
                //dis = tmpdis;
                cpid = i;
            }
    }
    return cpid;
}
pawn Код:
stock GetDistanceToPoint(playerid,Float:x,Float:y,Float:z,&Float:dis)
{
    new Float:x1,Float:y1,Float:z1;
    GetPlayerPos(playerid,x1,y1,z1);
    dis=floatsqroot(floatpower(floatabs(floatsub(x,x1)),2)+floatpower(floatabs(floatsub(y,y1)),2)+floatpower(floatabs(floatsub(z,z1)),2));
    return 1;
}
some other stocks that i used in it


Re: SetPlayerCheckpoint - Threshold - 22.05.2014

pawn Код:
forward checkpointUpdate();
public checkpointUpdate()
{
    for(new i = 0; i < GetMaxPlayers(); i++)
    {
        if(!IsPlayerConnected(i)) continue;
        if(!pInfo[i][pSpawn]) continue;
        new j = GetClosestCheckpoint(i);
        if(j)
        {
            if(pInfo[i][pCheckpoint] != j)
            {
                pInfo[i][pCheckpoint] = j;
                SetPlayerCheckpoint(i, HouseInfo[j][h_cpx], HouseInfo[j][h_cpy], HouseInfo[j][h_cpz], HouseInfo[j][h_cpsize]);
                //format(string, sizeof(string), "Checkpoint %d",j);
                //SendClientMessage(i, COLOR_YELLOW, string);
            }
        }
        else
        {
            if(pInfo[i][pCheckpoint])
            {
                pInfo[i][pCheckpoint] = 0;
                DisablePlayerCheckpoint(i);
            }
        }
    }
    return 1;
}

stock GetClosestCheckpoint(playerid)
{
    new Float:tmpdis, Float:curdis = 9000.0, cpid = 0;
    for(new i = 0; i < sizeof(HouseInfo); i++)
    {
        GetDistanceToPoint(playerid, HouseInfo[i][h_cpx], HouseInfo[i][h_cpy], HouseInfo[i][h_cpz], tmpdis);
        if(tmpdis < HouseInfo[i][h_cp_radius])
        {
            if(tmpdis < curdis)
            {
                curdis = tmpdis;
                cpid = i;
            }
        }
    }
    return cpid;
}
I don't actually know if this will help, but this looks right to me.


Re: SetPlayerCheckpoint - AroseKhanNiazi - 22.05.2014

didn't work as i said streamer might be interfering ??


Re: SetPlayerCheckpoint - Threshold - 22.05.2014

You may just need to use CreateDynamicCP for the specific playerid, then use OnPlayerEnterDynamicCP.


Re: SetPlayerCheckpoint - AroseKhanNiazi - 22.05.2014

So How Can I Use the same way to do that because these are 3 Checkpoints but i am gonna add more and it will be too long this way