GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: [StAfF]MaN le 28 Mai 2008, 17:42:52
-
Salut tout le monde ^^ Voila j'ai créé un petit mode counter, qui n'est pas fini, mais voila, j'ai un prob quand le player terroriste qui a la bombe rentr dans la zone de bombardement :
public OnPlayerCommandText(playerid, cmdtext[])
{
new name[MAX_PLAYER_NAME];
new texte[256];
new erreur[256];
if (strcmp(cmdtext, "/aide", true)==0)
{
SendClientMessage(playerid, COLOR_YELLOW, "Les Terrorists doivent planter la bombe à l'endroit prévu et tuer les Anti-T");
SendClientMessage(playerid, COLOR_YELLOW, "Les Anti-Terroristes doivent défendre la site de bombe et tuer les Terroristes");
return 1;
}
else if (strcmp(cmdtext, "/lost", true) ==0)
{
if(gTeam[playerid] == TEAM_CT)
{
GetPlayerName(playerid, name, sizeof(name));
format(texte, sizeof(texte), "le player %s est entré dans la map de Lost Pueblo", name);
SendClientMessageToAll(COLOR_YELLOW, texte);
SendClientMessageToAll(COLOR_ORANGE, "pour rejoindre le player : /lost");
SendClientMessage(playerid, COLOR_ORANGE, "Protège la zone de bombardement !!");
SetPlayerPos(playerid, -1265.6532,2425.5444,86.1919);
lost[playerid] = 1;
return 1;
}else{
if(gTeam[playerid] == TEAM_T)
{
GetPlayerName(playerid, name, sizeof(name));
format(texte, sizeof(texte), "le player %s est entré dans la map de Lost Pueblo)", name);
SendClientMessageToAll(COLOR_YELLOW, texte);
SendClientMessageToAll(COLOR_ORANGE, "pour rejoindre le player : /lost");
SendClientMessage(playerid, COLOR_ORANGE, "Dépose la bombe dans la zone de bombardement !!");
SetPlayerPos(playerid, -1329.1263,2573.4634,82.2715);
GangZoneShowForAll(gang2, 0xFF00004E);
lost[playerid] = 1;
}else{
if(gTeam[playerid] == TEAM_T_BOMB)
{
GetPlayerName(playerid, name, sizeof(name));
format(texte, sizeof(texte), "le player %s est entré dans la map de Lost Pueblo)", name);
SendClientMessageToAll(COLOR_YELLOW, texte);
SendClientMessageToAll(COLOR_ORANGE, "pour rejoindre le player : /lost");
SendClientMessage(playerid, COLOR_ORANGE, "Dépose la bombe dans la zone de bombardement !!");
SetPlayerPos(playerid, -1329.1263,2573.4634,82.2715);
GangZoneShowForAll(gang2, 0xFF00004E);
lost[playerid] = 1;
bomb[playerid] = 1;
}
return 1;
}
}
}
format(erreur, sizeof (erreur), "Commande invalide",cmdtext);
return SendClientMessage(playerid,COLOR_RED, erreur);
}
public OnPlayerEnterGangZone(playerid) // public que j'ai créé
{
if(IsPlayerInArea(playerid,-1337.3512, 2536.4910, -1283.4917, 2540.2971))
if(bomb[playerid] == 1)
{
SetTimer("counter", 2000, 1);
}
return 1;
}
public counter()
{
new playerid;
new Float: x, Float: y, Float: z;
GameTextForAll("~r~Bombe en place !!", 2000, 3);
SendClientMessageToAll(COLOR_RED,"La bombe explosera dans 1 minute !!");
GetPlayerPos(playerid, x, y, z);
bomb[playerid] = 0;
CreateObject(1252, x, y, z, 0.5, 0.5, 0.5);
SetTimer("explose", 60000, 1);
return 1;
}
public explose()
{
new Float: x, Float: y, Float: z;
new playerid;
DestroyObject(1252);
GetPlayerPos(playerid, x, y, z);
CreateExplosion( x+1, y+2, z+0.5, 12, 10.0);
return 1;
}
Voila, le player qui a la bombe rentre dans la zone, mais rien ne se passe .... Vous n'avez pas une idée ? ^^
-
Ne serai-ce pas un parti du mode counter deja créé ??
++
nikko
-
je m'en suis inspiré c'est vrai, mais tout ce qu'il y a dans OnPlayerCommandtext c'est moi qui l'ai fais ;) Le reste j'ai pioché des idées par ci pas là mais bon, ça fonctionne pas trop :s
-
Mais quest ce qui change du monde counter normal ???
++
nikko
-
Bah en faite, on pourra choisir la map, et le mode normale fonctionne pas chez moi, il bug dès que je rentre en jeu, alors j'en créé un moi même ^^
-
Ah okkkk
++
nikko
-
oui et c'est pas tout, dans le mode original, c'est des checkpoint qui permettent de déposer la bombe, or la, c'est une zone, ce qui fait que la bombe peut être placée a un endroit différent a chaque partie ;)
mais voila, il ne fonctionne pas et je voudrais de l'aide !!!! Si ça ne vous dérange pas de m'aider ;)
merci a++ ^^
-
T'as une erreur d'accolades déjà je pense...
public OnPlayerEnterGangZone(playerid)
{
if(IsPlayerInArea(playerid,-1337.3512, 2536.4910, -1283.4917, 2540.2971))
{
if(bomb[playerid] == 1)
{
SetTimer("counter", 2000, 1);
}
}
return 1;
}
-
Non y avait pas d'erreur, compilation Ok même sans l'accolade, de plus, avant que je la retire pour essayer elle y était, donc ça ne change rien ... Merci d'avoir essayé ^^
-
Je UP ce poste car je voudrais bien savoir comment faire quand même ^^ Est ce quelqu'un, comme urban, puisque je me suis servis de sa fonction IsPlayerInAera, pourrait m'aider a trouver comment je peut faire ce que je veut faire ?? :happy
-
Jpense que tu devrait plutot utiliser un PlayerToPoint qui prend pas un "cube" mais un cercle sans limite vers le haut. Ca devrait mieu marcher.
-
Ouis mais je veut pas mettre de checkpoint... Je veut que ce soit dans une zone ^^
-
je re UP ^^ Désolé mais j'aimerais vraiment savoir comment faire ça pour une zone et pas un PlayerToPoint :s
Vous pouvez m'aider ?? (je me suis servis du code a urban IsPlayerInAera)
else if (strcmp(cmdtext, "/lost", true) ==0)
{
if(gTeam[playerid] == TEAM_CT)
{
GetPlayerName(playerid, name, sizeof(name));
format(texte, sizeof(texte), "le player %s est entré dans la map de Lost Pueblo", name);
SendClientMessageToAll(COLOR_YELLOW, texte);
SendClientMessageToAll(COLOR_ORANGE, "pour rejoindre le player : /lost");
SendClientMessage(playerid, COLOR_ORANGE, "Protège la zone de bombardement !!");
SetPlayerPos(playerid, -1265.6532,2425.5444,86.1919);
lost[playerid] = 1;
return 1;
}else{
if(gTeam[playerid] == TEAM_T)
{
GetPlayerName(playerid, name, sizeof(name));
format(texte, sizeof(texte), "le player %s est entré dans la map de Lost Pueblo", name);
SendClientMessageToAll(COLOR_YELLOW, texte);
SendClientMessageToAll(COLOR_ORANGE, "pour rejoindre le player : /lost");
SendClientMessage(playerid, COLOR_ORANGE, "Dépose la bombe dans la zone de bombardement !!");
SetPlayerPos(playerid, -1329.1263,2573.4634,82.2715);
GangZoneShowForAll(gang2, 0xFF00004E);
lost[playerid] = 1;
}else{
if(gTeam[playerid] == TEAM_T_BOMB)
{
GetPlayerName(playerid, name, sizeof(name));
format(texte, sizeof(texte), "le player %s est entré dans la map de Lost Pueblo", name);
SendClientMessageToAll(COLOR_YELLOW, texte);
SendClientMessageToAll(COLOR_ORANGE, "pour rejoindre le player : /lost");
SendClientMessage(playerid, COLOR_ORANGE, "Dépose la bombe dans la zone de bombardement !!");
SetPlayerPos(playerid, -1329.1263,2573.4634,82.2715);
GangZoneShowForAll(gang2, 0xFF00004E);
lost[playerid] = 1;
bomb[playerid] = 1;
return 1;
}
}
}
}
public OnPlayerEnterGangZone(playerid)
{
if(gang2)
{
if(IsPlayerInArea(playerid, -1283.4917, -1337.3512, 2536.4910, 2540.2971))
{
if(bomb[playerid] == 1)
{
if(ttard[playerid] == 1)
{
SetTimer("counter", 2000, 1);
SendClientMessage(playerid, COLOR_RED, "lol");
return 1;
}
}
}
}
return 1;
} j'ai créé ce public
public counter()
{
new playerid;
new Float: x, Float: y, Float: z;
GameTextForAll("~r~Bombe en place !!", 2000, 1);
SendClientMessageToAll(COLOR_RED,"La bombe explosera dans 1 minute !!");
GetPlayerPos(playerid, x, y, z);
bomb[playerid] = 0;
ttard[playerid] = 0;
CreateObject(1252, x, y, z, 0.5, 0.5, 0.5);
SetTimer("explose", 60000, 1);
return 1;
}
public explose()
{
new Float: x, Float: y, Float: z;
new playerid;
DestroyObject(1252);
GetPlayerPos(playerid, x, y, z);
CreateExplosion( x+1, y+2, z+0.5, 12, 10.0);
return 1;
}
public mort()
{
new playerid;
if(lost[playerid] == 1)
{
TogglePlayerSpectating(playerid, 0);
gSpectateID[playerid] = INVALID_PLAYER_ID;
gSpectateType[playerid] = ADMIN_SPEC_TYPE_NONE;
SetPlayerPos(playerid, -1329.1263,2573.4634,82.2715);
}
return 1;
}
^^ Merci d'avance ;)