GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: GtaManiac le 30 Novembre 2007, 20:44:43
-
Bonjour,
Eh oui j'ai encore et toujours des problemes je ne suis qu'un jeune padawane parmis tant d'autre dans le monde du Pawn ;) , j'ai donc besoin de vos lumiere sur :
Comment créer une commande qui permet de voir les cmds des joueurs comme pour les PM qui marche tres bien mais apres pour les cmds ;D ....
Voici donc se que j'ai mis apres le dernier return1 de mes commandes dans le filterscript admin ( a moin qu'il faut mettre sans dans le GM ) :
new player[MAX_PLAYER_NAME];
new tmpp[256];
new text;
GetPlayerName(playerid, player, sizeof(player));
format(tmpp, sizeof(tmpp), "***(id:%i) %s : %s",playerid,player,text);
SendAdminMessage(COLOR_LIGHTBLUE,tmpp);
return 1;
}
J'ai aucune erreur ( enfin si mais pas quand je compile ) quand je suis pas loger admin les commandes marche bien mais des que je me logge quand je tape une commande j'ai un message bleu qui me dit " *** (id:0) [FR]GtaManiac : " et il n'y a pas la commande qui s'affiche apres les ":" et je ne peut utiliser aucune commande le message revien a chaque fois ???
Comment faut t'il faire pour résoudre se léger probleme ?.
Merki d'avance
A+
Maniac.
-
Tu as mit text, c'est pas cmdtext qu'il faut mettre ? :blink
AK NV.
-
Non ^^ En plus c'est pas une commande ça, il manque un bout de ton script ^^
Arsenik, il a mis "text" parce que sa cmd doit faire apparaitre un text avec l'action, ou alors juste un texte.
Exemple :
new name[MAX_PLAYER_NAME];
new string[256];
new deathreason[20];
GetPlayerName(playerid, name, sizeof(name));
GetWeaponName(reason, deathreason, 20);
format(string, sizeof(string), "*** %s est mort ^^!.", name);
SendClientMessageToAll(COLOR_BLEUTROUBLE, string);
-
Se n'est pas sa que j'ai demandé , j'ai demander comment faire quand un joueur tape une commande sa me l'affiche dans le tchat quand je suis loggé admin ...
-
Donc ça c'est pas compliqué c'est plus simple que le code que tu as mis, donc tu fait une
SendClientMessageToAll
Avec le IsPlayerAdmin ^^ et voila, je te laisse faire ton bout de script, si t'as des probs dit le nous
ps: excuse mias j'avais pas bien lus ton 1er post en faite :s ^^
-
Euh .... avec un SendClientMessageToAll , comment veut tu que je vois les cmds des autres ??? a moin que je n'est vraiment rien compris .
-
Tu met un SendClientMessageToAll dans ta commande :
SendClientMessageToAll(/*la couleur*/,"/*le message*/");
-
Heu, désolé, ce n'est pas un SendClientMessageToAll qui faut mais un SendClientMessage tout court ^^ encore désolé.... ;D
Sinon après tu rajoute le IsPlayerAdmin et comme ça les persos loggés admins verront quelles commandes tu as utilisé, ça peut marcher dans les deux sens aussi, tu tape une cmd, les autre players admin la voyent, les autres players admin tapent une cmd et tu peut voir ce qu'ils ont taper ^^ voila ;)
Avec un SendClientMEssageToAll, tous les players qu'ils soient admins ou non, auraient vues ce que tu as tapé et ce que les autre players admins tapent ^^ C'est pas franchement cool surtout que ça pourrait faire des jaloux ^^
-
J'ai résolu le probleme du texte mais un autre probleme persiste , tout est d'ecrit dans l'image ;)
(http://img249.imageshack.us/img249/4042/maniacbugpv4.th.jpg) (http://img249.imageshack.us/my.php?image=maniacbugpv4.jpg)
-
SAlut / Re
Ah lol
Prend ça
if(strcmp(cmdtext, "/skate", true) == 0) {
if(IsPlayerInAnyVehicle(playerid)) {
new Float:X;
new Float:Y;
new Float:Z;
new VehicleID;
GetPlayerPos(playerid, X, Y, Z);
VehicleID = GetPlayerVehicleID(playerid);
SetVehiclePos(VehicleID, 1882.7637,-1390.7255,13.5703);
GameTextForPlayer(playerid,"~g~Vous etes au skate park",3000,3);
new PlayerName[30], str[256];
GetPlayerName(playerid, PlayerName, 30);
format(str, 256, "%s s'est teleporter au skate park (/skate)", PlayerName);
SendClientMessageToAll( 0x33AA33AA, str);
} else {
new Float:X;
new Float:Y;
new Float:Z;
GetPlayerPos(playerid, X, Y, Z);
SetPlayerPos(playerid, 1917.3649,-1405.1084,13.5703);
GameTextForPlayer(playerid,"~g~Vous etes au skate park",3000,3);
new PlayerName[30], str[256];
GetPlayerName(playerid, PlayerName, 30);
format(str, 256, "%s s'est teleporter au skate park (/skate)", PlayerName);
SendClientMessageToAll( 0x33AA33AA, str);
}
return 1;
}
:happy :happy :happy
Et Si Y a Un Problem Dis A Moi :happy
-
f11 tu n'a pas compris mon probleme , j'ai aucun probleme de script de téléportation c'est juste qu'avec mon code citer plus haut je ne peut PAS me téléporter ;)
-
Re :)
f11 tu n'a pas compris mon probleme , j'ai aucun probleme de script de téléportation c'est juste qu'avec mon code citer plus haut je ne peut PAS me téléporter ;)
???
Tu Peux Me Passer Ton Script De Teleportation Pour Le Voir ?? ???
:happy :happy
Bon Chance :)
-
Re :)
Tu Peux Me Passer Ton Script De Teleportation Pour Le Voir ?? ???
Bon Chance :)
Je pence que sans te le passer il pourras resoudre son probleme ! ! ;)
AK NV.
-
Tu Peux Me Passer Ton Script De Teleportation Pour Le Voir ??
J'hallucine , tu veut pas mon GM aussi ? :bangin
-
J'hallucine , tu veut pas mon GM aussi ? :bangin
Voyon Maniac as t-il dit ca ? ::)
NV.
-
Re
Tu Veux pas L'aide GtaManiac ?? ???
??? ??? ???
Si t'as Besoin De L'aide Alors Passe Moi Ton GM Ou Ta Commande De Teleportation :...
Bon Chance :) :)
-
F11,
Toi et moi savons que s'il te la passe ou pas sa changeras rien il en seras au meme point !
NV.
-
Re
Tu Veux pas L'aide GtaManiac ?? ???
??? ??? ???
Si t'as Besoin De L'aide Alors Passe Moi Ton GM Ou Ta Commande De Teleportation :...
Bon Chance :) :)
Lol, tu pense qu'il va te passer son GM comme sa xD noël c'est dans 24 jours ;)
++
R@f
-
Re
Lol :lmao
Alors GtaManiac
Laisse Tomber ça
Bye ++
----------------------------
Bon Chance
:) :) :) :) :) :) :) :) :) :)
-
Je pense qu'il l'avais penser avant que tu lui dise ::) !
NV.
-
Je ne suis pas un fou , mais un maniac ... par conséquant je ne donne pas mon GM a n'importe qui et surtout pas a une perssone en qui j'ai pas confiance ou que je ne connait pas asser .
-
Je vais pas donner de script mais un petit cours sur les événements et les callbacks.
SA-MP repose sur des événements.
Un événement est tout (ou presque) ce qui peut se produire dans le jeu (connexion d'un joueur, entrée dans un véhicule, saisie d'une commande RCON, ...)
Et à chaque événement du jeu correspond ce qu'on appele une callback.
La callback est appelée à chaque fois que l'événement qui lui est associé survient.
Exemple : Chaque fois qu'un joueur monte dans un véhicule, le serveur appelle la callback OnPlayerEnterVehicle.
Pour toutes les callbacks, le serveur à un code par défaut (c'est à dire que si on n'écrit pas de script particulier pour une callback, le serveur se débrouille avec son propre bout de script en interne - qui le plupart du temps ne fait rien).
Et pour dire au serveur que l'on a traité ou pas l'événement qui a déclenché l'appel à la callback, on se sert de la valeur de retour (return).
Si on retourne 0 (return 0;), on dit au serveur qu'on n'a pas traité l'événement donc il faut que le serveur le traite lui-même.
Si on retourne 1 (return 1;), on dit au serveur qu'on s'est chargé de traiter l'événenment et qu'il n'a rien d'autre à faire.
Dans le cas d'un filterscript, ça se complique un peu puisque qu'il peut y avoir plusieurs fois la même callback (une par filterscript et une dans le GM).
L'orde d'appel d'une callback est le suivant :
callback du premier FS (si elle existe), callback du 2eme FS (si elle existe), ...., callback du GM (si elle existe) et enfin callback par défaut du serveur.
Le serveur appelera toutes les callback jusqu'a ce que l'une d'entre elle retourne 1 (événement traité donc plus la peine de continuer).
Ainsi si un FS a une callback qui retourne 1, ceci va désactiver les mêmes callbacks dans les FSs suivants et dans le GM.
Donc dans ton cas Maniac, si ton filterscript retourne 1 dans la callback OnPlayerCommandTest, ta commande ne sera pas exécutée puisque tu auras dit au serveur que l'événement (saisie d'un commande par un joueur) a été traité donc il n'appellera pas OnPlayerCommandText de ton GM.
Pour la petite histoire, quand le callback OnPlayerCommandText d'un GM renvoie 0, le serveur appelle sa callback par défaut qui ne fait rien d'autre que d'afficher "unknown command". Et dans ton cas (on le voit sur ton screenshot) ce message n'est pas affiché. Ce qui montre bien que le serveur n'a pas appelé non plus sa callback par défaut.
Tu n'as pas donné une assez grande partie de ton script mais je pense que si tu remplace le return 1; de ton FS par return 0; dans OnPlayerCommandText, ça devrait marcher.
++
Syg
-
Heuuu SYG, c'est quand que tu arrete d'être bon ? :laugh :laugh
NV.
-
Je veux pas, je PEUX pas, c'est mon gagne pain tu sais, je veux pas me retrouver sur la paille ....
++
Syg
-
Encore une fois je m'endormirai moin "con" lol merci pour se petit cour syg
[HS] Mon 50 eme message cool lol [HS]
-
Merci SYG pour l'explication " ultra détaillé " t'es ma Spider Spawing :-* sa marche impecable .
SAUF que je ne vois pas les cmds des autres joueurs autre que les miennes ><
-
C'est normal Maniac, puisque tu fais un SendClientMessage sur toi-même.
Donc pour que tous les admins reçoivent les commandes des joueurs, il faut faire un boucle sur tous les joueurs puis dans cette boucle un test pour savoir si le joueur est admin et si c'est le cas, lui envoyer le texte.
Ce qui donne :
GetPlayerName (playerid, player, sizeof (player));
format(tmpp, sizeof (tmpp), "***(id:%i) %s : %s", playerid, player, cmdtext);
for (new i=0 ; i<MAX_PLAYER ; i++)
{
/* Si le joueur est admin */
if (IsPlayerAdmin (i))
{
/* On lui envoie le message */
SendClientMessage (i, COLOR_LIGHTBLUE, tmpp);
}
}
Comme ceci, tous les admins recevront les commandes de tous les joueurs.
Tu peux même ajouter un filtre pour ne pas avoir tes propres commandes :
if (IsPlayerAdmin (i))
devient
if (i != playerid && IsPlayerAdmin (i))
++
Syg
-
Léger probleme , je ne vois pas les commandes des joueurs ni les miennes , comme si le code n'existait pas ;D
-
Est-ce que tu t'es loggé admin par le RCON au moins (puisque le test if (IsPlayerAdmin (i)) ne fonctionne que si tu es admin RCON).
Maintenant, je ne sais pas ce que tu as mis dans ton script donc pas facile de te répondre.
Envoie moi ton script ou juste la callback concernée en PM pour que je regarde ça si tu veux.
++
Syg
-
Oui je suis loggé en RCON et sa ne fonctionne maleuresement pas .
Je t'envoye mon GM en pm ;)