Valentin3526 Posted August 5, 2015 Share Posted August 5, 2015 (edited) Bonjour, je revient en force avec (encore) une demande d'aide J'ai commencé ce mation à scripter un système d'indice de recherche bien spécial mais j'ai du mal sachant que j'avais arrêté de scripter en LUA pendent un petit moment. Bref, revenons à la source du problème, d'abord le script, ensuite l'explication ! --PEDS-- function pedCopLS ( name ) createPed ( 280, 1544.3, -1632, 13.4, 270 ) --(garde) end addEventHandler ( "onResourceStart", getResourceRootElement(), pedCopLS) --CONFIG PEDS-- function gunCopCty ( name ) --LS setPedWeaponSlot ( name, 3, 1) setPedWeaponSlot ( name, 22, 2) end addEventHandler ( "onResourceStart", getResourceRootElement(), gunCopCty) function deadCopCty ( thePlayer, name ) if ( isPedDead ( name ) ) then local level = getPlayerWantedLevel ( thePlayer ) if ( level > 2 ) then setPlayerWantedLevel ( theplayer, 3 ) if ( level > 3 ) then cancelEvent() else setPlayerWantedLevel ( thePlayer, 2 ) end end end end addEventHandler ( "onPedWasted", name, deadCopCty) Voilà pour le script, donc mon problème est que sur le mode debug 3 erreurs sont détéctés celles-ci: function gunCopCty ( name ) --LS setPedWeaponSlot ( name, 3, 1) -- Une erreur, au 1er argument donc "name" setPedWeaponSlot ( name, 22, 2) -- La même erreur sur celui-ci end function deadCopCty ( thePlayer, name ) if ( isPedDead ( name ) ) then local level = getPlayerWantedLevel ( thePlayer ) if ( level > 2 ) then setPlayerWantedLevel ( theplayer, 3 ) if ( level > 3 ) then cancelEvent() else setPlayerWantedLevel ( thePlayer, 2 ) end end end end addEventHandler ( "onPedWasted", name, deadCopCty) -- l'erreur est ici, 2ème argument (toujours "name") Je tiens à préciser que j'ai fait ce script à l'aide de mes aquis et du wiki, le problème vient sans doute de mes "aquis" puisque le wiki ne devrait pas avoir d'erreur dans ses scripts donc voilà, je ne sais pas pourquoi ce fameux "name" est reconnu entant que "Bad argument" mais une petite explication serait la bienvenue puisque j'ai beau chercher, je ne trouve pas... PS: si il y a plus de fautes que d'habitude, c'est à cause de la fatigue qui m'a pris en traitre ! Edited October 16, 2015 by Guest Link to comment
Moderators Citizen Posted August 6, 2015 Moderators Share Posted August 6, 2015 Bonjour dfigfjf, Il y a des erreurs dans ton script qu'on ne doit normalement plus faire si on a suivi de façon attentive les tutoriels (disponible en français) sur le wiki. Anglais: https://wiki.multitheftauto.com/wiki/Scr ... troduction Français: https://wiki.multitheftauto.com/wiki/FR/ ... grammation Je parle notamment de ta variable name que tu essayes d'utiliser un peut partout. Cette variable n'existe pas dans ton code, ce qui provoque les erreurs. Voici ma version corrigée avec le maximum de commentaires pour que tu comprennes bien: --PEDS-- function pedCopLS ( startedResource ) -- onResourceStart donne à la fonction la ressource qui démarre et non pas le ped que tu vas créer dans cette fonction --LS local garde = createPed ( 280, 1544.3, -1632, 13.4, 270 ) --(garde) setElementData( garde, "pedtType", "garde" ) -- on demande à ce ped de retenir pour nous le mot "garde" sous le nom "pedType" setPedWeaponSlot ( garde, 3, 1) setPedWeaponSlot ( garde, 22, 2) end addEventHandler ( "onResourceStart", getResourceRootElement(), pedCopLS) function deadCopCty ( totalAmmo, killer, killerWeapon, bodypart, stealth ) local deadPed = source -- le ped qui est mort est la source de l'event local pedType = getElementData( deadPed, "pedType" ) -- on demande au ped mort de nous rappeler le mot qu'on lui a peut-être demandé de retenir sous le nom "pedType". if ( pedType == "garde" ) then -- s'il nous réponds "garde" alors ça veut dire que le ped mort était un garde. local level = getPlayerWantedLevel ( killer ) if ( level == 0 ) then -- s'il n'est pas encore recherché setPlayerWantedLevel ( killer, 2 ) -- le tueur du ped se prends 2 étoiles d'un seul coup else if ( level == 2 ) then -- s'il a déjà 2 étoiles setPlayerWantedLevel ( killer, 3 ) -- il s'en prends une 3ème (qui est le maximum d'étoiles qui peut se prendre en tuant des gardes) end end end addEventHandler ( "onPedWasted", getRootElement(), deadCopCty) -- ici on utilise getRootElement pour dire que tout le monde peut déclencher la fonction deadCopCty si onPedWasted est déclenché sur lui. -- Mais comme onPedWasted n'est déclenché que sur les peds, deadCopCty sera déclenché si n'importe quel ped meurt. -- Question: Oui mais moi je veux que deadCopCty se déclenche que si c'est un garde ! -- Réponse: Bonne remarque mais c'est pour ça qu'on vérifie que l'elementdata "pedType" soit bien égal à "garde", sinon on ne fait rien. Le tutoriel explique très bien les bases de la programmation sur MTA avec l'explication du fonctionnement des events et des elementdatas qu'on a utilisé ici. N'hésite pas à demander des explications supplémentaires. Cordialement, Citizen Link to comment
Valentin3526 Posted August 6, 2015 Author Share Posted August 6, 2015 Merci, je venait justement de voir en comparant avec un de mes ancies scripts et un script récent (je sais pas comment j'ai fait pour pas voir mon erreur d'ailleur, sûrement la fatigue comme je l'ai dit) mais merci quand-même pour l'aide Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now