Aller au contenu

Faire Une Commande à Un Endroit Précis


thomasleroi

Messages recommandés

Bonjour, alors je cherche depuis un petit moment mais je trouve pas...

Comment faut-il faire pour qu'une commande marche que si on est à une position précise ?

 

 if(strcmp(cmd, "/satellite-on", true) == 0)
{
    SendClientMessage(playerid, COLOR_RED, "Connection au sattelite en cours...");
    SendClientMessage(playerid, COLOR_RED, "...CHARGEMENT...");
    SendClientMessage(playerid, COLOR_GREEN, "Vous êtes connecté");
    SendClientMessage(playerid, COLOR_WHITE, "Pour quitter tapes /satellite-off.");
  SetPlayerCameraPos(playerid,-130.1157,93.9237,93.7372);
  SetPlayerCameraLookAt(playerid,-125.6706,86.4135,3.0780);
  TogglePlayerControllable(playerid, 0);
  ShowPlayerMarkers(1);
    return 1;
    }
if (strcmp(cmdtext, "/satellite-off", true) == 0)
{
  SendClientMessage(playerid, COLOR_GREEN, "Vous êtes déconnecté");
  SpawnPlayer(playerid);
  return 1;
    }

Lien vers le commentaire
Partager sur d’autres sites

ha c'est pas dure ^^ :

 

Tu va faire des /save pour récupérer la position de ton perso, tu en fait 4, un carré quoi. Et après tu fait ce que je te dis :

 

En haut de ton script tu place :

 

 

stock IsPlayerInArea(playerid,Float:max_x,Float:min_x,Float:max_y,Float:min_y)
{
new Float:X; 
new Float:Y;
new Float:Z;
GetPlayerPos(playerid, X, Y, Z); // On récupére la position du joueur
if(X <= max_x && X >= min_x && Y <= max_y && Y >= min_y) { // Si le joueur est dans les cordonnées à définir
return 1;
}
return 0;
}

 

 

et dans ta commande u met :

 

