Anzo Posted October 23, 2016 Share Posted October 23, 2016 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
Enargy, Posted October 23, 2016 Share Posted October 23, 2016 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. Link to comment
Anzo Posted October 23, 2016 Author Share Posted October 23, 2016 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
Enargy, Posted October 23, 2016 Share Posted October 23, 2016 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
Anzo Posted October 23, 2016 Author Share Posted October 23, 2016 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
Enargy, Posted October 23, 2016 Share Posted October 23, 2016 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
Tomas Posted October 23, 2016 Share Posted October 23, 2016 -- 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
Anzo Posted October 24, 2016 Author Share Posted October 24, 2016 @Gaberiel Me crea el arma normal, pero los demás no la pueden ver aún @Tomas Me da error en esta linea: triggerClientEvent(root, "__CreateWeapon", wep, x, y, z, vehicle, creator) Link to comment
Anzo Posted October 24, 2016 Author Share Posted October 24, 2016 Ya pude hacer que lo vean todos, gracias a los dos por darme una idea. Link to comment
Recommended Posts