Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 08/05/18 in all areas

  1. Hello! I've been working with MTA team on implementing the ability to play custom IFP animations in MTA since a couple of months. Today, I want to notify you all that it's done after a lot work, this means you can create your own IFP animations in 3ds Max using Kam's script, play them in MTA:SA (not released yet) using Lua scripting functions. I've created my pull request on github which you can find here. Everything's pretty much done, but there's one problem, the pull request cannot be merged into the master branch because there's a lot of code to go through, this will make fixing bugs very difficult, so we'll need to test everything in every way possible before releasing. MTA used to have a lot of developers back in the days who designed the core of the software that we have today, I appreciate their work, and I'm forever grateful for their contribution. There are still a few developers from the MTA team and other old contributors who spends hours upon hours on making MTA better, and get literally nothing out of MTA for their work, but they still do it . My point is, MTA has potential, and together, we can make it better, not having enough time to test everything out is on the main reason why we still don't have this feature implemented into MTA's main branch, so I'm here to ask the community for help in testing this feature. There are so many gamemodes that can take advantage of this feature. We still have plenty of RP servers here, and they still keep increasing till this day. RP servers have almost everything they need, server developers keep trying their best to push the limits in order to have more realism, I honestly believe this will fix that problem, or at least improve it. Here are two video: What is IFP? IFP is the animation file format for GTA III, SA, and VC. Adding support for this file format will allow us to play any custom animation which are made for GTA:SA and GTA:VC. You can load as many IFP files you wish to, you can have hundreds of thousands of animations. Note: GTA III animations are not supported for now. How you can help: As much as everyone wants to have custom animations in MTA, I would love to see them as well. You can help by testing different IFP files, and report bugs on this thread. Download the new MTA:SA from here: https://ci.appveyor.com/api/buildjobs/67st54i25p8ge8is/artifacts/InstallFiles.zip Right-click on InstallFiles.zip, extract the files to some location on your computer, I usually extract them to my desktop. Download the resources from here: https://drive.google.com/file/d/1TIK0-M3CNFR_1Yjn6pjImrS7184SS8jS/view?usp=sharing Create a folder with name "resources" in InstallFiles\server\mods\deathmatch, and extract resources.zip to InstallFiles\server\mods\deathmatch\resources. Start your MTA:SA server from location: InstallFiles\server\MTA Server.exe, and then start the ifp test resource from console "start ifptest" Now launch MTA from InstallFiles\Multi Theft Auto.exe, join your server. Use keys 1, 2, 3, 4, or 5 to play the custom parkour animation from parkour.ifp in ifptest. How to report bugs? When you are playing custom animations, if something's not working the way it should be, or if MTA crashes then please fill this form and reply to this thread: IFP download link: (put the download link here for IFP, so I can download and test it myself) Description: (Explain what the bug is) Steps To Reproduce: (write the steps on how I can reproduce the bug myself) Example: IFP download link: https://www.website.com/gta4.ifp Description: When I play this animation named "CartWheel," I can't move for a while, and MTA crashes. Steps To Reproduce: 1. Load "gta4.ifp". 2. play animation named "CartWheel" using setPedAnimation. 3. MTA crashes. If you want to submit the bug report by PM on forum then feel free to do so. I've added the resource "ifptest" to show you how to play custom animations. You can check how I did it by checking InstallFiles\server\mods\deathmatch\resources\ifptest\client.lua. About the new Lua functions, quoting myself: "There are three new Lua functions added: // loads IFP with a custom block name ifp engineLoadIFP ( string ifp_file_path, string custom_block_name ) // this will replace an internal GTA animation with custom one, it's a light-weight operation, // don't worry too much about performance. Different peds can have different running, walking, // crouching, shooting, etc. animations all running simultaneously because we are not actually // replacing animation hierarchies, we are merely storing everything in std::map which is in // CClientPed. When an animation triggers, we get the ped by clump, and play the animation // we wish to play. setPedAnimation works a little different than this, but the idea is same. bool engineReplaceAnimation ( ped thePed, string block_name, string anim_name, string custom_block_name, string custom_anim_name ) // This will restore animation replaced using engineReplaceAnimation, if only 1 parameter // is provided which is ped, then it will restore all animations, if block name is also provided, // then it will restore animations of that block only, if animation name is provided as well, // it will restore that specific animation only. bool engineRestoreAnimation ( ped thePed [, string block_name, string anim_name ] ) " To add your own ifp file, just add this to meta.xml: <file src="YourIFPFileNameHere.ifp" /> then in client-side Lua script, you can do: local customIfp = engineLoadIFP ("YourIfpNameHere.ifp", "YourCustomBlockNameHere") setPedAnimation ( localPlayer, "YourCustomBlockNameHere", "YourCustomAnimationNameHere" ) If you have any questions, write them here.
    1 point
  2. 1 point
  3. Que tal a todos! Soy No!z3, fundador y dueño de BiXsquen Studios, comunidad que luego de un tiempo se dedico a su objetivo principal que era el Desarrollo de contenido audiovisual, websites y gráfico. BiXsquen Studios contaba con una rama que se llamaba BiXsquen Gaming, con el tiempo se dividió ya que no podía funcionar más, lo cual se fusionó con una de las comunidades amigas que tenemos en la plataforma de juegos, y con la que con varias personas hemos trabajado en conjunto... si bien BXS Gaming tenia una iniciativa buena y buenos proyectos en mano, pensamos que a veces es mejor trabajar en conjunto y manos de obra nos hacia falta, para un proyecto tan serio como el que se tenia pensado realizar, por lo que decidimos fusionarnos y comenzar proyectos aún más grandes de los que ya teníamos pensado. Y fue ahí que nos fusionamos con Global Gaming Community, comunidad reconocida dentro de la plataforma de MTA:SA por varios de los trabajos que se realizaron en conjunto con @CiBeR Hoy les traigo algo que a lo mejor estuvo muy en debate dentro de la Comunidad de MTA:SA, diciendo que los RP no tenían éxito y como tal y después de ver las estadísticas de vida que tiene un RolePlay en la comunidad de MTA:SA Hispana y en Ingles, la cuál se decidió plantear de miles de formas para poder cumplir con las expectativas del usuario, del roler y las personas conocedoras de esta Gamemode. OneROL, es un proyecto de Roleplay que se basa en la unión de todas las lenguas, un Roleplay diferente a los que se tenia pensado o los que se ven en SA-MP, en esta comunidad es posible que su organización sea un poco diferente a las que se ven normalmente en proyectos pequeños, donde el único objetivo que se tiene es comenzar, aquí apunta a algo más a el trabajo en conjunto y poder crear un servidor Roleplay en excelencia, que guste a todos y este a la comodidad de cada uno. Hay que estar conscientes que estos servidores de estás características llevan un trabajo detrás, y las personas que se integraron a este proyecto fue por interés personal y sin fines monetarios, pudiendo así crear algo que guste a todos, más en especial apuntando aquellos usuarios de la comunidad de SA-MP que actualmente algunas comunidades tanto de habla hispana y inglesa se encuentran en conflicto interno por STAFF o por problemas de Normativas, la cual no deja a los usuarios exprimir la esencia de un verdadero Roleplay, un buen simulacro de la vida real y a esto apunta, a una comunidad exquisita en ROL y que cada uno pueda encontrar su entretenimiento, su comodidad y estabilidad en un servidor, que apuntará a un gran futuro y no a un proyecto que luego terminará cerrando en un mes por X motivo. Comencemos con el recorrido del proyecto... Nuestro primer servidor cuenta con el Mapa Personalizado de Vice City (100% y con futuras modificaciones), y San Andreas se encuentra borrada en su totalidad. (Las descargas no se encuentran por servidor) Se esta trabajando en el desarrollo de una Gamemode Roleplay de 0 (No se está usando ningún tipo de GM filtrada/subida/gratuita/o antigua de la comunidad MTA:SA) El proyecto consta con una visión más allá de las que se piensa normalmente (Esta apunta al público general y a cualquier tipo de persona de cualquier habla, permitiendo la interacción y la jugabilidad dentro de la misma) Nuevas normativas y conceptos para jugar dentro de esta nueva GM Roleplay (Aún manteniendo las clásicas y aplicando nuevos conceptos y comandos para una excelencia en interpretación) Vamos a contar con 2 servidores (Utilizando la misma base de datos + Gamemode desarrollada compartida en el Servidor #2, para que no hayan diferentes cuentas) El servidor está conectado por los Aeropuertos (Cuentan con un checkpoint de re-dirección al otro servidor, si un usuario toma un vuelo a otro mapa, en este caso "Liberty City") El servidor 2 contará con un sistema tipo de Whitelist, y no tendrás acceso si entras directamente por la IP. (De este modo se evita que si un usuario esta a punto de morir o en persecución, sale del servidor, entra en el 2 y su cuenta cambia totalmente sus coordenadas y se salvo del rol, es decir se telestransporto a LC cambiando de servidor) para ingresar en el 2 debes entrar primero al 1 (Seleccionar en el menú principal el 2 como comunidad Inglesa primaria o el servidor 1 como comunidad de habla hispana) Si se habrán fijado, mencione que no va a contar con 1 servidor y llevo casi en todo el post apuntando a que será "Multilenguaje", lo cuál por ese lado va a ir... Pero con la diferencia que los proyectos se abrirán en determinado tiempo, no se abrirán los dos juntos, habrán un margen de tiempo para asi ir estableciendo la comunidad Hispana y luego de unas semanas abrir el segundo servidor para el público general, si bien en el primer servidor, ya se va a permitir gente de otro habla por el selector de lenguaje que estára habilitado. Pero se piensa tener todo muy bien organizado en STAFF ya desde el primer día de su inauguración. Aquí hago una pequeña pausa del Servidor #1 y paso a comentar lo que será la transformación y la base compartida entre estos dos servidores y el funcionamiento de está comunidad roleplay. ¿Un Staff? No... Está comunidad va a contar con un Staff General que son sólo los desarrolladores del proyecto "OneRol" y otro tipo de comunidades de Roleplay que decidan integrarse al proyecto con todo su personal y todas las ideas/proyectos etc, se busca integrar todo tipo de persona con conocimiento y decisión de expandir el modo de Roleplay en lo que es SA-MP y MTA:SA y este grupo luego de una charla con el staff de ambas partes y la negociación correspondiente, pertenecerán a esta cabeza del proyecto, como "staff general" permitiendo así a los dueños/fundadores de otros proyectos, convertirse también en Fundador y Dueño de un % del proyecto ¿Por que? Por que este proyecto va a contar con más de una cabeza, no es un trabajo que se lo lleva una sola persona, o competencia de a ver quien la tiene más larga en pocas palabras, aquí se busca integrar y desarrollar y por supuesto crear algo nuevo y diferente de lo que ya se ve en MTA:SA. INTEGRIDAD y TRABAJO EN EQUIPO (Es la regla obligatoria de la comunidad) Y luego va a estar lo que es el Cuerpo de la Administración, lo anteriormente mencionado sería la "Cúpula" y toda decisión, futura actualización se decidirá con cada uno de los cabecillas de el proyecto, y se discutirá que se agrega y que no se agrega, en votación por mayoría, como un senado. (De este modo blanqueamos que entre la cúpula, no haya mayor o menor, dentro de la cúpula son todos del mismo rango, nadie es menos) Básicamente explique lo que seria el funcionamiento interno y el pensamiento de como va a organizarse está comunidad... Sigamos Cuerpo Administrativo, integrado por otros sub-staff's ¿Que tareas tienen? Las mismas que un moderador/administrador, controlar el servidor y la gente, tanto las normativas que se aplicarán y por supuesto reportes, etc todo lo normal de un Servidor de Roleplay (Tanto SA-MP como MTA:SA) con la única diferencia que dentro de cada lenguaje oficial (Ingles, Español...) va a haber un Sub-Staff de su propio lenguaje. (Contando con una persona dada por nosotros y autorizada para poder traducir un contra-reporte) Antes de explicar ésto, creo que es muy necesario explicarte la distribución de nacionalidades que se van a permitir dentro de los servidores. SERVIDOR #1: Vice City, principalmente llevada por el Habla Hispana (Y con pequeños grupos de otro tipo de habla: Ingleses por ejemplo) SERVIDOR #2: Liberty City, principalmente llevado por el Habla Ingles (Y con grupos de Hispanos, etc) Cada habla va a contar con su staff, y en cada staff va a haber una persona autorizada (O grupo si se integran más personas en el futuro) por nosotros (Ya están elegidos) que tienen estudios en traducción de Idiomas (Fuera del juego) y estás mismas van a servir para poder llevar una buena administración multilenguaje dentro del servidor, ejemplo: Un ingles reporta a un Español por un mal rol o algo, va a su staff y reporta, en cada reporte va a pasar un filtro (Si habla otro idioma) entonces ahí el administrador de lenguaje atiende y se dirige con el Staff de habla Español para traer al usuario y conversar de lo mismo, ahora normalmente como se resuelve en un servidor de SA-MP o RP en MTA:SA. Para... ¿Pero como vas a traducir una conversación o un rol con personas de otro habla? TRADUCCIÓN DE CONVERSACIONES El servidor va a contar con dos servidores ¿Eso quedo claro?, y va a contar con comunidades de otro habla en su interior, es decir compartirán mapa TODOS y por supuesto comandos con su respectivo lenguaje seleccionado en el menú de registro... ¿Pero una conversación en tiempo real como lo traducirías? El servidor va a contar con una facción IC/IG de Traductores, una escuela de Idiomas donde las personas con esa capacidad OOC (Fuera del Personaje/Fuera del Juego) van a poder contratar un Traductor de la misma forma que harías para ir a otro país y poder traducir una conversación entre ambas partes (Tanto para el otro idioma y el tuyo) La escuela de Idiomas, será manejada por profesores de idioma reales (Varios jugadores que hablan otro idioma y quieren ayudar en ROL a esta iniciativa) para aprender, aunque sea unas frases o unas palabras para poder meterlas en una oración y mantener su comprensión en una conversación. (Tanto para todas las comunidades de otro habla) Ejemplo: Viene una mafia de la comunidad inglesa del Servidor #2 (Liberty City) al Servidor #1 de habla Hispana, mediante el Aeropuerto pero ellos ya contrataron un traductor en la otra ciudad y quieren negociar con un grupo de Narcos en VC (En la negociación, conversación estará presente un traductor) Aclarando también que entre los dos servidores, tendrán un cierto tiempo para "vivir, caminar" por la otra comunidad de otro habla, es decir como si fueses Turista/Extranjero de otro país, permitiendo así que el usuario que habla otro idioma pueda regresar a su ciudad original (Servidor #2 o Servidor #1), en pocas palabras una VISA. TRADUCCIÓN DE LINEAS DE ROL Ambos servidores van a contar con un traductor de lineas definidas en ciertos comandos /me, /ame, /intentar (En cada idioma) y traducirá automáticamente todo eso Contará con sistema de lineas de rol predeterminadas, un selector de lineas de rol definidas y básicas (Sentarse, comer, mirar, etc... etc..etc... todo tipo de acciones y reacciones) y avisará al usuario que la persona que colocó esa linea, no habla tu mismo idioma (Es decir, tiene definido en su cuenta que habla Ingles u otro idioma) manteniendo una alerta al otro usuario que la persona que está por rolear con él, es de otro idioma y tiene que estar atento a lo que se va hablar o realizar en sus lineas. (La traducción de Conversaciones, ya no es problema) Esto es un resumen del proyecto que se está trabajando, como verán no es algo simple y hay muchos detalles que omití ya que si no se haría demasiado largo el post y no lo leería nadie. De este modo se está haciendo un llamado a todas las comunidades que trabajan Gamemode en Roleplay o tienen un servidor abierto, para poder unificar y hacer algo entretenido para todos, como dije anteriormente, no se busca quien la tiene más larga y perdón la expresión... se busca el trabajo en equipo y a veces el asunto monetario o el beneficio personal no es tan necesario, eso llega luego con un gran trabajo dedicado y llegará cuando el usuario aprecie bien tus creaciones o este interesado en aportar por la causa. Todas las personas que están integrando este gran proyecto, están aportando a la causa y inclusive sin fin de lucro, con posibilidad de una paga a futuro por su trabajo realizado en la comunidad y su estadía aún en la misma y en un proyecto que piensa INTEGRAR, no EXCLUIR al usuario se está haciendo realidad y todo por el trabajo en equipo y con desarrolladores. No somos Vice City Roleplay, No somos Liberty City Roleplay, somos OneRol Aquella comunidad o proyecto, o programador, o persona interesa en pertenecer a este proyecto, puede enviarme un MP por privado y organizar una reunión por TS3 con mi persona o CiBeR que somos los que están tomando las entrevistas para poder acceder a todos los beneficios que les va a ofrecer GGC y los correspondientes cargos que se les asignara a cada miembro de su staff en caso de integrarse a la misma. Muchas comunidades grandes,pequeñas y medianas de SA-MP están afiliándose y cerrando para integrarse a este proyecto en MTA:SA por el mismo motivo, SA-MP promete y nunca cumple, o falla y su último desastre acabo de cerrar las expectativas de muchos. Los invito a participar de este proyecto el que quiera y el que no le quiera o no le agrada visualmente esta idea, no haga una polémica totalmente innecesaria. Si se va a permitir la critica constructiva, para que tengamos en cuenta todos los puntos necesarios. Desde ya un saludo general y esperamos que este proyecto les sea de su agrado. TS3 IP: globalgaming WEBSITE: https://www.globalgaming.xyz/ Pronto también información de trabajos audiovisuales y gráficos en www.bixsquenstudios.com (Esto no tiene nada que ver con el apartado gaming el cual es "GGC") FASE ACTUAL DEL PROYECTO EN DESARROLLO
    1 point
  4. انت ما تموت؟ ياخي موت
    1 point
  5. الحمدلله الذي عافانا
    1 point
  6. guiSetProperty(yourEdit, "ValidationString", "[0-9]*")
    1 point
  7. @IIYAMA Thank you so much, it works!
    1 point
  8. v.turfArea Is nil. Normally you would inspect your table structure first: iprint(turfElement) Save everything first. turfElement[idZone] = {turfCol = turfCol, turfArea = turfArea, idZone = idZone, gX = v.gX, gY = v.gY, gtSizeX = v.gtSizeX, gtSizeY = v.gtSizeY } Then this might work. for idZone,v in pairs(turfElement) do outputChatBox("" .. v.gX .. "", player, 255, 255, 255) end
    1 point
  9. والله لن يرجع مادمت انت حيا رح مت ولا شفلك صرفه
    1 point
  10. In terms of Cost Blender wins, however in terms of tools and stuff 3ds max wins by a long shot.
    1 point
  11. Use either Zmodeler, Autodesk 3ds Max or Blender 3d for modeling. I strongly suggest Blender > >Zmodeler > 3ds Max if you aren't student as 3ds is extremely expensive. Blender 3d is quite easy to get started with and you're able to learn the essentials of designing models with it. Zmodeler should be an okay program too, way cheaper than 3ds max too. It's mostly used for vehicle modeling AFAIK.
    1 point
  12. من جد! بس ظلم عقب ميركل
    1 point
  13. The ball isn't an object, it's a vehicle with a spherical shape and custom .col file.
    1 point
  14. New Update to the table MyBestProgrammers = { {"#Soking"}, {"iMr.Wifi"}, {"Ahmed Ly"}, {"Default"}, {"MR.GRAND"}, {"Master_MTA"}, {"Abu-Solo"}, {"!#NssoR"}, {"MR.S3D"}, {"Killer Project"}, {"MR.StoRm"}, {"Abdul KariM"}, {"DTC12"}, {"Jupiter"}, {"xIRock"}, {"DABL"}, {"Elnegm Ahmed"}, {"7UP"}, {"#x1AhMeD,-09"}, {"|Mr|-Talal07-|"} }
    1 point
  15. جالس لوحدك ؟ كذا طفشان ؟ جرب يله ملاحظه : النقاط تصبح عاليه جدا فقد يمكن ان تشتري خدمات وان تجدده لاكثر من شهر فقط عبر اشتراكك لدينا
    1 point
  16. الشكر لله يقلبي
    1 point
  17. يعيال صرراحه سيرفر وناسه ضحك x ضحك لكن في فوايد بالبرمجه والخ
    1 point
  18. موفقين مرة اخرى
    1 point
  19. اجل ليه جاي بمنتداها
    1 point
  20. مالكم سيرفر ب mta?
    1 point
  21. Não temos como adivinhar sem imagens do problema. Podem ser diversos motivos. Já tentou reinstalar o GTA e o MTA?
    1 point
  22. This is my server. The gui is made by dgs. ( I am bad in design sry)
    1 point
  23. The problem with rockets is that you can not make them go slower than the minimum travel speed. You will have to come up with something more sophisticated to make them less "smart". The heat seeking rocket for example can track objects as well. What I did in my POW game mode (Surface-to-Surface-Missile) is push the rockets up a little bit by adding force over the z-axis making it travel with a curve. It also does not target the player but an object that is created at the player's current position. This way the player has better change of survival because the rocket will not chase him down but remains to have enough speed to cause damage on impact. EDIT: Correction. What I said about minimum travel speed isn't entirely right. You can make a heat seeking rocket travel at a lower speed by not setting a target. This of course will result in the rocket going from A to B in a straight line (unless you add velocity over the x, y or z-axis). EDIT: Here's a simple example of mounting weapons. It attaches a mini-gun to the passenger side of the car and shoots projectiles. You can attach the gun with "/attachmod" and change projectile type with "/guntype [weaponType]". Like I said it is really basic and all it does is shoot a projectile with velocity over x and y-axis. You will have to make it work for the z-axis as well. In this example the projectiles go in a straight line even when the car's position is slightly tilted. server local guns = { [470] = { ["xPosOffset"] = 1.0, ["yPosOffset"] = 0, ["zPosOffset"] = 0 } } function attachMod(playerSource, commandName) local vehicle = getPlayerOccupiedVehicle(playerSource) local gun = false if (vehicle) then gun = guns[getVehicleID(vehicle)] or false if (gun) then attachElementToElement(createObject(2985, 0, 0, -100, 0, 0, 0), vehicle, gun.xPosOffset, gun.yPosOffset, gun.zPosOffset, 0, 0, 90) setElementData(vehicle, "toggleVehicleWeapon", true) end end end function detachMod(playerSource, commandName) local vehicle = getPlayerOccupiedVehicle(playerSource) if (vehicle) then for _, element in ipairs(getAttachedElements(vehicle)) do destroyElement(element) end setElementData(vehicle, "toggleVehicleWeapon", false) end end addCommandHandler("/attachmod", attachMod, false) addCommandHandler("/detachmod", detachMod, false) client local root = getRootElement() local player = getLocalPlayer() local toggleVehicleWeapon = false local previousTick = getTickCount() local projectileType = 21 function updateVehicleWeapon(source, dataName) if (getElementType(source) == "vehicle" and dataName == "toggleVehicleWeapon") then toggleVehicleWeapon = (getElementData(source, dataName) and isPlayerInVehicle(player)) end end function callbackDataChange(dataName) updateVehicleWeapon(source, dataName) end function callbackVehicleEnter(thePlayer, seat) updateVehicleWeapon(source, "toggleVehicleWeapon") end function callbackRender() if (getControlState("vehicle_fire") and toggleVehicleWeapon) then if (getTickCount() > (previousTick + 150) and previousTick > 0) then fireProjectile() end end end function fireProjectile() local vehicle = getPlayerOccupiedVehicle(player) local gun = false local gX, gY, gZ = 0, 0, 0 local gRotX, gRotY, gRotZ = 0, 0, 0 local pX, pY, pZ = 0, 0, 0 local vX, vY, vZ = 0, 0, 0 local currentLoSOffset = 3.5 local zPosOffset = 1.1 local thrust = 2.0 previousTick = 0 if (vehicle) then if (#getAttachedElements(vehicle) > 0) then gun = getAttachedElements(vehicle)[1] if (gun) then gX, gY, gZ = getElementPosition(gun) gRotX, gRotY, gRotZ = getObjectRotation(gun) pX = gX - math.sin(-math.rad(gRotZ + 90)) * currentLoSOffset pY = gY + math.cos(-math.rad(gRotZ + 90)) * currentLoSOffset pZ = gZ + zPosOffset vX = math.sin (math.rad((gRotZ + 90))) * thrust vY = math.cos(math.rad((gRotZ + 90))) * thrust vZ = 0 createExplosion(pX, pY, pZ, 5, true, -1.0, false) createProjectile(player, projectileType, pX, pY, pZ, 0, nil, 0, 0, 0, vX, vY, vZ) end end end previousTick = getTickCount() end function changeProjectileType(commandName, arg) projectileType = tonumber(arg) or 21 end addEventHandler("onClientElementDataChange", root, callbackDataChange, true) addEventHandler("onClientVehicleEnter", root, callbackVehicleEnter, true) addEventHandler("onClientRender", root, callbackRender, true) addCommandHandler("/guntype", changeProjectileType)
    1 point
  24. 0 points
×
×
  • Create New...