Welcome, Guest |
You have to register before you can post on our site.
|
Online Users |
There are currently 415 online users. » 0 Member(s) | 413 Guest(s) Google, Bing
|
Latest Threads |
What is mebendazole used ...
Forum: Questions and Suggestions
Last Post: lucasmillerfeb2022
3 hours ago
» Replies: 0
» Views: 10
|
Rosalife Gamemode [openMP...
Forum: Gamemodes
Last Post: vactidylee
Yesterday, 04:17 AM
» Replies: 5
» Views: 4,547
|
White Screen
Forum: Support
Last Post: Phat202146_real
2024-11-21, 02:50 PM
» Replies: 0
» Views: 25
|
Offensive-Core: TDM
Forum: Gamemodes
Last Post: threezhang.cn
2024-11-21, 09:54 AM
» Replies: 5
» Views: 940
|
Outstanding Customer Serv...
Forum: Chat
Last Post: va6220902
2024-11-21, 07:52 AM
» Replies: 0
» Views: 33
|
New place
Forum: Life
Last Post: sjaardamilly
2024-11-21, 06:58 AM
» Replies: 0
» Views: 24
|
How Zhewitra Oral Jelly W...
Forum: General Discussions
Last Post: erctilenovus
2024-11-20, 08:39 AM
» Replies: 0
» Views: 31
|
Cenforce 100 Mg Medicine ...
Forum: Chat
Last Post: ezraallen45ea
2024-11-19, 10:00 AM
» Replies: 0
» Views: 38
|
I get error 021 using y_h...
Forum: Pawn Scripting
Last Post: daniscript18
2024-11-18, 11:34 PM
» Replies: 0
» Views: 46
|
What is the use of Wakler...
Forum: Other
Last Post: allencooper
2024-11-18, 10:37 AM
» Replies: 0
» Views: 30
|
|
|
?Cu?l ser?a tu "h?brido" perfecto? |
Posted by: Bryzon - 2019-04-16, 04:30 PM - Forum: Discusi?n GTA SA Multijugador
- Replies (32)
|
|
?Cu?l ser?a tu "h?brido" perfecto? Con h?brido me refiero a la mezcla de puntos de cada servidor, por ejemplo si te gusta de administraci?n de un servidor y la GM de otro u otras cosas puedes decir: Me gustaria el h?brido de la administraci?n de x y la GM de x. Espero sus comentarios.
|
|
|
Open.MP for Steam |
Posted by: Romzes - 2019-04-16, 04:03 PM - Forum: Questions and Suggestions
- Replies (2)
|
|
I propose to add support for the Steam version of gta_sa.?Now it is difficult to get the old version of the game, and beginners could easily buy it in Steam and use it in conjunction with Open.MP
It would also be nice if you add the ability to learn the Steam ID of the user.
Code: // function
GetPlayerSteam(playerid, string[], len);
// return
76561198077728405 <= If the player uses the steam version
-1 or Unknown <= If the player does not use Steam
|
|
|
Buy account |
Posted by: Python_ - 2019-04-16, 04:02 PM - Forum: General Discussions
- Replies (2)
|
|
Hello friends, I come humbly to ask if any of you have any GAME-MP account that can offer?
Serious friends, I have an offer of $ 120 USD
Thank you!!
|
|
|
[GUIA] Uso Enum |
Posted by: Markski - 2019-04-16, 03:59 PM - Forum: Programaci?n
- Replies (4)
|
|
Es com?n ver en ciertos scripts o partes de c?digo que se publican en foros, gente que no utiliza el Enum, o que lo utiliza mal, ya sea por ignorancia o porque jamas se lo han explicado bien.
Por eso traigo esta peque?a guia que deberia explicar de manera rapida y simple que es un Enum, y como se usa.
Enumeraciones.
Las enumeraciones son un sistema muy ?til para representar largos grupos de datos, y modificarlos de manera simple y r?pida. Se pueden utilizar para reemplazar grandes grupos de constantes definidas o para crear nuevos "tags".
Sin embargo, el uso mas com?n y el que se vera en esta gu?a, es para representar espacios en un array/vector de datos.
Definiendo un Enum
Comencemos con algo muy normal, variables para un usuario. Comensemos por crear un Enumerador, llamado "InfoJugador", con cada tipo de dato que queremos guardar sobre un jugador.
PHP Code: enum InfoJugador { ?? ?idUsuario, ?? ?Bool:estaLogeado, ?? ?dinero, ?? ?drogas, ?? ?skin, ?? ?rango, ?? ?banco, ?? ?aceptaPM, ?? ?vehiculo, ?? ?Float:velocidad, ?? ?Float:altura, ?? ?fps, ?? ?clanID, ?? ?asesinatos, ?? ?muertes }
...Obviamente, un servidor real tendra muchas mas variables de jugador que estas, pero como ejemplo, va a servir. Pueden ver que dentro del enum definimos varios diferentes tipos de datos, en este caso Integer, Float y un Booleano. Tranquilamente podriamos tener string y cualquier tipo mas si quisieramos, ya que al hacer enums los contenidos de un arreglo no estan limitados a un solo tipo de dato, pero por ahora, con estos nos alcanzara.
Utilizando un Enum
Para utilizar ese enumerador, simplemente tenemos que definirlo dentro de un arreglo. En este caso, vamos a crear un arreglo de dos dimensiones que contendra toda la informaci?n para cada jugador.
PHP Code: new Jugador[MAX_PLAYERS][InfoJugador];
Pueden ver que la primera dimensi?n de nuestro arreglo es la cantidad de espacios/slots que tiene el servidor o "MAX_PLAYERS", mientras la segunda dimensi?n es el Enum que creamos anteriormente. De esta manera se le asigna a cada playerid, cada una de las variables que colocamos en el Enumerador.
Ahora acceder a una variable de usuario es tan simple como utilizar Jugador[playerid][NombreElemento], donde NombreElemento es cualquiera de los elementos definidos dentro del Enum.
Ya se puede ver una de las principales ventajas que tiene sobre crear cada variable de manera individual (ejemplo "dinero[playerid];"), siendo esta que ahora se tiene una manera estandarizada de agregar y acceder a cada valor.
Inicializando un Enum
Cuando el servidor inicia, y cada vez que un nuevo jugador se conecta, obviamente no vamos a querer que tengan datos basura o datos del jugador que anteriormente tenia la misma ID. Para esto es necesario inicializar el Enumerador con datos por defecto.
PHP Code: InicializarJugador(playerid) { ?? ?Jugador[playerid][idUsuario] = -1; ?? ?Jugador[playerid][estaLogeado] = false ?? ?Jugador[playerid][dinero] = 0; ?? ?Jugador[playerid][drogas] = 0; ?? ?Jugador[playerid][skin] = 0; ?? ?Jugador[playerid][rango] = 0; ?? ?Jugador[playerid][banco] = 0; ?? ?Jugador[playerid][aceptaPM] = 1; ?? ?Jugador[playerid][vehiculo] = -1; ?? ?Jugador[playerid][velocidad] = 0.0; ?? ?Jugador[playerid][altura] = 0.0; ?? ?Jugador[playerid][fps] = -1; ?? ?Jugador[playerid][clanID] = -1; ?? ?Jugador[playerid][asesinatos] = 0; ?? ?Jugador[playerid][muertes] = 0; }
Si bien en esta situaci?n se podria utilizar un iterador que recorra todos los elementos de InfoJugador, no es recomendable ya que claramente no todos los espacios tendran el mismo valor de inicio.
Obviamente, varios de esos datos van a ser cambiados por tu sistema de usuario cada vez que un usuario se Logee o Registre, pero es ideal de todas maneras tener un estado limpio para evitar problemas. La funci?n de arriba, InicializarJugador(), deberia idealmente ejecutarse sobre cada jugador que se conecte en OnPlayerConnect() .
IMPORTANTE: Tener en cuenta que las variables van a seguir existiendo una vez que un jugador se conecte y no se conecta otro para reemplazar su ID. Si tienen iteradores de MAX_PLAYERS, no solo chequeen que esten logeados en el sistema de usuario, tambien chequeen IsPlayerConnected(playerid) !!
Conclusi?n
Utilizar Enumeradores es una manera muy rapida y sensilla de almacenar y organizar grupos de datos para ciertas cosas dadas, como pueden ser jugadores, casas y negocios entre muchas otras cosas. Provee una manera estandarizada de acceder y definir datos, al mismo tiempo que ayuda a separar variables relacionadas a ciertos componentes del servidor de otras.
Es importante aclarar, por supuesto, esta no es la "manera correcta" de guardar variables de usuario/casa/etc. No existe tal cosa como la manera correcta y suprema.
Existen muchas maneras y cada una es mejor dependiendo de como escribas y organizes tu GM. Aqui yo solo les muestro una m?s.
Espero les haya sido de ayuda.
|
|
|
TextDraw String Width |
Posted by: kristo - 2019-04-16, 03:45 PM - Forum: Libraries
- Replies (2)
|
|
SA-MP TextDraw String Width
About two years ago an user called Alcatrik came up with a concept of calculating the width of textdraw strings in this thread. In those two years a few functions using this concept appeared in that thread, but all of them had major flaws. The first one by Crayder didn?t include the first 32 characters of the ASCII table. The next one by Freaksten fixed that flaw, but neither of the functions also didn?t take into account that there are four different textdraw fonts and just used the first array in fonts.dat.
About two or three months ago I needed a correct version of that function so I started digging into the data in fonts.dat. The first discovery I made is that fonts 2 and 3 are actually subfonts of fonts 0 and 1 (fun fact: you can actually access the characters of fonts 2 and 3 from fonts 0 and 1 by using values larger than 175 as characters). I manually reassembled the data into four arrays, but soon after that I temporarily abandoned the project I collected this data for.
A few days ago I mentioned the data I had collected and Y_Less sent me a repository that contained a function that generated the same dataset automatically. I decided to compare the two datasets and found out that they had different widths for 16 characters, which I re-measured manually. Both got about half of the 16 widths right and half of them wrong.
Another mistake that all existing functions did was presuming that characters 1-31 are always rendered as regular whitespace. In reality, the widths of the invisible characters differed in font 2 and the characters in font 3 actually have two different widths. One of them is the visual width: most of the characters don?t actually render as whitespace, instead of this you see either one or two stripes with varying widths. The other width is the ?physical? width, which is either 0 (the stripes overlap with the next character or two) or a relatively large number, up to 255.
Now, after multiple days of work that contained manually reassembling data, manually measuring almost 100 characters and a lot more, this library is ready. What could it be used for? I personally needed this to calculate the width of buttons based on their strings. The previously mentioned repository uses code similar to this to achieve full colouring of textdraws. A few more usages can be found from the original topic explaining the concept.
Installation
Simply install to your project:
Code: sampctl package install kristoisberg/samp-td-string-width
Include in your code and begin using the library:
PHP Code: #include <td-string-width>
Usage
- GetTextDrawCharacterWidth(character, font, bool:proportional = true)
- Returns the width of a single character.
- GetTextDrawStringWidth(const string[], font, outline = 0, bool:proportional = true)
- Finds the longest line in the string and returns the width of it. Skips everything between ~ characters except ~n~, which indicates the start of a new line. Odd number of ~ characters returns the width of ?Error: unmatched tilde?.
- GetTextDrawLineWidth(const string[], font, outline = 0, bool:proportional = true)
- Works just like GetTextDrawStringWidth, but presumes that the string only contains one line. Skips ~n~ just like everything else between ~ characters.
Testing
To test, simply run the package:
|
|
|
MV_Autodeploy - Use git to your advantage to auto-update your sa-mp server |
Posted by: michael@belgium - 2019-04-16, 02:26 PM - Forum: Releases
- Replies (1)
|
|
Information
So this is a mix of files/release that will make your developing easier (well, in my opinion). By doing one git command your server will update automaticly on your vps/dedicated server.?
Just the fact that you don't need to upload new .amx every time and need to edit your /updates command ... or like people saying "what's new?"?
This is all not needed anymore!
It works like this; you push your update to your remote, bitbucket will send info to your vps saying the script is updated, your vps will update the gamemode files, your database will get updated and later your server will check if there's a new commit hash than before. If yes, the samp server will automaticly update/restart
Functions
Code: OnServerUpdateDetected(id, hash[], shorthash[], message[])
OnUpcomingUpdateDetected(updateid, hash[], shorthash[], message[])
OnServerIssueCreated(issueid, title[], priority[], kind[])
OnServerIssueStatusChange(issueid, title[], oldstatus[], newstatus[])
OnServerTagCreated(updateid, linkedtohash[], tagname[])
MV_AutoDeployInit(MySQL:sqlCon)
MV_AutoDeployExit()
MV_GetServerVersion()
Installation
Code on github
Copied from original samp forums
|
|
|
|