VVr0ngVVay Posted January 10, 2020 Share Posted January 10, 2020 --By Fanbox fast_blood = 200000 -- ????? ? ??????? sold_blood = 20000 -- ????? ? ???????? zomb_blood = 5000 -- ????? ? ??????? ????? fast_damage = 12000 -- ???? ??????? sold_damage = 4112 -- ???? ??????? ????? zomb_damage = 1121 -- ???? ??????? ????? --??????? bear_blood = 20000 wolf_blood = 7000 fox_blood = 5000 bear_damage = 6111 wolf_damage = 3112 fox_damage = 1121 animal_blood = 2000 animal_damage = 100 boss_chucky_blood = 500000 boss_chucky_damage = 100000 boss_hulk_blood = 1500000 boss_hulk_damage = 100000 boss_octopus_blood = 2000000 boss_octopus_damage = 100000 boss_blood_blood = 3000000 boss_blood_damage = 100000 boss_leatherface_blood = 1000000 boss_leatherface_damage = 100000 boss_all_blood = 50000 boss_all_damage = 4212 function chasedStartAttack (zomb) if isElement ( zomb ) and not getElementData ( zomb, "target" ) then if getElementData ( zomb, "zHeared" ) then setElementData ( zomb, "zHeared", false ) end setElementSyncer ( zomb, source ) setPedAnimation ( zomb ) if not exports.npc_hlc:isHLCEnabled ( zomb ) then exports.npc_hlc:enableHLCForNPC( zomb, getElementData ( zomb,"speed") or "sprint") end exports.npc_hlc:clearNPCTasks (zomb) exports.npc_hlc:addNPCTask ( zomb, {"killPed", source, 2, 2} ) setElementData ( zomb, "target", source ) setElementAlpha ( zomb, 255 ) end end addEvent( "chasedStartAttackC", true ) addEventHandler( "chasedStartAttackC", getRootElement(), chasedStartAttack ) local stats = { [ 69 ] = 500, [ 70 ] = 999, [ 71 ] = 999, [ 72 ] = 999, [ 73 ] = 500, [ 74 ] = 999, [ 75 ] = 500, [ 76 ] = 999, [ 77 ] = 999, [ 78 ] = 999, [ 79 ] = 999, [ 160 ] = 999, [ 229 ] = 999, [ 230 ] = 999 } function applyStats(player) for stat,value in pairs(stats) do setPedStat(player, stat, value) end end function spawnNewZombie(x, y, z, creator, ztype, skin) local zomb = createPed(skin,x,y,z+0.5,math.random(0,360),true) setElementData(zomb,"spawn_x",x) setElementData(zomb,"spawn_y",y) setElementData(zomb,"spawn_z",z) setElementData(zomb,"spawn_ztype",ztype) setElementData(zomb,"spawn_skin",skin) if isElement ( zomb ) then if not isElementInWater ( zomb ) then setTimer ( activateZombie, 1000, 1, zomb, x, y, z, ztype ) setElementData ( zomb, "creator", creator ) return true else destroyElement ( zomb ) return false end end return false end function activateZombie (zomb, x, y, z, ztype) if isElement ( zomb ) then local zSphere = createColSphere ( x, y, z, 50 ) local zSphereFar = createColSphere ( x, y, z, 150 ) local zSphereNear = createColSphere ( x, y, z, 3 ) attachElements ( zSphere, zomb ) attachElements ( zSphereFar, zomb ) attachElements ( zSphereNear, zomb ) setElementData ( zSphere, 'shapeZomb', true ) setElementData ( zSphereFar, 'shapeZomb', true ) setElementData ( zSphereNear, 'shapeZomb', true ) setElementData ( zomb, "zombieShape", zSphere ) setElementData ( zSphere, "zombieShape", true ) setElementData ( zSphere, "zombieElement", zomb ) setElementData ( zomb, "shapeFar", zSphereFar ) setElementData ( zomb, "shapeNear", zSphereNear ) setElementData ( zSphereNear, "zShapeNear", true ) --setElementData ( zomb, "zombie", true ) --??????? ?????? ?? ??????? (?????) --setElementData ( zomb, "animal", true ) --?????? ?????? ??????? (??????) --setElementData ( zomb, "killer", true ) --??????? ?????? ??????? (??????) --setElementData ( zomb, "boss", true ) --??????? ?????? ??????? (????) if ztype == 3 then setElementData ( zomb, "zombie", true ) setElementData ( zomb, "soldier", true ) setElementData(zomb, "blood", sold_blood) setElementData(zomb, "damage", sold_damage) setElementData(zomb, "speed", "sprint") elseif ztype == 2 then setElementData ( zomb, "zombie", true ) setElementData(zomb, "blood", fast_blood) setElementData ( zomb, "fast", true ) setElementData(zomb, "damage", fast_damage) setElementData(zomb, "speed", "run") elseif ztype == 4 then setElementData ( zomb, "killer", true ) setElementData(zomb, "blood", bear_blood) setElementData ( zomb, "bear", true ) setElementData(zomb, "damage", bear_damage) setElementData(zomb, "speed", "run") elseif ztype == 5 then setElementData ( zomb, "killer", true ) setElementData(zomb, "blood", wolf_blood) setElementData ( zomb, "wolf", true ) setElementData(zomb, "damage", wolf_damage) setElementData(zomb, "speed", "sprint") elseif ztype == 6 then setElementData ( zomb, "killer", true ) setElementData(zomb, "blood", fox_blood) setElementData ( zomb, "fox", true ) setElementData(zomb, "damage", fox_damage) setElementData(zomb, "speed", "sprint") elseif ztype == 7 then setElementData ( zomb, "animal", true ) setElementData(zomb, "blood", animal_blood) setElementData(zomb, "damage", animal_damage) setElementData(zomb, "speed", "sprint") elseif ztype == 9 then setElementData ( zomb, "zombie", true ) setElementData ( zomb, "boss_all", true ) setElementData(zomb, "blood", boss_all_blood) setElementData(zomb, "damage", boss_all_blood) setElementData(zomb, "speed", "sprint") elseif ztype == 10 then setElementData ( zomb, "zombie", true ) setElementData ( zomb, "pila", true ) setElementData(zomb, "blood", boss_all_blood) setElementData(zomb, "damage", boss_all_blood) setElementData(zomb, "speed", "run") applyStats(zomb) giveWeapon(zomb, 9, 9999, true) elseif ztype == 11 then setElementData ( zomb, "zombie", true ) setElementData ( zomb, "boss_chucky", true ) setElementData(zomb, "blood", boss_chucky_blood) setElementData(zomb, "damage", boss_chucky_damage) setElementData(zomb, "speed", "sprint") setElementAlpha ( zomb, 5 ) elseif ztype == 14 then setElementData ( zomb, "zombie", true ) setElementData ( zomb, "boss_hulk", true ) setElementData(zomb, "blood", boss_hulk_blood) setElementData(zomb, "damage", boss_hulk_damage) setElementData(zomb, "speed", "sprint") setElementAlpha ( zomb, 5 ) elseif ztype == 15 then setElementData ( zomb, "zombie", true ) setElementData ( zomb, "boss_octopus", true ) setElementData(zomb, "blood", boss_octopus_blood) setElementData(zomb, "damage", boss_octopus_damage) setElementData(zomb, "speed", "run") setElementAlpha ( zomb, 5 ) elseif ztype == 12 then setElementData ( zomb, "zombie", true ) setElementData ( zomb, "pila", true ) setElementData(zomb, "blood", boss_all_blood) setElementData(zomb, "damage", boss_all_blood) setElementData(zomb, "speed", "run") applyStats(zomb) giveWeapon(zomb, 29, 9999, true) elseif ztype == 16 then setElementData ( zomb, "zombie", true ) setElementData ( zomb, "pila", true ) setElementData(zomb, "blood", boss_all_blood) setElementData(zomb, "damage", boss_all_blood) setElementData(zomb, "speed", "run") applyStats(zomb) giveWeapon(zomb, 27, 9999, true) elseif ztype == 17 then setElementData ( zomb, "zombie", true ) setElementData ( zomb, "boss_leatherface", true ) setElementData(zomb, "blood", boss_leatherface_blood) setElementData(zomb, "damage", boss_leatherface_damage) setElementData(zomb, "speed", "run") elseif ztype == 13 then setElementData ( zomb, "zombie", true ) setElementData ( zomb, "boss_blood", true ) setElementData(zomb, "blood", boss_blood_blood) setElementData(zomb, "damage", boss_blood_damage) setElementData(zomb, "speed", "sprint") applyStats(zomb) else setElementData ( zomb, "zombie", true ) setElementData(zomb, "blood", zomb_blood) setElementData(zomb, "damage", zomb_damage) setElementData(zomb, "speed", "run") end wentZombieToWalk ( zomb ) end end function wentZombieToWalk (zomb) if zomb then if isElement ( zomb ) then if not isPedDead ( zomb ) then if checkPlayersInView ( zomb ) then if not getElementData ( zomb, "target" ) and not getElementData ( zomb, 'rotating' ) then local rdmangle = math.random( 1, 359 ) setPedRotation( zomb, rdmangle ) setPedAnimation ( zomb, "PED", "WALK_fatold", -1, true, true, true) setTimer ( wentZombieToWalk, 10000, 1, zomb ) if getElementData ( zomb, "boss_blood" ) then setElementAlpha ( zomb, 5 ) end end else if isElement ( getElementData ( zomb, "zombieShape" ) ) then destroyElement ( getElementData ( zomb, "zombieShape" ) ) end if isElement ( getElementData ( zomb, "shapeFar" ) ) then destroyElement ( getElementData ( zomb, "shapeFar" ) ) end if isElement ( getElementData ( zomb, "shapeNear" ) ) then destroyElement ( getElementData ( zomb, "shapeNear" ) ) end local attaches = getAttachedElements ( zomb ) if attaches then for ElementKey, ElementValue in ipairs ( attaches ) do if isElement ( ElementValue ) then if not getElementData ( ElementValue, "zRadZone" ) then destroyElement ( ElementValue ) end end end end local creator = getElementData ( zomb, "creator" ) if isElement ( creator ) then setElementData ( creator, "spawnedzombies", ( getElementData ( creator, "spawnedzombies" ) or 1 ) - 1 ) end setElementData ( zomb, "target", false ) setElementData ( zomb, "rotating", nil ) if not getElementData ( zomb, "target" ) and not getElementData ( zomb, 'rotating' ) then local rdmangle = math.random( 1, 359 ) setPedRotation( zomb, rdmangle ) setPedAnimation ( zomb, "PED", "WALK_fatold", -1, true, true, true) setTimer ( wentZombieToWalk, 10000, 1, zomb ) if getElementData ( zomb, "boss_blood" ) then setElementAlpha ( zomb, 5 ) end end end end end end end function checkPlayersInView ( zomb ) local shapeFar = getElementData ( zomb, "shapeFar" ) if isElement(shapeFar) then if #getElementsWithinColShape ( shapeFar, 'player' ) == 0 then return false else return true end end end function zombieKilledPlayer (task) if getElementData ( source, "zombie" ) then if task[1] == "walkToPos" then if getElementData ( source, "rotating" ) then setElementRotation ( source, 0, 0, task[6] ) setTimer ( function ( zomb ) if isElement ( zomb ) then setElementData ( zomb, "rotating", false ); wentZombieToWalk ( zomb ) end end, 3000, 1, source ) end end if getElementData ( source, "target" ) then local diedPlayer = task[2] setElementData ( source, "target", nil ) wentZombieToWalk ( source ) end end end addEventHandler ( "npc_hlc:onNPCTaskDone", root, zombieKilledPlayer ) function killPlayerOfSick() for i, v in ipairs ( getElementsByType ("ped")) do if getElementData ( v, "zombie" ) then local target = getElementData ( v, "target" ) if target and target == source then setElementData ( v, "target", false ) exports.npc_hlc:clearNPCTasks(v) setTimer ( wentZombieToWalk, 3000, 1, v ) end end end end addEvent("killPlayerOfSick",true) addEventHandler("killPlayerOfSick",getRootElement(),killPlayerOfSick) function checkUnactiveZombies () for i, v in ipairs ( getElementsByType ("ped")) do if getElementData ( v, "zombie" ) then local target = getElementData ( v, "target" ) if target and not isElement ( target ) then setElementData ( v, "target", false ) wentZombieToWalk ( v ) end end end end setTimer (checkUnactiveZombies,10000,0)--600000 function zombieWasAttackedS ( zomb ) if not isPedDead ( zomb ) and not getElementData ( source, "isPlayerZombie" ) then setPedAnimation ( zomb ) if not exports.npc_hlc:isHLCEnabled ( zomb ) then exports.npc_hlc:enableHLCForNPC( zomb, getElementData ( zomb,"speed") or "sprint") end exports.npc_hlc:clearNPCTasks (zomb) exports.npc_hlc:addNPCTask ( zomb, {"killPed", source, 2, 2} ) setElementData ( zomb, "target", source ) setTimer ( wentZombieToWalk, 1000, 1, zomb ) end end addEvent( "zombieWasAttacked", true ) addEventHandler( "zombieWasAttacked", getRootElement(), zombieWasAttackedS ) function zombieHearedS ( zomb ) if isElement ( zomb ) then if not isPedDead ( zomb ) then if not getElementData ( zomb, "target" ) and not getElementData ( source, "zHeared" ) and not getElementData ( source, "isPlayerZombie" ) then setPedAnimation ( zomb ) if not exports.npc_hlc:isHLCEnabled ( zomb ) then exports.npc_hlc:enableHLCForNPC( zomb, getElementData ( zomb,"speed") or "sprint") end exports.npc_hlc:clearNPCTasks (zomb) setElementData ( zomb, "zHeared", source ) local x,y,z = getElementPosition ( source ) exports.npc_hlc:addNPCTask ( zomb, {"walkToPos", x, y, z, 2}) end end end end addEvent( "zombieHeared", true ) addEventHandler( "zombieHeared", getRootElement(), zombieHearedS ) function rotateZombieToPlayer ( rotation, x, y, z ) if not isPedDead ( source ) then if not getElementData ( source, "target" ) then setPedAnimation ( source ) if not exports.npc_hlc:isHLCEnabled ( source ) then exports.npc_hlc:enableHLCForNPC( source, getElementData ( source,"speed") or "sprint") end exports.npc_hlc:clearNPCTasks (source) exports.npc_hlc:addNPCTask ( source, {"walkToPos", x, y, z, 1, rotation}) end end end addEvent( "rotateZombieToPlayer", true ) addEventHandler( "rotateZombieToPlayer", getRootElement(), rotateZombieToPlayer ) function zombieNearLeave ( thePlayer ) if getElementType ( thePlayer ) == "player" and getElementData ( source, "zombieShape" ) then local zomb = getElementData ( source, "zombieElement" ) if isElement ( zomb ) and exports.npc_hlc:isHLCEnabled ( zomb ) then if getElementData ( zomb, "fast" ) then return true end local thistask = getElementData(zomb,"npc_hlc:thistask") if thistask then local task = getElementData(zomb,"npc_hlc:task."..thistask) if task then if task[1] == "killPed" and isElement ( task[2] ) then if task[2] == thePlayer then exports.npc_hlc:clearNPCTasks (zomb) setElementData(zomb,"target",false) wentZombieToWalk(zomb) end end end end end end end addEventHandler ( "onColShapeLeave", root, zombieNearLeave ) --???? ??? ??????? ???? function PanicAnimals(zomb) if isElement(zomb) then local rdmangle = math.random( 1, 359 ) setPedRotation( zomb, rdmangle ) setPedAnimation ( zomb, "PED", "sprint_panic", -1, true, true, true) setTimer ( PanicAnimals, 20000, 1, zomb ) --??????? ?????? ? ???? ?????? end end function animalStopFollow(zomb) PanicAnimals(zomb) end addEvent("animalStopFollow",true) addEventHandler("animalStopFollow",getRootElement(),animalStopFollow) -- checkZombies = function() for i,ped in ipairs(getElementsByType("ped",root,true)) do if getElementData(ped, "zombie") then local x,y,z = getElementPosition ( localPlayer ) local zx,zy,zz = getElementPosition (ped) local zfrontx, zfronty, zfrontz = getPositionInfrontOfElement(ped, 3) local vect1X, vect1Y = zx-x, zy-z local vect2X, vect2Y = zfrontx-zx, zfronty - zy local scal = vect2X*vect1X+vect2Y*vect1Y local distance = getDistanceBetweenPoints3D ( x,y,z, zx,zy,zz ) local sound = getElementData(getLocalPlayer(), "volume") / 5 local visibly = getElementData(getLocalPlayer(), "visibly") / 5 local ready = true if ( distance > sound*1.2 + visibly*1.2 and scal <= 0 ) or ( distance > sound*1.4 + visibly*1.4 ) then -- Расстояние за которую он вас увидит и услышит (средне) ready = false end if ready then triggerServerEvent ( "chasedStartAttackC", getLocalPlayer(), ped ) end end end end setTimer(checkZombies, 2000, 0) setElementData ( localPlayer, "spawnedzombies", 0 ) checkAnimal = function() for i,ped in ipairs(getElementsByType("ped",root,true)) do if getElementData(ped, "animal") then local x,y,z = getElementPosition ( localPlayer ) local zx,zy,zz = getElementPosition (ped) local zfrontx, zfronty, zfrontz = getPositionInfrontOfElement(ped, 3) local vect1X, vect1Y = zx-x, zy-z local vect2X, vect2Y = zfrontx-zx, zfronty - zy local scal = vect2X*vect1X+vect2Y*vect1Y local distance = getDistanceBetweenPoints3D ( x,y,z, zx,zy,zz ) local sound = getElementData(getLocalPlayer(), "volume") / 5 local visibly = getElementData(getLocalPlayer(), "visibly") / 5 local ready = true if ( distance > sound*3 + visibly*3 and scal <= 0 ) or ( distance > sound*3 + visibly*3 ) then -- Расстояние за которую он вас увидит и услышит (ДАЛЕКО) ready = false end if ready then triggerServerEvent ( "animalStopFollow", getLocalPlayer(), ped ) end end end end setTimer(checkAnimal, 2000, 0) setElementData ( localPlayer, "spawnedzombies", 0 ) checkKiller = function() for i,ped in ipairs(getElementsByType("ped",root,true)) do if getElementData(ped, "killer") then local x,y,z = getElementPosition ( localPlayer ) local zx,zy,zz = getElementPosition (ped) local zfrontx, zfronty, zfrontz = getPositionInfrontOfElement(ped, 3) local vect1X, vect1Y = zx-x, zy-z local vect2X, vect2Y = zfrontx-zx, zfronty - zy local scal = vect2X*vect1X+vect2Y*vect1Y local distance = getDistanceBetweenPoints3D ( x,y,z, zx,zy,zz ) local sound = getElementData(getLocalPlayer(), "volume") / 5 local visibly = getElementData(getLocalPlayer(), "visibly") / 5 local ready = true if ( distance > sound*3 + visibly*3 and scal <= 0 ) or ( distance > sound*3 + visibly*3 ) then -- Расстояние за которую он вас увидит и услышит (ДАЛЕКО) ready = false end if ready then triggerServerEvent ( "chasedStartAttackC", getLocalPlayer(), ped ) end end end end setTimer(checkKiller, 2000, 0) setElementData ( localPlayer, "spawnedzombies", 0 ) checkboss4aki = function() for i,ped in ipairs(getElementsByType("ped",root,true)) do if getElementData(ped, "boss_chucky") then local x,y,z = getElementPosition ( localPlayer ) local zx,zy,zz = getElementPosition (ped) local zfrontx, zfronty, zfrontz = getPositionInfrontOfElement(ped, 3) local vect1X, vect1Y = zx-x, zy-z local vect2X, vect2Y = zfrontx-zx, zfronty - zy local scal = vect2X*vect1X+vect2Y*vect1Y local distance = getDistanceBetweenPoints3D ( x,y,z, zx,zy,zz ) local sound = getElementData(getLocalPlayer(), "volume") / 5 local visibly = getElementData(getLocalPlayer(), "visibly") / 5 local ready = true if ( distance > sound*3 + visibly*3 and scal <= 0 ) or ( distance > sound*3 + visibly*3 ) then -- Расстояние за которую он вас увидит и услышит (ДАЛЕКО) ready = false end if ready then triggerServerEvent ( "chasedStartAttackC", getLocalPlayer(), ped ) end end end end setTimer(checkboss4aki, 2000, 0) setElementData ( localPlayer, "spawnedzombies", 0 ) checkbossleatherface = function() for i,ped in ipairs(getElementsByType("ped",root,true)) do if getElementData(ped, "boss_leatherface") then local x,y,z = getElementPosition ( localPlayer ) local zx,zy,zz = getElementPosition (ped) local zfrontx, zfronty, zfrontz = getPositionInfrontOfElement(ped, 3) local vect1X, vect1Y = zx-x, zy-z local vect2X, vect2Y = zfrontx-zx, zfronty - zy local scal = vect2X*vect1X+vect2Y*vect1Y local distance = getDistanceBetweenPoints3D ( x,y,z, zx,zy,zz ) local sound = getElementData(getLocalPlayer(), "volume") / 5 local visibly = getElementData(getLocalPlayer(), "visibly") / 5 local ready = true if ( distance > sound*3 + visibly*3 and scal <= 0 ) or ( distance > sound*3 + visibly*3 ) then -- Расстояние за которую он вас увидит и услышит (ДАЛЕКО) ready = false end if ready then triggerServerEvent ( "chasedStartAttackC", getLocalPlayer(), ped ) end end end end setTimer(bossleatherface, 2000, 0) setElementData ( localPlayer, "spawnedzombies", 0 ) checkbosshulk = function() for i,ped in ipairs(getElementsByType("ped",root,true)) do if getElementData(ped, "boss_hulk") then local x,y,z = getElementPosition ( localPlayer ) local zx,zy,zz = getElementPosition (ped) local zfrontx, zfronty, zfrontz = getPositionInfrontOfElement(ped, 3) local vect1X, vect1Y = zx-x, zy-z local vect2X, vect2Y = zfrontx-zx, zfronty - zy local scal = vect2X*vect1X+vect2Y*vect1Y local distance = getDistanceBetweenPoints3D ( x,y,z, zx,zy,zz ) local sound = getElementData(getLocalPlayer(), "volume") / 5 local visibly = getElementData(getLocalPlayer(), "visibly") / 5 local ready = true if ( distance > sound*3 + visibly*3 and scal <= 0 ) or ( distance > sound*3 + visibly*3 ) then -- Расстояние за которую он вас увидит и услышит (ДАЛЕКО) ready = false end if ready then triggerServerEvent ( "chasedStartAttackC", getLocalPlayer(), ped ) end end end end setTimer(checkbosshulk, 2000, 0) setElementData ( localPlayer, "spawnedzombies", 0 ) checkbossoctopus = function() for i,ped in ipairs(getElementsByType("ped",root,true)) do if getElementData(ped, "boss_octopus") then local x,y,z = getElementPosition ( localPlayer ) local zx,zy,zz = getElementPosition (ped) local zfrontx, zfronty, zfrontz = getPositionInfrontOfElement(ped, 3) local vect1X, vect1Y = zx-x, zy-z local vect2X, vect2Y = zfrontx-zx, zfronty - zy local scal = vect2X*vect1X+vect2Y*vect1Y local distance = getDistanceBetweenPoints3D ( x,y,z, zx,zy,zz ) local sound = getElementData(getLocalPlayer(), "volume") / 3 local visibly = getElementData(getLocalPlayer(), "visibly") / 3 local ready = true if ( distance > sound*1 + visibly*1 and scal <= 0 ) or ( distance > sound*1 + visibly*1 ) then -- Расстояние за которую он вас увидит и услышит (ДАЛЕКО) ready = false end if ready then triggerServerEvent ( "chasedStartAttackC", getLocalPlayer(), ped ) end end end end setTimer(checkbossoctopus, 2000, 0) setElementData ( localPlayer, "spawnedzombies", 0 ) checkblood = function() for i,ped in ipairs(getElementsByType("ped",root,true)) do if getElementData(ped, "boss_blood") then local x,y,z = getElementPosition ( localPlayer ) local zx,zy,zz = getElementPosition (ped) local zfrontx, zfronty, zfrontz = getPositionInfrontOfElement(ped, 3) local vect1X, vect1Y = zx-x, zy-z local vect2X, vect2Y = zfrontx-zx, zfronty - zy local scal = vect2X*vect1X+vect2Y*vect1Y local distance = getDistanceBetweenPoints3D ( x,y,z, zx,zy,zz ) local sound = getElementData(getLocalPlayer(), "volume") / 2 local visibly = getElementData(getLocalPlayer(), "visibly") / 2 local ready = true if ( distance > sound*3 + visibly*3 and scal <= 0 ) or ( distance > sound*3 + visibly*3 ) then -- Расстояние за которую он вас увидит и услышит (ДАЛЕКО) ready = false end if ready then triggerServerEvent ( "chasedStartAttackC", getLocalPlayer(), ped ) end end end end setTimer(checkblood, 2000, 0) setElementData ( localPlayer, "spawnedzombies", 0 ) checkBots = function() for i,ped in ipairs(getElementsByType("ped",root,true)) do if getElementData(ped, "bots") then local x,y,z = getElementPosition ( localPlayer ) local zx,zy,zz = getElementPosition (ped) local zfrontx, zfronty, zfrontz = getPositionInfrontOfElement(ped, 3) local vect1X, vect1Y = zx-x, zy-z local vect2X, vect2Y = zfrontx-zx, zfronty - zy local scal = vect2X*vect1X+vect2Y*vect1Y local distance = getDistanceBetweenPoints3D ( x,y,z, zx,zy,zz ) local sound = getElementData(getLocalPlayer(), "volume") / 5 local visibly = getElementData(getLocalPlayer(), "visibly") / 5 local ready = true if ( distance > sound*3 + visibly*5 and scal <= 0 ) or ( distance > sound*3 + visibly*3 ) then -- Расстояние за которую он вас увидит и услышит (ДАЛЕКО) ready = false end if ready then triggerServerEvent ( "botsStartAttack", getLocalPlayer(), ped ) end end end end setTimer(checkBots, 2000, 0) setElementData ( localPlayer, "spawnedzombies", 0 ) checkbossBenz = function() for i,ped in ipairs(getElementsByType("ped",root,true)) do if getElementData(ped, "bossBenz") then local x,y,z = getElementPosition ( localPlayer ) local zx,zy,zz = getElementPosition (ped) local zfrontx, zfronty, zfrontz = getPositionInfrontOfElement(ped, 3) local vect1X, vect1Y = zx-x, zy-z local vect2X, vect2Y = zfrontx-zx, zfronty - zy local scal = vect2X*vect1X+vect2Y*vect1Y local distance = getDistanceBetweenPoints3D ( x,y,z, zx,zy,zz ) local sound = getElementData(getLocalPlayer(), "volume") / 5 local visibly = getElementData(getLocalPlayer(), "visibly") / 5 local ready = true if ( distance > sound*3 + visibly*5 and scal <= 0 ) or ( distance > sound*3 + visibly*3 ) then -- Расстояние за которую он вас увидит и услышит (ДАЛЕКО) ready = false end if ready then triggerServerEvent ( "chasedStartAttackC", getLocalPlayer(), ped ) end end end end setTimer(checkbossBenz, 2000, 0) setElementData ( localPlayer, "spawnedzombies", 0 ) checkbossCrais = function() for i,ped in ipairs(getElementsByType("ped",root,true)) do if getElementData(ped, "bossCrais") then local x,y,z = getElementPosition ( localPlayer ) local zx,zy,zz = getElementPosition (ped) local zfrontx, zfronty, zfrontz = getPositionInfrontOfElement(ped, 3) local vect1X, vect1Y = zx-x, zy-z local vect2X, vect2Y = zfrontx-zx, zfronty - zy local scal = vect2X*vect1X+vect2Y*vect1Y local distance = getDistanceBetweenPoints3D ( x,y,z, zx,zy,zz ) local sound = getElementData(getLocalPlayer(), "volume") / 5 local visibly = getElementData(getLocalPlayer(), "visibly") / 5 local ready = true if ( distance > sound*3 + visibly*5 and scal <= 0 ) or ( distance > sound*3 + visibly*3 ) then -- Расстояние за которую он вас увидит и услышит (ДАЛЕКО) ready = false end if ready then triggerServerEvent ( "chasedStartAttackC", getLocalPlayer(), ped ) end end end end setTimer(checkbossCrais, 2000, 0) setElementData ( localPlayer, "spawnedzombies", 0 ) function zombieJump(ped) if (isElement(source)) then setPedControlState(source,"jump",true) setTimer(function(source) if (isElement(source)) then setPedControlState(source,"jump",false) end end,800,1,source) end end addEventHandler("bot_Jump",getRootElement(),zombieJump) addEvent("bot_Jump",true) function getPositionInfrontOfElement(element, meters) if not element or not isElement(element) then return false end if not meters then meters = 3 end local posX, posY, posZ = getElementPosition(element) local _, _, rotation = getElementRotation(element) posX = posX - math.sin(math.rad(rotation)) * meters posY = posY + math.cos(math.rad(rotation)) * meters return posX, posY, posZ end local fires = 0 local shotCheckAvailable = true function onClientPlayerWeaponFireFunc(weapon, ammo, ammoInClip, hitX, hitY, hitZ, hitElement ) if getElementData ( localPlayer, "isPlayerZombie" ) then return true end if shotCheckAvailable then if weapon > 9 and weapon ~= 23 then shotCheckAvailable = false setTimer ( function () shotCheckAvailable = true end, 4000, 1 ) local zombs = getElementsByType ( "ped", getRootElement(), true ) local x,y,z = getElementPosition ( localPlayer ) for i,zomb in ipairs(zombs) do if not getElementData ( zomb, "target" ) and not getElementData ( zomb, "zHeared" ) then local zx,zy,zz = getElementPosition (zomb) if getDistanceBetweenPoints3D ( x,y,z, zx,zy,zz ) < 50 then triggerServerEvent ("zombieHeared", localPlayer, zomb ) end end end end end end addEventHandler ( "onClientPlayerWeaponFire", getLocalPlayer(), onClientPlayerWeaponFireFunc ) function findRotation(x1,y1,x2,y2) local t = -math.deg(math.atan2(x2-x1,y2-y1)) if t < 0 then t = t + 360 end; return t end Hi, i need help :( Bots don't take as much blood as is set... Server gives them parameters from editor_client.Lua. gameplayVariables = {} gameplayVariables["ping"] = 300 gameplayVariables["zombiedamage"] = math.random(800,2000) gameplayVariables["enablenight"] = false gameplayVariables["hourxp"] = 125 There is also such a reference to this script in survivorSystem_client.Lua elseif getElementData ( attacker, "bots" ) or getElementData ( attacker, "snegovik" ) or getElementData ( attacker, "santa" ) or getElementData ( attacker, "boss4aki" ) or getElementData ( attacker, "bossBenz" ) or getElementData ( attacker, "bossCrais" ) then local damageded = Damage_ToCloth (bodypart) local reduce = getClothDamageReduce (pl_model, bodypart) setElementData(getLocalPlayer(),"blood",getElementData(getLocalPlayer(),"blood")-getElementData(attacker,"BOSSdamage")*damageded*reduce) local number = math.random(1,7) if number == 4 then setElementData(getLocalPlayer(),"bleeding",getElementData(getLocalPlayer(),"bleeding") + math.floor(loss*5)) end end end Please help me. What can cause all bots to hit with the same force? Link to comment
Scripting Moderators ds1-e Posted January 10, 2020 Scripting Moderators Share Posted January 10, 2020 6 hours ago, VVr0ngVVay said: Bots don't take as much blood as is set... Server gives them parameters from editor_client.Lua. If uses data from table, then there's is your problem: gameplayVariables["zombiedamage"] = math.random(800,2000) It is only randomized once, on script initalization. Link to comment
VVr0ngVVay Posted January 10, 2020 Author Share Posted January 10, 2020 10 hours ago, majqq said: If uses data from table, then there's is your problem: gameplayVariables["zombiedamage"] = math.random(800,2000) It is only randomized once, on script initalization. How is problem? You can help me? Link to comment
Scripting Moderators ds1-e Posted January 11, 2020 Scripting Moderators Share Posted January 11, 2020 12 hours ago, VVr0ngVVay said: How is problem? You can help me? Randomize damage every time zombie is hitting you. 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