GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Franky™ le 07 Juillet 2008, 10:44:44
-
Salut à tous,
Je suis entrain de crée un FS de Herse, qui est bientôt fini mais j'ai un bug lol...
J'ai crée une commande pour ajouter les herses mais elle ne marche pas.
if(strcmp(cmd, "/h", true) == 0)
{
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid, X,Y,Z);
CreateObject(1593,X,Y,Z,0,0,0);
format(string, sizeof(string), " Herse mis en place.");
SendClientMessage(playerid, COLOR_GREY, string);
}
return 1;
}
Ca me dit bien que mon herse est mis en place mais j'ai rien devant moi.
Si quelqu'un saurai m'aider sa serai cool merci lol
++ Franky
-
GetPlayerPos(playerid, X,Y,Z); ne serre a rien
Sa vient de ton créate objet
CreateObject(1593,X,Y,Z+200);
Eisseile avec les + et - ses un truc comme sa .
Sa ossi
CreateObject(1593, X , Y, Z, 0.0000, 0.0000, 157.5000);
Si l'objet se mais sur toi ses que sa marche apres je texpliquerais
-
Hum il faut en être sur, la je pourrai pas tester car je suis au boulot, donc voila lol.
je regarderai sa se soir.
mais si quelqu'un à quelque chose aussi qu'il s'exprime mdr
Merci coco je regarderai sa
++ Franky
-
GetPlayerPos(playerid, X,Y,Z); ne serre a rien
Sa vient de ton créate objet
CreateObject(1593,X,Y,Z+200);
Eisseile avec les + et - ses un truc comme sa .
Sa ossi
CreateObject(1593, X , Y, Z, 0.0000, 0.0000, 157.5000);
Si l'objet se mais sur toi ses que sa marche apres je texpliquerais
Ton code place la herse à 200 mètres au dessus du joueur ???
-
Alors comment faire pour le faire apparaitre devant moi ?
++ Franky
-
On le met au dessu de sa tète y mesure combien lol
CreateObject(1593,X,Y+2,Z);
Je vai testé pour toi
-
Ce serait plutôt Z où il faudrait mettre +2.
Sinon le problème vient peut-être d'un mauvais angle, essaye de mettre la rotation X à 180°.
Sinon si tu veut le faire apparaitre devant toi il te faut la fonction GetXYFrontPlayer, disponible sur le forum SA:MP.
Désolé je n'ai rien de sûr. :(
++
Alexandre
-
Bonjour
CreateObject(1593,X,Y+2,Z); le probleme avec cette fonction c'est qua la grille va apparaitre juste devant lui au cente dans l'air donc il faut peut être régler X la hauteur donc la définiton ressemblera a CreateObject(1593,X-1,Y+2,Z);
mais a tester ;)
-
Non, la hauteur c'est plutôt Z.
Et 1 mètres c'est quand même trop bas/haut. Donc essaye avec Z-0.5 ensuite Z-0.6 etc jusqu'à ce que tu sois satisfait.
-
oula, j'ai test le truc a garderer, mais sa me donne un warning.
donc je pense que ton truc fera pareil, enfin je sais pas, déjà j'ai pas capter ton truc lol
++ Franky
-
Oui je pense que tu as raison urban -1 c'est trop donc oui -0.5 ou -0.6 sa sera idéale
-
comme ça il faut mettre alors ?
CreateObject(1593,X,Y,Z,0,0,-0.5);
++ Franky
EDIT: Sa marche toujours pas, rhaaa j'en ai marre lol.
Ca devrai me crée l'objets mais sa marche pas.
-
non pas comme ça !!!
CreateObject(1593,X,Y,Z-0.5,0,0,0);
Les 3 zéros servent a la rotation, laisse les a leur valeur pour que ton objet ne tourne pas ;)
si tu veut
CreateObject(1593,X,Y,Z-0.5, Rx, Ry, Rz);
-
J'ai une erreur car il connais pas Rx...
:( jvais peter un plomb sur se truc moi lol.
++ Franky
-
Ne met pas Rx, Ry et Rz s'était pour te montrer ;)
-
mais lol quoi, il fallais me le dire mdr
:boulet que je suis lol
++ Franky
EDIT: j'ai mis comme ça CreateObject(1593,X,Y,Z-0.5, 0, 0, 0); Mais sa marche toujours pas.
Voila mon code en entier, http://pastebin.gtaonline.fr/pastebin.php?show=453
-
Je sais que j'ai des probs avec le CreateObject, alors moi j'utilise le CreatPlayerObject ;) tu as juste a rajouter
playerid,
avant l'ID de ton objet, oubli pas la virgule hein ^^
Si tu veut que tout le monde vois tu fait un for new et tu remplace playerid, pas i, ;)
ce qui donnerait :
for(new i = 0; i < MAX_PLAYERS; i++)
{
CreatePlayerObject(i,1593,X,Y,Z-0.5, 0, 0, 0);
return 1;
}
-
les herses fonctionnent? j'avais entendu que non.
-
les hersses fonctionnent? j'avais entendu que non.
Enfaite non, mais mon FS fait que quand tu passe dessu une herse ca te Freeze pendant quelque temps.
[StAfF]mAn je test sa et je te redit plus tard
merci
++ Franky
-
Donc soit ton objet est invisible soit ce n'est pas le bon, tu as déjà testé cet objet ?
Pour voir si c'est le bon tu n'a qu'a faire un pickup avec l'ID de l'objet et si tu le vois ton problème vient dautre part, si tu ne le vois pas ne chrche pas plus loin. ;)
++
Alexandre
-
Oui c'est le bon...
Au debut pour tester j'ai juste faire un CreateObject pour tester, et sa fonctionne très bien le freeze quand tu passe dessu et le defreeze au bout de (je sais plus le temps lol)...
j'arrive juste pas à crée l'objet en fesant cette commande.
++ Franky
-
Désolé du double poste.
j'y arrive toujours pas, une personne ne saurai pas m'aider ? svp
++ Franky
-
Ta un onglet édité en haut a droite ses pour évitez les double post
-
Ta un onglet édité en haut a droite ses pour évitez les double post
Comme si je ne le savais pas, mais je voulais pas édité car sinon personne ne l'aurai vu enfaite c'est un mini UP.
Et ton poste ne m'aide pas du tout, alors tu peux t'en passé
++ Franky
-
Sa donne pas envie de t'aider lol
alors [StAfF]mAn tu tes trompé pas return remplace sa :
CreateObject(1593,X,Y,Z-0.5, 0, 0, 0);
par sa :
for(new i = 0; i < MAX_PLAYERS; i++)
{
CreatePlayerObject(i,1593,X,Y,Z-0.5, 0, 0, 0);
}
Sa donne sa :
if(strcmp(cmd, "/h", true) == 0)
{
new Float:X,Float:Y,Float:Z;
for(new i = 0; i < MAX_PLAYERS; i++)
{
CreatePlayerObject(i,1593,X,Y,Z-0.5, 0, 0, 0);
}
format(string, sizeof(string), " Herse mis en place.");
SendClientMessage(playerid, COLOR_RED, string);
PlayerPlaySound(playerid,1057,0,0,0);
}
return 1;
}
On UP un sujet quand il est vraiment loin mais sa change rien se que ta fait .
-
Ok j'essairai sa se soir.
j'ai Up car j'ai vraiment envie d'en finir le plus vite possible se FS c'est pour ça.
Sinon merci de ton aide
++ Franky
-
Salut ^^ :D j'en profite que ça parle d'objet pour poser une petite question ;) :
est ce que vous pouvez m'aider ?? ( :jesors )
Non sans dec j'arrive pas a mettre un objet aussi lol, il fonctionne très bien puisqu'avant il fonctionnais, mais je ne sais pas pourquoi il ne fonctionne plus.
Vous allez voir mon code, j'ai regardé le système du FS bomber, que j'ai repris, mais ça ne fonctionne pas..
public TimerCounter()
{
new string[128];
new Float:x2,Float:y2,Float:angle;
new Float:LocX = 0.0;
new Float:LocY = 0.0;
new Float:LocZ = 0.0;
if(counter == 0)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
KillTimer(Counter);
GameTextForAll("~r~Bombe en place", 3000, 5);
SendClientMessageToAll(COLOR_RED,"La bombe explosera dans 30 scondes !!");
GetPlayerPos(TEAM_T_BOMB,LocX,LocY,LocZ);
GetPlayerFacingAngle(TEAM_T_BOMB, angle);
x2 = LocX + (1 * floatsin(-angle+5, degrees));
y2 = LocY + (1 * floatcos(-angle+5, degrees));
ApplyAnimation(TEAM_T_BOMB, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0);
object=CreatePlayerObject(i,1252, x2, y2, LocZ-0.8, angle, angle+1, angle+1);
SetPlayerCheckpoint(TEAM_CT, x2, y2, LocZ, 3);
bomb[i] = 0;
ttard[i] = 0;
posse[TEAM_CT] = 1;
Explose = SetTimer("TimerExplose", 1000, true);
explose = 30;
PlayAllSound(1057);
return 1;
}
}else{
format(string,sizeof(string),"~r~%d",counter);
GameTextForAll(string,1000,5);
PlayAllSound(1056);
counter--;
}
return 1;
}
Voila, mais l'objet n'apparait pas a la fin du timer....
-
Pour toi j'ai pas regarder mais pour moi ça ne fonctionne toujours pas et ça commence légèrement à me souler cette commande à deux balle lol.
Il y a pas un "fou" de script qui pourrai m'aidé lol
sa serai cool car la je désespéré mdr
++ Franky
-
Un petit Syg dans le coin ? :'(
-
Un petit Syg dans le coin ? :'(
Ouai ça serai cool lol.
La j'en peux vraiment plus sur ce truc, je vais bientôt m'arracher les cheveux mdr
++ Franky
-
Syg est en vacance. :(
-
Mais c'est bizarre quand même !!! Parce que mon objet qui est une bombe, fonctionnait nickel !!! Et je ne sais pas ce que j'ai fais pour que ça fonctionne plus...
Toi aussi Patou689, il fonctionnait ton objet, puis il fonctionne plus :s...
-
Oui mais faut dire qu'il fonctionnais seulement quand je fesais un CreateObject et tout fonctionnais bien.
donc je voulais en faire une commande, alors je l'ai fait et c'est la que sa marche pas, mon objet ne veux pas se crée.
Soit elle se crée pas à cause d'une connerie de ma part
Soit elle est invisible à cause d'une connerie de ma part aussi...
Sinon je vois pas se qu'il y a d'autre.
Grrr j'en ai marre lol :wall :wall :wall :wall
++ Franky
-
Voila la solution les gars :D
if (strcmp("/herse", cmdtext, true) == 0)
{
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid, X,Y,Z);
CreateObject(1593,X,Y,Z,0,0,0);
format(string, sizeof(string), " Herse mis en place.");
SendClientMessage(playerid, 0xFF0000FF, string);
return 1;
}
J'ai juste re-écrit la commande, donc ce que j'ai modifié : j'ai mis cmdtext à la place de cmd, j'ai mis /herse à la place de /h et j'ai mis le return 1; à l'intérieur des accolades. Je pense que le problèmes venait du return 1; qui n'était pas dans les accolades ;)
++
R@f
-
Et sans le return à l'intérieur ça donne quoi ?
Parce que maintenant j'ai peur que son problème soit un autre return en liberté qui ai était placé avant herse.
++
Alexandre
-
Pour te répondre alex,
j'ai pas d'autre commande dans mon FS, il n'y a que celle la donc pas d'autre return :p
Et Merci beaucoup R@f, je testerais se soir après le boulot
++ Franky
-
Deux jours, et sa ne marche toujours pas snif j'en ai marre de se truc lol
++ Franky
-
J'ai toujours eu des probs avec les createobject de toute façon, cette partie de script la n'est pas au point xD
Patou689, essaye de changer l'ID 1593 par 987 (c'est un grillage) comme ça tu pourra voir si ce qu'a donné R@F fonctionne, car l'ID 987 marche a tout les coup ;)
-
j'ai donner mon FS via msn a R@f et cher lui il marche je sais pas pk
grrr j'essairai se soir
merci
Et appel moi Franky lol
++ Franky
-
UP
Marche toujours pas, je sais pas pourquoi.
la j'ai même mis mon objet en "createobject" et il est la mais le freeze marche plus du tout grrr ^^
++ Franky
-
Salut,
Jai a peu pres compris ton probleme, mais je n'ai pas tout lu ...
Ce que tu peu faire, cest que si tu a un script de ramp, utiliser la meme fonction d'Alexandre.
Je l'ai dans mon GM, je vais esseyer de te la retrouver ....
++
nikko
-
lol ok mais j'ai pas le script de ramp mdr ^^
mais si tu trouve la soluc j'en serai ravie car ca fait trop longtemps que sa traine mdr ^^
++ Franky
-
Sinon tu fais une condition supplémentaire
en haut de ton script :
new pose[MAX_PLAYERS];
juste en dessous de ton CreateObject du fais
pose[playerid]=1;
et après tu trouve un endroit ou tu pourrais mettre un if(pose[playerid]==1){
et dedans tu met ton freeze ;)