Jump to content

Armas de 'createWeapon' las puedan ver todos los jugadores


Anzo

Recommended Posts

Pues estaba haciendo un panel para poder crear armas por medio de botones, las armas se crean pero, solo las puedo ver yo, los demás jugadores no sienten daño ni las pueden ver. Quería saber que puedo hacer o usar para que las armas lo puedan ver los demás y no solo el jugador local.

Si lo estuviera haciendo por comandos sería más fácil... Pero con botones no se me ocurre nada.

Una explicación a lo que quiero es:

Tengo un panel donde puedo ponerle armas al cuerpo del jugador con attachElements, por ahí todo bien, el problema es que los demás jugadores no sienten el daño de esa arma creada y no la pueden ver; quiero que la puedan ver y que les baje vida si les dispara esa arma. EJ: Tengo un botón que dice "M4", le doy click y me pone una M4 en el cuerpo, pero solo la puedo ver yo; y quiero que los demás puedan ver el arma también.

Link to comment
6 minutes ago, Gaberiel said:

Tendrías que hacer un tipo de callback o como se le diga, para hacer trigger de cliente a servidor y luego trigger de server a cliente para todos los players.

Pensé en eso pero no entiendo como hacerlo, sabes alguna manera?

Link to comment
1 hour ago, Anzo said:

Pensé en eso pero no entiendo como hacerlo, sabes alguna manera?

Donde creas el arma lo eliminas y haces un trigger para el serverside, luego en el otro lado haces de nuevo el trigger pero para todos los players usando un loop o simplemente root.

Link to comment

Sigo sin entender... lo que tengo es esto:

function equip_armas()
	if (source == Equipar_armamento)  then
		 vehicleh = getPedOccupiedVehicle(localPlayer)
		if vehicleh then
			local x,y,z = getElementPosition(vehicleh)
			local mdel = getElementModel(vehicleh)
			if (guiComboBoxGetSelected(comboArmas) == 0) then
				weapons[1] = createWeapon("m4", x,y ,z)
				weapons[2] = createWeapon("m4", x,y ,z)
				if vehs[mdel] then
					attachElements(weapons[1], vehicleh, 0-0.4, 0+0.9, 0+0.5,0,0,90)
					attachElements(weapons[2], vehicleh, 0+0.4, 0+0.9, 0+0.5,0,0,90)
				else
					attachElements(weapons[1], vehicleh, 0-0.4, 0+0.9, 0+0.2,0,0,90)
					attachElements(weapons[2], vehicleh, 0+0.4, 0+0.9, 0+0.2,0,0,90)
				end
				setWeaponClipAmmo(weapons[1], 99999)
				setWeaponClipAmmo(weapons[2], 99999)
				guiSetEnabled(Equipar_armamento, false)
				guiSetEnabled(destruir_objetos, true)
			end
		end
	elseif (source == destruir_objetos) then
		guiSetEnabled(Equipar_armamento, true)
		guiSetEnabled(destruir_objetos, false)
		for i,v in ipairs(weapons) do
			if isElement(v) == true then
				destroyElement(v)
			end
		end
	end
end
addEventHandler("onClientGUIClick", root, equip_armas)

¿Qué puedo hacer ahora para que todos vean las armas?

Link to comment

Client.

weapons = {}

function equip_armas()
    if (source == Equipar_armamento)  then
         vehicleh = getPedOccupiedVehicle(localPlayer)
        if vehicleh then
            if (guiComboBoxGetSelected(comboArmas) == 0) then
                triggerServerEvent("installWeapon", localPlayer)
            end
        end
    elseif (source == destruir_objetos) then
        guiSetEnabled(Equipar_armamento, true)
        guiSetEnabled(destruir_objetos, false)
        triggerServerEvent("deleteWeapon", localPlayer)
    end
end
addEventHandler("onClientGUIClick", root, equip_armas)

