Bc# Posted May 26, 2016 Share Posted May 26, 2016 Explico. Pasa que hace unos días comencé a investigar sobre como hacer objects en lua, pasa que en la wiki no encuentro toda la info que necesito. Problema. Hice unos objects globales, pero quiero saber si puedo usarlo tanto en client como en server usando exports. También si puedo definir un lua sin tipo en el meta. Ejemplo. exports.lua function object(tipo,model,pX,pY,pZ,rX,xY,rZ,interior,collisions,alpha,scale) local self = {tipo=tipo, model=model, pX=pX, pY=pY, pZ=pZ, rX=rX, rY=rY, rZ=rZ, interior=interior, collisions=collisions, alpha=alpha, scale=scale} local getTipo = function () return self.tipo end local getModelo = function () return self.modelo end local getPosX = function () return self.pX end local getPosY = function () return self.pY end local getPosZ = function () return self.pZ end local getRotX = function () return self.rX end local getRotY = function () return self.rY end local getRotZ = function () return self.rZ end local getInterior = function () return self.interior end local getCollisions = function () return self.collisions end local getAlpha = function () return self.alpha end local getScale = function () return self.scale end return { getTipo = getTipo, getModelo = getModelo, getPosX = getPosX, getPosY = getPosY, getPosZ = getPosZ, getRotX = getRotX, getRotY = getRotY, getRotZ = getRotZ, getInterior = getInterior, getCollisions = getCollisions, getAlpha = getAlpha, getScale = getScale } end meta.xml "Bc" type="gamemode" version="2.0.0" /> client="1.3.1-9.04123" /> PD: Estoy creando la base para un Multi Gamemode, si alguien gusta prestarme apoyo bienvenido sea. PD2: Si, volví a hacer scripts. Link to comment
aka Blue Posted May 26, 2016 Share Posted May 26, 2016 Si lo que quieres hacer es un lector de mapas, el gamemode Paradise mismo tiene uno bastante mejorable desde mi punto de vista pero que lee los archivos sin estar metidos en el meta.xml mediante XML Functions, vamos. PD: No estoy seguro si entendí tu duda, pero ahí te lo dejo . Link to comment
Bc# Posted May 26, 2016 Author Share Posted May 26, 2016 Estoy tratando de hacer algo propio, estoy recurriendo a esta usefull para evitarme los exports. Pero no me resulta T.T CallServerFunction Edit: Comprobé la usefull, pero el problema es que no retorna nada. Edit 2: Solucionado. No tenia idea que si en un script tengo 2 archivos server-side, las funciones se exportan automaticamente. Link to comment
Tomas Posted May 26, 2016 Share Posted May 26, 2016 Estoy tratando de hacer algo propio, estoy recurriendo a esta usefull para evitarme los exports. Pero no me resulta T.T CallServerFunction Edit: Comprobé la usefull, pero el problema es que no retorna nada. Edit 2: Solucionado. No tenia idea que si en un script tengo 2 archivos server-side, las funciones se exportan automaticamente. Las funciones (a menos que las definas localmente) están compartidas entre todos los archivos del mismo tipo (cliente/servidor). Si no especificas el tipo de script en el meta este será de tipo servidor. Link to comment
Enargy, Posted May 26, 2016 Share Posted May 26, 2016 Yo he visto en algunos metas que tienen en el atributo "shared", es decir, Compartido. Podrias intentar implementarlo y ver si hace algún efecto, nunca lo he intentado pero tengo curiosidad. Link to comment
Bc# Posted May 27, 2016 Author Share Posted May 27, 2016 Me surgio otro problema dejo el codigo y explico: Server-Side local dmMaps = {} local ddMaps = {} local hunterMaps = {} function loadMaps() local mapa for k,v in ipairs(getResources()) do if (getResourceInfo(v,"type") == "map") and (getResourceInfo(v,"gamemodes") == "race") and getResourceInfo(v,"name") then mapa = maps(v) if mapa.getType() == "DM" then table.insert(dmMaps,mapa) elseif mapa.getType() == "DD" then table.insert(ddMaps,mapa) elseif mapa.getType() == "Hunter" then table.insert(hunterMaps,mapa) end end end outputDebugString("Mapas Cargados!") triggerClientEvent(playerSource,"onServerSendMaps",playerSource,mapa); end addCommandHandler ( "smg", loadMaps ) function maps (map) local self = { name = getResourceInfo(map,"name"), resName = getResourceName(map), mapType = setMapType(getResourceInfo(map,"name"))} local getName = function () return self.name end local getResName = function () return self.resName end local getMapType = function () return self.mapType end return { getName = getName, getResName = getResName, getType = getMapType } end Client-Side addEvent("onServerSendMaps",true) addEventHandler("onServerSendMaps",root, function (mapa) outputChatBox("Mapa: "..mapa.getName()) end) Pasa que en el cliente me reconoce mapa como tabla, pero no me reconoce los elementos.. Link to comment
Enargy, Posted May 27, 2016 Share Posted May 27, 2016 outputChatBox("Mapa: "..mapa.getName()) No entendí por que la columna es una función, Debería quedarte outputChatBox("Mapa: "..mapa.getName) Link to comment
Bc# Posted May 27, 2016 Author Share Posted May 27, 2016 outputChatBox("Mapa: "..mapa.getName()) No entendí por que la columna es una función, Debería quedarte outputChatBox("Mapa: "..mapa.getName) Es lenguaje orientado a objetos, todas las funciones que están dentro de una función pertenecen a la variable. Si tu lo usas en server-side funciona perfecto pero en client-side no retorna nada, pues es una función enviada desde el servidor. Ya encontré la solución, como no pude exportar la función con retorno desde server a client lo que hice fue definirla no como una función sino como una variable. --Pase de esto local getName = function () return self.name end --A esto local getName = self.name Link to comment
Recommended Posts