Dewen Posted December 4, 2019 Share Posted December 4, 2019 Salut à tous ! J'aurai besoin de vos aide en effet je "travaille" sur un serveur DayZ et j'aurai quelques soucis. Dès que les zombies meurent ou spawn j'ai souvent des messages d'erreur ! Voici les messages : [2019-12-04 20:15:15] WARNING: slothbot\sbserver.Lua:877: Bad argument @ 'getElementPosition' [Expected element at argument 1, got boolean] [2019-12-04 20:15:15] WARNING: slothbot\sbserver.Lua:879: Bad argument @ 'getDistanceBetweenPoints3D' [Expected vector3 at argument 4, got boolean] [2019-12-04 20:15:15] ERROR: slothbot\sbserver.Lua:880: attempt to compare number with boolean [2019-12-04 20:15:15] WARNING: slothbot\sbserver.Lua:877: Bad argument @ 'getElementPosition' [Expected element at argument 1, got boolean] [2019-12-04 20:15:21] WARNING: slothbot\sbserver.Lua:879: Bad argument @ 'getDistanceBetweenPoints3D' [Expected vector3 at argument 4, got boolean] [2019-12-04 20:15:21] ERROR: slothbot\sbserver.Lua:880: attempt to compare number with boolean [2019-12-04 20:15:21] WARNING: slothbot\sbserver.Lua:877: Bad argument @ 'getElementPosition' [Expected element at argument 1, got boolean] [2019-12-04 20:15:21] WARNING: slothbot\sbserver.Lua:879: Bad argument @ 'getDistanceBetweenPoints3D' [Expected vector3 at argument 4, got boolean] [2019-12-04 20:15:21] ERROR: slothbot\sbserver.Lua:880: attempt to compare number with boolean [2019-12-04 20:15:58] WARNING: slothbot\sbserver.Lua:877: Bad argument @ 'getElementPosition' [Expected element at argument 1, got boolean] [2019-12-04 20:15:58] WARNING: slothbot\sbserver.Lua:879: Bad argument @ 'getDistanceBetweenPoints3D' [Expected vector3 at argument 4, got boolean] [2019-12-04 20:15:58] ERROR: slothbot\sbserver.Lua:880: attempt to compare number with boolean [2019-12-04 20:16:42] WARNING: slothbot\sbserver.Lua:877: Bad argument @ 'getElementPosition' [Expected element at argument 1, got boolean] [2019-12-04 20:16:42] WARNING: slothbot\sbserver.Lua:879: Bad argument @ 'getDistanceBetweenPoints3D' [Expected vector3 at argument 4, got boolean] [2019-12-04 20:16:42] ERROR: slothbot\sbserver.Lua:880: attempt to compare number with boolean Voici le fichier en question : 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 pedhp > 0 then 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 Je tiens juste à dire la première ligne = la 871 sur mon fichier Merci d'avance pour votre aide ! Link to comment
Moderators Citizen Posted December 4, 2019 Moderators Share Posted December 4, 2019 (edited) 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 Edited December 4, 2019 by Citizen Link to comment
Dewen Posted December 5, 2019 Author Share Posted December 5, 2019 11 hours ago, Citizen said: 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 Je tiens à te remercier pour la réponse qui a été très rapide ! Je vais d'abord essayer la 2ème solution et si sa persiste je vais devoir surement revenir vers vous ^^ 1 Link to comment
Moderators Citizen Posted December 5, 2019 Moderators Share Posted December 5, 2019 Ok mais il faut bien se dire que tu vas simplement masquer le problème au lieu de le corriger. 1 Link to comment
Dewen Posted December 5, 2019 Author Share Posted December 5, 2019 1 hour ago, Citizen said: Ok mais il faut bien se dire que tu vas simplement masquer le problème au lieu de le corriger. En effet je n'ai plus ma console qui est spam par se problème mais j'ai d'autres erreurs ================================================================== = Multi Theft Auto: San Andreas v1.5.7 ================================================================== = Server name : Dayz [Test] = Server IP address: auto = Server port : 22003 = = Log file : .. 1.5/server/mods/deathmatch/logs/server.log = Maximum players : 32 = HTTP port : 22005 = Voice Chat : Disabled = Bandwidth saving : Medium ================================================================== [2019-12-05 13:01:42] Resource 'Mods' requests some acl rights. Use the command 'aclrequest list Mods' [2019-12-05 13:02:22] Resource 'mapmanager' requests some acl rights. Use the command 'aclrequest list mapmanager' [2019-12-05 13:03:09] Resources: 251 loaded, 0 failed [2019-12-05 13:03:09] Starting resources... [2019-12-05 13:03:10] Server minclientversion is now 1.5.7-9.18957.0 [2019-12-05 13:03:11] INFO: MAPMANAGER: Some important ACL permissions are missing. To ensure the correct functioning of Mapmanager, please write: aclrequest allow mapmanager all [2019-12-05 13:03:13] WARNING: File 'items/backpack_Rucksack.txd' in resource 'DayZ' contains errors. [2019-12-05 13:03:17] WARNING: [DayZ]\DayZ\survivorSystem.Lua:2339: Bad argument @ 'addEventHandler' [Expected element at argument 2, got nil] [2019-12-05 13:03:17] WARNING: [DayZ]\DayZ\survivorSystem.Lua:2340: Bad argument @ 'addEventHandler' [Expected element at argument 2, got nil] [2019-12-05 13:03:18] Gamemode 'DayZ' started. [2019-12-05 13:03:34] ERROR: [Ressources]\SytemeDeTeam\gang_server.Lua:4: exports: Call to non-running server resource (scoreboard) [string "?"] [2019-12-05 13:03:34] Creating new DB table gangs [2019-12-05 13:03:34] Creating new DB table gang_members [2019-12-05 13:03:34] Creating new DB table level_system [2019-12-05 13:03:46] Querying MTA master server... success! (Auto detected IP:**.**.**.**) [2019-12-05 13:03:46] Authorized serial account protection is enabled for the ACL group(s): `Admin` See http://mtasa.com/authserial [2019-12-05 13:03:46] WARNING: <owner_email_address> not set [2019-12-05 13:03:46] Server started and is ready to accept connections! [2019-12-05 13:03:46] To stop the server, type 'shutdown' or press Ctrl-C [2019-12-05 13:03:46] Type 'help' for a list of commands. [2019-12-05 13:03:48] Starting addon_tentfull [2019-12-05 13:03:48] startResource: Resource 'addon_tentfull' started [2019-12-05 13:05:33] CONNECT: Dewen connected (IP: ***.**.*.** Serial: ********************************* Version: 1.5.7-9.20348.0) [2019-12-05 13:05:38] JOIN: Dewen joined the game (IP: ***.**.**.**) [2019-12-05 13:06:39] WARNING: [Ressources]\CreadorLogeo\silvers.Lua:65: Bad argument @ 'isObjectInACLGroup' [Expected acl-group at argument 2, got boolean] [2019-12-05 13:06:39] LOGIN: (Everyone, Admin, Console, PanelAdmin) Dewen successfully logged in as 'Dewen' (IP: ***.***.*.*** Serial: *******************************) [2019-12-05 13:06:46] ERROR: Client (Dewen) triggered serverside event onZombieLostPlayer, but event is not added serverside [2019-12-05 13:06:52] ERROR: Client (Dewen) triggered serverside event onZombieLostPlayer, but event is not added serverside [2019-12-05 13:07:31] WARNING: [DayZ]\DayZ\survivorSystem.Lua:769: Bad argument @ 'destroyElement' [Expected element at argument 1, got nil] [2019-12-05 13:07:35] WARNING: [DayZ]\DayZ\zombies.Lua:223: Bad argument @ 'getElementData' [Expected element at argument 1, got boolean] [2019-12-05 13:07:35] ERROR: [DayZ]\DayZ\zombies.Lua:223: attempt to perform arithmetic on a boolean value [2019-12-05 13:07:35] WARNING: [DayZ]\DayZ\zombies.Lua:223: Bad argument @ 'getElementData' [Expected element at argument 1, got boolean] [2019-12-05 13:07:35] ERROR: [DayZ]\DayZ\zombies.Lua:223: attempt to perform arithmetic on a boolean value : Mon SurvivorSytsem.Lua (pour l'erreur ligne 769. Dans mon fichier la ligne 769 = l'avant dernière) elementWeaponBack2 = {} function weaponSwitchBack2 ( previousWeaponID, currentWeaponID ) local weapon2 = getElementData(source,"currentweapon_2") if not weapon2 then return end local ammoData2,weapID2 = getWeaponAmmoType(weapon2) local x,y,z = getElementPosition(source) local rx,ry,rz = getElementRotation(source) triggerClientEvent(source, "MultiArmasSkins2", source) if previousWeaponID == weapID2 then if elementWeaponBack2[source] then detachElementFromBone(elementWeaponBack2[source]) destroyElement(elementWeaponBack2[source]) elementWeaponBack2[source] = false end if weapon2 == "MP5A5" then elementWeaponBack2[source] = createObject(353,x,y,z) setObjectScale(elementWeaponBack2[source],0.875) elseif weapon2 == "MP5A5 SD" then elementWeaponBack2[source] = createObject(353,x,y,z) setObjectScale(elementWeaponBack2[source],0.875) elseif weapon2 == "M16 Christmas Edition" then elementWeaponBack2[source] = createObject(353,x,y,z) setObjectScale(elementWeaponBack2[source],0.875) elseif weapon2 == "Bizon PP-19 SD" then elementWeaponBack2[source] = createObject(353,x,y,z) setObjectScale(elementWeaponBack2[source],0.875) elseif weapon2 == "Pelle" then elementWeaponBack2[source] = createObject(337,x,y,z) setObjectScale(elementWeaponBack2[source],0.0) elseif weapon2 == "Bate" then elementWeaponBack2[source] = createObject(336,x,y,z) setObjectScale(elementWeaponBack2[source],0.0) elseif weapon2 == "Hache" then elementWeaponBack2[source] = createObject(339,x,y,z) setObjectScale(elementWeaponBack2[source],0.0) elseif weapon2 == "Fusil de Chasse " then elementWeaponBack2[source] = createObject(350,x,y,z) setObjectScale(elementWeaponBack2[source],0.875) elseif weapon2 == "M9" then elementWeaponBack2[source] = createObject(346,x,y,z) setObjectScale(elementWeaponBack2[source],0.0) elseif weapon2 == "Micro UZI SD" then elementWeaponBack2[source] = createObject(352,x,y,z) setObjectScale(elementWeaponBack2[source],0.0) elseif weapon2 == "Micro UZI" then elementWeaponBack2[source] = createObject(352,x,y,z) setObjectScale(elementWeaponBack2[source],0.0) elseif weapon2 == "M9 SD" then elementWeaponBack2[source] = createObject(339,x,y,z) setObjectScale(elementWeaponBack2[source],0.0) elseif weapon2 == "Revolver" then elementWeaponBack2[source] = createObject(348,x,y,z) setObjectScale(elementWeaponBack2[source],0.0) elseif weapon2 == "Couteau" then elementWeaponBack2[source] = createObject(335,x,y,z) setObjectScale(elementWeaponBack2[source],0.0) elseif weapon2 == "Couteau PointBlack" then elementWeaponBack2[source] = createObject(335,x,y,z) setObjectScale(elementWeaponBack2[source],0.0) elseif weapon2 == "Marteau" then elementWeaponBack2[source] = createObject(333,x,y,z) setObjectScale(elementWeaponBack2[source],0.0) else elementWeaponBack2[source] = createObject(getWeaponObjectID(weapID2),x,y,z) setObjectScale(elementWeaponBack2[source],0.875) end --[[if elementWeaponBack2[source] then attachElementToBone(elementWeaponBack2[source],source,3,-0.18,-0.05,-0.1,-0.1,0,260) else attachElementToBone(elementWeaponBack2[source],source,3,-0.18,-0.05,-0.1,-0.1,0,260) end ]] --3,-0.18,-0.05,-0.1,-0.1,0,260) if elementWeaponBack2[source] then --3,-0.18,-0.31,-0.1,0,270,-90) esta es pocison buena attachElementToBone(elementWeaponBack2[source],source,3,-0.20,-0.31,-0.1,0,270,-90) else attachElementToBone(elementWeaponBack2[source],source,3,-0.20,-0.31,-0.1,0,270,-90) end elseif currentWeaponID == weapID2 then detachElementFromBone(elementWeaponBack2[source]) destroyElement(elementWeaponBack2[source]) elementWeaponBack2[source] = false L'erreur ligne 2339 : ----function = ligne 2324 function Player ( thePlayer, dim ) local nivel = getElementData(thePlayer, "level") if dim == true and nivel > 10 then setElementData ( thePlayer, "blood", 20000 ) setElementData( thePlayer,"food",100) setElementData( thePlayer,"thirst",100) setElementData( thePlayer,"brokenbone",false) setElementData( thePlayer,"bleeding",0) setElementData( thePlayer,"pain",false) setElementData( thePlayer,"infection",false) triggerClientEvent("onRollMessageStart", thePlayer, " #FFFFFFVous avez guéri et nourri!", 255, 255, 255) else triggerClientEvent("onRollMessageStart", thePlayer, " #FFFFFFVous avez besoin du niveau 10!", 255, 5, 0) end end addEventHandler ( "onMarkerHit", Blood, Player ) addEventHandler ( "onMarkerHit", Blood2, Player ) le fichier Zombies.Lua pour l'erreur l.223 ----function = ligne 193 function zombieKilled (killer,headshot) if killer then setElementData(killer,"zombieskilled",getElementData(killer,"zombieskilled")+1) setElementData(killer,"experience",getElementData(killer,"experience")+115) end local skin = getElementModel(source) local x,y,z = getElementPosition(source) local ped = createPed(skin,x,y,z) local pedCol = createColSphere(x,y,z,1.5) killPed(ped) setTimer(destroyDeadZombie,360000 ,1,ped,pedCol) attachElements (pedCol,ped,0,0,0) setElementData(pedCol,"parent",ped) setElementData(pedCol,"playername","Zombie") setElementData(pedCol,"deadman",true) setElementData(ped,"deadzombie",true) setElementData(pedCol,"deadman",true) local time = getRealTime() local hours = time.hour local minutes = time.minute setElementData(pedCol,"deadreason","Zombie mort. Quelqu'un est passe par ici, heure estimee de la mort: "..hours..":"..minutes..".") for i, item in ipairs(itemTableZombies) do local value = math.percentChance (item[5]/2.5,1) setElementData(pedCol,item[1],value) local ammoData,weapID = getWeaponAmmoType (item[1],true) if ammoData and value > 0 then setElementData(pedCol,ammoData,1) end end local zombieCreator = getElementData(source,"owner") setElementData(zombieCreator,"spawnedzombies",getElementData(zombieCreator,"spawnedzombies")-1) destroyElement(source) if headshot == true then setElementData(killer,"headshots",getElementData(killer,"headshots")+1) setElementData(killer,"experience",getElementData(killer,"experience")+63) end end Link to comment
Moderators Citizen Posted December 6, 2019 Moderators Share Posted December 6, 2019 11 hours ago, Dewen said: : Mon SurvivorSytsem.Lua (pour l'erreur ligne 769. Dans mon fichier la ligne 769 = l'avant dernière) 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 11 hours ago, Dewen said: L'erreur ligne 2339 : addEventHandler ( "onMarkerHit", Blood, Player ) addEventHandler ( "onMarkerHit", Blood2, Player ) 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. 11 hours ago, Dewen said: le fichier Zombies.Lua pour l'erreur l.222 local zombieCreator = getElementData(source,"owner") setElementData(zombieCreator,"spawnedzombies",getElementData(zombieCreator,"spawnedzombies")-1) 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 2 Link to comment
Dewen Posted December 6, 2019 Author Share Posted December 6, 2019 19 hours ago, Citizen said: 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 Merci pour ton aide, je vais essayer de faire tous c'que tu m'as dit. Si jamais j'ai des difficultés je reviendrai vers vous ! function zombieKilled (killer,headshot) if killer then setElementData(killer,"zombieskilled",getElementData(killer,"zombieskilled")+1) setElementData(killer,"experience",getElementData(killer,"experience")+115) end local skin = getElementModel(source) local x,y,z = getElementPosition(source) local ped = createPed(skin,x,y,z) local pedCol = createColSphere(x,y,z,1.5) killPed(ped) setTimer(destroyDeadZombie,360000 ,1,ped,pedCol) attachElements (pedCol,ped,0,0,0) setElementData(pedCol,"parent",ped) setElementData(pedCol,"playername","Zombie") setElementData(pedCol,"deadman",true) setElementData(ped,"deadzombie",true) setElementData(pedCol,"deadman",true) local time = getRealTime() local hours = time.hour local minutes = time.minute setElementData(pedCol,"deadreason","Zombie mort. Quelqu'un est passe par ici, heure estimee de la mort: "..hours..":"..minutes..".") for i, item in ipairs(itemTableZombies) do local value = math.percentChance (item[5]/2.5,1) setElementData(pedCol,item[1],value) local ammoData,weapID = getWeaponAmmoType (item[1],true) if ammoData and value > 0 then setElementData(pedCol,ammoData,1) end end local zombieCreator = getElementData(source,"owner") if zombieCreator then setElementData(zombieCreator,"spawnedzombies",getElementData(zombieCreator,"spawnedzombies")-1) destroyElement(source) if headshot == true then setElementData(killer,"headshots",getElementData(killer,"headshots")+1) setElementData(killer,"experience",getElementData(killer,"experience")+63) end end addEvent("onZombieGetsKilled",true) addEventHandler("onZombieGetsKilled",getRootElement(),zombieKilled) Dans se fichier j'ai une erreur voici l'erreur : [2019-12-06 20:50:08] SCRIPT ERROR: [DayZ]\DayZ\zombies.Lua:232: 'end' expected (to close 'function' at line 193) near '<eof>' [2019-12-06 20:50:08] ERROR: Loading script failed: [DayZ]\DayZ\zombies.Lua:232: 'end' expected (to close 'function' at line 193) near '<eof>' Link to comment
Gordon_G Posted December 22, 2019 Share Posted December 22, 2019 Il manque un end ligne 38 pour clore la condition de la ligne 31. 1 Link to comment
TomFB5 Posted February 27, 2023 Share Posted February 27, 2023 On 05/12/2019 at 01:02, Dewen said: Salut à tous ! J'aurai besoin de vos aide en effet je "travaille" sur un serveur DayZ et j'aurai quelques soucis. Dès que les zombies meurent ou spawn j'ai souvent des messages d'erreur ! Voici les messages : [2019-12-04 20:15:15] WARNING: slothbot\sbserver.Lua:877: Bad argument @ 'getElementPosition' [Expected element at argument 1, got boolean] [2019-12-04 20:15:15] WARNING: slothbot\sbserver.Lua:879: Bad argument @ 'getDistanceBetweenPoints3D' [Expected vector3 at argument 4, got boolean] [2019-12-04 20:15:15] ERROR: slothbot\sbserver.Lua:880: attempt to compare number with boolean [2019-12-04 20:15:15] WARNING: slothbot\sbserver.Lua:877: Bad argument @ 'getElementPosition' [Expected element at argument 1, got boolean] [2019-12-04 20:15:21] WARNING: slothbot\sbserver.Lua:879: Bad argument @ 'getDistanceBetweenPoints3D' [Expected vector3 at argument 4, got boolean] [2019-12-04 20:15:21] ERROR: slothbot\sbserver.Lua:880: attempt to compare number with boolean [2019-12-04 20:15:21] WARNING: slothbot\sbserver.Lua:877: Bad argument @ 'getElementPosition' [Expected element at argument 1, got boolean] [2019-12-04 20:15:21] WARNING: slothbot\sbserver.Lua:879: Bad argument @ 'getDistanceBetweenPoints3D' [Expected vector3 at argument 4, got boolean] [2019-12-04 20:15:21] ERROR: slothbot\sbserver.Lua:880: attempt to compare number with boolean [2019-12-04 20:15:58] WARNING: slothbot\sbserver.Lua:877: Bad argument @ 'getElementPosition' [Expected element at argument 1, got boolean] [2019-12-04 20:15:58] WARNING: slothbot\sbserver.Lua:879: Bad argument @ 'getDistanceBetweenPoints3D' [Expected vector3 at argument 4, got boolean] [2019-12-04 20:15:58] ERROR: slothbot\sbserver.Lua:880: attempt to compare number with boolean [2019-12-04 20:16:42] WARNING: slothbot\sbserver.Lua:877: Bad argument @ 'getElementPosition' [Expected element at argument 1, got boolean] [2019-12-04 20:16:42] WARNING: slothbot\sbserver.Lua:879: Bad argument @ 'getDistanceBetweenPoints3D' [Expected vector3 at argument 4, got boolean] [2019-12-04 20:16:42] ERROR: slothbot\sbserver.Lua:880: attempt to compare number with boolean Voici le fichier en question : 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 pedhp > 0 then 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 Je tiens juste à dire la première ligne = la 871 sur mon fichier Merci d'avance pour votre aide ! J'ai également fait face à ce problème, mais cette discussion m'a aidé à le gérer, merci pour les réponses précieuses. 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