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
-
(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)
-
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
-
Je test de suite, merci d'avance! :king
Double post
Au "SetPlayerPos" je remplace par "SetPlayerVirtualWorld" ?
ps : Désolé double post
-
Imaginons ma position est :
363.3236,2476.9944,16.4844
Je 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;
}
}
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
-
Imaginons ma position est : 363.3236,2476.9944,16.4844
Je 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;
}
}
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?
-
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 ???
-
Bah si je le met dans la callback de OneGameModeInit, dans OnPlayerPickUpPickup le "pickup" n'est pas reconnu :s
-
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;
}
-
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é ;)
-
Le radius c'est le rayon ^^
-
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;
}
-
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)
-
Donne nous tes erreurs, on verra ce qu'il cloche pas.
-
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
-
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:
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++
-
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à
-
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++
-
Quand je tape /entrer rien ne ce passe, et ce fut pareil quand j'avais la commande /kill, plus rien ne ce passait
-
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
-
Plutôt comme ça =)
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;
}
-
Comment ? :blink
-
Comment quoi ?