GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Gr0und3r le 25 Août 2007, 04:23:07
-
Bonjour a tous!
Je suis en train de creer un serveur et je voudrais savoir comment on fait pour que quand on est dans un dm,
Plus aucune commands ne fonctionne a part cele pour aller dans les autre Dm et pour quitté le Dm.
Expliquer moi juste S'il vous plait , pour le reste je me debrouillerais! Merci.
Gr0und3r.
-
Bonjour a tous!
Je suis en train de creer un serveur et je voudrais savoir comment on fait pour que quand on est dans un dm,
Plus aucune commands ne fonctionne a part cele pour aller dans les autre Dm et pour quitté le Dm.
Expliquer moi juste S'il vous plait , pour le reste je me debrouillerais! Merci.
Gr0und3r.
Et Aussi quand on est tuer dans le Dm on revien directement dans le Dm au lieu de refaire a chaque fois la meme commande.
Gr0und3r
-
Tsss...
Réfléchi un peu : comment tu pourrais faire pour attribuer à un joueur le fait qu'il soit en DM? ...
...
Pas trouver? Bon ok : tu fais un array (ou un bool, mais je suis pas certains qu'on puisse) du genre IsPlayerDM[playerid] = 0; au début, et quand il est en DM, 1. Après tu réutilises ta variable et le tour est joué.
Si tu as besoin de plus de précisions, voit avec les autres, je vais pas être là quelques temps ;).
-
Merci Spycker je n'y avait pas penser! :laugh
-
Je n'y arrive pas !
J'ai mis sa dans mon OnPlayerSpawn
http://pastebin.com/m53dd5ddf (http://pastebin.com/m53dd5ddf)
Et sa dans ma commande de Dm
http://pastebin.com/f2f59bb4c (http://pastebin.com/f2f59bb4c)
et sa ne fonctionne pas! :(
Frenchement je ne comprend pas!
-
Il faut perseveré lol.
T'inquiete pour moi aussi c'est dur en ce moment !
NV.
-
Tu ne m'aide pas vrement , mais bn c'est pas grave :dry
-
Toujours cette même erreur avec les variables.
Ton tableau dm[MAX_PLAYERS] DOIT être global, c'est à dire déclaré à l'extérieur de toute fonction.
Dans ton cas, tu as deux tableaux disctints mais avec le même nom. Un dans la fonction OnPlayerSpawn et un dans la fonction OnPlayerCommandText. Mais ce ne sont pas les mêmes tableaux. Et en plus, tes tableaux sont créés quand tu rentres dans la fonction et détruit quand tu en sors donc ils ne servent à rien.
Règle importante en programmation :
LORSQU'UNE VARIABLE DOIT ETRE UTILISEE DANS PLUSIEURS FONCTIONS, IL FAUT LA DECLARER EN GLOBALE !!!
Sinon, tout le reste de ton code me semble correct.
++
Syg
-
Merci Beaucoup Syg je vais corriger tous sa immediatement :happy
-
Re bonjour!
J'ai mis Ma nouvelle variable au debut de bn gamemode a cet endroit,
http://pastebin.com/m318f3b72 (http://pastebin.com/m318f3b72)
Et mi sa dans OnPlayerSpawn,
http://pastebin.com/m3588a7fb (http://pastebin.com/m3588a7fb)
Puis sa Dans ma commande de telep,
http://pastebin.com/m5f79273b (http://pastebin.com/m5f79273b)
Et sa me donne sa comme erreur! :
C:\DOCUME~1\Kevin\Bureau\news.pwn(123) : error 017: undefined symbol "Dm"
C:\DOCUME~1\Kevin\Bureau\news.pwn(123) : warning 215: expression has no effect
C:\DOCUME~1\Kevin\Bureau\news.pwn(123) : error 001: expected token: ";", but found "]"
C:\DOCUME~1\Kevin\Bureau\news.pwn(123) : error 029: invalid expression, assumed zero
C:\DOCUME~1\Kevin\Bureau\news.pwn(123) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
4 Errors.
La ligne 123 etant celle la
if(Dm[playerid]==1){
-
J'ai resolu mon probleme! :P
tout en haut de mon Gamemode j'avais
#if defined FILTERSCRIPT
Je en savais pas se que c'etait donc je l'ai laisser mais apparement c'etait la cause de mon probleme!
Donc pour le resoudre je l'ai effacer de Mon GameMode Ainsi que ses deux compagnons
#else
et #endif
Et ducou plus de probleme :laugh
-
L'une de mes question est resolu quelqu'un connaitrer la reponse a la deuxieme? :D
-
Voiulà une solution pour ta deuxième question :
Pour chaque test dans la fonction OnPlayerCommandeText tu rajoute un test sur ton tableau dm[MAX_PLAYERS] pour savoir si le joueur peut ou ne peut pas utiliser telle ou telle commande.
Exemple :
/* Téléport vers Los Santos */
/* Commande non autorisée en DM */
if(strcmp(cmdtext, "/ls", true) == 0 && dm[playerid]==0)
...
/* Sortie du DM */
/* Commande autorisée uniquement en DM */
if(strcmp(cmdtext, "/dm quit", true) == 0 && dm[playerid]==1)
...
/* Dire bonjour */
/* Commande autorisée dans tous les cas */
if(strcmp(cmdtext, "/Hello", true) == 0)
...
Cette solution est longue à mettre en place car il faut repasser sur toutes tes commandes pour décider celles qui sont autorisées en DM, celles qui ne le sont pas et celles qui sont autorisées tout le temps.
++
Syg
-
Merci Syg mais ne t'inquiète pas je viens de commencer mon Gamemode :laugh
Mais c'est tout ce que j'ai a mettre? Rien d'autre?
Car j'ai l'impression qu'il manque quelque chose ???
Non rien sa fonctionne très bien , et je dit un grand merci a tout ceux qui mon aidé! :D