Jump to content

Citizen

Moderators
  • Posts

    1,803
  • Joined

  • Last visited

  • Days Won

    8

Everything posted by Citizen

  1. Please follow the rules of this section:
  2. First you could say hi or something, we are not robots so we do have feelings and that would be greatly apreciated. Second, you didn't follow the Formatting guidelines: Your code has to be in a code block with Lua language. Third, you can't request people to make the script for you, try to do it first and if you can't make it work, please show the code you tried.
  3. EDIT: nvm, I've mixed my open tabs
  4. C'est pas moi qui recherche hein, c'est Frize. Il va être content de voir qu'il y a enfin un dev de dispo ^^
  5. Pareil, il faut blinder le code pour ne pas l'exécuter si ce qu'on veut destroy n'est pas une valeur valide: elseif currentWeaponID == weapID2 and elementWeaponBack2[source] then Blood et Blood2 sont censés être 2 markers de santé sur la map. Je peux rien faire à ta place ici. supprime le code ou crée les 2 markers. Là le code est clairement prévu pour que les zombies puissent être créé par des joueurs et lorsque le zombie est créé par un joueur, on retient quel joueur l'a créé en le mettant dans l'element data "owner" du zombie. Lorsqu'un zombie meurt, il passe dans ce code et la source de cet event est le zombie en question. Si c'est un zombie classique, il n'aura pas de valeur dans l'element data "owner" donc on va récupérer false dans zombieCreator donc appeler getElementData sur false ça va planter d'où l'erreur "Bad argument @ 'getElementData' [Expected element at argument 1, got boolean]" et retourner false aussi et ensuite on y soustrait 1 pour réduire son compteur "spawnedzombies" de 1 mais false - 1 ça fait planter aussi et provoque l'erreur "attempt to perform arithmetic on a boolean value". Donc la pareil, faut blinder pour ne pas le faire s'il n'y pas de zombieCreator (et aussi au niveau de la récup du compteur de zombie créé): local zombieCreator = getElementData(source, "owner") if zombieCreator then -- on blinde ici local currentSpawnedZombies = getElementData(zombieCreator, "spawnedzombies") or 1 -- et ici aussi au cas où avec une valeur par défaut à 1 si non trouvée setElementData(zombieCreator, "spawnedzombies", currentSpawnedZombies - 1) end
  6. Ok mais il faut bien se dire que tu vas simplement masquer le problème au lieu de le corriger.
  7. Bonsoir Dewen, Alors de ce que j'en comprends, il est possible d'avoir un bot qui garde une position donnée. Normalement le système est censé lui créer un colshape qui représente le point à garder et stock cette instance de colshape dans un element data du bot ("guardcol"). Hors si tu as ces erreurs qui là, ça signifie qu'on a bien un bot jouant le rôle de gardien (puisque son "status" est "guarding") mais qu'on ne lui a pas affecté de colshape puisque "guardcol" vaut très certainement false lors de sa récupération ligne 874. Et on se doute que ce n'est pas censé arriver puisqu'on ne vient pas vérifier si "guardcol" est une valeur valide et on l'utilise directement ligne 877 pour récupérer sa position (= la position à garder). Donc il y a 2 choses à faire: comprendre pourquoi on se retrouve avec un bot qui doit monter la garde sur un colshape qui n'existe pas (ou qui existe mais qui ne lui a pas été affecté correctement) et corriger le problème à la source donc. blinder le code de guard_move pour éviter de continuer l'exécution du code si on a un gardien sans colshape. Pour le 1er il faut regarder dans le reste du gamemode. Pour le 2ème on peut rajouter une condition dans le "if" ligne 876: function guard_move (ped, oldpx, oldpy, oldpz) if (isElement(ped)) then if (getElementData ( ped, "status" ) == "guarding" ) and (getElementData (ped, "slothbot") == true) then local guardcol = getElementData ( ped, "guardcol" ) local pedhp = getElementHealth ( ped ) if guardcol and pedhp > 0 then -- L.876 la condition vérifie maintenant que guardcol ne soit pas égale à false local tx,ty,tz = getElementPosition( guardcol ) local px,py,pz = getElementPosition( ped ) local fdist = (getDistanceBetweenPoints3D (px, py, pz, tx, ty, tz)) if fdist > 4 then triggerClientEvent ( "bot_Forwards", ped ) local pdistance = (getDistanceBetweenPoints3D (oldpx, oldpy, oldpz, px, py, pz)) if (pdistance < 1 ) then local decide = math.random( 1, 7 ) -- randomly decide to if decide == 1 then -- do nothing setTimer ( guard_move, 600, 1, ped, px, py, pz) elseif decide <4 then -- jump local weap = getPedWeaponSlot(ped) if (weap == 1) or (weap == 7) then setPedWeaponSlot(ped, 0 ) triggerClientEvent ( "bot_Jump", ped ) setTimer ( setPedWeaponSlot, 850, 1, ped, weap) else triggerClientEvent ( "bot_Jump", ped ) end setTimer ( guard_move, 600, 1, ped, px, py, pz) else -- randomly turn a new direction, walk a bit, then resume local randomangle = math.random( 1, 360 ) setPedRotation( ped, randomangle ) setTimer ( guard_move, 1200, 1, ped, px, py, pz) end else -- if the ped isnt stuck setTimer ( guard_move, 700, 1, ped, px, py, pz) end else triggerClientEvent ( "bot_Stop", ped ) --already arrived at place to guard if (getElementData ( ped, "forcedmoving" ) == true ) then setElementData ( ped, "forcedmoving", false ) end setTimer ( guard_move, 1500, 1, ped, px, py, pz) -- keep looping in case ped gets moved some other way end end end end end
  8. Ouai là, c'est juste pas présenté pareil: https://wiki.multitheftauto.com/wiki/Weapon_Flags Mais c'est pas un flag c'est une propriété. T'avais pas lu là ? Bon après je ne sais pas trop comment ça doit se modifier et à quoi chacun correspond vraiment. A ta place je ferai d'abord un getWeaponProperty avec ton arme pour voir déjà quelles sont les valeurs actuelles. Puis je me créerai une commande pour modifier ces valeurs comme je veux pendant les tests en jouant avec les valeurs. Et quand t'es content du résultat, note les valeurs et utilise les dans ton script.
  9. Oui t'as raison, je vérifierai mais je pense qu'on peut.
  10. J'avais pas répondu tout de suite car comme Wumbaloo je ne l'avais jamais utilisé et du coup je n'ai jamais cherché à comprendre son fonctionnement. Mais grâce au post de 50p proposé par Wumbaloo (omg 2014 !), j'ai enfin capté. Et c'est pour ça que je viens juste corriger la manière de traduire "0x1001800": Il faut plutôt dire (sachant que ça se lit de droite à gauche): il y a la valeur 8 pour le 3ème byte donc WHEEL_F_WIDE2 est activé la valeur 1 pour le 4ème byte donc WHEEL_R_NARROW2 est activé la valeur 1 pour le 7ème byte donc USE_MAXSP_LIMIT est activé Précision aussi, on peut remarquer que dans notre exemple de 0x1001800, on n'a que 7 bytes de renseignés alors que le handlingFlags est sur 8 bytes. C'est parce que 0x1001800 c'est pareil que 0x01001800 (qui est bien sur 8 bytes) ou même pareil que 0x000000001001800. En gros tant que t'as des 0 sur la gauche du dernier "vrai chiffre" (je rappelle, ça se lit de droite à gauche) tu peux les supprimer sans problème. C'est comme si je disais 0050 pommes == 50 pommes. En vrai si ça peut aider je me suis dit que je pourrais faire un excel sur google drive où on viendrait cocher les flags souhaités et ça te sortirai le flag final en hexa (0xBidule) dans une case de résultat. Si j'ai au minimum 1 seule personne intéressée, je le fais volontiers ^^
  11. Juste pour info évite de coller des milliers de lignes de codes ici. Perso chez moi ça me fait crasher Chrome sur mon téléphone et ça l'a bien fait freeze avant de me redonner la main sur mon pc. Pour ton problème je suis d'accord avec Wumbaloo, il faut ajouter une condition avant d'exécuter le trigger de l'event onPlayerUseMedicObject et qui doit certainement être dans le code client de l'inventaire. Un petit boolean isHealing ou isUsingMedic que tu initialises à false au démarrage du script. Puis lorsque que le joueur a fait l'action en choisissant son heal, tu vérifies si le boolean est toujours à false, si c'est le cas tu fais le trigger de onPlayerUseMedicObject, tu passes le boolean à true et également un setTimer de 1500 ms pour le remettre à false. Et si ce n'est pas le cas (le boolean est à true) c'est qu'il y a déjà une action de heal en cours donc tu ne fais rien (tu ne fais pas -1 sur son item utilisé et tu ne fais pas le trigger de onPlayerUseMedicObject).
  12. Salut RoRo76, Effectivement tes renseignements sont corrects, il ne reste plus qu'a les assembler, t'as tenter de faire un essai de code avec cet event et cette fonction ? Regarde les exemples du wiki pour ces 2 choses et essaye de nous coder ce petit truc. On est là pour t'aider mais j'aimerai bien que tu sois capable de le faire. Les autres si vous me lisez essayons plutôt de l'accompagner que de lui sortir le code cash. En tout cas à la fin c'est sûr que tu auras le script fonctionnel qu'il te faut.
  13. Citizen

    DB Problem

    Did you buy the vps with MTA and database preinstalled ? If so, just ask the host support the details for the database connection. Maybe the server is listening for localhost or 127.0.0.1 connections which is the default configuration so try to use that instead of the server's IP. Otherwise, if you bought an empty VPS, then you have to setup a MySQL Server yourself.
  14. Please see this post for the solution:
  15. Citizen

    VF #4 E8Q9

    Please see this post for the solution:
  16. Citizen

    Error VF #EC95

    Please see this for the solution:
  17. Please see this for the solution:
  18. Citizen

    ERROR VF #4 JR9Z

    After investigations we have found and fixed the problem. Please restart your MTA and try again (you might need to restart it twice). We apologize for the inconvenience.
  19. Citizen

    Error VF #4 EC9Q

    After investigations we have found and fixed the problem. Please restart your MTA and try again (you might need to restart it twice). We apologize for the inconvenience.
  20. Citizen

    ERROR VF #4 EC9Q

    After investigations we have found and fixed the problem. Please restart your MTA and try again (you might need to restart it twice). We apologize for the inconvenience.
  21. I double checked the CodyJ's code and it should work ! The server log says the resource editor_test couldn't even start because of what looks like an unexpected chinese character in Treat.lua at line 50. Don't blame the community just because we didn't guess you messed up something without telling us (but the logs say it !).
  22. Bonjour Frize, Votre communauté à l'air à première vu d'être une bonne communauté au niveau du nombre de membres. Si l'ambiance est la même qu'une grande famille je suis certains que ça en intéressera plus d'un. En revanche je ne te cache pas que ça va être difficile de trouver des scripteurs FR disponibles pour travailler sur un autre serveur car en règle général, on apprend à scripter sur MTA pour créer son propre serveur donc ça va être difficile d'en trouver un qui ne travaille pas déjà sur un autre. Bonne chance en tout cas ?
  23. Je pense qu'il y a plus de scripteur français que l'on croit, juste qu'ils ont déjà leur propre projet. En effet, on ne décide pas d'apprendre à coder sur MTA pour rien, il y a une motivation réelle derrière (ouvrir son propre serveur qui me paraît une très bonne raison ^^). Ces personnes là ne sont pas forcément au courant qu'il y a une section Fr. Je suppose même qu'ils y en a beaucoup qui posent leurs questions directement dans la section scripting officielle (forum et/ou discord). Ce qui est le cas de @DiGiTal d'ailleurs
  24. Bonjour Dewen, Effectivement ce bug a déranger pas mal de monde, mais un conseil il faut éviter de coder directement sur le système de fichier du serveur final (j'entends éditer directement les fichier depuis FileZilla) et également de mettre en place un système de versionning pour les scripts du GM. Bitbucket par exemple te permet d'avoir un espace de stockage (un repository) privé et gratuit jusqu'à 5 développeurs. C'est comme Github si tu en as déjà entendu parlé mais c'est payant pour avoir un repo privé (= code non visible par n'importe qui) d'où ma recommandation. Sinon il y a aussi Gitlab. Bonne chance pour trouver un scripteur de dispo qui n'a pas déjà son propre projet, ça ne va pas être facile et bon courage pour votre reconstruction !
  25. Yes, please do when you have them ready ! We will read every suggestions/ideas.
×
×
  • Create New...