HeHo Community,
ich habe gerade versucht zu verstehen wie man richtig mit ped's umgeht.
Also habe ich mir mal welche erstellt und wollte sie schießen lassen, gesagt versucht, gefailt.
Gegooglet und dann zwei Codes aus dem Internet versucht. Sie gehen wunderbar. Allerdings verlieren die peds jetzt keine Leben mehr..
Mit folgendem sagt er mir immer, dass ein Element als Argument 1 erwartet werde. Ist der Pedname kein Argument?!
Server
Spoiler anzeigen
Lua
_root = getRootElement()
_arrestweapon = 31
peds =
{
{'OttoCarsWache1', -1942.128, 272, 41.047, 90},
{'OttoCarsWache2', -1942.128, 274, 41.047, 90},
}
skin = 165
ped_create = function( _ped, x, y, z, rotation )
_ped = createPed( skin, x, y, z , 0, 0, rotation )
setElementData( _ped, "army.ped", true )
end
setTimer(function() for i, v in ipairs(getElementsByType("ped")) do
if getElementData(v, "army.ped") and getElementHealth(v) > 0 then
setPedWeaponSlot(v, 6)
giveWeapon(v, _arrestweapon, 100000, true)
setPedStat(v, 164, 100)
end
end
end, 50, 0)
ped_start = function( )
for i, v in pairs( peds ) do
ped_create( tostring( v[1] ), v[2], v[3], v[4], v[5] )
end
end
addEventHandler("onResourceStart", getResourceRootElement(getThisResource()), ped_start)
addEvent("ped.shot", true)
addEventHandler("ped.shot", getRootElement(),
function(_ped, _player)
triggerClientEvent("refreshPed", getRootElement(), _ped, _player)
end
)
Alles anzeigen
Client
Spoiler anzeigen
Lua
ped_shoot = function()
for i, v in pairs( getElementsByType("ped") ) do
if getElementData( v, "army.ped" ) then
local x, y, z = getElementPosition( localPlayer )
local x1, y1, z1 = getElementPosition( v )
if getDistanceBetweenPoints3D( x, y, z, x1, y1, z1 ) < 40 and getElementHealth(v) > 0 and getElementHealth(localPlayer) > 40 then
if processLineOfSight(x, y, z, x1, y1, z1, true, false, false, true, false, true) then
else
triggerServerEvent("ped.shot", getRootElement(), v, localPlayer)
end
else
setPedControlState( v, 'aim_weapon', false )
end
end
end
end
setTimer( ped_shoot, 50, 0 )
addEventHandler("onClientPedDamage", getRootElement(), function()
if getElementData( source, "army.ped" ) then
cancelEvent()
end
end)
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
addEvent("refreshPed", true)
addEventHandler("refreshPed", getRootElement(),
function( _ped, _player )
local x, y, z = getElementPosition(_ped)
local px, py, pz = getElementPosition(_player)
local rotZ = findRotation(x, y, px, py)
setPedRotation(_ped, rotZ)
setPedControlState(_ped, "aim_weapon", true)
setPedControlState(_ped, "fire", true)
setTimer(
function()
if isElement(_ped) then
setPedControlState(_ped, "fire", false)
setPedAimTarget(_ped, px, py, pz)
end
end, 50, 1)
end)
Alles anzeigen