Bonjour TotoMine et bienvenue sur le forum ;)
Pourrais-tu être plus précis ? Je ne comprends pas si tu utilises ce script ( dans ce cas tu n'aurais pas besoin d'aide vu qu'il le fait déjà ) ou alors un autre script de zombies qui ne donne pas d'argent ??
En tout cas, il te faudra utiliser ce qu'on appelle un
event.
Un
event est un événement que l'on peut "attacher" à n'importe qu'elle fonction et dès que le serveur "
trigger" cet event, il va exécuter la ou les fonctions attaché à cet
event.
Il y a beaucoup d’évents du côté serveur et client ( j'explique en bas qu'est-ce que c'est )
Pour notre cas, on a besoin d'un event qui est trigger ( ~appeler ) lorsqu'une personne meurt.
Seulement voila, il y en a 2:
-
onPedWasted ( pour les peds ou bots si tu préfères )
-
onPlayerWasted ( pour les joueurs de ton serveur )
Je suppose que tes zombies sont des bots et je vais donc utiliser
onPedWasted, je vais aussi créer ma fonction qui va donner 200 ( comme la ressource que tu nous as montré ) au joueur qui l'a tué.
-- je crée une fonction avec les paramètres de l'event ( pour pouvoir les utiliser dans la fonction )
function zombieDied( totalAmmo, killer, killerWeapon, bodypart, stealth )
-- je vois que finalement, je n'ai besoin que du paramètre killer de cet event
-- donc je peux l'écrire comme ceci
function zombieDied( totalAmmo, killer )
-- je suis obliger de laisser totalAmmo car ce qui compte c'est l'ordre.
-- si je l'enleve et ne laisse que killer, j'aurai dans ma variable killer,
-- j'aurai le nombre de munitions qu'avais le bot au moment de mourir.
-- ce qui signifie aussi que je peux mettre n'importe quoi comme nom de variable
-- je peux mettre function zombieDied( dlouhfqshda, dlouhfqshdb ) mais
-- ce ne sera pas pratique pour les utiliser et on peu facilement se tromper
-- je le remet pour que ça soit plus lisible ( donc tu mets dans ton script ce qui suit )
function zombieDied( totalAmmo, killer )
givePlayerMoney( killer, 200 ) -- je donne 200$ au tueur
end
addEventHandler( "onPedWasted", getRootElement(), zombieDied ) -- j'attache la fonction a cet event
-- getRootElement(), permet juste de dire, dans ce cas la, que tous les bots en mourant feront appeler cet event
Plutôt simple non ? :P
Bon il faudra l'améliorer avec une condition pour vérifier que c'est bien un zombie et non pas un bot d'une autre ressource
comme heuuu un marchand de hotdog, ou un vendeur d'armes :D.
Mais je ne peux pas la faire sans en savoir plus sur tes zombies :happy
En ce qui concerne la partie client et la partie serveur.
La partie serveur est tout le code exécuter par la console ( je fais biensur référence à
MTA Server.exe ).
Tout ce que tu y feras sera synchrone pour tous les joueurs, créer un objet, une voiture, une couleur de voiture etc...
La partie client est en gros l'ordinateur des joueurs. Tout le code client est exécuté par l'ordinateur du joueur.
C'est très utile car c'est le seul endroit où tu peux faire afficher des images à l’écran, des fenêtres, des boutons etc...
Par contre tout ce que tu y fera, ne sera pas synchrone avec les autres joueurs.
Imaginons le code suivant dans la partie client:
function pcjJoueur( thePlayer )
local x, y, z = getElementPosition( thePlayer )
createVehicle( 461, x+2, y, z ) -- x+2 pour ne pas que la moto apparait "dans" le joueur
end
addCommandHandler( "pcj", vehiculeJoueur ) -- je crée une commande pour la fonction
Si ensuite une joueur, toi par exemple, tape la commande /pcj, la moto ne sera créé que pour toi, toi seul la vera.
Bon par contre je n'est pas compris pourquoi on ne peux pas rentrer dans les véhicules en client mais c'est pas grave :blink
Je te conseille pour l'instant d'utiliser le client que pour afficher des images et tout le tralala.
Pour afficher une image en partant de la partie serveur, il suffit en fait de passer le relai au client pour afficher l'image grâce à la fonction
triggerClientEventPour chaque fonction du wiki, il y a un ou des
exemples que tu peux tester en copiant collant le code.
Tu peux donc envoyer des informations, grâce à cette fonction, à un ou plusieurs client.
Et pour envoyer des infos depuis un client vers un autre client ( pour une raison X ), il faut d'abord passer par le serveur (
triggerServerEvent ) puis au client voulu avec
triggerClientEventVoila, il me faut juste avoir les infos pour terminer la fonction pour être sur qu'il reçoit 200$ pour avoir tué un zombie et non pas autre chose.
Cordialement,
Citizen