GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: jonjon le 04 Février 2008, 21:36:04
-
bonjour, j'ai essayé (je dit bien essayé lol) de faire un fs (pastebin : http://pastebin.gtaonline.fr/pastebin.php?show=331 (http://pastebin.gtaonline.fr/pastebin.php?show=331) ) où quand l'on marche sur le pickup on peu faire la commande /aamorce qui fait péter plusieurs bombes, je voudrais pouvoir faire cette commande que sur se pickup et qu'il y est un compte a rebour avant de tout faire péter mais j'ai plusieurs problèmes :
-On peu faire la commande n'importe où (alors que je voudrais pouvoir la faire que sur le pickup, pourtant j'ai essayé de mettre des variables pour ça)
-Quand on tape /log pour se loggé cela nous dit "veuillez entrer le nombre de secondes (lol c'est une phrase qui se trouve dans le FS que j'essaie de faire)
-Quand je fait la commande rien ne se passe (même pas de compte à rebour, même pas d'explosions)
Je crois que c'est tout, c'est déja pas mal :s
Ps : aucune erreurs, aucun warning mais sa marche pas quand même ^^
Pastebin : http://pastebin.gtaonline.fr/pastebin.php?show=331 (http://pastebin.gtaonline.fr/pastebin.php?show=331)
Si vous pouvez m'aider..... Svp
Merci d'avance!
j0nj0n
-
J'ai corrigé ton script, je ne l'ai pas testé donc il se peut que ça ne fonctionne pas :
http://pastebin.gtaonline.fr/pastebin.php?show=333
Ce que j'ai fait :
Tout d'abord, "décortication" correcte de la commande (tu avais oubliés de le faire).
Dans la commande, on contrôle que le joueur est dans une zone de 0.5 mètre autour du pickup sinon, on affiche un message.
Maintenant, tu veux peut-être que le pickup serve de "ticket pour une explosion" utilisable n'importe où.
Dans ce cas, il faut remplacer le test que j'ai ajouté par un test sur DMArena[playerid] (qui doit être égal à 1).
Aprés coup, j'ai vu une erreur qui peut écrouler ton serveur.
Dans ton timer ctimer, tu as mis le code suivant :
for (new i = 0; i < MAX_PLAYERS; i ++)
{
if (IsPlayerConnected(i)) SetTimer("resetcount",2000,0);
}
Dans cette boucle, tu lance le même timer autant de fois qu'il y a de joueurs et ce n'est pas la peine puisque le timer resetcount fait un reset pour tous les joueurs.
Donc remplaces toutes les lignes précedentes par un appel unique à ton timer :
SetTimer("resetcount",2000,0);
Et moi même je ne suis pas en reste :
cmd = strtok(cmdtxt, idx);
Il fallait bien évidement lire :
cmd = strtok(cmdtext, idx);
++
Syg
-
salut, merci je testerais ce script quand je rentrerais chez moi.
a+++
j0nj0n
EDIT : ça y est presque, merci syg !!
Mais j'ai toujours un problème important lol :
-On peu faire la commande n'importe où (alors que je voudrais pouvoir la faire que sur le pickup, pourtant j'ai essayé de mettre des variables pour ça)
-Quand on tape /log pour se loggé cela nous dit "veuillez entrer le nombre de secondes (lol c'est une phrase qui se trouve dans le FS que j'essaie de faire)
-Quand je fait la commande rien ne se passe (même pas de compte à rebour, même pas d'explosions)
Maintenant quand je fais la commande sur le pickup ( /amorce nombre de secondes) ça n'enclenche pas le compte à rebour et ensuite rien ne se passe. Et ensuite quand je fais une autre fois la commande sur le pickup ça me dit comme quoi le compte à rebour est déja enclenché alors que c'est le contraire :s .
Si quelqu'un peu m'aider.....
Merci d'avance
j0nj0n
-
J'ai reussi à t'aider pour commencer le script mais la je ne pourrais pas t'aider désolé.
Cordialement, yoyo17.
-
Merci de vos aides Yoyo17 et Syg mais j'ai encore besoin d'un petit peu d'aide ;)
+++
j0nj0n
-
Je croi savoir d'ou sa vien mais le probléme ?
http://pastebin.gtaonline.fr/pastebin.php?show=337
-
euh j'ai rien compris, il n'y a pas de modifs dans le scritp en plus... alors je vois pas
j0nj0n
-
J'ai mis l'edroit ou je pense qu'il y a le problème .
-
Moi, y'a quand même un truc qui m'étonne, c 'est que tes pickups sont crées à plus de 1000 mètres d'altitude !!!
Est-tu sùr que les coordonnées sont correctes ?
++
Syg
-
oui syg car mes pickups se trouvent dans un intérieur ;)
-
Ah OK, est-ce que tu peux me donner l'ID de l'intérieur pour que je puisse tester parceque tout à l'heure j'ai fait des essais, j'ai ajouté un téléport mais je me suis retrouvé dans le ciel en chute libre.
++
Syg
-
tes spider-man xd.
Posté par: jonjon
oui syg car mes pickups se trouvent dans un intérieur
Dans une position savegardé sa prend la hauteur ou commence le pickup .
-
Désolé pour le retard, j'ai quelques problèmes avec ma dns alor voila... lol
L'id de l'intérieur est "5" .
voila une petite téléportation :
if (strcmp(cmdtext, "/manoir", true) == 0)
{
SetPlayerInterior(playerid, 5);
SetPlayerFacingAngle(playerid, 55);
SetPlayerPos(playerid, 1299.14 ,-794.77,1084.00);
GameTextForPlayer(playerid,"BIENVENUE AU MANOIR !",2000,5);
SendClientMessageToAll(COLOR_SYSTEM, "Un joueur vien d'entrer dans la zone /manoir");
return 1;
}
++
j0nj0n
-
Pourquoi tu utilise pas le fonction Code du forum ? ???
-
hein? quel fonction code ?
j0nj0n
Edit : ah oui, finalement je vois ce que tu veux dire ben c'est pas un script "important" ce que je viens de mettre , le script dont je parle se trouve dans le pastebin
-
C'est pas que c'est important ou pas, C'est que c'est un peux con de mettre des scripts en l'air comme ça...
-
oui tu as raison.
Quelqu'un a une solution a mon problème de FS? lol
merci d'avance
j0nj0n
-
Quelqu'un pour m'aider?? svp lol
Merci d'avance!
j0nj0n
-
Je pense que ta oublié de mettre un SetTimer pour enclencher le "ctimer" dans ta commande /amorce