if (IsPlayerInArea(playerid, 0  , 0  , 0  , 0 ) {

A la place des zéro tu te réfaire a ça :

IsPlayerInArea(playerid,Float:max_x,Float:min_x,Float:max_y,Float:min_y)

 

pour les Max X Y je te dis aussi comment faire ^^ ;)

 

 

AddPlayerClass(179,-1337.3512,2523.2300,87.0469,270.7198,0,0,0,0,0,0); // min_x

AddPlayerClass(179,-1335.2222,2540.2971,86.8081,357.6589,0,0,0,0,0,0); // min_y

AddPlayerClass(179,-1286.4272,2536.4910,87.5118,182.1182,0,0,0,0,0,0); // max_x

AddPlayerClass(179,-1283.4917,2522.4268,87.3911,177.1048,0,0,0,0,0,0); // max_y

 

Donc il faut mettre dans cette ordre les coordonnées de couleur :

 

en 1er : rouge

 

en 2ième: orange

 

en 3ième: violet

 

en 4ième: vert

 

====

if (IsPlayerInArea(playerid, -1337.3512 , 2536.4910 , 2540.2971 , -1283.4917 ) { // Dans OnGameModeInit

====

 

 

Et voila ^^

 

Normalement ça fonctionnera ;)

 

 

a+++

Lien vers le commentaire
Partager sur d’autres sites

Ok, je vais tester et j'édit.

 

 

Donc voilà mes 4 positions :

if (IsPlayerInArea(playerid,-170.4675,175.2094,-172.4469,173.3273) {

 

J'ai mis ça tout en haut :

stock IsPlayerInArea(playerid,Float:max_x,Float:min_x,Float:max_y,Float:min_y)
{
new Float:X; 
new Float:Y;
new Float:Z;
GetPlayerPos(playerid, X, Y, Z); // On récupére la position du joueur
if(X <= max_x && X >= min_x && Y <= max_y && Y >= min_y) { // Si le joueur est dans les cordonnées à définir
return 1;
}
return 0;
}

 

 

Ca je les mis en dessous de mes "CreateObject" :

if (IsPlayerInArea(playerid,-170.4675,175.2094,-172.4469,173.3273) {

 

 

Et ça je n'es pas compris ou le placer :

IsPlayerInArea(playerid,Float:max_x,Float:min_x,Float:max_y,Float:min_y)

 

 

EDIT:

 

J'ai compris mais j'ai une erreur...

 

if (IsPlayerInArea(playerid,-170.4675,175.2094,-172.4469,173.3273));

 

error 036: empty statement

Modifié par thomasleroi
Lien vers le commentaire
Partager sur d’autres sites

Normale que ça ne fonctionne pas xD :

 

 

if (IsPlayerInArea(playerid,-170.4675,175.2094,-172.4469,173.3273));

 

Un if avec un point virgule ;) met une accolade { c'est mieux ^^ Et n'oubli pas de refermé l'accolade a la fin de ta commande par }

 

Sache aussi que ça :

 

IsPlayerInArea(playerid,Float:max_x,Float:min_x,Float:max_y,Float:min_y)

 

c'était pour te montrer coment mettre les valeurs de tes /save ;) il ne faut pas le mettre dans ton code ^^

 

 

EDIT :

 

Ca je les mis en dessous de mes "CreateObject" :

 

if (IsPlayerInArea(playerid,-170.4675,175.2094,-172.4469,173.3273) {

 

oui mais non ^^ le if tu doit le mettre dans ta commande en dessous de ce qui appel ta commande

 

if (strcmp(cmdtext, "/blabla", true)==0){

 

Donc ça donnera ça :

 

 

 

if (strcmp(cmdtext, "/blabla", true)==0){
if (IsPlayerInArea(playerid,-170.4675,175.2094,-172.4469,173.3273) {

BLA BLA

}
return 1;
}

 

Et voila ^^

Modifié par superpompier
Lien vers le commentaire
Partager sur d’autres sites

OK, j'ai plus d'erreur mais ça marche pas, je dois faire une erreur dans les positions...

 

Alors, voilà les positions :

 

AddPlayerClass(287,-170.2574,175.3866,8.6155,138.5600,0,0,0,0,0,0); // p1

AddPlayerClass(287,-172.4135,173.6503,8.5195,128.8466,0,0,0,0,0,0); // p2

AddPlayerClass(287,-169.4764,170.3571,7.9811,224.1008,0,0,0,0,0,0); // p3

AddPlayerClass(287,-167.1712,172.4076,8.1396,313.4016,0,0,0,0,0,0); // p4

 

 

Voilà l'image :

 

http://apu.mabul.org/up/apu/2008/06/15/img-152942s5fng.jpg

 

 

Et voilà le script :

 

 

if (strcmp(cmdtext, "/regarder-on", true) == 0)
if (IsPlayerInArea(playerid,-170.3741,169.6984,-166.9072,175.5113)) {
{
  SendClientMessage(playerid, COLOR_WHITE, "Pour quitter tapes /regarder-off");
  SetPlayerCameraPos(playerid,-114.2193,95.6963,6.6436);
  SetPlayerCameraLookAt(playerid,-108.7165,86.1232,3.7206);
  TogglePlayerControllable(playerid, 0);
  return 1;
    }
}
if (strcmp(cmdtext, "/regarder-off", true) == 0)
{
  TogglePlayerControllable(playerid, 1);
  SpawnPlayer(playerid);
  SetPlayerPos(playerid,-170.5633,173.4688,8.4611);
  return 1;
    }


return 1;
}

 

 

Lien vers le commentaire
Partager sur d’autres sites

C'est normale :

 

En haut de ton script :

 

new regarde[MAX_PLAYERS];

 

ta commande :

 

if (strcmp(cmdtext, "/regarder-on", true) == 0)
if (IsPlayerInArea(playerid,-170.3741,169.6984,-166.9072,175.5113)) {
{
  SendClientMessage(playerid, COLOR_WHITE, "Pour quitter tapes /regarder-off");
  SetPlayerCameraPos(playerid,-114.2193,95.6963,6.6436);
  SetPlayerCameraLookAt(playerid,-108.7165,86.1232,3.7206);
  TogglePlayerControllable(playerid, 0);
  regarde[playerid] = 1;
  return 1;
    }
if (strcmp(cmdtext, "/regarder-off", true) == 0)
{
if(regarde[playerid] == 1){
  TogglePlayerControllable(playerid, 1);
  SpawnPlayer(playerid);
  SetPlayerPos(playerid,-170.5633,173.4688,8.4611);
  regarde[playerid] = 0;
  return 1;
    }
}
}
return 1;
}

Lien vers le commentaire
Partager sur d’autres sites

Il n'y a même pas le message "pour quitter tapez /regarder-off" ?????

rien ne se passe quand tu rentre dans la zone, mais si tu tape la commande ?? est-ce que ça fonctionne ?

 

 

de plus j'ai fait une erreur dans le code :

 

 

 

 

if (strcmp(cmdtext, "/regarder-on", true) == 0)

if (IsPlayerInArea(playerid,-170.3741,169.6984,-166.9072,175.5113)) {

{

SendClientMessage(playerid, COLOR_WHITE, "Pour quitter tapes /regarder-off");
  SetPlayerCameraPos(playerid,-114.2193,95.6963,6.6436);
  SetPlayerCameraLookAt(playerid,-108.7165,86.1232,3.7206);
  TogglePlayerControllable(playerid, 0);
  regarde[playerid] = 1;
  return 1;
    }
if (strcmp(cmdtext, "/regarder-off", true) == 0)
{
if(regarde[playerid] == 1){
  TogglePlayerControllable(playerid, 1);
  SpawnPlayer(playerid);
  SetPlayerPos(playerid,-170.5633,173.4688,8.4611);
  regarde[playerid] = 0;
  return 1;
    }
}
}
return 1;
}

 

 

Met ça a la place de ce qui est au dessus:

 

 

if (strcmp(cmdtext, "/regarder-on", true) == 0)
{
if (IsPlayerInArea(playerid,-170.3741,169.6984,-166.9072,175.5113)) 
{
  SendClientMessage(playerid, COLOR_WHITE, "Pour quitter tapes /regarder-off");
  SetPlayerCameraPos(playerid,-114.2193,95.6963,6.6436);
  SetPlayerCameraLookAt(playerid,-108.7165,86.1232,3.7206);
  TogglePlayerControllable(playerid, 0);
  regarde[playerid] = 1;
  return 1;
    }
}
else if (strcmp(cmdtext, "/regarder-off", true) == 0)
{
  if(regarde[playerid] == 1){
  TogglePlayerControllable(playerid, 1);
  SpawnPlayer(playerid);
  SetPlayerPos(playerid,-170.5633,173.4688,8.4611);
  regarde[playerid] = 0;
  return 1;
    }
}
return 1;
}

 

J'ai aussi modifié des accolade alors regarde bien ;)

Modifié par superpompier
Lien vers le commentaire
Partager sur d’autres sites

Le message n'apparait pas puisqu'il est dans DEUX conditions :

 

le "si le player tape /regarder-on"

 

et le

 

"si le player est dans la zone"

 

 

Tu as essayer de taper ta commande dans ta zone ?

 

Oui oui je me suis mis dans la zone.

J'ai une idée pour voir si sa plante dans les positions..

Je vais prendre tout LS, et j'esseré dans LV, si sa ne marche pas je vais à LS et si sa marche sa veut dire que les positions ne sont pas bonne...

Lien vers le commentaire
Partager sur d’autres sites

tu as beaucoup plus simpe, tu met un AeraShowToPlayer ou un truck du genre, se qui donnera une couleur a ta zone, tu verra tout de suite si c'est au bon endroit ou quoi ;)

 

Edit :

 

Ce n'est pas AeraShowToPlayer mais :

 

 

GangZoneShowForAll("nom de ta zone", COLOR_RED);

 

Pour le nom de ta zone c'est pas plus simple que ça :

 

 

dans ton OnGameModeInit tu met :

 

ZONE = GangZoneCreate(-170.3741,169.6984,-166.9072,175.5113);

 

 

Et voila ^^ après on va juste faire une petite commande pour que ta zone apparaisse

 

 

if (strcmp(cmdtext, "/zone", true) == 0)
{

GangZoneShowForAll("ZONE", COLOR_RED);
return 1;
}

 

Normalement en tapant /zone, un carré rouge de la taille de la zone va apparaitre sur ta minimap a l'endroit ou est la zone, MAIS, et oui il y a un MAIS ^^

 

Comme ta zone est minuscule, tu devra allé voir sur ta carte dans le menu du jeu (échappe > carte) et tu zoomera au max ;) (ne te met pas a l'endroit de la zone bien sur sinon tu aura la grosse flèche qui te cachera la zone xD ça serais con ^^ :blink:

 

lol ^^ Voila, après ça si ta zone est bien a l'emplacement, ça vient pas de la... Faudra trouver ^^

 

Bon courage :P

Modifié par superpompier
Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

Chargement
×
×
  • Créer...