UserToDelete Posted March 6, 2015 Share Posted March 6, 2015 Bueno, hace unos dias empece el desarrolo de todo un sistema de servidor, o almenos, intento hacerlo de la manera mas eficiente que puedo. Bien explicare un poco lo que llevo hasta ahora; El resource se llama vCore, como su titulo indica, y tiene como funcion principal ofrecer ventajas al servidor con resources que otros no hacen correctamente, explicare todo en la lista de mas abajo: Soporte para los game monitor (Esto hace que los gameMonitor reconozcan el dinero como "score" o esa es la idea.) Soporte de saveSystem (Aun ando integrando cosas, pero por el momento soporta: Skin, posicion, armas, dinero, vida, armadura, nivel de busqueda, dimension, interior y [spawn (resource settings)]) Soporte de configurables, es decir, lo puedes configurar desde Resource Settings en el admin panel por defecto de MTA Archivos de lenguaje para los que no sean ni ingleses ni españoles. /gadmin, un comando que permite borrar gangs, pero es necesario el script "gang_system" de "Castillo14", lo que hoy en dia, es "SolidSnake14" en el foro https://community.multitheftauto.com/index.php?p= ... ls&id=1514 (gang_system) https://community.multitheftauto.com/index.php?p= ... s&id=11073 (vCore) Link to comment
MTA Team 0xCiBeR Posted March 9, 2015 MTA Team Share Posted March 9, 2015 · Hidden Hidden Interesante, aunque la verdad, estoy en completo desacuerdo en usar XML como método de guardado. Link to comment
Tomas Posted March 12, 2015 Share Posted March 12, 2015 Cuando uno crea un proyecto en el cuál tiene como fin de que sea usado debes tener en cuenta unas cositas... Que sea útil y dinámico. Que sea entendible para la mayoría de las personas que lo usarán. Que sea confiable. No quiero ser muy duro, pero realmente tu script no es muuuy útil que digamos , además de que está compilado, yo personalmente no usaría scripts compilados de gente que no son conocidas en la comunidad (quizás te conocen aquí en el foro, pero la mayor parte de los usuarios no serán hispanos, osea, no te conocerán), en una parte recomiendas darle permisos de administrador, ¿para qué? Ni el SQL o el XML necesitan permisos administrativos para cumplir sus funciones, entonces veo un poco 'sospechoso' que menciones eso, además de estar todo compilado, (incluidos los server-sides). Otro 'problema' es que el idioma base de tu recurso es el español y como he mencionado la mayoría de los usuarios que lo usarán serán anglohablantes. Además hay otro inconveniente que deberías remarcar en la descripción, tú seguramente usaste la data 'score' para mostrar el dinero de los jugadores en los game-monitors, pero imagina que alguien en su servidor utilice un script que use 'score' como data para funcionar, eso afectaría al funcionamiento, suerte y espero que emplees algunos de los consejos que te di abajo Saludos. Link to comment
UserToDelete Posted March 18, 2015 Author Share Posted March 18, 2015 El script ya esta descompilado en la community, free to edit, como decian en los juegos online; De todas formas, era un miniproyecto para haber aprendido lua, obviamente, si hubiera sido un script que le tuviera interes (popular o economico) no estaría publicado en la community. Tus consejos son utiles, sobretodo el de "Util y dinamico" Me surgio la idea de crear varias carpetas dentro de otras y usar menos cantidad de script, ya que supone una perdida de tiempo para el que lo descarga. Tener que andar buscando cada cosa es una tonteria, cuando pudo haber tres archivos y una carpeta server.luaclient.luameta.xmlplayer_data EDIT: Era Free to play. Aun así me considero unbuen scripter RECOPILATORIA DE SCRIPTS RANDOM DE LA COMUNIDAD: https://community.multitheftauto.com/index.php?p= ... s&id=11173 createBlip(1039.23950, -5334.36377, -0.55000, 60, 2, 255, 0, 0, 255, 0, 10000 ) https://community.multitheftauto.com/index.php?p= ... s&id=11161 local blip = createBlip ( 4117.80615 -2822.10815 1.16875, 58 ) scripter de los dos anteriores: https://community.multitheftauto.com/index.php?p= ... &id=391155 Enfin, de los nuevos, es esto. El tercero random que he descargado parece que ha valido la pena; parece algo mas largo y trabajado addEvent("onGasRefill", true) addEvent("refill", true) addEvent("paliwo_gui_open", true) local x,y = guiGetScreenSize() paliwo = { } function centerWindow(center_window) local screenW,screenH=guiGetScreenSize() local windowW,windowH=guiGetSize(center_window,false) local x,y = (screenW-windowW)/2,(screenH-windowH)/2 guiSetPosition(center_window,x,y,false) end GUIEditor_Window = {} GUIEditor_TabPanel = {} GUIEditor_Tab = {} GUIEditor_Button = {} GUIEditor_Label = {} GUIEditor_Edit = {} GUIEditor_Label = {} GUIEditor_Progress = {} GUIEditor_Progress[1] = guiCreateProgressBar(1095,878,344,21,false) ilepaliwa = guiCreateLabel(7,3,56,18,"Paliwo:",false,GUIEditor_Progress[1]) guiLabelSetColor(ilepaliwa,0,0,0) guiSetVisible(GUIEditor_Progress[1],false) guiSetVisible(ilepaliwa,false) GUIEditor_Window[1] = guiCreateWindow(471,312,503,256,"",false) GUIEditor_TabPanel[1] = guiCreateTabPanel(9,22,485,225,false,GUIEditor_Window[1]) GUIEditor_Tab[1] = guiCreateTab("Stacja",GUIEditor_TabPanel[1]) GUIEditor_Button[1] = guiCreateButton(11,170,122,24,"Tankuj",false,GUIEditor_Tab[1]) GUIEditor_Button[2] = guiCreateButton(355,170,122,24,"Zamknij okno",false,GUIEditor_Tab[1]) GUIEditor_Label[1] = guiCreateLabel(139,175,227,23,"Obecnie za paliwo zapłacisz:",false,GUIEditor_Tab[1]) GUIEditor_Label[3] = guiCreateLabel(6,4,475,18,"Twój pojazd posiada: Litrów paliwa",false,GUIEditor_Tab[1]) GUIEditor_Label[2] = guiCreateLabel(6,23,475,18,"Kosz 1 litra paliwa:3$",false,GUIEditor_Tab[1]) GUIEditor_Edit[1] = guiCreateEdit(6,44,197,19,"",false,GUIEditor_Tab[1]) GUIEditor_Label[4] = guiCreateLabel(5,105,479,20,"Możesz dolać: Litrów paliwa",false,GUIEditor_Tab[1]) guiEditSetMaxLength ( GUIEditor_Edit[1], 3 ) guiSetVisible(GUIEditor_Window[1],false) m100 = getElementByID("m100") m101 = getElementByID("m101") m102 = getElementByID("m102") m103 = getElementByID("m103") m104 = getElementByID("m104") m105 = getElementByID("m105") m106 = getElementByID("m106") m107 = getElementByID("m107") m108 = getElementByID("m108") m109 = getElementByID("m109") m110 = getElementByID("m110") m111 = getElementByID("m111") m112 = getElementByID("m112") m113 = getElementByID("m113") m114 = getElementByID("m114") m115 = getElementByID("m115") m116 = getElementByID("m116") createBlipAttachedTo(m100,55, 2, 255, 0, 0, 255, 0, 200.0) createBlipAttachedTo(m101,55, 2, 255, 0, 0, 255, 0, 200.0) createBlipAttachedTo(m102,55, 2, 255, 0, 0, 255, 0, 200.0) createBlipAttachedTo(m103,55, 2, 255, 0, 0, 255, 0, 200.0) createBlipAttachedTo(m104,55, 2, 255, 0, 0, 255, 0, 200.0) createBlipAttachedTo(m105,55, 2, 255, 0, 0, 255, 0, 200.0) createBlipAttachedTo(m106,55, 2, 255, 0, 0, 255, 0, 200.0) createBlipAttachedTo(m107,55, 2, 255, 0, 0, 255, 0, 200.0) createBlipAttachedTo(m108,55, 2, 255, 0, 0, 255, 0, 200.0) createBlipAttachedTo(m109,55, 2, 255, 0, 0, 255, 0, 200.0) createBlipAttachedTo(m110,55, 2, 255, 0, 0, 255, 0, 200.0) createBlipAttachedTo(m111,55, 2, 255, 0, 0, 255, 0, 200.0) createBlipAttachedTo(m112,55, 2, 255, 0, 0, 255, 0, 200.0) createBlipAttachedTo(m113,55, 2, 255, 0, 0, 255, 0, 200.0) createBlipAttachedTo(m114,55, 2, 255, 0, 0, 255, 0, 200.0) createBlipAttachedTo(m115,55, 2, 255, 0, 0, 255, 0, 200.0) createBlipAttachedTo(m116,55, 2, 255, 0, 0, 255, 0, 200.0) function setUp(startedResource) if(startedResource == getThisResource()) then oX,oY,oZ = getElementPosition(getLocalPlayer()) setTimer(fuelDepleting, 500, 0) distance = 0 distanceOld = 0 end end addEventHandler("onClientResourceStart", getRootElement(), setUp) function paliwo_gui_open(hitElement) centerWindow(GUIEditor_Window[1]) local entervehicle = getPedOccupiedVehicle ( hitElement ) if entervehicle then local vehicle = getPedOccupiedVehicle( hitElement ) if vehicle and getVehicleOccupant( vehicle ) == hitElement then if getLocalPlayer() == hitElement then if(source == m100 or source == m101 or source == m102 or source == m103 or source == m104 or source == m105 or source == m106 or source == m107 or source == m108 or source == m109 or source == m110 or source == m111 or source == m112 or source == m113 or source == m114 or source == m115 or source == m116 ) then setElementVelocity ( vehicle, 0, 0, 0 ) local vehicle = getPedOccupiedVehicle(hitElement) if vehicle then guiSetText(GUIEditor_Label[3],"Twoj pojazd posiada: " .. math.floor(tonumber(getElementData(vehicle,"fuel"))) .. " Litrów paliwa") guiSetText(GUIEditor_Label[4],"Mozesz dolac : " .. tonumber(100) - math.floor(tonumber(getElementData(vehicle,"fuel"))) .. " Litrów paliwa") guiSetVisible(GUIEditor_Window[1], true) showCursor ( true ) end end end end end end addEventHandler("paliwo_gui_open", getRootElement(), paliwo_gui_open) function paliwo_gui_close() guiSetVisible(GUIEditor_Window[1], false) guiSetText(GUIEditor_Edit[1],"") showCursor (false) end addEventHandler ( "onClientGUIClick", GUIEditor_Button[2], paliwo_gui_close, false ) function prawoWindow(center_window) local screenW,screenH=guiGetScreenSize() local windowW,windowH=guiGetSize(center_window,false) local x,y = (screenW-windowW)/3,(screenH-windowH)/1 guiSetPosition(center_window,x,y,false) end function paliwo_gui_tankuj() local vehicle = getPedOccupiedVehicle(getLocalPlayer()) if tonumber(guiGetText(GUIEditor_Edit[1])) then if (tonumber(guiGetText(GUIEditor_Edit[1]))) < 0 then outputChatBox("Wartosc nie moze byc ujemna",255, 0, 0) else if tonumber(guiGetText(GUIEditor_Edit[1])) + math.floor(tonumber(getElementData(vehicle,"fuel"))) <= tonumber(100) then if getPlayerMoney(getLocalPlayer()) >= tonumber(guiGetText(GUIEditor_Edit[1])) * tonumber(3) then if setElementData(vehicle, "fuel",tonumber(guiGetText(GUIEditor_Edit[1])) + math.floor(tonumber(getElementData(vehicle,"fuel")))) then takePlayerMoney(tonumber(guiGetText(GUIEditor_Edit[1])) * tonumber(3)) guiSetVisible(GUIEditor_Window[1], false) guiSetVisible(GUIEditor_Window[2], false) showCursor(false) outputChatBox("Auto Pomyślnie zatankowane, Zapłacono " .. tonumber(guiGetText(GUIEditor_Edit[1])) * tonumber(3) .. "$.",0, 255, 0) guiSetText(GUIEditor_Edit[1],"") paliwo["id"] = nil else outputChatBox("Błąd! Nie można zatankować pojazdu.",255, 0, 0) end else outputChatBox("Nie masz tyle Kasy. Aby zapłacić potrzebujesz ".. tonumber(guiGetText(GUIEditor_Edit[1])) * tonumber(3) .."",255, 0, 0) end else outputChatBox("Twoje auto Może mieć tylko 100 Litrów Paliwa, przeczytaj ile możesz dolać i popraw.",255, 0, 0) end end else outputChatBox("Musisz podać liczby bez liter",255, 0, 0) end end addEventHandler ( "onClientGUIClick", GUIEditor_Button[1], paliwo_gui_tankuj, false ) function skanujkoszt() if isPedInVehicle(getLocalPlayer()) then guiSetVisible(GUIEditor_Progress[1],false) guiSetVisible(ilepaliwa,false) guiProgressBarSetProgress(GUIEditor_Progress[1], tonumber(getElementData(getPedOccupiedVehicle(getLocalPlayer()),"fuel"))) prawoWindow(GUIEditor_Progress[1]) guiSetText(ilepaliwa,"Paliwo:"..tonumber(getElementData(getPedOccupiedVehicle(getLocalPlayer()),"fuel"))) if tonumber(guiGetText(GUIEditor_Edit[1])) then guiSetText(GUIEditor_Label[1],"Koszt: ".. tonumber(guiGetText(GUIEditor_Edit[1])) * tonumber(3) .."$ ") else guiSetText(GUIEditor_Label[1],"Koszt:0$") end else guiSetVisible(GUIEditor_Progress[1],false) end end addEventHandler("onClientRender",getRootElement(), skanujkoszt) function monitoring() if(isPedInVehicle(getLocalPlayer())) then x,y,z = getElementPosition(getLocalPlayer()) distance = distance + getDistanceBetweenPoints3D(x,y,z,oX,oY,oZ) oX = x oY = y oZ = z end end addEventHandler("onClientRender",getRootElement(), monitoring) function fuelDepleting() if(isPedInVehicle(getLocalPlayer())) then vehicle = getPedOccupiedVehicle(getLocalPlayer()) if(getElementData(vehicle,"fuel") == false) then fuel = math.random(85,100) setElementData(vehicle,"fuel",tonumber(fuel)) end currentFuel = tonumber(getElementData(vehicle,"fuel")) if(currentFuel > 0) then setElementData(vehicle,"fuel",tostring(currentFuel - math.floor(distance - distanceOld)/350)) currentFuel = tonumber(getElementData(vehicle,"fuel")) distanceOld = distance else toggleControl("accelerate",false) toggleControl("brake_reverse",false) end end end function vehicleEnter(player, seat, jacked) local vehicle = getPedOccupiedVehicle(getLocalPlayer()) if seat == 0 then if vehicle then if getVehicleController(vehicle) == getLocalPlayer() then local data = getElementData(vehicle, "fuel") if not data then setElementData(vehicle, "fuel", tonumber(100)) else setElementData(vehicle, "fuel", tonumber(data)) end end end end end Link to comment
Tomas Posted March 18, 2015 Share Posted March 18, 2015 Las 3 veces que intenté probarlo con funciones distintas éste no funcionaba, decía algo de que era robado Link to comment
Recommended Posts