GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: TheExtraCrow le 20 Juillet 2013, 18:05:04
-
Voila,je possède un Serveur Gta RP Zombie (En V0.2 Beta), et je voudrais Installer une Grille Automatique sur la Map ( Aux Niveau de Area 69 )
Une grille qui s'ouvrirais avec un mot,style : /open69
Voila les image:
(http://image.noelshack.com/minis/2013/29/1374336112-gta-sa-2013-07-20-18-00-40-92.png) (http://www.noelshack.com/2013-29-1374336112-gta-sa-2013-07-20-18-00-40-92.jpg)
(http://image.noelshack.com/minis/2013/29/1374336130-gta-sa-2013-07-20-18-00-48-63.png) (http://www.noelshack.com/2013-29-1374336130-gta-sa-2013-07-20-18-00-48-63.jpg)
je voudrais remplacer la grille avec inscrit: Airport Security...,Par cette fameuse grille automatique.
PS: je n'ais pas crée de Groupe mais j'aimerais en crée également,un Groupe dont on ne peux y accéder que par l'autorisation d'un Admin.
-
Salut, tu débute en pawn ?
Je te donne des indications et si tu n'y arrive pas je t'en donnerais un peu plus.
Tu dois utiliser les fonctions suivantes: - SetTimerEx (http://wiki.sa-mp.com/wiki/SetTimerEx)
- MoveObject (http://wiki.sa-mp.com/wiki/MoveObject)
À bientôt. :bye:
-
Effectivement je suis un apprenti Pawno, est pour tout de dire,j'ais bien lu les paramètre pour crée cette Grille,mais je doit t'avouer que... :blink: Je ne sait pas trop comment m'y prendre :wacko:
-
Si tu débute il est normal que ce genre de fonctions ne sont pas faciles à utiliser.
Je vais t'expliquer en détails.
Tu dois déjà placer une variable globale tout en haut de ton GameMode. (à la suite de tes autres variables)
Exemple:
new grille;
Ensuite il faut que tu cherche ton objet dans le GameMode, soit la ligne CreateObject de la grille. (utilise le raccourci CTRL + F pour ta recherche)
Devant cette ligne tu ajoute "grille =" ce qui donnera:
grille = CreateObject(id, x, y, z);
Puis dans ta commande tu utilise la fonction MoveObject avec la nouvelle position de la grille une fois ouverte.
Fais déjà ça et dis moi si tu bloque avec le MoveObject, dans ce cas je t'en dirais un peu plus.
Bon courage.
-
Bien,c'est fait:
new thisanimid=0;
new lastanimid=0;
new grille;
grille =CreateObject(988,96.6288910,1920.3472900,17.1445045,0.0000000,0.0000000,270.0000000);//object(ws_apgate) (1)
-
Super, maintenant il te reste plus qu'à suivre mes indications et à t'aider de ce liens http://wiki.sa-mp.com/wiki/MoveObject (http://wiki.sa-mp.com/wiki/MoveObject) pour créer ton MoveObject.
-
Alors,je ne Comprend pas bien.
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, "/open69", true) == 0)
{
new string[50];
new movetime = MoveObject(obj, 0, 0, 10, 2.00);
format(string, sizeof(string), "Object will finish moving in %d milliseconds", movetime);
SendClientMessage(playerid, 0xFF000000, string);
return 1;
}
return 0;
}
Je doit remplacer quoi comme Script ?
-
À la place de
obj
Tu met le nom de ta variable et après tu remplace:
0, 0, 10
Par la nouvelle position de ta grille, celle de cette dernière une fois ouverte.
-
Eh, sa marche,Enfin Non,je fait /open69 la porte s'envole,je puis elle ne revient pas a sa place (fermer). :sad: :sad: :sad:
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, "/open69", true) == 0)
{
new string[50];
new movetime = MoveObject(grille,988,96.6640625,1924.5603027,17.8266354,0.0000000,0.0000000,270.0000000, 2.00);
format(string, sizeof(string), "Object will finish moving in %d milliseconds", movetime);
SendClientMessage(playerid, 0xFF000000, string);
return 1;
}
return 0;
}
-
Retire:
,0.0000000,0.0000000,270.0000000
-
Non la grille s'envole Encore :sad: .
A oui est sa me marque : Object will finish moving in [une dizaine de nombre] milliseconds
-
Je t'invite a relire le la page du wiki
Tu as fait un MoveObject avec 9 paramètres alors que cette dernière n'en demande que 8.
Sachant aussi que tu peux ne passer que 5 paramètre car les 3 derniers ont une valeur assigné si tu ne les renseigne pas.
Après je ne sais pas quelle animation tu souhaite réaliser mais dans ton cas il est normal que la grille s’élève puisque tu modifie le paramètre Z.
-
Eh...Je Pas comprit :wink:
-
bon alors dans la page du wiki ils nous indiquent que la fonction MoveObject doit avoir les paramètre suivants :
objectid The ID of the object to move.
Float:X The X coordinate to move the object to.
Float:Y The Y coordinate to move the object to.
Float:Z The Z coordinate to move the object to.
Float:Speed The speed at which to move the object (units per second).
Float:RotX The FINAL X rotation (optional).
Float:RotY The FINAL Y rotation (optional).
Float:RotZ The FINAL Z rotation (optional).
on a donc 8 paramètre a passer :
L'objet a déplacer,
sa position final x,
sa position final y,
sa position final z,
sa vitesse de déplacement par seconde.,
Sa rotation final sur l'axe x (optionnel car une valeur lui est attribué par défaut si tu ne met rien),
Sa rotation final sur l'axe y (optionnel car une valeur lui est attribué par défaut si tu ne met rien),
Sa rotation final sur l'axe z (optionnel car une valeur lui est attribué par défaut si tu ne met rien)
Or toi tu as mis sa :
grille =CreateObject(988,96.6288910,1920.3472900,17.1445045,0.0000000,0.0000000,270.0000000);
puis :
MoveObject(grille,988,96.6640625,1924.5603027,17.8266354,0.0000000,0.0000000,270.0000000, 2.00);
donc en corespondance tu aurais:
l'objet a déplacé : grille (ça semble cohérent car tu l'as créé précédemment)
sa position final x: l'objet va donc passer de la coordonnée 988 a 988 ( donc aucun déplacement sur l'axe x)
sa position final y: l'objet va donc passer de la coordonnée 96.6288910 a 96.6640625 ( donc ton objet va bouger sur l'axe y)
sa position final z: l'objet va donc passer de la coordonnée 1920.3472900 a 1924.5603027 ( donc aucun déplacement sur l'axe z)
sa vitesse de déplacement sera de 17.8266354 unité par seconde
Sa rotation par rapport a l’état actuel sur l'axe x :0 ( aucune rotation)(optionel peut être enlevée si tu ne souhaite pas de rotation sur cette axe)
Sa rotation par rapport a l’état actuel sur l'axe y : 0 (aucune rotation)(optionel peut être enlevée si tu ne souhaite pas de rotation sur cette axe)
Sa rotation par rapport a l’état actuel sur l'axe z : 270 (rotation de 270°)(optionel peut être enlevée si tu ne souhaite pas de rotation sur cette axe)
Puis tu as ajouté un dernier apramètre 2 qui ne correspond a rien et qui derait te mettre une erreur de compilation en téhorie qui est donc a enlevée.
Voilà en espérant être plus clair.
-
Pour faire simple tu dois créer deux variables, une qu'à précédemment montré Ouzdi Broono, et une autre pour savoir si la grille est fermée est ouverte
Petit exemple :
new grille, agrille;
//PLUS BAS DANS LE CODE
grille=CreateObject(etc...)
//DANS TA COMMANDE
if(strcmp(cmdtext, "/open69", true) == 0)
{
if(agrille==0)
{
MoveObject(grille, etc...); //COORDONNES POUR LA PORTE OUVERTE
agrille=1;
return 1;
}
if(agrille==1)
{
MoveObject(grille, etc...); //COORDONNES POUR LA PORTE FERMEE
agrille=0;
return 1;
}
}
Voilà tout :happy:
-
Ok,Bas Merci :)
-
Rien ne marche,la Grille s'envole encore :angry:
-
Evites les doubles postes,
Et regarde si les coordonnées de te grille son bonnes
-
Navrer pour le double post,et oui mes Coordonner son correct. :wink:
-
Si elles sont correctes les grilles ne sont pas censées s'envoler ;)
-
Je vois pas comment on pourrai t'aider plus que ça...
-
Montre nous ton code actuel, tu dois faire une gaffe.
Sinon, pour ton système de grade, voilà un écrit: [Tutoriel] Créer son système de rangs (http://www.gtaonline.net/forums/index.php/topic,13589.0.html).