GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: John_Montavedro le 16 Octobre 2010, 11:31:01

Titre: Créer un point "Info" pour /entrer dans un batiement
Posté par: John_Montavedro le 16 Octobre 2010, 11:31:01
(http://data.imagup.com/3/1287215816.gif) (http://www.imagup.com/data/1287215816.html)

Bonjour, je suis à la recherche de la phrase permettant de mettre un point "Info" devant un batiement pour que quand on aille dessus, on puisse faire /entrer er donc aller dans le batiement ..
Je n'ai rien trouvé sur Wiki SAMP car je ne savais pas comment s'appelait la commande... si vous pourriez m'aider, .....



(http://data.imagup.com/1/1287215592.gif) (http://www.imagup.com/data/1287215592.html)
Titre: Re : Créer un point "Info" pour /entrer dans un batiement
Posté par: vardanega le 16 Octobre 2010, 11:37:56
Bonjour, je pense que vous parler des pickups ?

Si c'est pour ce pickup:

(http://weedarr.wdfiles.com/local--files/pickups/1239.png)

rendez vous ici:  http://wiki.sa-mp.com/wiki/AddStaticPickup (http://wiki.sa-mp.com/wiki/AddStaticPickup)

Vinc


Titre: Re : Créer un point "Info" pour /entrer dans un batiement
Posté par: John_Montavedro le 16 Octobre 2010, 11:45:40
Je test de suite, merci d'avance!  :king

Double post
Au "SetPlayerPos" je remplace par "SetPlayerVirtualWorld" ?

ps : Désolé double post
Titre: Re : Créer un point "Info" pour /entrer dans un batiement
Posté par: John_Montavedro le 16 Octobre 2010, 11:55:55
Imaginons ma position est : 363.3236,2476.9944,16.4844Je fais donc,
new pickup ;
   pickup = CreatePickup 363.3236,2476.9944,16.4844;

public OnPlayerPickUpPickup(playerid,pickupid)
{
if(pickupid == pickup)
{
SetPlayerPos(playerid, 363.3236,2476.9944,16.4844);
return 1;
}
if(strcmp(cmdtext,"/entrer",true) == 0)
{
 if(IsPlayerInRangeOfPoint(playerid,363.3236,2476.9944,16.4844,radius)
{
 SetPlayerVirtualWorld(playerid, 316.524993,-167.706985,999.593750);//X, Y, Z de l'interieur
return 1;
}
}


Citer
Cela dépend , mais si tu veux le mettre dans un interior faut faire un SetPlayerPos et un SetPlayerInterior
Mais les deux auront donc le même X, Y, Z alors
Titre: Re : Re : Créer un point "Info" pour /entrer dans un batiement
Posté par: John_Montavedro le 16 Octobre 2010, 12:06:50
Imaginons ma position est : 363.3236,2476.9944,16.4844Je fais donc,
new pickup ;
   pickup = CreatePickup 363.3236,2476.9944,16.4844;

public OnPlayerPickUpPickup(playerid,pickupid)
{
if(pickupid == pickup)
{
SetPlayerPos(playerid, 363.3236,2476.9944,16.4844);
return 1;
}
if(strcmp(cmdtext,"/entrer",true) == 0)
{
 if(IsPlayerInRangeOfPoint(playerid,363.3236,2476.9944,16.4844,radius)
{
 SetPlayerVirtualWorld(playerid, 6);//X, Y, Z de l'interieur
return 1;
}
}


Citer
Cela dépend , mais si tu veux le mettre dans un interior faut faire un SetPlayerPos et un SetPlayerInterior
Mais les deux auront donc le même X, Y, Z alors


Mais dans les id des interieurs, y'en a qui ont la même id :o sinon c'est mieux?
Titre: Re : Créer un point "Info" pour /entrer dans un batiement
Posté par: John_Montavedro le 16 Octobre 2010, 12:41:58
new pickup = CreatePickup( 1318, 2,363.3236, 2476.9944, 16.4844);
    if(pickupid == pickup)
{
SetPlayerPos(playerid, 316.524993,-167.706985,999.593750);
SetPlayerInterior(playerid, 6);
return 1;
}

Double post
Marche pas  ???
Titre: Re : Créer un point "Info" pour /entrer dans un batiement
Posté par: John_Montavedro le 16 Octobre 2010, 13:25:11
Bah si je le met dans la callback de OneGameModeInit, dans OnPlayerPickUpPickup le "pickup" n'est pas reconnu :s
Titre: Re : Créer un point "Info" pour /entrer dans un batiement
Posté par: John_Montavedro le 16 Octobre 2010, 13:35:56
Je l'ai mis dans les 2 callback et sa marcheeeeeeeeee :)

Double post
Par contre, que veut dire "radius", par quoi le remplacer?

Double post
Les cmds ne marchent plus, ni /kill ni /entrer :s

public OnPlayerCommandText(playerid, cmdtext[])
{
    if(strcmp(cmdtext, "/kill", true, 3) ==0)
{
SetPlayerHealth(playerid, 0);
SendClientMessage(playerid, couleur_alert, "** Attention : tu es mort suite à ta commande /kill **");
return 1;
}
if(strcmp(cmdtext,"/entrer",true) == 0)
{
  if(IsPlayerInRangeOfPoint(playerid,7.0,363.3236,2476.9944,16.4844)
)
  SendClientMessage(playerid, couleur_dire, "Bar des terroristes");
return 1;
}
return 1;
}
Titre: Re : Créer un point "Info" pour /entrer dans un batiement
Posté par: Katou76 le 16 Octobre 2010, 14:27:11
Pour créer un pickup:

Tu va dans OnGameModeInit.

Tu ajoute cette ligne:

AddStaticPickup(1239, 2, PosX, PosY,PosZ);
Ton Pickup est créer, maintenant si tu veut ajouter une commande pour que sa téléporte le joueur:

Tu va dans OnPlayerCommandText

Tu ajoute:

if(strcmp(cmd," /entrer", true) == 0)
{
       if(IsPlayerConnected(playerid))
       {
               if(PlayerToPoint(5.0,playerid, PosX,PosY,Poz)) // C'est les même positions que ton pickup (normalement)
               {
                        SetPlayerPos(playerid, PosX,PosY,PosZ); // La Position ou tu veut téléporter le joueur
                        SetPlayeInterior(playerid, id de l'interrior);
                        SendClientMessage(playerid,couleur_dire,"Bar des Térroriste");
               }
       }
}

J'espère t'avoir aidé ;)    
Titre: Re : Créer un point "Info" pour /entrer dans un batiement
Posté par: Ssk le 16 Octobre 2010, 14:45:29
Le radius c'est le rayon ^^
Titre: Re : Créer un point "Info" pour /entrer dans un batiement
Posté par: John_Montavedro le 16 Octobre 2010, 15:10:30
merci mais "cmd" et "playertopoint" existent pas :s

Double post
:s marche toujours pas et pourtant j'ai mis return 0;
public OnPlayerCommandText(playerid, cmdtext[])
{
    if(strcmp(cmdtext, "/kill", true, 3) ==0)
{
SetPlayerHealth(playerid, 0);
SendClientMessage(playerid, couleur_alert, "** Attention : tu es mort suite à ta commande /kill **");
return 1;
}
if(strcmp(cmdtext,"/entrer",true) == 0)
{
  if(IsPlayerInRangeOfPoint(playerid,7.0,363.3236,2476.9944,16.4844)
)
  SendClientMessage(playerid, couleur_dire, "Bar des terroristes");
return 1;
}
return 0;
}
Titre: Re : Créer un point "Info" pour /entrer dans un batiement
Posté par: John_Montavedro le 16 Octobre 2010, 15:36:34
Toujours pas :s . J'envois le Pastebin de tout le GM :s

http://pastebin.gtaonline.fr/pastebin.php?show=902 (http://pastebin.gtaonline.fr/pastebin.php?show=902)
Titre: Re : Créer un point "Info" pour /entrer dans un batiement
Posté par: Katou76 le 16 Octobre 2010, 15:39:51
Donne nous tes erreurs, on verra ce qu'il cloche pas.
Titre: Re : Créer un point "Info" pour /entrer dans un batiement
Posté par: John_Montavedro le 16 Octobre 2010, 15:42:10
C:\DOCUME~1\Meyer\MESDOC~1\serveur\GAMEMO~1\new.pwn(147) : warning 204: symbol is assigned a value that is never used: "pickup"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


1 Warning.

Mais là n'est pas le problème (je pense), le problème c'est qu'aucune commande ne fonctionne :(

Bizzare :s
Titre: Re : Créer un point "Info" pour /entrer dans un batiement
Posté par: S!m le 16 Octobre 2010, 16:55:49
Salut,


allez je vais essayer de t'éclairer:

Utilise l'un ou l'autre pas les deux:

    if(pickupid == pickup)
{
SetPlayerPos(playerid, 316.524993,-167.706985,999.593750);
SetPlayerInterior(playerid, 6);
return 1;
}
Ceci dans OnPlayerPickUpPickup téléporte le joueur dès qu'il touche le pickup. Si j'ai bien compris, ce n'est pas ce que tu veux, donc n'utilise pas ce bout de code.

Utilise seulement la commande (le /entrer). Je vais en parler un peu plus loin dans le post.

Comme tu n'utilisera pas la callback OnPlayerPickUpPickup, qui est le seul endroit ou le pickupid est vraiment pratique, tu peut utiliser CreatePickup ou AddStaticPickup (AddStaticPickup ne renvoie pas le numéro d'identification du pickup créé). Néanmoins, je te recommande fortement d'utiliser CreatePickup, ne serait-ce que pour l'habitude et ça t'évitera des problèmes si jamais tu change de système.

Donc, pour créer ton pickup, ajoute simplement cette ligne (avec les bonnes informations) dans la callback où tu veut que le pickup soit créé (probablement OnGameModeInit, enfin c'est le cas si tu veut que le pickup soit toujours présent sur le serveur).
CreatePickup(model_du_pickup, type_du_pickup, position_x, position_y, position_z, monde_virtuel);NB. monde_virtuel est un paramètre optionnel. Si tu le veut dans tous les mondes, ne l'utilise simplement pas.

Voilà, maintenant que l'on a créer le pickup, il ne reste plus qu'à faire la commande.

ta commande doit suivre la structure suivante:
Citer
es-ce que le texte passé est le bon (strcmp)
es-ce que le joueur est près du pickup (IsPlayerInRangeOfPoint)
il est près du pickup? très bien, on le déplace et le met dans l'intérieur avec un petit message (SetPlayerPos, SetPlayerInterior et SendClientMessage)
il n'est pas près du pickup? on ne fait rien ou on lui envoie un message
fin de la commande

voilà, rappelle toi bien d'utiliser les coordonnées du pickup dans ton IsPlayerInRangeOfPoint et celles de la destination dans ton SetPlayerPos et SetPlayerInterior

bonne chance

++Sim++
Titre: Re : Créer un point "Info" pour /entrer dans un batiement
Posté par: John_Montavedro le 16 Octobre 2010, 17:18:16
Ne marche toujours pas ... commande :
public OnPlayerCommandText(playerid, cmdtext[])
{
    if(strcmp(cmdtext,"/entrer",true) == 0)
{
  if(IsPlayerInRangeOfPoint(playerid,7.0,363.3236,2476.9944,16.4844))//exterieur du batiement
        {
    SetPlayerPos(playerid, 501.980987,-69.150199,998.757812);   //Interieur du batiement
  SendClientMessage(playerid, couleur_dire, "Bar des terroristes");//Message
return 1;
}
        }
return 0;
}

CreatePickup
CreatePickup(1239, 2, 363.3236,2476.9944,16.4844);

Je ne comprends pas, là

Titre: Re : Créer un point "Info" pour /entrer dans un batiement
Posté par: S!m le 16 Octobre 2010, 17:34:45
Salut,

déjà, explique nous ce qui ne fonctionne pas, simplement dire que ça ne fonctionne pas ne suffit pas.

en passant, ton return 1 dans ta commande ne devrait pas se trouver exactement là, essaie de trouver où il devrait être.

et ajoute le SetPlayerInterior dans ta commande sinon c'est sûr que tu ne sera pas au bon endroit.

++Sim++
Titre: Re : Créer un point "Info" pour /entrer dans un batiement
Posté par: John_Montavedro le 16 Octobre 2010, 17:42:00
Quand je tape /entrer rien ne ce passe, et ce fut pareil quand j'avais la commande /kill, plus rien ne ce passait
Titre: Re : Créer un point "Info" pour /entrer dans un batiement
Posté par: John_Montavedro le 16 Octobre 2010, 17:48:13
C'est sa la condition?

public OnPlayerCommandText(playerid, cmdtext[])
{
    if(strcmp(cmdtext,"/entrer",true) == 0)
{
  if(IsPlayerInRangeOfPoint(playerid,7.0,363.3236,2476.9944,16.4844))
  return 1;
  {
    SetPlayerPos(playerid, 501.980987,-69.150199,998.757812);   /* Oublie pas le setplayerpos sinon sa dira seulement un message */
    SetPlayerInterior(playerid, 11);
  SendClientMessage(playerid, couleur_dire, "Bar des terroristes");
}
        }
return 0;
}

Double post
Marche toujours pas :s
Titre: Re : Créer un point "Info" pour /entrer dans un batiement
Posté par: Ssk le 16 Octobre 2010, 18:30:58
Plutôt comme ça =)


Code: (php) [Sélectionner]
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext,"/entrer",true) == 0)
{
if(IsPlayerInRangeOfPoint(playerid,7.0,363.3236,2476.9944,16.4844))
{
  SetPlayerPos(playerid, 501.980987,-69.150199,998.757812);   /* Oublie pas le setplayerpos sinon sa dira seulement un message */
SetPlayerInterior(playerid, 11);
SendClientMessage(playerid, couleur_dire, "Bar des terroristes");
}
else
{
    // ICI tu peut dire, qu'on est pas près du bar ^^

}
return 1;
}
return 0;
}
Titre: Re : Créer un point "Info" pour /entrer dans un batiement
Posté par: John_Montavedro le 16 Octobre 2010, 18:42:35
Comment ?  :blink
Titre: Re : Créer un point "Info" pour /entrer dans un batiement
Posté par: Ssk le 16 Octobre 2010, 19:05:15
Comment quoi ?