GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Paul_Kellerman le 29 Février 2008, 23:52:15

Titre: CheckPoint
Posté par: Paul_Kellerman le 29 Février 2008, 23:52:15
Bonjours ,

Voila j'ai suivis le tuto de Urban sur les checkpoint très bien fait ...

comme j'avais dit je ne sais plus ou je développe un mode Prison Break.

Le principe est de faire /obtenir clef allé chercher la clef puis faire /evader pour vous evader ] ces 2 commande ajoutes des checkpoint différents.
Ils ont aussi la possibiliter de faire /obtenir gilet pour avoir un gilet pare balle...

Lors d'un test j'ai taper /obtenir clef j'ai été au checkpoint ensuite je ne suis pas rentré dedans j'ai fait /Evader ce qui met un autre checkpoint apres j'ai refait /obtenir clef et une fois rentré dans le checkpoint de /obtenir clef sa me donne l'effet de /evader je vous donne mon scripte aidez moi s'il vous plait.

public OnPlayerEnterCheckpoint(playerid) {
if (Tazer1)
{
if(pTazer[playerid] == 1){SendClientMessage(playerid,COLOR_RED,"Vous possédez déja une clef.");}
if(pTazer[playerid] == 0){pTazer[playerid] = 1;SendClientMessage(playerid,COLOR_YELLOW,"Vous avez obtenus Une clef de sortis.");}
DisablePlayerCheckpoint(playerid);
}

if (sortir)
{
    SetPlayerColor(playerid,COLOR_DBLUE);
    SetPlayerPos(playerid,1552.3749,-1675.4244,16.1953);
    SendClientMessage(playerid,COLOR_YELLOW,"Vous etes sortis de Fox River !!");
    GivePlayerMoney(playerid,100000);
DisablePlayerCheckpoint(playerid);
}

if (evader)
{
if(pTazer[playerid] == 1)
{
    SetPlayerColor(playerid,COLOR_RED);
    SetPlayerPos(playerid,1539.8716,-1662.1938,13.5495);
    SendClientMessage(playerid,COLOR_YELLOW,"Vous vous etes evader !!");
    SendClientMessageToAll(COLOR_RED,"Un prisonniers c'est evader de Fox River.");
    GivePlayerMoney(playerid,50000);
DisablePlayerCheckpoint(playerid);
}

else

{
SendClientMessage(playerid,COLOR_RED,"Vous n'avez pas la clef !!");
DisablePlayerCheckpoint(playerid);
}
}

if (gilet)
{
SetPlayerArmour(playerid,100);
SetPlayerHealth(playerid,100);
    SendClientMessage(playerid,COLOR_YELLOW,"Vous avez obtenus un gilet pare balle.");
    DisablePlayerCheckpoint(playerid);
}

if (prison)
{
SetPlayerPos(playerid,201.7346,1869.4531,13.1406);
    SendClientMessage(playerid,COLOR_YELLOW,"Vous etes retourné a la prison.");
    DisablePlayerCheckpoint(playerid);
}

return 1;
}

Merci d'avance.
Titre: Re : CheckPoint
Posté par: S!m le 01 Mars 2008, 03:13:38
salut,

tu n'as qu'a faire comme pour mon script de course, défini une zone pour chaque checkpoint.....

par contre, si tu as plus d'un checkpoint au même endroit, ça ne marche plus....il faut en changer de place

donc exemple:
new check[][4] = {
{check_X,check_y,check_z,size},
{check_X,check_y,check_z,size},
{check_X,check_y,check_z,size},
.....tu en met autant que tu veut...
{check_X,check_y,check_z,size}
};
ensuite
public OnPlayerEnterCheckpoint(playerid) {
if (IsPlayerInArea(playerid,check[0][0]+5,check[0][0]-5,check[0][1]+5,check[0][1]-5)){//tu augmente les 5 si tes checkpoints sont gros....
if(pTazer[playerid] == 1){SendClientMessage(playerid,COLOR_RED,"Vous possédez déja une clef.");}
if(pTazer[playerid] == 0){pTazer[playerid] = 1;SendClientMessage(playerid,COLOR_YELLOW,"Vous avez obtenus Une clef de sortis.");}
DisablePlayerCheckpoint(playerid);
}

if(IsPlayerInArea(playerid,check[1][0]+5,check[1][0]-5,check[1][1]+5,check[1][1]-5))
{
    SetPlayerColor(playerid,COLOR_DBLUE);
    SetPlayerPos(playerid,1552.3749,-1675.4244,16.1953);
    SendClientMessage(playerid,COLOR_YELLOW,"Vous etes sortis de Fox River !!");
    GivePlayerMoney(playerid,100000);
DisablePlayerCheckpoint(playerid);
}

if (IsPlayerInArea(playerid,check[2][0]+5,check[2][0]-5,check[2][1]+5,check[2][1]-5))
{
if(pTazer[playerid] == 1)
{
    SetPlayerColor(playerid,COLOR_RED);
    SetPlayerPos(playerid,1539.8716,-1662.1938,13.5495);
    SendClientMessage(playerid,COLOR_YELLOW,"Vous vous etes evader !!");
    SendClientMessageToAll(COLOR_RED,"Un prisonniers c'est evader de Fox River.");
    GivePlayerMoney(playerid,50000);
DisablePlayerCheckpoint(playerid);
}

else

{
SendClientMessage(playerid,COLOR_RED,"Vous n'avez pas la clef !!");
DisablePlayerCheckpoint(playerid);
}
}

if (IsPlayerInArea(playerid,check[3][0]+5,check[3][0]-5,check[3][1]+5,check[3][1]-5))
{
SetPlayerArmour(playerid,100);
SetPlayerHealth(playerid,100);
    SendClientMessage(playerid,COLOR_YELLOW,"Vous avez obtenus un gilet pare balle.");
    DisablePlayerCheckpoint(playerid);
}

if (IsPlayerInArea(playerid,check[4][0]+5,check[4][0]-5,check[4][1]+5,check[4][1]-5))
{
SetPlayerPos(playerid,201.7346,1869.4531,13.1406);
    SendClientMessage(playerid,COLOR_YELLOW,"Vous etes retourné a la prison.");
    DisablePlayerCheckpoint(playerid);
}

ou sinon, c'est un truc qui ressemble à ça...

et pour la fonction IsPlayerInArea, regarde dans la signature d'Urbanghetto ou cherche dans le showroom

bonne chance :) ;)

++Sim++
Titre: Re : CheckPoint
Posté par: Paul_Kellerman le 01 Mars 2008, 12:41:55
Ok , un grand merci.