Salut à tous !
Récemment, j'ai eu plusieurs demande d'aide vis à vis des fonctions et aujourd'hui j'ai décidé de lancer ma propre série de tutoriel, les TMTCPas (Toi même tu sais pas).
Enfin bref, ce premier tuto sera destiné au fonction basique qui ne nécessite pas de return.
Bon, dejà le principe d'une fonction (ou d'un sub), c'est de réduire la taille d'un fichier, ça tu le sais.
Exemple:
Imaginons que j'ai un skript qui ressemble à ça:
on death:
if damage was cause by explosion:
add 1 to {killstreak.%attacker%}
add 1 to {kill.%attacker%}
add 1 to {death.%victim%}
send "Tu es mort d'explosion." to victim
else if damage was cause by lava:
add 1 to {killstreak.%attacker%}
add 1 to {kill.%attacker%}
add 1 to {death.%victim%}
send "Tu es mort de lave." to victim
else if damage was cause by sword:
add 1 to {killstreak.%attacker%}
add 1 to {kill.%attacker%}
add 1 to {death.%victim%}
send "Tu es mort d'épée." to victim
(Je sais même pas trop si on peut écrire ça comme ça mais c'est pas trop le problème ^^)
Donc bon, là on a clairement un problème, vu qu'on répète à chaque fois la même ^^
Donc ! Comment régler ce problème ! On va créer une fonction !
Alors, toutes fonctions doit être créer de cette manière:
function attackerVictim()
# code
Donc ici, ça devrait ressembler à un truc à peu près comme ça:
function attackerVictim()
add 1 to {killstreak.%attacker%}
add 1 to {kill.%attacker%}
add 1 to {death.%victim%}
Donc bon, là, si on l'intègre au code comme ça, ça va pas fonctionner :
on death:
if damage was cause by explosion:
attackerVictim() # Ici on appelle la fonction
send "Tu es mort d'explosion." to victim
else if damage was cause by lava:
attackerVictim()
send "Tu es mort de lave." to victim
else if damage was cause by sword:
attackerVictim()
send "Tu es mort d'épée." to victim
function attackerVictim()
add 1 to {killstreak.%attacker%}
add 1 to {kill.%attacker%}
add 1 to {death.%victim%}
Problème : La fonction ne va pas comprendre ce qu'est %victim% et %attacker% donc, on va passer par des "paramètres" que tu peux mettre quand tu créer une fonction, ça ressemble à ça:
function attackerVictim(a: player, v: player) # Donc là j'ai crée des variables temporaires dans ma fonction, et j'ai décidé de les parse as player. D'où le "a: player".
add 1 to {killstreak.%{_a}%} # Donc ici on remplace %attacker% par %{_a}% (qui représente l'attaquant)
add 1 to {kill.%{_a}%} # Ici pareil
add 1 to {death.%{_v}%} # Ici on met %{_v}%
Sachez que l'on pourrait également mettre des paramètres de fonction de ce type :
a: text # Il faudrait alors appeler la fonction dans le code comme ça : attackerVictim("attacker", victim)
a: number
a: block
Donc notre fonction est prête ! Il ne manque plus qu'à l'appeler et on fait comme ça:
on death:
if damage was cause by explosion:
attackerVictim(attacker, victim) # Ici on appelle la fonction, attacker ça va envoyer le pseudo de l'attaquant à la fonction attackerVictim et victim va envoyer le pseudo de la victime à ta fonction !
send "Tu es mort d'explosion." to victim
else if damage was cause by lava:
attackerVictim(attacker, victim)
send "Tu es mort de lave." to victim
else if damage was cause by sword:
attackerVictim(attacker, victim)
send "Tu es mort d'épée." to victim
function attackerVictim(a: player, v: player)
add 1 to {killstreak.%{_a}%}
add 1 to {kill.%{_a}%}
add 1 to {death.%{_v}%}
Voilà ! Si tu n'as pas compris ce tutoriel, envoie-moi un MP qu'on règle tout ça ensemble :)