#StrOnG_,) Posted January 20, 2016 Share Posted January 20, 2016 السلام عليكم سويت كود لما يجي بارض معينة ومعه داتا الزومبي يقتله لكن ما يموتون وما يصير لهم اي شي الكود ZombieLimit = get("zombies.MaxZombies")-- HOW MANY ZOMBIES SHOULD EXIST AT MAXIMUM? ZombieStreaming = get("zombies.StreamMethod") -- 1 to constantly stream zombies, 0 to only allow zombies to spawn via createZombie function, 2 to only allow spawning at set spawnpoints ZombiePedSkins = {13,22,56,67,68,69,70,92,97,105,107,108,126,127,128,152,162,167,188,195,206,209,212,229,230,258,264,277,280,287 } --ALTERNATE SKIN LISTS FOR ZOMBIES (SHORTER LIST IS TEXTURED ZOMBIES ONLY) --ZombiePedSkins = {7,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,43,44,45,36,37,38,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,66,67,68,69,70,71,72,73,75,76,77,78,79,80,81,82,83,85,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,112,113,114,115,116,117,118,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,209,210,211,212,213,214,215,216,217,218,219,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,275,276,277,278,279,280,281,282,283,284,285,286,287,288 } ZombieSpeed = get("zombies.Speed") if ZombieSpeed == 0 then --super slow zombies (goofy looking) chaseanim = "WALK_drunk" checkspeed = 2000 elseif ZombieSpeed == 1 then -- normal speed chaseanim = "run_old" checkspeed = 1000 elseif ZombieSpeed == 2 then -- rocket zombies (possibly stressful on server) chaseanim = "Run_Wuzi" checkspeed = 680 else -- defaults back to normal chaseanim = "run_old" checkspeed = 1000 end resourceRoot = getResourceRootElement() moancount =0 moanlimit = 10 everyZombie = { } --IDLE BEHAVIOUR OF A ZOMBIE function Zomb_Idle (ped) if isElement(ped) then if ( getElementData ( ped, "status" ) == "idle" ) and ( isPedDead ( ped ) == false ) and (getElementData (ped, "zombie") == true) then local action = math.random( 1, 6 ) if action < 4 then -- walk a random direction local rdmangle = math.random( 1, 359 ) setPedRotation( ped, rdmangle ) setPedAnimation ( ped, "PED", "Player_Sneak", -1, true, true, true) setTimer ( Zomb_Idle, 7000, 1, ped ) elseif action == 4 then -- get on the ground setPedAnimation ( ped, "MEDIC", "cpr", -1, false, true, true) setTimer ( Zomb_Idle, 4000, 1, ped ) elseif action == 5 then -- stand still doing nothing setPedAnimation ( ped ) setTimer ( Zomb_Idle, 4000, 1, ped ) end end end end --BEHAVIOUR WHILE CHASING PLAYERS function Zomb_chase (ped, Zx, Zy, Zz ) if isElement(ped) then if (getElementData ( ped, "status" ) == "chasing") and (getElementData (ped, "zombie") == true) then local x, y, z = getElementPosition( ped ) if (getElementData ( ped, "target" ) == nil) and getElementData ( ped, "Tx" ) ~= false then local Px = getElementData ( ped, "Tx" ) local Py = getElementData ( ped, "Ty" ) local Pz = getElementData ( ped, "Tz" ) local Pdistance = (getDistanceBetweenPoints3D( Px, Py, Pz, x, y, z )) if (Pdistance < 1.5 ) then setTimer ( function (ped) if ( isElement ( ped ) ) then setElementData ( ped, "status", "idle" ) end end, 2000, 1, ped ) end end local distance = (getDistanceBetweenPoints3D( x, y, z, Zx, Zy, Zz )) if (distance < 1 ) then -- IF THE PED HASNT MOVED if (getElementData ( ped, "target" ) == nil) then local giveup = math.random( 1, 15 ) if giveup == 1 then setElementData ( ped, "status", "idle" ) else local action = math.random( 1, 2 ) if action == 1 then setPedAnimation ( ped ) triggerClientEvent ( "Zomb_Punch", getRootElement(), ped ) setTimer ( function (ped) if ( isElement ( ped ) ) then setPedAnimation ( ped, "ped", chaseanim, -1, true, true, true ) end end, 800, 1, ped ) setTimer ( Zomb_chase, 2000, 1, ped, x, y, z ) elseif action == 2 then setPedAnimation ( ped ) triggerClientEvent ( "Zomb_Jump", getRootElement(), ped ) setTimer ( Zomb_chase, 3500, 1, ped, x, y, z ) end end else local Ptarget = (getElementData ( ped, "target" )) if isElement(Ptarget) then local Px, Py, Pz = getElementPosition( Ptarget ) local Pdistance = (getDistanceBetweenPoints3D( Px, Py, Pz, Zx, Zy, Zz )) if (Pdistance < 1.2 ) then -- ATTACK A PLAYER IF THEY ARE CLOSE if ( isPedDead ( Ptarget ) ) then --EAT A DEAD PLAYER setPedAnimation ( ped ) setPedAnimation ( ped, "MEDIC", "cpr", -1, false, true, false) setTimer ( function (ped) if ( isElement ( ped ) ) then setElementData ( ped, "status", "idle" ) end end, 10000, 1, ped ) setTimer ( function (ped) if ( isElement ( ped ) ) then setPedRotation ( ped, getPedRotation(ped)-180) end end, 10000, 1, ped ) zmoan(ped) else local action = math.random( 1, 6 ) if action == 1 then setPedAnimation ( ped) triggerClientEvent ( "Zomb_Jump", getRootElement(), ped ) setTimer ( Zomb_chase, 2000, 1, ped, x, y, z ) else setPedAnimation ( ped) triggerClientEvent ( "Zomb_Punch", getRootElement(), ped ) setTimer ( function (ped) if ( isElement ( ped ) ) then setPedAnimation ( ped, "ped", chaseanim, -1, true, true, true ) end end, 800, 1, ped ) setTimer ( Zomb_chase, 2000, 1, ped, x, y, z ) end end else if ( isPedDead (Ptarget) ) then setTimer ( function (ped) if ( isElement ( ped ) ) then setElementData ( ped, "status", "idle" ) end end, 2000, 1, ped ) setTimer ( function (ped) if ( isElement ( ped ) ) then setPedRotation ( ped, getPedRotation(ped)-180) end end, 1800, 1, ped ) else local action = math.random( 1, 2 ) if action == 1 then setPedAnimation ( ped) triggerClientEvent ( "Zomb_Punch", getRootElement(), ped ) setTimer ( function (ped) if ( isElement ( ped ) ) then setPedAnimation ( ped, "ped", chaseanim, -1, true, true, true ) end end, 800, 1, ped ) setTimer ( Zomb_chase, 2000, 1, ped, x, y, z ) elseif action == 2 then setPedAnimation ( ped) triggerClientEvent ( "Zomb_Jump", getRootElement(), ped ) setTimer ( Zomb_chase, 2000, 1, ped, x, y, z ) end end end else setElementData ( ped, "status", "idle" ) end end else setPedAnimation ( ped, "ped", chaseanim, -1, true, true, true) --KEEP WALKING setTimer ( Zomb_chase, checkspeed, 1, ped, x, y, z ) --CHECK AGAIN end end end end --SET THE DIRECTION OF THE ZOMBIE function setangle () for theKey,ped in ipairs(everyZombie) do if isElement(ped) then if ( getElementData ( ped, "status" ) == "chasing" ) then local x local y local z local px local py local pz if ( getElementData ( ped, "target" ) ~= nil ) then local ptarget = getElementData ( ped, "target" ) if isElement(ptarget) then x, y, z = getElementPosition( ptarget ) px, py, pz = getElementPosition( ped ) else setElementData ( ped, "status", "idle" ) x, y, z = getElementPosition( ped ) px, py, pz = getElementPosition( ped ) end zombangle = ( 360 - math.deg ( math.atan2 ( ( x - px ), ( y - py ) ) ) ) % 360 --MAGIC SPELL TO MAKE PEDS LOOK AT YOU setPedRotation( ped, zombangle ) elseif ( getElementData ( ped, "target" ) == nil ) and (getElementData ( ped, "Tx" ) ~= false) then --IF THE PED IS AFTER THE PLAYERS LAST KNOWN WHEREABOUTS x = getElementData ( ped, "Tx" ) y = getElementData ( ped, "Ty" ) z = getElementData ( ped, "Tz" ) px, py, pz = getElementPosition( ped ) zombangle = ( 360 - math.deg ( math.atan2 ( ( x - px ), ( y - py ) ) ) ) % 360 --MAGIC SPELL TO MAKE PEDS LOOK AT YOU setPedRotation( ped, zombangle ) end end end end end --SETS THE ZOMBIE ACTIVITY WHEN STATUS CHANGES addEventHandler ( "onElementDataChange", getRootElement(), function ( dataName ) if getElementType ( source ) == "ped" and dataName == "status" then if (getElementData (source, "zombie") == true) then if ( isPedDead ( source ) == false ) then if (getElementData ( source, "status" ) == "chasing" ) then local Zx, Zy, Zz = getElementPosition( source ) setTimer ( Zomb_chase, 1000, 1, source, Zx, Zy, Zz ) local newtarget = (getElementData ( source, "target" )) if isElement (newtarget) then if getElementType ( newtarget ) == "player" then setElementSyncer ( source, newtarget ) end end zmoan(source) elseif (getElementData ( source, "status" ) == "idle" ) then setTimer ( Zomb_Idle, 1000, 1, source) elseif (getElementData ( source, "status" ) == "throatslashing" ) then local tx,ty,tz = getElementPosition( source ) local ptarget = getElementData ( source, "target" ) if isElement(ptarget) then local vx,vy,vz = getElementPosition( ptarget ) local zombdistance = (getDistanceBetweenPoints3D (tx, ty, tz, vx, vy, vz)) if (zombdistance < .-- s8) --> then zmoan(source) setPedAnimation ( source, "knife", "KILL_Knife_Player", -1, false, false, true) setPedAnimation ( ptarget, "knife", "KILL_Knife_Ped_Damage", -1, false, false, true) setTimer ( Playerthroatbitten, 2300, 1, ptarget, source) setTimer ( function (source) if ( isElement ( source ) ) then setElementData ( source, "status", "idle" ) end end, 5000, 1, source ) else setElementData ( source, "status", "idle" ) end else setElementData ( source, "status", "idle" ) end end elseif (getElementData ( source, "status" ) == "dead" ) then setTimer ( Zomb_delete, 10000, 1, source) end end end end) --RESOURCE START/INITIAL SETUP function outbreak(startedResource) newZombieLimit = get("" .. getResourceName(startedResource) .. ".Zlimit") if newZombieLimit ~= false then if newZombieLimit > ZombieLimit then newZombieLimit = ZombieLimit end else newZombieLimit = ZombieLimit end WoodTimer = setTimer ( WoodSetup, 2000, 1) -- CHECKS FOR BARRIERS if startedResource == getThisResource() then -- call(getResourceFromName("scoreboard"), "scoreboardAddColumn", "Zombie kills") --ADDS TO SCOREBOARD local allplayers = getElementsByType ( "player" ) for pKey,thep in ipairs(allplayers) do setElementData ( thep, "dangercount", 0 ) end local alivePlayers = getAlivePlayers () for playerKey, playerValue in ipairs(alivePlayers) do setElementData ( playerValue, "alreadyspawned", true ) end if ZombieSpeed == 2 then MainTimer1 = setTimer ( setangle, 200, 0) -- KEEPS ZOMBIES FACING THE RIGHT DIRECTION (fast) else MainTimer1 = setTimer ( setangle, 400, 0) -- KEEPS ZOMBIES FACING THE RIGHT DIRECTION end MainTimer3 = setTimer ( clearFarZombies, 3000, 0) --KEEPS ALL THE ZOMBIES CLOSE TO PLAYERS if ZombieStreaming == 1 then MainTimer2 = setTimer ( SpawnZombie, 2500, 0 ) --Spawns zombies in random locations elseif ZombieStreaming == 2 then MainTimer2 = setTimer ( SpawnpointZombie, 2500, 0 ) --spawns zombies in zombie spawnpoints end end end addEventHandler("onResourceStart", getRootElement(), outbreak) function player_Connect() setElementData ( source, "dangercount", 0 ) end Link to comment
LoOs Posted January 20, 2016 Share Posted January 20, 2016 addEventHandler ( "onColShapeHit", SZC, function (hit) if (getElementData (hit, "zombie") == true) then killPed (hit,hit) end end ) Link to comment
#StrOnG_,) Posted January 20, 2016 Author Share Posted January 20, 2016 addEventHandler ( "onColShapeHit", SZC, function (hit) if (getElementData (hit, "zombie") == true) then killPed (hit,hit) end end ) اها مشكور Link to comment
#StrOnG_,) Posted January 20, 2016 Author Share Posted January 20, 2016 اقدر اسويه ما يرسبن نهائي ؟يعني الزومبي ما يرسبن بمكان احدده انا هذا الكود يخليه لما يرسبن يقتله وكذا يصير بعض اللاق + يقدرون يبقسون اللاعب Link to comment
LoOs Posted January 20, 2016 Share Posted January 20, 2016 اقدر اسويه ما يرسبن نهائي ؟يعني الزومبي ما يرسبن بمكان احدده اناهذا الكود يخليه لما يرسبن يقتله وكذا يصير بعض اللاق + يقدرون يبقسون اللاعب يب ، فيه ايفنت onZombieSpawn تستخدمه وتتحقق ان الزومبي بالكول شيب ، واذا صار فيه تطرده براً ، بس isElementWithinColShape setElementPosition Link to comment
#StrOnG_,) Posted January 20, 2016 Author Share Posted January 20, 2016 اقدر اسويه ما يرسبن نهائي ؟يعني الزومبي ما يرسبن بمكان احدده اناهذا الكود يخليه لما يرسبن يقتله وكذا يصير بعض اللاق + يقدرون يبقسون اللاعب يب ، فيه ايفنت onZombieSpawn تستخدمه وتتحقق ان الزومبي بالكول شيب ، واذا صار فيه تطرده براً ، بس isElementWithinColShape setElementPosition مشكور Link to comment
#StrOnG_,) Posted January 20, 2016 Author Share Posted January 20, 2016 (edited) addEventHandler ( "onZombieSpawn", root, function (hit) isElementWithinColShape ( hit, SZC ) setElementPosition ( hit, 1404.19922, 2756.91577, 10.82031 ) end ) سويت كذا وما ينقلهم :\ Edited January 20, 2016 by Guest Link to comment
LoOs Posted January 20, 2016 Share Posted January 20, 2016 addEventHandler ( "onColShapeHit", SZC, function (hit) if (getElementData (hit, "zombie") == true) then killPed (hit,hit) end end ) سويت كذا وما ينقلهم :\ يقتلهم مب ينقلهم Link to comment
#StrOnG_,) Posted January 20, 2016 Author Share Posted January 20, 2016 addEventHandler ( "onColShapeHit", SZC, function (hit) if (getElementData (hit, "zombie") == true) then killPed (hit,hit) end end ) سويت كذا وما ينقلهم :\ يقتلهم مب ينقلهم عدلته ض1 كنت ناسخ الكود القديم Link to comment
iMr.Omar Posted January 21, 2016 Share Posted January 21, 2016 addEventHandler ( "onZombieSpawn", root, function (hit) if ( isElementWithinColShape ( hit, SZC ) ) then setElementPosition ( hit, 1404.19922, 2756.91577, 10.82031 ) end end ) Link to comment
LoOs Posted January 21, 2016 Share Posted January 21, 2016 addEventHandler ( "onZombieSpawn", root, function (hit) if ( isElementWithinColShape ( hit, SZC ) ) then setElementPosition ( hit, 1404.19922, 2756.91577, 10.82031 ) end end ) من اين اتيت بـ hit ? ثاني شيء الايفنت يرجع لك الاحداثيات والريترون ، يعني مايرجع لك الزومبي الزومبي هنا هو السورس Link to comment
Mr.Ronaldo Posted January 21, 2016 Share Posted January 21, 2016 addEventHandler ( "onZombieSpawn", root, function (hit) if ( isElementWithinColShape ( hit, SZC ) ) then setElementPosition ( hit, 1404.19922, 2756.91577, 10.82031 ) end end ) من اين اتيت بـ hit ? ثاني شيء الايفنت يرجع لك الاحداثيات والريترون ، يعني مايرجع لك الزومبي الزومبي هنا هو السورس function (hit) hit = فاعل الحدث الى هو الزومبي = source بس source = لها طريقه ثانيه بيصير كذا addEventHandler ( "onZombieSpawn", root, function () if ( isElementWithinColShape ( source, SZC ) ) then setElementPosition ( source, 1404.19922, 2756.91577, 10.82031 ) end end ) يعني بالاول وبالاخر نفس الشي الاختلاف فى الطريقه Link to comment
LoOs Posted January 21, 2016 Share Posted January 21, 2016 addEventHandler ( "onZombieSpawn", root, function (hit) if ( isElementWithinColShape ( hit, SZC ) ) then setElementPosition ( hit, 1404.19922, 2756.91577, 10.82031 ) end end ) من اين اتيت بـ hit ? ثاني شيء الايفنت يرجع لك الاحداثيات والريترون ، يعني مايرجع لك الزومبي الزومبي هنا هو السورس function (hit) hit = فاعل الحدث الى هو الزومبي = source بس source = لها طريقه ثانيه بيصير كذا addEventHandler ( "onZombieSpawn", root, function () if ( isElementWithinColShape ( source, SZC ) ) then setElementPosition ( source, 1404.19922, 2756.91577, 10.82031 ) end end ) يعني بالاول وبالاخر نفس الشي الاختلاف فى الطريقه triggerEvent ( "onZombieSpawn",zombiespawns[random], posX, posY, posZ, rot ) هذا الترايقر الخاص بالايفنت هيا قولي ان البارمتر الاول بعد الزومبي السورس هو الزومبي الاول هو احداثيات مكانه ان قلت خطا فرح افهم فنكشن triggerEvent ثم تعال كلمني Link to comment
Mr.Ronaldo Posted January 21, 2016 Share Posted January 21, 2016 اساسا انت ما تفهم شي عشان تجي تتكلم وبعدين روح افهمو انت الاول بعدين تعال كلمني +الطريقتين ينفعو حبيبي بس انت ما تفهم لان مخك صغير مهما حاولت افهمك اساسا ما رح تفهم Link to comment
LoOs Posted January 21, 2016 Share Posted January 21, 2016 اساسا انت ما تفهم شي عشان تجي تتكلموبعدين روح افهمو انت الاول بعدين تعال كلمني +الطريقتين ينفعو حبيبي بس انت ما تفهم لان مخك صغير مهما حاولت افهمك اساسا ما رح تفهم Link to comment
Mr.Ronaldo Posted January 21, 2016 Share Posted January 21, 2016 اساسا انت ما تفهم شي عشان تجي تتكلموبعدين روح افهمو انت الاول بعدين تعال كلمني +الطريقتين ينفعو حبيبي بس انت ما تفهم لان مخك صغير مهما حاولت افهمك اساسا ما رح تفهم ولله مو ذمبي انك ما تفهم Link to comment
#StrOnG_,) Posted January 21, 2016 Author Share Posted January 21, 2016 ي رونالدو , لو بسويه سورس , بيصير ينقل اللاعب موب الزومبي Link to comment
LoOs Posted January 21, 2016 Share Posted January 21, 2016 ي رونالدو , لو بسويه سورس , بيصير ينقل اللاعب موب الزومبي ينقل الزومبي مب الاعب ، السورس هو المصدر يعني ايفنت onClientGUIClick السورس حقه هو الزر الي انضغط ، او المصدر يعني لكل ايفنت مصدر غير والسورس في الايفنت هذا هو الزومبي Link to comment
#StrOnG_,) Posted January 21, 2016 Author Share Posted January 21, 2016 ي رونالدو , لو بسويه سورس , بيصير ينقل اللاعب موب الزومبي ينقل الزومبي مب الاعب ، السورس هو المصدر يعني ايفنت onClientGUIClick السورس حقه هو الزر الي انضغط ، او المصدر يعني لكل ايفنت مصدر غير والسورس في الايفنت هذا هو الزومبي -_-" قام ينقلني انا , مو الزومبي Link to comment
Mr.Ronaldo Posted January 21, 2016 Share Posted January 21, 2016 addEventHandler("onClientGUIClick",root,function() if source == button then end end) ويمديك تسويه كذا addEventHandler("onClientGUIClick",root,function(crazyloOs) if crazyloOs == button then end end) ما راح يفرق ان شاء الله تكون فهمت لوس تكون معجزه Link to comment
#StrOnG_,) Posted January 21, 2016 Author Share Posted January 21, 2016 الحين انا كاتب " تصحيح اكواد " مو جاي تشرح لطفل ما يفهم طول عمره :\ هذا ما راح يفهم اتركه ي رونالدو وياريت لا تغيرون مسار الموضوع . Link to comment
</Mr.Tn6eL> Posted January 21, 2016 Share Posted January 21, 2016 ي رونالدو , لو بسويه سورس , بيصير ينقل اللاعب موب الزومبي https://forum.multitheftauto.com/viewtopic.php?f=164&t=95928 addEventHandler("onClientGUIClick",root,function() if source == button then end end) ويمديك تسويه كذا addEventHandler("onClientGUIClick",root,function(crazyloOs) if crazyloOs == button then end end) ما راح يفرق ان شاء الله تكون فهمت لوس تكون معجزه string button, string state, int absoluteX, int absoluteY string button : يقصد زر الماوس مو زر الgui راح يعطيك left و right يعني الماوس الايمن والايسر Link to comment
#StrOnG_,) Posted January 21, 2016 Author Share Posted January 21, 2016 لاحول ولا قوه الا بالله ما تفهمون ؟ اقولك قام ينقلني انا ما ينقل ابو الزومبي ما تقدرون تساعدون برا الموضوع روحو سوو موضوع واشرحو فيه للناس مو جايين هنا Link to comment
LoOs Posted January 21, 2016 Share Posted January 21, 2016 لاحول ولا قوه الا بالله ما تفهمون ؟ اقولك قام ينقلني انا ما ينقل ابو الزومبي ما تقدرون تساعدون برا الموضوع روحو سوو موضوع واشرحو فيه للناس مو جايين هنا ورناً وش سويت Link to comment
#StrOnG_,) Posted January 21, 2016 Author Share Posted January 21, 2016 لاحول ولا قوه الا بالله ما تفهمون ؟ اقولك قام ينقلني انا ما ينقل ابو الزومبي ما تقدرون تساعدون برا الموضوع روحو سوو موضوع واشرحو فيه للناس مو جايين هنا ورناً وش سويت ZombieLimit = get("zombies.MaxZombies")-- HOW MANY ZOMBIES SHOULD EXIST AT MAXIMUM? ZombieStreaming = get("zombies.StreamMethod") -- 1 to constantly stream zombies, 0 to only allow zombies to spawn via createZombie function, 2 to only allow spawning at set spawnpoints ZombiePedSkins = {7,9,70,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,43,44,45,36,37,38,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,66,67,68,69,70,71,72,73,75,76,77,78,79,80,81,82,83,85,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,112,113,114,115,116,117,118,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,209,210,211,212,213,214,215,216,217,218,219,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,275,276,277,278,279,280,281,282,283,284,285,286,287,288 } ZombieSpeed = get("zombies.Speed") if ZombieSpeed == 0 then --super slow zombies (goofy looking) chaseanim = "WALK_drunk" checkspeed = 2000 elseif ZombieSpeed == 1 then -- normal speed chaseanim = "run_old" checkspeed = 1000 elseif ZombieSpeed == 2 then -- rocket zombies (possibly stressful on server) chaseanim = "Run_Wuzi" checkspeed = 680 else -- defaults back to normal chaseanim = "run_old" checkspeed = 1000 end resourceRoot = getResourceRootElement() moancount =0 moanlimit = 10 everyZombie = { } --IDLE BEHAVIOUR OF A ZOMBIE function Zomb_Idle (ped) if isElement(ped) then if ( getElementData ( ped, "status" ) == "idle" ) and ( isPedDead ( ped ) == false ) and (getElementData (ped, "zombie") == true) then local action = math.random( 1, 6 ) if action < 4 then -- walk a random direction local rdmangle = math.random( 1, 359 ) setPedRotation( ped, rdmangle ) setPedAnimation ( ped, "PED", "Player_Sneak", -1, true, true, true) setTimer ( Zomb_Idle, 7000, 1, ped ) elseif action == 4 then -- get on the ground setPedAnimation ( ped, "MEDIC", "cpr", -1, false, true, true) setTimer ( Zomb_Idle, 4000, 1, ped ) elseif action == 5 then -- stand still doing nothing setPedAnimation ( ped ) setTimer ( Zomb_Idle, 4000, 1, ped ) end end end end --BEHAVIOUR WHILE CHASING PLAYERS function Zomb_chase (ped, Zx, Zy, Zz ) if isElement(ped) then if (getElementData ( ped, "status" ) == "chasing") and (getElementData (ped, "zombie") == true) then local x, y, z = getElementPosition( ped ) if (getElementData ( ped, "target" ) == nil) and getElementData ( ped, "Tx" ) ~= false then local Px = getElementData ( ped, "Tx" ) local Py = getElementData ( ped, "Ty" ) local Pz = getElementData ( ped, "Tz" ) local Pdistance = (getDistanceBetweenPoints3D( Px, Py, Pz, x, y, z )) if (Pdistance < 1.5 ) then setTimer ( function (ped) if ( isElement ( ped ) ) then setElementData ( ped, "status", "idle" ) end end, 2000, 1, ped ) end end local distance = (getDistanceBetweenPoints3D( x, y, z, Zx, Zy, Zz )) if (distance < 1 ) then -- IF THE PED HASNT MOVED if (getElementData ( ped, "target" ) == nil) then local giveup = math.random( 1, 15 ) if giveup == 1 then setElementData ( ped, "status", "idle" ) else local action = math.random( 1, 2 ) if action == 1 then setPedAnimation ( ped ) triggerClientEvent ( "Zomb_Punch", getRootElement(), ped ) setTimer ( function (ped) if ( isElement ( ped ) ) then setPedAnimation ( ped, "ped", chaseanim, -1, true, true, true ) end end, 800, 1, ped ) setTimer ( Zomb_chase, 2000, 1, ped, x, y, z ) elseif action == 2 then setPedAnimation ( ped ) triggerClientEvent ( "Zomb_Jump", getRootElement(), ped ) setTimer ( Zomb_chase, 3500, 1, ped, x, y, z ) end end else local Ptarget = (getElementData ( ped, "target" )) if isElement(Ptarget) then local Px, Py, Pz = getElementPosition( Ptarget ) local Pdistance = (getDistanceBetweenPoints3D( Px, Py, Pz, Zx, Zy, Zz )) if (Pdistance < 1.2 ) then -- ATTACK A PLAYER IF THEY ARE CLOSE if ( isPedDead ( Ptarget ) ) then --EAT A DEAD PLAYER setPedAnimation ( ped ) setPedAnimation ( ped, "MEDIC", "cpr", -1, false, true, false) setTimer ( function (ped) if ( isElement ( ped ) ) then setElementData ( ped, "status", "idle" ) end end, 10000, 1, ped ) setTimer ( function (ped) if ( isElement ( ped ) ) then setPedRotation ( ped, getPedRotation(ped)-180) end end, 10000, 1, ped ) zmoan(ped) else local action = math.random( 1, 6 ) if action == 1 then setPedAnimation ( ped) triggerClientEvent ( "Zomb_Jump", getRootElement(), ped ) setTimer ( Zomb_chase, 2000, 1, ped, x, y, z ) else setPedAnimation ( ped) triggerClientEvent ( "Zomb_Punch", getRootElement(), ped ) setTimer ( function (ped) if ( isElement ( ped ) ) then setPedAnimation ( ped, "ped", chaseanim, -1, true, true, true ) end end, 800, 1, ped ) setTimer ( Zomb_chase, 2000, 1, ped, x, y, z ) end end else if ( isPedDead (Ptarget) ) then setTimer ( function (ped) if ( isElement ( ped ) ) then setElementData ( ped, "status", "idle" ) end end, 2000, 1, ped ) setTimer ( function (ped) if ( isElement ( ped ) ) then setPedRotation ( ped, getPedRotation(ped)-180) end end, 1800, 1, ped ) else local action = math.random( 1, 2 ) if action == 1 then setPedAnimation ( ped) triggerClientEvent ( "Zomb_Punch", getRootElement(), ped ) setTimer ( function (ped) if ( isElement ( ped ) ) then setPedAnimation ( ped, "ped", chaseanim, -1, true, true, true ) end end, 800, 1, ped ) setTimer ( Zomb_chase, 2000, 1, ped, x, y, z ) elseif action == 2 then setPedAnimation ( ped) triggerClientEvent ( "Zomb_Jump", getRootElement(), ped ) setTimer ( Zomb_chase, 2000, 1, ped, x, y, z ) end end end else setElementData ( ped, "status", "idle" ) end end else setPedAnimation ( ped, "ped", chaseanim, -1, true, true, true) --KEEP WALKING setTimer ( Zomb_chase, checkspeed, 1, ped, x, y, z ) --CHECK AGAIN end end end end --SET THE DIRECTION OF THE ZOMBIE function setangle () for theKey,ped in ipairs(everyZombie) do if isElement(ped) then if ( getElementData ( ped, "status" ) == "chasing" ) then local x local y local z local px local py local pz if ( getElementData ( ped, "target" ) ~= nil ) then local ptarget = getElementData ( ped, "target" ) if isElement(ptarget) then x, y, z = getElementPosition( ptarget ) px, py, pz = getElementPosition( ped ) else setElementData ( ped, "status", "idle" ) x, y, z = getElementPosition( ped ) px, py, pz = getElementPosition( ped ) end zombangle = ( 360 - math.deg ( math.atan2 ( ( x - px ), ( y - py ) ) ) ) % 360 --MAGIC SPELL TO MAKE PEDS LOOK AT YOU setPedRotation( ped, zombangle ) elseif ( getElementData ( ped, "target" ) == nil ) and (getElementData ( ped, "Tx" ) ~= false) then --IF THE PED IS AFTER THE PLAYERS LAST KNOWN WHEREABOUTS x = getElementData ( ped, "Tx" ) y = getElementData ( ped, "Ty" ) z = getElementData ( ped, "Tz" ) px, py, pz = getElementPosition( ped ) zombangle = ( 360 - math.deg ( math.atan2 ( ( x - px ), ( y - py ) ) ) ) % 360 --MAGIC SPELL TO MAKE PEDS LOOK AT YOU setPedRotation( ped, zombangle ) end end end end end --SETS THE ZOMBIE ACTIVITY WHEN STATUS CHANGES addEventHandler ( "onElementDataChange", getRootElement(), function ( dataName ) if getElementType ( source ) == "ped" and dataName == "status" then if (getElementData (source, "zombie") == true) then if ( isPedDead ( source ) == false ) then if (getElementData ( source, "status" ) == "chasing" ) then local Zx, Zy, Zz = getElementPosition( source ) setTimer ( Zomb_chase, 1000, 1, source, Zx, Zy, Zz ) local newtarget = (getElementData ( source, "target" )) if isElement (newtarget) then if getElementType ( newtarget ) == "player" then setElementSyncer ( source, newtarget ) end end zmoan(source) elseif (getElementData ( source, "status" ) == "idle" ) then setTimer ( Zomb_Idle, 1000, 1, source) elseif (getElementData ( source, "status" ) == "throatslashing" ) then local tx,ty,tz = getElementPosition( source ) local ptarget = getElementData ( source, "target" ) if isElement(ptarget) then local vx,vy,vz = getElementPosition( ptarget ) local zombdistance = (getDistanceBetweenPoints3D (tx, ty, tz, vx, vy, vz)) zmoan(source) setPedAnimation ( source, "knife", "KILL_Knife_Player", -1, false, false, true) setPedAnimation ( ptarget, "knife", "KILL_Knife_Ped_Damage", -1, false, false, true) setTimer ( Playerthroatbitten, 2300, 1, ptarget, source) setTimer ( function (source) if ( isElement ( source ) ) then setElementData ( source, "status", "idle" ) end end, 5000, 1, source ) else setElementData ( source, "status", "idle" ) end else setElementData ( source, "status", "idle" ) end end elseif (getElementData ( source, "status" ) == "dead" ) then setTimer ( Zomb_delete, 10000, 1, source) end end end) --RESOURCE START/INITIAL SETUP function outbreak(startedResource) newZombieLimit = get("" .. getResourceName(startedResource) .. ".Zlimit") if newZombieLimit ~= false then if newZombieLimit > ZombieLimit then newZombieLimit = ZombieLimit end else newZombieLimit = ZombieLimit end WoodTimer = setTimer ( WoodSetup, 2000, 1) -- CHECKS FOR BARRIERS if startedResource == getThisResource() then -- call(getResourceFromName("scoreboard"), "scoreboardAddColumn", "Zombie kills") --ADDS TO SCOREBOARD local allplayers = getElementsByType ( "player" ) for pKey,thep in ipairs(allplayers) do setElementData ( thep, "dangercount", 0 ) end local alivePlayers = getAlivePlayers () for playerKey, playerValue in ipairs(alivePlayers) do setElementData ( playerValue, "alreadyspawned", true ) end if ZombieSpeed == 2 then MainTimer1 = setTimer ( setangle, 200, 0) -- KEEPS ZOMBIES FACING THE RIGHT DIRECTION (fast) else MainTimer1 = setTimer ( setangle, 400, 0) -- KEEPS ZOMBIES FACING THE RIGHT DIRECTION end MainTimer3 = setTimer ( clearFarZombies, 3000, 0) --KEEPS ALL THE ZOMBIES CLOSE TO PLAYERS if ZombieStreaming == 1 then MainTimer2 = setTimer ( SpawnZombie, 2500, 0 ) --Spawns zombies in random locations elseif ZombieStreaming == 2 then MainTimer2 = setTimer ( SpawnpointZombie, 2500, 0 ) --spawns zombies in zombie spawnpoints end end end addEventHandler("onResourceStart", getRootElement(), outbreak) function player_Connect() setElementData ( source, "dangercount", 0 ) end addEventHandler ( "onPlayerConnect", getRootElement(), player_Connect ) function WoodSetup() 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