• 28 Mars 2024, 16:20:21


Auteur Sujet: [TUTO] Votre première commande  (Lu 7097 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Gilux

  • *
  • Mafioso
  • GOOBY PLS
  • Messages: 2209
    • Voir le profil
[TUTO] Votre première commande
« le: 05 Mars 2011, 00:32:42 »
Votre première commande

Sommaire :
1) Introduction
2) Commande Simple
3) Commande avec paramètres

1 : Introduction
La "fabrication" de commandes sur IV:MP est plus simple que sur SA:MP. Vous ne sentirez sûrement pas la différence lors du tuto pour les commandes simples (2e partie), mais cela va être grandement simplifié pour les commandes avec paramètres (Ce qui nécessitait strtok avant).

Nous allons donc voir ce qu'est la callback onPlayerCommand. Cette callback va être appelée, et donc exécutée dès qu'un joueur (playerid) tapera une commande. Elle prend donc comme paramètres "playerid" et "command".

2 : Commande Simple
Pour commencer, trouvez la callback "onPlayerCommand" dans votre script.
Grâce à la fonction split, nous allons séparer les différents paramètres de la commande. Ceux-ci seront mis dans un array.

Par exemple, la commande

/kick 3 Insulte sera présentée de cette façon :
cmd[0]cmd[1]cmd[2]

Nous verrons cela plus tard.

Pour le moment, nous allons créer une commande /kill.


function onPlayerCommand(playerid,command)
{
      
local cmd split(command" "); // On sépare les paramètres, même si il n'y en a pas (Il faut quand même avoir cmd[0])
      
if(cmd[0] == "/kill")
      {
           
setPlayerHealth(playerid,-1); // Il est préférable de mettre -1 : à 0, le joueur est encore en vie.
           
return 1;
      }
return 
0;
}
addEvent("playerCommand"onPlayerCommand);


Jusque là, rien de bien compliqué. if(cmd[0] == "/kill") remplace if(strcmp(cmdtext,"/kill") == 1)

3 : Des commandes avec paramètres
Maintenant, nous allons faire une commande /kick avec ID et raison. Je pense que vous aurez compris, cmd[1] et cmd[2] prendront comme valeur un ID de joueur et une raison.



if(cmd[0] == "/kick")
	
// Je zappe ici la condition "si le joueur est admin"
	
	
if(
cmd.len() == 3// Si la commande a bien 3 paramètres : cmd[0], cmd[1] et cmd[2].
	
	
{
                        
local id cmd[1].tointeger(); // la méthode .tointeger transforme un chiffre contenu dans une chaîne de caractères en chiffre (Attention au fait que ce soit bien un chiffre !)
	
	
	
if(
isPlayerConnected(id)) 
	
	
	
{
                                
sendMessageToAll("Le joueur " getPlayerName(id) + " a été kické du serveur par un admin ! (Raison : " cmd[2")",0xFFFFFFFF,true); // On peut concaténer les phrases, plus besoin de formater.
	
	
	
	
kickPlayer(id,true); // On kicke le joueur.
	
	
	
}
                        else
                        {
                                
sendPlayerMessage(playerid,"Le joueur dont vous avez demandé le kick n'est pas connecté.",0xFFFFFFFF,true);
                        }
	
	
}
	
}
return 
1;

« Modifié: 27 Juillet 2011, 19:22:37 par Gilux »

Hors ligne ApocKalipsS

  • *
  • Gangster
  • **** | Une experience GTA IV hors du commun !
  • Messages: 1141
    • Voir le profil
Re : [TUTO] Votre première commande
« Réponse #1 le: 05 Mars 2011, 11:06:04 »
Salut,
Ton tutorial est plutôt pas mal, mais tu devrais en dire un peu plus sur les bases : le système de .tostring(), .tofloat(), .len()... ("3" != 3 par exemple) C'est assez compliqué pour certain et c'est source de nombreuses erreurs.
Pour ce qui est du cmd[0], [1], etc, on utilise plutôt le mot 'tables', que tableau ou array, en Squirrel.
Ensuite explique à quoi sert addEvent, et autre fonction différentes du Pawn !
De rien pour les critiques  8)

Hors ligne Gilux

  • *
  • Mafioso
  • GOOBY PLS
  • Messages: 2209
    • Voir le profil
