Leaderboard
Popular Content
Showing content with the highest reputation on 24/05/20 in all areas
-
Com o crescimento de qualquer projeto, seja de MTA ou o quê for, cresce também a inveja de muitos e a preocupação dos principais concorrentes. É muito comum tentarem desacelerar e inibir o crescimento do outro perante o medo. O quê muita gente não sabe é que na maioria das vezes, os servidores não são derrubados por DDoS ou DoS. Ataques DDoS demandam grandes quantidades de dinheiro investido, e nessa guerra digital, vence quem tem a melhor infraestrutura, ou seja, quem gasta mais.. Mas se a maioria das quedas ou interferência nos servidores não acontecem por ataque de negação de serviço(o famoso DDoS), então onde e como eles são feitos? Em primeiro lugar, tem a talvez mais conhecida maneira de deixar algo instável: 1 - Flood É importante saber que existem vários tipos de floods, o mais fácil de identificar, é aquele flood por chat. Ele não é o único, existem floods que são um pouco mais complicados de identificar. O flood via chat é muito prejudicial ao servidor, portanto, é recomendável que cada jogador tenha um tempo definido entre as mensagens que podem enviar. Além do flood via chat, existe o flood por comando, que é possível fazer com qualquer comando que qualquer servidor tenha. Por isso, também é recomendável que exista um intervalo de tempo entre os comandos feitos pelo jogador. Principalmente os comandos verificados por ACL são prejudiciais ao servidor. Alguns comandos que com flood são muito prejudiciais são: restart, refresh. Mesmo que o jogador não tenha permissão de executá-lo, o servidor verificará toda vez em que ele digita esses comandos protegidos. Uma solução para isso é bloquear esses comandos por serial, assim, mesmo com o flood deles, o CPU do servidor será menos estressado. O bloqueio desses comandos por serial aliado ao tempo necessário entre um comando e outro, fará com que o servidor não fique sobrecarregado, gerando menores consequências. 2 - Scripts maliciosos Infelizmente pessoas que já tiveram bom nome na comunidade de MTA:SA no passado, acabaram perdendo toda a sua reputação e começaram a fazer o mau, disfarçada por vários nomes. Muitas vezes (deixando claro que não é em todos os casos) as pessoas vendem scripts compilados nos quais possuem códigos maliciosos para gerar estresse no servidor e atrapalhar a conexão, às vezes a ponto do servidor ser reiniciado automaticamente. Muitos desses scripts maliciosos funcionam perfeitamente, mas o código malicioso é acionado por algum comando. Então, você pode verificar os comandos existentes em cada script com o comando commands disponibilizado no nosso script logo abaixo. Existem também casos em que há um backdoor que possibilita o programador malicioso de quebrar toda segurança do servidor e fazer tudo o que está ao seu alcance. Pode ser: Redirecionar jogadores para outro servidor, criar um código o qual lhe dará vantagem no servidor, ganhar acesso restrito ao servidor, fazer ligações externas (com fetchRemote) afim de afetar o servidor com por exemplo, um vírus. 3 - Scripts mal otimizados Também é possível, e infelizmente ocorre com muitos servidores, de ter seu desempenho afetado por scripts mal otimizados. Muitos scripts da internet e não só eles, até scripts que o dono do servidor paga, pode afetar e muito no servidor (quanto mais jogadores, mais é afetado). Dependendo do código produzido, pode conter centenas e às vezes milhares de atualizações de ElementData simultâneas - o que afeta o servidor de modo que não há nem mesmo dedicado para intervir. Essa função em questão, é extremamente prejudicial tanto para o servidor tanto para o client, que é o usuário final - o jogador. Para saber se algum recurso está consumindo mais do que deveria, você pode utilizar o recurso IPB, que já vem com o MTA. Se você não tiver esse recurso no seu servidor, você pode baixá-lo dos resources oficiais do mta e colocar no seu servidor. Obviamente, não são só os ElementData's que podem prejudicar o desempenho do servidor. Um script pode ser mal otimizado por várias questões que englobam a programação. O ElementData foi citado por ser muito comum e muito prejudicial. Se você tem ou está montando um servidor, coloque além das suas idéias de novidades para ele, sua preocupação em relação ao desempenho de cada resource que irá rodar na máquina. Para saber como anda o desempenho dos resources no servidor, você pode verificar olhando o painel do resource ipb. Para isso, ligue o resource e digite o comando no chat "/ipb" ou no F8 "ipb". Selecione a categoria Server, alterne entre as opções de monitoramento e você saberá qual script está consumindo mais e afetando o desempenho do seu servidor. 4 - Múltiplos caracteres no login Talvez esse seja o mais bizarro dessa lista. Não limitar os caracteres no qual as pessoas podem escolher seu usuário ao se registrar. Isso, aliado ao flood de muitos logins com muitos caracteres, pode sim afetar o desempenho do servidor e até mesmo derrubá-lo. Esse é um exemplo de script com falhas deixadas pelo seu criador, que alguns servidores acabaram utilizando. E como não acaba aí, tem também códigos para fazer qualquer bom programador cair em desgosto que fazem aumentar muito o uso de cpu, de memória gráfica e ram. Problemas em geral por uma grande falta de preocupação do criador ou até mesmo a indiferença por ter aquela máxima "se está funcionando, tá bom" e "o que importa é terminar e receber meu dinheiro" (no caso de Scripter pago) acabam fazendo com que se proliferem péssimos tipos de scripts os quais muitos servidores grandes acabam utilizando. Link do script citado acima: https://community.multitheftauto.com/index.php?p=resources&s=details&id=18156 Também não posso deixar de agradecer ao @DNL291, que me ajudou a criar este tópico.1 point
-
Map loader This is a map loader, which can let specific players download a map of choice. Maps will be generated clientside and the resource is capable of loading extreme large maps. Loading the map will be done with a speed the pc can handle. The code execution time will be reduced to circa 10 ms. Which is the frame time of a player with 100 fps. So technically when you have 100 fps you still have 98/100 fps when this resource is loading a map. But this is based on running only this resource and based on predictions/knowledge. Which you can't trust... The .map files are unloaded afterwards reading them. But the resource will keep a buffer of the processed data until no more players are using that map. This will speed up the resource when it is used for multiply players. The resource can be managed with the following functions (serverside): loadMapForTarget() Require: element player/root, string mapName Returns: boolean success, string message unloadMapForTarget() Require: element player/root, string mapName Returns: boolean success, string message getPlayerDownloadProgress() Require: element player Returns: int percentages or boolean false Version 1.0.1 or higher getPlayerMapStatus() Require: element player, string mapName Returns: string status or boolean false Status list: string "DOWNLOADING" -- Player is downloading the map. string "LOADING" -- Player is generating/loading the map string "LOADED" -- Player has loaded the map. boolean false -- Player value is invalid or the player hasn't started downloading this map. Events(serverside): "onPlayerLoadedMap" Source: element player Parameters: string mapName int loadTime "onPlayerUnloadedMap" Source: element player Arguments: string mapName Version 1.0.1 or higher "onPlayerCancelMapDownload" Source: element player Arguments: string mapName Events(clientside): "onClientPlayerLoadedMap" Source: element localPlayer Arguments: string mapName, int loadTime "onClientPlayerUnloadedMap" Source: element localPlayer Arguments: string mapName The same information about the functions and the events can be found inside the meta.xml Element types that are supported: objects, peds, vehicles, markers and pickups If you found any bugs, which might be in there. Don't be shy and let me know, I will exterminate them. And don't forget, this resource require some rights in order to read map files from other resources: DOWNLOAD 1.0.2 For developers a quick source code preview: Server Client1 point
-
Hyper-script gaming سكربت خاص لسيرفرات الالعاب للحياة الواقعية يمكننا توفير الاستضافة مجانا من سيرفرات جوجل فقط الدومين عليك يجب الحصول علي ترخيص لتسطيع استخدام السكربت حتي وان كان معك ملفات السكربت سعر الترخيص الواحد 65$ | التقنيات المستخدمة | React.js, Redux, Google Firebase, AJAX, JSON, Bootstrap grid system | المميزات | اي عند تصفح الموقع سأتجد الموقع سريع جدا بالتنقل بين صفحاته المختلفه SPA السكربت يعمل بتقنية تصميم السكربت متجاوب مع كافة الشاشات والمتصفحات المختلفة لوحة تحكم تصل اليها رسائل تقديمات الخادم والتحكم في اغلاق او فتح كل التقدمات. .وبعض التقديمات كا فريق اليوتيوب تصل لرومات تحددها مع السكربت discord webhook السكربت مرتبط بال بعدد الاعبيين واسمائهم وحالة الخادم والمدينة الحالية FiveM, MTA SA امكانية عرض معلومات سيرفرك سواء. تستطيع اعطاء لكل متقدم لفريق خادم السيرفر نتيجة تقديمة من لوحة التحكم وايضا يستطيع المتقدم رؤية نتيجته. امكانية عرض السيارات المميزة داخل الخادم واعطاء سعر وايضا يستطيع الزائر تصفية السيارات من حيث السعر..الخ قسم لدعم الخادم بالمال يمكنك عرض خطط مختلفة للشراء والطلبات تصل اليك لمعالجتها. | بالنسبة للحماية؟ | مهما كانت قوتها ddos attack السكربت يستطيع التصدي لاي هجمات ! client side لا مجال للثغرات في السكربت لانه عبارة عن جاهزة حتي مع لوحة التحكم APis اي انه يعتمد علي كل ما يتقدم له من خلال | معاينة | لوحة التحكم واشياء اخري: معاينة مباشرة للسكربت: https://hyper-sv2.web.app/ للتواصل عبر الديسكورد للشراء: el8rbawY#5102 *ملحوظه: تقديم دعم فني للسكربت مدي الحياة وايضا سهولة التعديل علي السكربت من خلال ملفات JSON1 point
-
If you find it difficult to work with the event system, you can also try this out: Example:1 point
-
1 point
-
Basic example: (but doesn't work very well with multiple players, since serverside is 1 environment and clientside an environment per player) triggerServerEvent ( "setAmmo", resourceRoot, Ammo) addEvent("setAmmo", true) addEventHandler("setAmmo", resourceRoot, function (Ammo_) Ammo = Ammo_ end, false)1 point
-
Serverimizdeki kişi sayısına göre en çok istek alan scriptler eklenecektir ve hala alım yapamadığımız için alımlar yapılacaktır. Örnek vermem gerekirse tüm roleplay serverlerinde herkes illegal çalışıyor,biz legal meslekleri arttırmaya çalışıp illegali daha az yoğun yapmaya çalışıcaz ama tabii ki illegal olmak isteyen olabilir. Rol adminlerimiz teker teker tüm rol yapanlara rol paslıcaz.Böylece serverimizde rol yapanlar sıkılmayacak. V2 kısmı kısaca çok güzel ve sürprizler ile dolu olacaktır. Saygılarımla. Bu arada serverimizde donate araçlar ve mekanlar mevcuttur,fiyatlarını olabildiğince ucuz yapmaya çalıştık.Onu eklemeyi unutmuşum. Sağlıcakla.1 point
-
Seu sistema é falho. A função getAccountsBySerial só retorna as contas que foram logadas pelo serial especificado no último login. Se o jogador criar uma conta e não logar nela, ela vai continuar sem o serial registrado, podendo criar outras contas. Ou então se o cara pedir pra outro amigo logar na conta, o serial do amigo vai ficar registrado no lugar do seu serial, podendo assim registrar outras contas. Você precisa registrar o serial de quem criou a conta com um setAccountData e depois verificar essa data com getAccountData.1 point
-
Não vi nada de errado nela. Exceto pelo fato de estar usando elementData em vez de table, que é bem mais leve e otimizado do que elementData.1 point
-
1 point
-
I have uploaded an uncompiled version. Because compiled scripts are not healthy for developers. ?1 point
-
1 point
-
+_+ في افكار عندي بس خلني اكتفي بذا القدر عشان ما افتح عليك ستافه كبيره عالعموم شغل جيد بالتوفيق1 point
-
واصل بالتوفيق اضافه بسيطه شغلك جيد لكن الfront end يختاج تعديلات بسيطه مثلا الكارد ديزان بالنسبه للباك اند فانصحك تستخدم paypal api غشان تخليه اوتوماتيك مب يدوي بحيث اللاعب يتبرع علطول خلاص يجيه بالحساب باللعبه او ايا كان الاكشن اللي بتاخذه1 point
-
1 point
-
Truth - MTA Wiki Discord Bot Since i was in need for a wiki discord bot on a discord server, I decided to make one. I have also created a dashboard to manage the bot's setting on your guild. This bot is open source so feel free to submit PR's or issues. There is a new wiki coming soon(?), so i am planning to convert this bot to use the new version once it releases if there's no official wiki bot available at that time. I hope this bot can be of use to you. Features Wiki article fetching like on MTA's official discord Wiki article searching Function/Event examples Customizable bot output set via dashboard (hide syntax, hide description etc) Links https://truth.afusensi.xyz/ https://github.com/AfuSensi/truth-mta-wiki-bot1 point
-
We are still up running, feel free to join us at our: Discord: https://discord.gg/C6gBnTZ IP: mtasa://185.53.130.227:22003 Forums: https://creativegamingrpg.com/index.php1 point
-
14/05/2020 - Fuel system added: we tried to make this as realistic as possible. * Activated fuel system on housing. * Activated fuel on locked vehicles ( of clans/groups ). * Gas stations prices has a variety if it's in or close to the city the price is 6 - 7 per gallon. * Far distant counties gallon price can reach up to 10. * Added fuel stations all around SA. * Press Space bar to start refueling your vehicle. * Prices for boats fuel / vehicles fuel / planes are not equal. * Tesla model vehicle can't use casual fuel stations for its battery, so Tesla owners please wait we'll be adding tesla's chargers in different locations. * added /engine , /lights to toggle vehicle engine/lights. * Fuel system supports refilling stations and will have a job of its own very soon. - Please note the gallon price before you start refueling. - Sweeper spawn added to Los Santos Civilians * Sweeper's job is simple, you have to get in a sweeper (vehicle), reach the place that needs sweeping around Los Santos (marked by a blip), Hold L to clean it & get rewarded1 point
-
No que exatamente você precisa de ajuda? Está acontecendo algum erro? Percebi alguns no código, a variável skinPulicia seria o Pickup criado? Se sim, reverte a linha do 'addEventHandler', a onde está skinPulicia você altera pra farda, e farda você altera pra skinPulicia. No addCommandHandler, retire o skinPulicia do final, para verificar se o jogador está em cima da Pickup, você precisa criar um Marker/ColShape na mesma posição, exemplo -------------------- COM MARKER --------------------- local markerFarda = createMarker(pos1, pos2, pos3, "cylinder", 1, 0, 0, 0, 0) local skinPulicia = createPickup(...) function pickupHit (theElem) outputChatBox("Utilize /trabalhar para pegar a farda", theElem, 255,0,0) end addEventHandler("onPickupHit", skinPulicia, pickupHit) function comandoFarda (theElem) if isElementWithinMarker(theElem, markerFarda) then setElementModel(theElem, 285) -- Utilize setElementModel ao invés de setPedSkin, pois em versões futuras do MTA essa função pode não estar funcionando. end end addCommandHandler("trabalhar", comandoFarda) --------------------- COM COLSHAPE (EXEMPLO UTILIZANDO COL CIRCLE) --------------------- local colFarda = createColCircle(pos1, pos2, pos3, 2.0) local skinPulicia = createPickup(...) function pickupHit (theElem) outputChatBox("Utilize /trabalhar para pegar a farda", theElem, 255,0,0) end addEventHandler("onPickupHit", skinPulicia, pickupHit) function comandoFarda (theElem) if isElementWithinColShape(theElem, colFarda) then setElementModel(theElem, 285) -- Utilize setElementModel ao invés de setPedSkin, pois em versões futuras do MTA essa função pode não estar funcionando. end end addCommandHandler("trabalhar", comandoFarda)1 point
-
Ah, the long awaited accusation. I don't blame you, I too was indoctrinated to think that the RPG was something SAES 'owned' however, it's just another game-mode. I've had my fair amount of time playing there, throughout the early years of it's blossom, namely 2012 - 2016. However let me run you down on what the Creative Gaming RPG server actually is. It's our view on the Roleplay Gaming game-mode in MTA. All of the scripts you see and experience on our server are crafted by our experienced developers, believe me a simple housing system, spaw-nmenu and other jobs namely 'trucker' that you mentioned are nothing but a very basic stem of the RPG. - Keep in mind, we are only in OpenBeta. The basic scripts you see currently are nothing but a temporary template to have the players experience an entirely different management, community and view of the RPG in MTA. We have nothing against SAES, even so I thank that community for providing me with years of entertainment, however we deemed it is time to step it up on our own accord and make a new version and feel to the RPG in MTA as you and I know it. The community receives that which the player wants, and we know what the player wants due to our experience in the RPG sense, so countless of updates have been implemented into the 'regular' RPG that you perhaps know to love. I do not however, belittle your opinion regarding your defense about SAES, since there has been plenty of copycats throughout the years which have indeed used 'leaked scripts and editing them' - This is a different story however and we would like you to see how our server blossoms. ===================== In the hands of an experienced .Lua developer, these basic accusations of using 'leaked scripts and editing them' has been completely thrown out of the window, because our development has taken ages to launch and in-return have bugs still yet to be discovered, thats why our OpenBeta playerbase is our first line of Quality Assurance when it comes to our scripts and functions. ===================== We all hope to see you ingame to have a delightful experience in our server, Head Admin Russell.1 point
-
Hi! I created a script which can send messages from server to Discord on Webhooks. You can find the tutorial in here. A little help if someone wants to log the server messages, commands using the webhook system https://gist.github.com/preilakos/9cf9b63bdc47e1468cdcd045f6e39ca5 Download from GitHub1 point
-
Putz, que bosta hein.... Hahauahuahauah Sobre a sua dúvida de colocar 2 jogadores juntos sem dar conflito com outras duplas, a minha sugestão é que vc coloque os dois dentro de uma table e essa table dentro de uma table global. Exemplo marotamente maroto: local globalLixeiros = {} -- Onde as duplas ficam, dentro de suas tables. function criaDuplas (thePlayer, cmd, theDuplaName) -- Cria a table de cada dupla. if getPlayerFromPartialName (theDuplaName) and getPlayerFromPartialName (theDuplaName) ~= thePlayer then -- Se existe um jogador com o nick informado e esse jogador informado não é o mesmo que o jogador que executou o comando (evita fazer dupla com si mesmo), então: if getDupla (getPlayerFromPartialName (theDuplaName)) then -- Se o jogador que foi informado no comando já tem uma dupla, então: outputChatBox ("O jogador '"..theDuplaName.."' já está em uma dupla de lixeiros.", thePlayer, 255, 150, 0) -- Manda este aviso ao jogador que executou o comando. else -- Se o jogador informado não está em uma dupla de lixeiros ainda, então: local theDupla = {thePlayer, getPlayerFromPartialName (theDuplaName)} -- Cria a table da dupla, inserindo o jogador que executou o comando e o jogador que ele informou na mesma table dupla. table.insert (globalLixeiros, theDupla) -- Insere a table theDupla na table globalLixeiros. outputChatBox ("Você colocou '"..theDuplaName.."' como sua dupla de lixeiro.", thePlayer) -- Manda este output ao cara que executou o comando. end end end addCommandHandler ("dupla", criaDuplas) -- Uso do comando: /dupla NickDoSeuAmigo function getDupla (theLixeiro) -- Função que retorna a dupla do jogador informado. for i, dupla in ipairs (globalLixeiros) do -- Para cada dupla da table globalLixeiros, faça: if dupla[1] == theLixeiro then -- Se o jogador informado está como primeiro elemento desta dupla, então: return dupla[2] -- Retorna o segundo elemento desta dupla. elseif dupla[2] == theLixeiro then -- Se o jogador informado está como segundo elemento desta dupla, então: return dupla[1] -- Retorna o primeiro elemento desta dupla. end end end function qualquerCoisa (thePlayer, cmd) -- Função que manda um "Oi" para a dupla do jogador que usou o comando. if getDupla (thePlayer) then -- Se o jogador que executou o comando tiver uma dupla, então: outputChatBox (getPlayerName(thePlayer).."#FFFFFF: Oi!", getDupla (thePlayer), 255, 255, 255, true) -- Manda esse outputChatBox pro outro player da dupla. end end addCommandHandler ("eae", qualquerCoisa) function getPlayerFromPartialName(name) -- Função útil que pelo nome já sabe pra que serve. local name = name and name:gsub("#%x%x%x%x%x%x", ""):lower() or nil if name then for _, player in ipairs(getElementsByType("player")) do local name_ = getPlayerName(player):gsub("#%x%x%x%x%x%x", ""):lower() if name_:find(name, 1, true) then return player end end end end A table deve ficar tipo isso: local globalLixeiros = { {playerElement01, playerElement02}, -- Dupla 1. {playerElement04, playerElement07}, -- Dupla 2. {playerElement05, playerElement08} -- Dupla 3. }1 point
-
1st April 2019: THIS TOPIC HAS BEEN CLOSED BY MODERATOR ON REQUEST OF TOPICSTARTER EMERALD GAMING ROLEPLAY https://emeraldgaming.net WHO WE ARE We are a small team with 21 years of combined roleplaying experience amongst us all put together and we all have the same goal - creating a roleplaying environment that is enjoyable, accessible and most importantly - fair for everyone. Each of us have all held a administrative or leadership role within popular roleplaying servers in the past which has given us an in-depth understanding of all aspects within roleplay - civilian, legal, illegal and government. No matter what server, one thing has always been persistent; no community was able to continuously fulfill the three goals stated above. This eventually led us to come together and form a community of our own. WHAT WE PLAN TO DO Creating the ideal roleplaying environment which will appeal to everyone and all sides will take time and feedback - this is why we have gone public quite early in development; to build from the ground up based on community feedback in order to ensure we create the ideal server filled with features, rules and guidelines dictated by the community. At the end of the day it is you who'll be primarily playing and on the end of everything, not us. By removing the bureaucracy that most other communities revolve around, we're creating something that is built by the players themselves to ensure we stick to the right path and work from ideas and suggestions that the players have approved of. We aim to be a medium-to-heavy roleplaying server, enforcing the highest levels of immersion, roleplaying rules and at the same time, maintaining a high level of enjoyability. We feel that roleplaying nowadays has lost its touch with what it used to be years ago, a sort of grounds where you could come online, play with friends, build up what you desire or play any role within roleplay and enjoy doing it - whereas now it seems to be is competition, cops versus robbers and all about winning. Read more about Emerald Gaming here: https://forums.emeraldgaming.net/topic/35-what-is-emerald-gaming/ DEVELOPMENT CONCEPT There have been numerous communities that crumbled because of lack of attention given to a certain part of development or a feature, and that's why working without a deadline and at our own pace gave us the opportunity to work on features more thoroughly and in-depth. We've seen this in the past from other communities that have failed as a result of increasing desire and pressure to launch an unfinished server. We have devoted a great deal of our time to not only development but also to research what players expect from a server and how to improve from the mistakes of other communities, overall creating a more enjoyable experience. A substantial part of the process we need to go through is not only reducing the internal bureaucracy of the staff, or ensuring that everyone has equal opportunities, but also the experience of not being restricted by the server's script capabilities. WHAT WE HAVE TO OFFER All concepts, ideas and showcases are currently in their early alpha stages and do not represent actual gameplay, they are subject to change at any given moment throughout development until the final public release. 3D User Interfaces This is the primary feature that we believe will make us unique and re-invent the way roleplay is conducted on MTA. By creating graphical interfaces within the 3D world, players can interact with things such as vehicles or objects seamlessly like any open world game where pointing the center of your screen at the element triggers the ability to interact with it. Expanding on this idea, having 2D GUIs on screen all the time or for each interaction can leave the user feeling quite clustered - so we've minimized it all down to simple prompts and selections to get what you need done. An example of this concept can be seen below, where a player interacts with an ATM to withdraw money - the ATM interface is drawn as soon as the player approaches it, and you can begin interacting with it like any other GUI. Please bear in mind that the example below is a very rough draft to show the concept and does not represent the final project. Advanced Inventory & Item System Our item and inventory system is one that provides the highest level of immersion and accessibility. With custom models for objects to reflect the actual item itself, a sleek and simple inventory with an easier level of interaction to use - you'll get used to it as if you've been using it for years in no time. The inventory is split up into 4 portions. The main inventory holds all of your basic items such as your wallet, keys, clothing, accessories and storage items. The weapon inventory holds.. weapons. When a weapon is placed into this inventory, it'll appear on the player and be added to their hotbar for usage. Ammo is fed to the weapon directly from the main inventory. The hotbar is a concept we wanted to try out and see what the community thinks - you can place items into your hotbar by dragging and dropping them to any of the six available slots. From there you can pin your hotbar so it remains on screen wherever you like when you close your inventory. When roleplaying, you can then scroll through each item within your hotbar with number keys 1-6 or your mouse scroll wheel. This can be used to select weapons to equip in-hand, or hold out items such as your car keys to unlock your car, handcuffs to use before handcuffing a player and so on - the possibilities are endless! The storage inventory is only visible when you click on a storage item such as a backpack, dufflebag, basket, armor and so on. The size and slots that can be stored within the storage item depends on the item itself and its predefined slots. Dropping a storage item on the ground with contents inside will retain its contents, so you can finally fill a briefcase up with tons of money and pass it over the table to a mob gangster just like in the movies. Unique GUI System We use a custom GUI system which draws amazingly designed and easy to use interfaces instead of the stock MTA GUIs. Player Report Panel accessible via F1. Administrative Item Spawn Panel. Character creation. Character creation skill points allocation. (This will be explained in-depth at a later date.) Video displaying the full character creation. Focus on all sides of Roleplay We aim to provide enough script support for all sides of roleplay. Be it legal, illegal, government or just plain civilian. Leaving one side more superior and focused with features scriptwise can result in a loss of incentive of to play other roles, so making one role just as enjoyable as the next is key. Law Enforcement Because LEO roleplay is quite major and requires quite a lot of equipment on the script end to assist in being able to carry out essential tasks such as using an MDC, a prison system and tactical equipment, we'll be sure to incorporate everything a law enforcement officer needs to get the job done. Starting from just a pen and ticket book, all the way to a remote controlled bomb disposal bot. Illegal Roleplay The other major role of every roleplaying community. Illegal roleplayers are the heart and soul of creating exciting roleplay opportunities for other players such as gangs, large factions, shootouts and the general illegal atmosphere. With the Faction Team already functioning and prepared, we spent a considerable amount of time thinking of ways to provide life and new innovative features to illegal roleplay. We're making it easier than ever to grow drugs with a fully detailed drug system, requiring as minimal staff interaction as possible and allowing players to roleplay independently. We'll be putting measures in place to make sure that the economy is balanced to allow healthy illegal roleplay. Legal Roleplay When attempting to achieve a perfect balance between all sides of roleplay, legal RP plays a major role. Be it a bar, club or a trucking service - it's going to be a pleasant experience for company leaders, employees and entrepreneurs. Everything you need is going to be accessible in-game, such as creating a faction by going through the typically mundane process of acquiring a business license from the government. The Faction Team is more than open to hearing your suggestions and will have an announcement up in the coming weeks for more information, we can't wait to hear what you think! Customization Everyone loves customization and personalization. It helps you feel more comfortable and make something yours, and to do that we've added a ton of customization opportunities throughout. If you've seen the video above of the inventory system, then you already know you can move each inventory anywhere you want and save it's location. Pin and unpin your hotbar so its constantly on-screen or only appear whenever you hit a scroll number key. Adjust your HUD style to whatever theme you like through the settings menu, as of now we have two styles already available for all players, 'White on Black' and 'Black on White' with more coming soon. We even plan to open up design submissions to the community, so anyone can make their own HUD design using our provided templates and if it receives enough approval, we'll add it in-game! White on Black HUD Style. Black on White HUD Style. A ton of extra settings exist and can be found in the F10 menu in-game to toggle on graphical enhancements, shaders, or adjust how certain scripts react to your actions and make them do what you prefer. Preventing Abuse As with every server, we plan to have a large staff team at some point, and tracking the actions of each and every member can be quite time consuming, and some unintended actions can slip past unnoticed. We've tailored different ideas as to how we can resolve this, and at the end of the day we can have as many policies, regulations and rules in place but this doesn't stop the pesky habits of administrators who think they can slip past them all to get a quick weapon, item or vehicle fix. Everything and anything they do is logged, along with live notifications being sent to managers on duty with their actions for every command that can be abused in one way or another. If a staff member abuses the commands they have access to or breaks any rule and there is no manager online to see it, there are measures we put in place, allowing us to ensure that everyone is maintaining a very high standard. Performance Hey, with everything going on and all these great features being brought forward, where do we stand in terms of performance? All our code is written and rewritten multiple times until we're happy that it's at its most optimal and the highest standard possible. Promising such great and advanced features is one thing, being able to use them seamlessly is another so we've taken it as our goal to ensure that low end computers still have a chance to experience what we have to offer. We continuously check and monitor the usage of each resource occasionally to avoid the common mistakes other servers make, such as memory leak or high CPU usage. Prior to a public launch, we plan to run tests on virtual machines and try out different specifications to see how resources react and assess the playability until we're satisfied. A public graph will also be provided displaying the minimum and recommended specifications. Please bare in mind that MTA functions on only one CPU core, so even if you have a beefy super computer with an i9 processor and a ram size of 512GB, you'll still experience FPS drops for rendering and object loading in minor occasions. DEVELOPED BY YOU Development is a process that requires a lot of decisions to be made. An ideal community can only be built up when ideas and decisions are put into discussions - the best way to do is to hear everyone out, the whole community. We want to make roleplaying enjoyable for everyone, in all areas, fields and roles of roleplay. The reason we are publicizing the community rather early in development is for the sake of determining important decisions and features which will be utilized by the players for months to come. Each month we will be posting what progress has been made, constantly be creating surveys and initiating discussions regarding what features we need to pursue in order to satisfy every kind of player. We urge you to contribute to discussions and to make your opinion heard, everything is equally considered. The community will pave the road ahead. If you possess programming skills that you believe are of use to us, we always appreciate and urge developers willing to dedicate themselves to this project to apply for the Development Team here. Keep in mind that we have a very high standard that we maintain throughout development in order to reach the perfect balance of performance and enjoyability. We urge all newcomers with roleplaying experience to start a discussion, introduce themselves within the community or give us feedback regarding our ideas! When you've gotten comfortable, send us your suggestions and what you want to see in the server. Let's make something great together. Thanks for reading! CREDITS All content displayed is developed directly by the Emerald Gaming Development Team with the exception of any listed resources and/or code obtained from external sources. @thisdp for his original dxLibrary. @Grozz for assistance with 3D interface functions. @ryden for original superman resource. Stay up to date with Emerald Gaming and our progress!1 point
-
I have released a self-hosted Discord relay some time ago, but didn't bother posting here or adding documentation. @specahawk, you can tell me to remove this post if you don't want to have this advertising in your thread. Anyway, the code is on GitHub (Necktrox/mta-discord-bot) and it's being used by Mr.Green, one unknown guy and my clan's server. It doesn't support any commands, but the implementation is up to you (the bot recognizes commands with dot (.) prefix). It's running perfectly stable for months.1 point