addEvent("setupWeapon", true)
addEventHandler("setupWeapon", root,
function()
    local x,y,z = getElementPosition(vehicleh)
    local mdel = getElementModel(vehicleh)
    weapons[1] = createWeapon("m4", x,y ,z)
    weapons[2] = createWeapon("m4", x,y ,z)
    if vehs[mdel] then
        attachElements(weapons[1], vehicleh, 0-0.4, 0+0.9, 0+0.5,0,0,90)
        attachElements(weapons[2], vehicleh, 0+0.4, 0+0.9, 0+0.5,0,0,90)
    else
        attachElements(weapons[1], vehicleh, 0-0.4, 0+0.9, 0+0.2,0,0,90)
        attachElements(weapons[2], vehicleh, 0+0.4, 0+0.9, 0+0.2,0,0,90)
    end
    setWeaponClipAmmo(weapons[1], 99999)
    setWeaponClipAmmo(weapons[2], 99999)
    guiSetEnabled(Equipar_armamento, false)
    guiSetEnabled(destruir_objetos, true)
end)

addEvent("cleanAttachedWeapons", true)
addEventHandler("cleanAttachedWeapons", root,
function()
    if #weapons ~= 0 then 
        for i,v in ipairs(weapons) do
            if isElement(v) then
                destroyElement(v)
            end
        end    
    end
end)


Server

addEvent("installWeapon", true)
addEventHandler("installWeapon", root,
    function()
        triggerClientEvent(source, "setupWeapon", root)
    end
)

addEvent("deleteWeapon", true)
addEventHandler("deleteWeapon", root,
    function()
        triggerClientEvent(source, "cleanAttachedWeapons", root)
    end
)

 

Link to comment
-- Client side:

function equip_armas()
	if (source == Equipar_armamento)  then
		 vehicleh = getPedOccupiedVehicle(localPlayer)
		if vehicleh then
			local x,y,z = getElementPosition(vehicleh)
			if (guiComboBoxGetSelected(comboArmas) == 0) then
        		triggerServerEvent("__CreateWeapon", root, "m4", x, y, z, vehicleh, localPlayer)
        		triggerServerEvent("__CreateWeapon", root, "m4", x, y, z, vehicleh, localPlayer)

				guiSetEnabled(Equipar_armamento, false)
				guiSetEnabled(destruir_objetos, true)
			end
		end
	elseif (source == destruir_objetos) then
		guiSetEnabled(Equipar_armamento, true)
		guiSetEnabled(destruir_objetos, false)
		triggerServerEvent("__DestroyWeapon", root, localPlayer)
	end
end
addEventHandler("onClientGUIClick", root, equip_armas)

local weapons = {}
addEvent("__CreateWeapon", true)
function __CreateWeapon(wep, x, y, z, vehicle, creator)
  if ( not weapons[creator] ) then
    weapons[creator] = {}
  end
  
  local slot = ( #weapons[creator] + 1 ) or 1
  weapons[player][slot] = createWeapon(wep, x, y, z)
  
  local model = getElementModel(vehicle)
  if vehs[model] then
	attachElements(weapons[creator][slot], vehicle, 0-0.4, 0+0.9, 0+0.5,0,0,90)
  else
	attachElements(weapons[creator][slot], vehicle, 0-0.4, 0+0.9, 0+0.2,0,0,90)
  end
end
addEventHandler("__CreateWeapon", root, __CreateWeapon)

addEvent("__DestroyWeapon", true)
function __DestroyWeapon(creator)
  if ( weapons[creator] ) then
    for k, weapon in pairs(weapons[creator]) do
      destroyElement(weapon)
      weapons[creator][k] = nil
    end
  end
end
addEventHandler("__DestroyWeapon", root, __DestroyWeapon)

-- Server side:

addEvent("__CreateWeapon", true)
addEventHandler("__CreateWeapon", root,
  function (wep, x, y, z, vehicle, creator)
    triggerClientEvent(root, "__CreateWeapon", wep, x, y, z, vehicle, creator)
  end
)

addEvent("__DestroyWeapon", true)
addEventHandler("__DestroyWeapon", root,
  function ()
    triggerClientEvent(root, "__DestroyWeapon", client)
  end
)

 

Link to comment
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...