Re : [TUTO] Votre première commande
« Réponse #2 le: 05 Mars 2011, 12:16:02 »
Bon ben je suis bon pour faire [TUTO] Apprenons le Squirrel avec Gilux ! je crois ! :ninja
Si tu peux m'expliquer à quoi sert addEvent, ça serait sympa, j'ai pas compris l'utilité de la fonction  :happy

Hors ligne ApocKalipsS

  • *
  • Gangster
  • **** | Une experience GTA IV hors du commun !
  • Messages: 1141
    • Voir le profil
Re : [TUTO] Votre première commande
« Réponse #3 le: 05 Mars 2011, 12:36:41 »
addEvent permet d'ajouter un event, tout simplement.
Il était pas très utile dans la Beta 1 mais l'est beaucoup plus dans la version 0.1.

Si tu as un clientscript (un script qui est donc lancé chez le client, pas sur le serveur), tu peux reçevoir un évènement client plus facilement.

Exemple, dans un script client :

triggerServerEvent("nom de la fonction");
dans un script serveur :

Soit
addEvent("nom de la fonction", function(playerid) { sendPlayerMessage(playerid, "Bye!");  setPlayerHealth(playerid,-1); });
Soit
addEvent("nom de la fonction", autre_nom_de_fonction);
addEvent("nom de la fonction", autre_nom_de_fonction2);
addEvent("nom de la fonction", autre_nom_de_fonction3);//Les 3 fonctions ci dessous vont être appellées lors de callEvent("nom de la fonction") ou triggerServerEvent("nom de la fonction").

function autre_nom_de_fonction(playerid)
blablabla
function autre_nom_de_fonction2(playerid)
blablabla
function autre_nom_de_fonction3(playerid)
blablabla


Enfin, ça reste pas non plus la fonction super-utile, mais bon, ça sert !

Hors ligne Mr_C30

  • *
  • Gangster
  • souvent conquise jamais soumise
  • Messages: 1937
    • Voir le profil
Re : [TUTO] Votre première commande
« Réponse #4 le: 05 Mars 2011, 19:39:01 »
je sait même  pas si le squirel mérite un tutoriel pour etre appris ...

mdr

++C30



Radis du soir bonsoir !


Hors ligne Pixect

  • Verbal Criminal
  • *
  • Tueur en série
  • ser la fèt isi, tqvu
  • Messages: 219
    • Voir le profil
Re : [TUTO] Votre première commande
« Réponse #5 le: 06 Mars 2011, 13:39:17 »
Salut,

Merci à vous, Gilux et ApocKalipsS pour ces renseignements. :)

++
DrawKiie
« Modifié: 21 Juin 2011, 19:08:35 par DrawKiie »


Citation de: Stéphane ARLEN
« Défendre le c cédille majuscule n’est-il pas vain ? Ca m’isole, comme disent les fous. »

S'il vous plaît, passez par ici si vous avez le temps.

Hors ligne Gilux

  • *
  • Mafioso
  • GOOBY PLS
  • Messages: 2209
    • Voir le profil
Re : [TUTO] Votre première commande
« Réponse #6 le: 06 Mars 2011, 13:53:50 »
J'ai pas compris pourquoi rajouter un event, alors qu'il y a déjà les "callbacks"...

PS : Quel genre de scripts peuvent se lancer pour le client ?

EDIT : Pourquoi tu dis ça C30 ?  :ninja

Hors ligne ApocKalipsS

  • *
  • Gangster
  • **** | Une experience GTA IV hors du commun !
  • Messages: 1141
    • Voir le profil
Re : [TUTO] Votre première commande
« Réponse #7 le: 06 Mars 2011, 16:53:01 »
C'est un peu plus compliqué que ça, Gilux.
Il n'y a plus du tout de CallBacks dans la Beta 1/0.1, toutes fonctions sont des fonctions. onPlayerConnect ne sera pas différent de MaFonctionCrééeParMoiMeme, car toutes les deux ne sont jamais appelées par le serveur.
Il faut donc rajouter addEvent, pour appeler une fonction quand un événement se produit.
Comme je le disais, c'est aussi utile pour les clientscripts, je ne sais pas si tu les utilisent encore, mais le addEvent et callEvent est utile dans ce cas ci.

Hors ligne Solis

  • *
  • Nouveau
  • Messages: 5
    • Voir le profil
Re : [TUTO] Votre première commande
« Réponse #8 le: 06 Septembre 2011, 10:07:31 »
Dsl mais pour un  :boulet comme moi, je n'ai rien compris  ;D