AlvareZ_ Posted September 21, 2013 Share Posted September 21, 2013 El problema con esto es que, Le disparo a el Bot, Pero no corre por mi, Corre solo para delante, No se que funcion usar para que me ataque ... Client --[[ ########################################################################## ## ## ## COMPLETE VERSION ## ## Project: 'Witch of L4D 2' - resource for MTA: San Andreas ## ## ## ########################################################################## [C] Copyright 2013-2014, Falke and [COD]Plate ]] local cFunc = {} local cSetting = {} cFunc["witch_atack"] = function(_, wep, bodypart) if not getElementData(source, "Damaged") then local weaponType = getPedWeapon ( getLocalPlayer() ) if(wep == weaponType) then triggerServerEvent ( "witchatack", root ) setSoundMaxDistance(witchcry, 0) setElementData(source, "Damaged", true) end end end addEventHandler("onClientPedDamage", getRootElement(),cFunc["witch_atack"]) cFunc["witch_atackxd"] = function(_, wep, bodypart) local weaponType = getPedWeapon ( getLocalPlayer() ) if(wep == weaponType) then triggerServerEvent ( "witchatackxd", root ) end end addEventHandler("onClientPedDamage", getRootElement(),cFunc["witch_atackxd"]) addEvent ( "chillido", true ) addEventHandler ( "chillido", root, function ( ) playSound ( "tawa.mp3" ) end ) function startMusic() setRadioChannel(0) song = playSound3D("cry.mp3", -175.610, 57.66, 3.2, true) setSoundMaxDistance(song, 180) end function cancelPedDamage ( attacker, weapon, bodypart ) if getElementType ( source ) == "ped" then if (getElementData (source, "Witch") == true) then local zhp = getElementData(source,"currenthealth") if zhp > 0 then local dmg = 25 local takedamage = zhp - dmg setElementData(source,"currenthealth",takedamage) elseif zhp == 0 then triggerServerEvent("killdmgzero",root,source,attacker,weapon,bodypart) end end end end addEventHandler ( "onClientPedDamage", getRootElement(), cancelPedDamage ) function toggleSong() setSoundVolume(song,0) end addEventHandler("onClientPedDamage",getRootElement(),toggleSong) addEventHandler("onClientResourceStart",getResourceRootElement(getThisResource()),startMusic) addEvent ( "witchsound", true ) addEventHandler ( "witchsound", root, function ( ) song = playSound3D("cry.mp3", 2952, -1925, 4.2, true) setSoundMaxDistance(song, 180) end ) local maxDist = 30 function witchNameTag() local witchs = getElementsByType ( "ped",getRootElement(),true ) local Px,Py,Pz = getCameraMatrix( ) for theKey,theWitch in ipairs(witchs) do if (isElement(theWitch)) then local Zx,Zy,Zz = getElementPosition( theWitch ) local zhx,zhy,zhz = getPedBonePosition(theWitch,6) if (getDistanceBetweenPoints3D(Px, Py, Pz, Zx, Zy, Zz) < maxDist ) then if (getElementData (theWitch, "Witch") == true) then local sxx,syy = getScreenFromWorldPosition(zhx,zhy,zhz+0.3) local currentDistance = getDistanceBetweenPoints3D(Px, Py, Pz, Zx, Zy, Zz) --local zombieHealth = getElementHealth(theWitch) local maxHP = exports.extra_health:getElementExtraHealth(theWitch) local currentHealth = getElementData(theWitch, "currenthealth") if sxx and getElementHealth(theWitch) > 0 then sx,sy = sxx-60,syy-10 dxDrawRectangle(sx+5,sy+25,131.0/maxHP*currentHealth,12.0,tocolor(255,0,0,200),false) -- health dxDrawRectangle(sx,sy,146.0,46.0,tocolor(0,0,0,0),false) -- background dxDrawRectangle(sx+5,sy+25,131.0,12.0,tocolor(0,0,0,100),false) -- bg health dxDrawText("Witch",sx+26,sy,596.0,236.0,tocolor(255,0,0,255),1.0,"default","left","top",false,false,false) -- z name end end end end end end addEventHandler("onClientRender", root, witchNameTag) Server --[[ ########################################################################## ## ## ## COMPLETE VERSION ## ## Project: 'Witch of L4D 2' - resource for MTA: San Andreas ## ## ## ########################################################################## [C] Copyright 2013-2014, Falke and [COD]Plate ]] RealWitch = nil 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 function getPointFromDistanceRotation(x, y, dist, angle) local a = math.rad(90 - angle); local dx = math.cos(a) * dist; local dy = math.sin(a) * dist; return x+dx, y+dy; end Witch = nil function getPlayerNearestToPosition(x, y, z) local nearestPlayer = nil local nearestDistance = nil for i, players in ipairs(getElementsByType("player")) do local px, py, pz = getElementPosition(players) local distance = getDistanceBetweenPoints3D(px, py, pz, x, y, z) if nearestPlayer == nil then nearestPlayer = players nearestDistance = distance elseif distance < nearestDistance then nearestDistance = distance nearestPlayer = players end end if nearestPlayer == nil then return false else return nearestPlayer end end function Boss () blip = {} local localPed = createPed( 33, 188.28320, 1403.76196, 10.58594 ) local health = exports.extra_health:setElementExtraHealth ( localPed, 1500 ) setElementModel ( localPed, 33 ) setPedAnimation(localPed, "CRACK", "crckidle3", -1, true, true, false) setElementData(localPed, "type", "RealWitch") setPedStat(localPed, 24, 1000) RealWitch = localPed blip[1] = (createBlipAttachedTo ( localPed, 0 )) triggerClientEvent ( "witchsound", root ) setElementData(localPed, "currenthealth", exports.extra_health:getElementExtraHealth(RealWitch)) setElementData(localPed, "Witch", true) end addEventHandler("onResourceStart", resourceRoot, Boss) addEvent("onWitchReady", true) addEvent("witchatack", true) addEventHandler ( "witchatack", root, function ( ) local Health = exports.extra_health:getElementExtraHealth(localPed) if Health < 1499 or Health == 1499 then setPedAnimation(localPed, "ped", "sprint_Wuzi", -1, true, true, false) triggerClientEvent ( "chillido", root ) end end ) addEvent("witchatackxd", true) addEventHandler ( "witchatackxd", root, function ( ) setPedAnimation(localPed, "ped", "sprint_Wuzi", -1, true, true, false) end ) addEventHandler("onPedWasted", getRootElement(), function(ammo, killer) if isElement(RealWitch) then if source == RealWitch then local x, y, z = getElementPosition(RealWitch) destroyElement(RealWitch) destroyElement(blip[1]) setTimer(Boss, 30000, 1) triggerClientEvent ( "chillido", root ) end end end ) setTimer( function() localPed = RealWitch if isElement(RealWitch) then local x, y, z = getElementPosition(RealWitch) local player = getPlayerNearestToPosition(x, y, z) if player then local px, py, pz = getElementPosition(player) if getDistanceBetweenPoints3D(x, y, z, px, py, pz) < 130 then if isElementInWater(RealWitch) then setPedAnimation(RealWitch, "CRACK", "crckidle3", -1, true, true, false) local healthxd = exports.extra_health:setElementExtraHealth ( RealWitch, 1500 ) end local rotZ = findRotation(x, y, px, py) setPedRotation(RealWitch, rotZ) if getDistanceBetweenPoints3D(px, py, pz, x, y, z) < 2 then local health = getElementHealth(player) if health < 5 or health == 5 then setElementHealth(player, 0) local leX, leY, leZ = getElementPosition(RealWitch) setPedAnimation(RealWitch, "CRACK", "crckidle3", -1, true, true, false) local healthxd = exports.extra_health:setElementExtraHealth ( RealWitch, 1500 ) else setElementHealth(player, health - 6) end end else local healthxd = exports.extra_health:setElementExtraHealth ( RealWitch, 1500 ) setPedAnimation(RealWitch, "CRACK", "crckidle3", -1, true, true, false) end end end end , 50, 0) addEvent("killdmgzero",true) function killWhenHpZero(source,attacker,weapon,bodypart) killPed(source,attacker,weapon,bodypart) end addEventHandler("killdmgzero",root,killWhenHpZero) Link to comment
AlvareZ_ Posted September 22, 2013 Author Share Posted September 22, 2013 Si alguien tiene alguna idea, Favor decirme. Link to comment
Atouk Posted September 24, 2013 Share Posted September 24, 2013 Porque no tomas la rotación del jugador y le ajustas esa rotación a la witch? Link to comment
AlvareZ_ Posted September 24, 2013 Author Share Posted September 24, 2013 No funciona :c Link to comment
Recommended Posts