Citizen

Other Languages Moderators
  • Content count

    1,711
  • Joined

  • Last visited

Community Reputation

18 Decent

4 Followers

About Citizen

  • Rank
    French Section Moderator
  • Birthday 12/07/1993

Details

  • Gang
    Byston Evolution
  • Location
    Lyon ( France )
  • Interests
    Lua,C/C++,HTML,PHP, mySQL,Basic,C#,JAVA,js and MTA of Course ^^
  1. probleme panel GUI

    Impossible, le code n'a aucun sens et même avec un addCommandHandler ça ne passera pas. function repair() outputChatBox("Bouton réparer cliqué !") end addEventHandler("onClientGUIClick", GUIEditor_Button[8], repair, false) Ce code affichera "Bouton réparer cliqué !" dans le chat si on fait un clic gauche, droit ou clic molette. Ok donc on va maintenant restreindre notre code pour n'autoriser que le clic gauche, et pour ça il faut vérifier la valeur du paramètre button que l'event envoit en 1er paramètre si on ajoute une variable pour la réceptionner: function repair( button ) if button == "left" then outputChatBox("Bouton réparer cliqué !") end end addEventHandler("onClientGUIClick", GUIEditor_Button[8], repair, false) Voilà le code du dessus affichera "Bouton réparer cliqué !" mais que si on a fait un clic gauche. Maintenant on veut réparer le véhicule dans lequel le joueur est assis. En regardant le wiki, je trouve cette fonction: fixVehicle Mais d'après la syntaxe et comme on pouvait s'y attendre, il faut lui donner en paramètre le véhicule à réparer donc il faut d'abord récupérer le véhicule dans lequel le joueur local (on est en script client donc getLocalPlayer() pour ça) est assis et toujours via le wiki (plus difficile à trouver je te l'accorde) je vois cette fonction: getPedOccupiedVehicle Elle retournera false s'il n'est pas actuellement dans un véhicule, auquel cas on peut afficher un message d'erreur: function repair( button ) if button == "left" then local vehicle = getPedOccupiedVehicle( getLocalPlayer() ) -- on récupère le véhicule occupé par le joueur local if vehicle then -- si on a bien une valeur (autre que false ici) ... fixVehicle( vehicle ) -- on répare ce véhicule else -- sinon ... outputChatBox( "You have to be in a vehicle to fix it !", getLocalPlayer(), 200, 0, 0) -- on affiche ce message au joueur local et en rouge. end end end addEventHandler("onClientGUIClick", GUIEditor_Button[8], repair, false) On va également lui retirer 50$ et afficher ton message: function repair( button ) if button == "left" then local vehicle = getPedOccupiedVehicle( getLocalPlayer() ) if vehicle then fixVehicle( vehicle ) takePlayerMoney ( getLocalPlayer(), 50 ) -- il n'y a que 2 arguments, pas de true à la fin outputChatBox( "You have payed 50$ for your repair.", getLocalPlayer(), 125, 125, 0 ) else outputChatBox( "You have to be in a vehicle to fix it !", getLocalPlayer(), 200, 0, 0) end end end addEventHandler("onClientGUIClick", GUIEditor_Button[8], repair, false) Et là tu as quelque chose de de fonctionnel et qui correspond à ce que tu veux. C'est en essayant et en apprenant de ces erreurs qu'on devient meilleur. Continue ton apprentissage et n'hésite pas si tu as d'autres questions. Cordialement, Citizen
  2. Failed to call

    @Wumbaloo Franchement ça m'étonnerait que ça soit ça (même si tu as raison de le souligner) parce que je suis persuadé que si c'était ça on aurait plutôt ce message d'erreur: J'ai trouvé la ressource (page du wiki) et je suis maintenant quasi sûr qu'il essaye de l'appeler depuis un script serveur. @Ea7gign Peux tu ajouter ce code juste en-dessous de ton addCommandHandler et me dire ce que ça affiche dans la chatbox au démarrage de ta ressource ? outputChatBox("Script type: "..(localPlayer and "client" or "server")) Je pense que ça va afficher Script type: server alors qu'il faudrait Script type: client
  3. Failed to call

    - Vérifie bien le nom de la ressource au cas où il y aurait une faute de frappe. - Vérifie le type de l'export pour cette fonction (server, client ou shared) et vérifier si tu l'appelles depuis un script du même type (si c'est en shared, ça marchera pour tout). - Vérifie que les paramètres soient bons.
  4. Problème d'affichage

    Pour connaître la liste des raccourcis mis à disposition:
  5. Problème d'affichage

    function show_dx() if(isPedInVehicle(thePlayer)) then local theVehicle = getPedOccupiedVehicle(thePlayer) if(handlerExist) then removeEventHandler("onClientRender", getRootElement(), dxDraw) handlerExist = false else addEventHandler("onClientRender", getRootElement(), dxDraw) handlerExist = true end else outputChatBox("Tu doit être dans un véhicule !", thePlayer) end end bindKey("m", "down", show_dx) Ici la variable thePlayer n'est pas définie ! Donc tu iras toujours dans le else car isPedInVehicle(nil) retournera toujours false. Comme c'est un script client, et qu'un script client s'exécute pour un joueur à la fois (chaque joueur en récupère une copie à la connexion et l'exécutent pour eux-même) il est possible de récupérer directement le joueur actuel via getLocalPlayer() ou le raccourci très pratique: localPlayer. -- Version 1: via getLocalPlayer() function show_dx() local thePlayer = getLocalPlayer() -- on défini thePlayer if(isPedInVehicle(thePlayer)) then local theVehicle = getPedOccupiedVehicle(thePlayer) if(handlerExist) then removeEventHandler("onClientRender", getRootElement(), dxDraw) handlerExist = false else addEventHandler("onClientRender", getRootElement(), dxDraw) handlerExist = true end else outputChatBox("Tu doit être dans un véhicule !", thePlayer) end end bindKey("m", "down", show_dx) -- Version2: directement via localPlayer function show_dx() if(isPedInVehicle(localPlayer)) then local theVehicle = getPedOccupiedVehicle(thePlayer) if(handlerExist) then removeEventHandler("onClientRender", getRootElement(), dxDraw) handlerExist = false else addEventHandler("onClientRender", getRootElement(), dxDraw) handlerExist = true end else outputChatBox("Tu doit être dans un véhicule !", localPlayer) end end bindKey("m", "down", show_dx)
  6. Besoin d'un script

    Tu pouvais le faire toi-même, la fonction setWeaponProperty permet justement de faire ça: Server: -- Armes à modifier (tu peux en ajouter en séparant bien avec des virgules) -- Liste des armes https://wiki.multitheftauto.com/wiki/Weapons local weaponsId = { 30, -- AK47 31, -- M4 } addEventHandler("onResourceStart", resourceRoot, function () for _, weapId in ipairs(weaponsId) do for _, skill in ipairs( { "poor", "std", "pro" } ) do -- liste des flags et leurs effets: https://wiki.multitheftauto.com/wiki/Weapon_Flags setWeaponPropertyFlag(weapId, skill, 0x000010, true) -- peut viser et bouger en même temps setWeaponPropertyFlag(weapId, skill, 0x000020, true) -- peut tirer et bouger en même temps end end end) -- Set or clear an individual weapon flag bit function setWeaponPropertyFlag( weapon, skill, flagBit, bSet ) local bIsSet = bitAnd( getWeaponProperty(weapon, skill, "flags"), flagBit ) ~= 0 if bIsSet ~= bSet then setWeaponProperty(weapon, skill, "flags", flagBit) end end Testé et ça fonctionne (je ne sais pas quel gamemode tu as mais moi je pouvais déjà viser, tirer et bouger en même temps (sauf en étant accroupi).
  7. Problème de spawn zombies

    Ça ne m'aide pas, je ne sais toujours pas ce qui se passe quand tu te connectes sur le serveur: est-ce que tu spawns tout de suite ou il y a t'il une voir plusieurs étapes ? Utilise ce code pour débuguer le timing (server-side): function round(num, precision) return math.floor(num*math.pow(10,precision)+0.5) / math.pow(10,precision) end addEventHandler("onPlayerSpawn", root, function () local x, y, z = getElementPosition(source) outputChatBox("J'ai spawn à x:"..round(x, 3)..", y:"..round(y, 3)..", z:"..round(z, 3)) end) addEvent( "onZombieSpawn", true ) addEventHandler("onPlayerSpawn", root, function (x, y, z) outputChatBox("Zombie spawned pour "..getPlayerName(source).." à x:"..round(x, 3)..", y:"..round(y, 3)..", z:"..round(z, 3)) x, y, z = getElementPosition(source) outputChatBox(" alors qu'il est à x:"..round(x, 3)..", y:"..round(y, 3)..", z:"..round(z, 3)) end) Je n'ai pas testé le code, remonte moi les erreurs si tu en as. Le test à faire: Redémarrer le serveur complètement et avec mon code Se connecter au serveur Spawn quelque part sur ta map (il y aura un message lorsque tu spawn) Attends un peu que d'autres zombies spawn (il y aura un message lorsqu'un zombie spawn) Me copier la chatbox (ou me mettre un screenshot) en réponse.
  8. Problème de spawn zombies

    Donc c'est un problème de collision ou alors t'as un panel de connexion ou un truc du genre ?
  9. Problème de spawn zombies

    C'est le cas ou pas ?
  10. Problème de spawn zombies

    Hmmm normalement le code devrait faire spawn les zombie sur la map et pas en-dessous à condition que le joueur soit sur la map et pas en-dessous (et que la map a bien une collision pour le sol à l'endroit du spawn (random autour du joueur)). Si le joueur ne spawn pas tout de suite sur la map et que pendant ce laps de temps le joueur est considéré comme en-dessous de la map (genre un panel de login ou autre), les zombies vont spawn sous la map.
  11. Problème de spawn zombies

    Bonjour, Il me faudrait la fonction complète qui fait un triggerClientEvent("Spawn_Placement" blabla) La solution rapide (mais dégueulasse) serait de remplacer la dernière fonction par: addEvent( "Spawn_Placement", true ) function Spawn_Place(xcoord, ycoord) local x,y,z = getElementPosition( getLocalPlayer() ) local gz = getGroundPosition ( x, y, z+100 ) triggerServerEvent ("onZombieSpawn", getLocalPlayer(), x, y, gz+10 ) end addEventHandler("Spawn_Placement", getRootElement(), Spawn_Place) Mais ça va faire tomber le zombie sur la tête du joueur donc il faudrait comprendre à comment sont calculés xcoord et ycoord. C'est peut-être des spawn prédéfinis que tu peux peut-être modifier.
  12. Bonjour, Ici, nous évitons d'aider sur des scripts/ressources volés. Valhalla est un gamemode volé qui a fuité sur internet, ses auteurs originaux n'ont jamais souhaités le rendre publique. Cordialement, Citizen
  13. Probleme de duty faction

    La ressource concernée n'as pas les droits nécessaires. Rajoute la dans le groupe Admin de l'acl (serveur éteint) puis réessaye.
  14. Probleme de duty faction

    Peux-tu être plus précis ? Si tu n'as pas de factions en BDD, ta dropdown list sera vide.