[Tutorial] How to make a register system ( Dialogs, SQLite and rBits )
#41

I'm not sure if this is really important or not, but I assume it is since no information is saved upon a user registering:

Where do we create/place "ServerDatabase.db"?

Sorry, i'm fairly new to PAWN

EDIT:
Ah, i'm sorry, I just realised it belongs in scriptfiles.
Reply
#42

nice but it got some bugs. when you create a new dialog in gamemode example DIALOG_STYLE_MSGBOX and press the buttons ingame. if you press the left button it says wrong password if you press right button it closes connection.
Reply
#43

What are you talking about? That's normal to apply.
Reply
#44

If I may make a suggestion, changing the registration line to this:
pawn Code:
format(Query, sizeof(Query), "INSERT INTO `USERS` (`NAME`, `PASSWORD`, `IP`, `SCORE`, `CASH`, `ADMINLEVEL`) VALUES('%s',SHA1('%s'),'%s', '0', '500', '0')", DB_Escape(name), DB_Escape(inputtext), DB_Escape(ip));
(Encrypting the password with SHA1) would be a lot more secure. Ensuring that passwords cannot be seen by the naked eye.

Obviously during login you will also have to encrypt the password they submit:
pawn Code:
format(Query, sizeof(Query), "SELECT * FROM `USERS` WHERE `NAME` = '%s' COLLATE NOCASE AND `PASSWORD` = SHA1('%s')", DB_Escape(name), DB_Escape(inputtext));
Cheers,

TJ
Reply
#45

When try to make a command for a admin i get this error:

pawn Code:
error 017: undefined symbol "p_AdminLevel"
Reply
#46

I have one question : I have to work full mode in SQL? Otherwise, just register can be in SQL and this is it?And how to I create a enum pInfo admin,password,etc...?
Reply
#47

BUMP!
Reply
#48

You helped me alot! I found alot of Registrations scripts that didn't work for me, but yours works perfect
Reputation added
Reply
#49

Hello, everything works great, but when i register, server dont save my stats , so when i reconnect i get register window again :<

Please , help me ?

Thanks
Reply
#50

thanks,
this has got me started with sqlite

This will make converting my small ini based user system simple!

i was able to import all my vehicle files to the db(1827) within a matter of seconds.
using almost the same function i use to load the vehicles from files and a little help from sscanf.

And just from your simple example code and my previous knowledge ill be able to
make a fully dynamic vehicle system that I can edit in game!

If you decide to do a more in depth tutorial on sqlite that would be awesome!

thanks!
Reply
#51

somes errors
PHP Code:
D:\p\GtaSa (1)\lo.pwn(23) : error 001expected token"-identifier-"but found "("
D:\p\GtaSa (1)\lo.pwn(26) : error 010invalid function or declaration
D
:\p\GtaSa (1)\lo.pwn(32) : error 017undefined symbol "Database"
D:\p\GtaSa (1)\lo.pwn(34) : error 017undefined symbol "Database"
D:\p\GtaSa (1)\lo.pwn(41) : error 017undefined symbol "Database"
D:\p\GtaSa (1)\lo.pwn(54) : error 017undefined symbol "Bit1_Set"
D:\p\GtaSa (1)\lo.pwn(59) : error 017undefined symbol "Database"
D:\p\GtaSa (1)\lo.pwn(87) : error 017undefined symbol "Bit1_Get"
D:\p\GtaSa (1)\lo.pwn(90 -- 93) : error 017undefined symbol "Bit16_Get"
D:\p\GtaSa (1)\lo.pwn(96) : error 017undefined symbol "Database"
D:\p\GtaSa (1)\lo.pwn(98) : error 017undefined symbol "Bit1_Set"
D:\p\GtaSa (1)\lo.pwn(121) : error 017undefined symbol "Database"
D:\p\GtaSa (1)\lo.pwn(141) : error 017undefined symbol "Bit16_Set"
D:\p\GtaSa (1)\lo.pwn(143) : error 017undefined symbol "Bit1_Set"
D:\p\GtaSa (1)\lo.pwn(179) : error 017undefined symbol "Database"
D:\p\GtaSa (1)\lo.pwn(181) : error 017undefined symbol "Bit1_Set"
D:\p\GtaSa (1)\lo.pwn(223) : warning 203symbol is never used"g_PlayerLogged"
Pawn compiler 3.2.3664              Copyright (c1997-2006ITB CompuPhase
16 Errors

Reply
#52

Lorenc_,

Can you please explain this part :
pawn Code:
public OnFilterScriptExit()
{
    for(new i; i != MAX_PLAYERS; i++) OnPlayerDisconnect(i, 1);
    db_close(Database);
    return 1;
}
I am new to scripting i just want to know why are you looping ? Why don't you just use :
pawn Code:
db_close(Database);
And also Do i need the DB_Escape stock :
pawn Code:
stock DB_Escape(text[])
{
    new
        ret[80 * 2],
        ch,
        i,
        j;
    while ((ch = text[i++]) && j < sizeof (ret))
    {
        if (ch == '\'')
        {
            if (j < sizeof (ret) - 2)
            {
                ret[j++] = '\'';
                ret[j++] = '\'';
            }
        }
        else if (j < sizeof (ret))
        {
            ret[j++] = ch;
        }
        else
        {
            j++;
        }
    }
    ret[sizeof (ret) - 1] = '\0';
    return ret;
}
Is it necessary ?
Reply
#53

Nice tutorial
Reply
#54

Test in ubuntu server and no work :S, no show second dialog.

No save info player when is disconnected and in register. Error appears out of the server:



Gamemode:

PHP Code:
#include <a_samp>
#include <rBits>
//----------------------------------------------------------
// FORWARD:
//----------------------------------------------------------
//----------------------------------------------------------
// DEFINE:
//----------------------------------------------------------
// Informacion del servidor:
#define INFO_NOMBRE_SERVIDOR    "Server"
#define INFO_VERSION_SERVIDOR    "1.0"
//----------------------------------------------------------
// NEW:
//----------------------------------------------------------
// Sistema Mysql:
new Bit1g_PlayerLogged <MAX_PLAYERS>;
new 
Bit16g_AdminLevel <MAX_PLAYERS>;
new 
DBDatabase;
//----------------------------------------------------------
// CODIGO INTERNO DEL SCRIPT:
//----------------------------------------------------------
public OnFilterScriptInit()
{
    
//--------------------------------------------------------
    // Sistema Mysql:
    //--------------------------------------------------------
    // Conexion con la base de datos del servidor:
    
Database db_open("ServerDatabase.db");
    
// Creacion de tablas en la base de datos, si no existiese:
    
db_query(Database"CREATE TABLE IF NOT EXISTS `USERS` (`NAME`, `PASSWORD`, `IP`, `SCORE`, `CASH`, `ADMINLEVEL`)");
    
    
// Mensaje de la ejecucion del script:
    
print("Scripts del Gamemode habilitados correctamente.");
    
    return 
1;
}
public 
OnFilterScriptExit()
{
    
//--------------------------------------------------------
    // Sistema Mysql:
    //--------------------------------------------------------
    // Desconexion con la base de datos del servidor:
    
for (new i!= MAX_PLAYERSi++) OnPlayerDisconnect(i1);
    
db_close(Database);
    
//Mensaje de detencion de la ejecucion del script:
    
print("Scripts del Gamemode deshabilitados correctamente.");
    return 
1;
}
main()
{
    
// Mensaje que se mostrara en la consola del servidor:
    
print("Gamemode cargado correctamente.");
}
//----------------------------------------------------------
// CODIGO EXTERNO DEL SCRIPT:
//----------------------------------------------------------
public OnGameModeInit()
{
    
// Informacion del Servidor:
    
SetGameModeText("Server Test");
    
// Impide que se vean en el mapa los usuarios conectados:
    
ShowPlayerMarkers(0);
    
// Las ruedas de los vehiculos pueden ser pinchadas:
    
EnableTirePopping(0);
    
// Todos los coches apagados:
    // ManualVehicleEngineAndLights();
    // Skins disponibles a elegir:
    
AddPlayerClass(101,1653.5210,-2329.4944,13.5469,1.2957,-1,-1,-1,-1,-1,-1);
    
AddPlayerClass(10,1653.5210,-2329.4944,13.5469,1.2957,-1,-1,-1,-1,-1,-1);
    
AddPlayerClass(12,1653.5210,-2329.4944,13.5469,1.2957,-1,-1,-1,-1,-1,-1);
    return 
1;
}
public 
OnGameModeExit()
{
    return 
1;
}
public 
OnPlayerRequestClass(playeridclassid)
{
    
SetPlayerColor(playeridCOLOR_BLANCO);
    
SetPlayerPos(playerid2370.5166,2165.1321,26.9844);
    
SetPlayerCameraPos(playerid2374.5188,2169.5798,26.9844);
    
SetPlayerCameraLookAt(playerid2370.5166,2165.1321,26.9844);
    
SetPlayerFacingAngle(playerid,315.9228);
    
ApplyAnimation(playerid,"DANCING","dnce_M_b",4.1,7,5,1,1,1);
    
    return 
1;
}
public 
OnPlayerConnect(playerid)
{
    
//--------------------------------------------------------
    // Sistema Mysql:
    //--------------------------------------------------------
    
    // Nuevas variables:
    
new Query150 ];
    new 
DBResultResult;
    new 
nameMAX_PLAYER_NAME ];
    
GetPlayerName(playeridnamesizeof(name));
    
Bit1_Set(g_PlayerLoggedplayeridfalse);
    
// Lectura del usuario en la base de datos:
    
format(Querysizeof(Query), "SELECT `NAME` FROM `USERS` WHERE `NAME` = '%s'"DB_Escape(name));
    
Result db_query(DatabaseQuery);
    
// Si el nombre introducido esta registrado:
    
if (db_num_rows(Result))
    {
        
// Mensaje de logueo para el usuario:
        
format(Querysizeof(Query), "Bienvenido al servidor Infernus %s(%d)! Por favor, introduzque la contraseсa de vuestra cuenta para poder loguear."nameplayerid);
        
ShowPlayerDialog(playerid1DIALOG_STYLE_INPUT"SISTEMA DE LOGUEO"Query"Conectar""Salir");
    }
    
// Si el nombre introducido no esta registrado:
    
else
    {
        
// Mensaje de registro para el nuevo usuario:
        
format(Querysizeof(Query), "Bienvenido al servidor Infernus %s(%d)! Para registraros, introduzca la contraseсa para vuestra cuenta."nameplayerid);
        
ShowPlayerDialog(playerid0DIALOG_STYLE_INPUT"SISTEMA DE LOGUEO"Query"Registrarse""Salir");
    }
    
db_free_result(Result);
    
    return 
1;
}
public 
OnPlayerDisconnect(playeridreason)
{
    
//--------------------------------------------------------
    // Sistema Mysql:
    //--------------------------------------------------------
    
    // Nuevas variables:
    
new Query200 ];
    new 
nameMAX_PLAYER_NAME ];
    
    
GetPlayerName(playeridnamesizeof(name));
    
    
// Almacenamiento de datos cuando se desconecta el jugador:
    
if (Bit1_Get(g_PlayerLoggedplayerid) == 1)
    {
        
// Tablas en las que se almacenara la informacion del jugador:
        
format(Query,sizeof(Query),"UPDATE `USERS` SET SCORE = '%d', CASH = '%d', ADMINLEVEL = '%d' WHERE `NAME` = '%s'",
            
GetPlayerScore(playerid),                             // Puntos del jugador.
            
GetPlayerMoney(playerid),                            // Dinero del jugador.
            
Bit16_Get(g_AdminLevelplayerid),                    // Accesslevel del jugador.
            
DB_Escape(name));                                    // Desconexion del jugador.
        // Lectura de la desconexion:
        
db_query(DatabaseQuery);
        
Bit1_Set(g_PlayerLoggedplayeridfalse);
    }
    
    return 
1;
}
public 
OnPlayerSpawn(playerid)
{
    return 
1;
}
public 
OnPlayerDeath(playeridkilleridreason)
{
    return 
1;
}
public 
OnVehicleSpawn(vehicleid)
{
    return 
1;
}
public 
OnVehicleDeath(vehicleidkillerid)
{
    return 
1;
}
public 
OnPlayerText(playeridtext[])
{
    return 
1;
}
public 
OnPlayerCommandText(playeridcmdtext[])
{
    return 
1;
}
public 
OnPlayerEnterVehicle(playeridvehicleidispassenger)
{
    return 
1;
}
public 
OnPlayerExitVehicle(playeridvehicleid)
{
    return 
1;
}
public 
OnPlayerStateChange(playeridnewstateoldstate)
{
    return 
1;
}
public 
OnPlayerEnterCheckpoint(playerid)
{
    return 
1;
}
public 
OnPlayerLeaveCheckpoint(playerid)
{
    return 
1;
}
public 
OnPlayerEnterRaceCheckpoint(playerid)
{
    return 
1;
}
public 
OnPlayerLeaveRaceCheckpoint(playerid)
{
    return 
1;
}
public 
OnRconCommand(cmd[])
{
    return 
1;
}
public 
OnPlayerRequestSpawn(playerid)
{
    return 
1;
}
public 
OnObjectMoved(objectid)
{
    return 
1;
}
public 
OnPlayerObjectMoved(playeridobjectid)
{
    return 
1;
}
public 
OnPlayerPickUpPickup(playeridpickupid)
{
    return 
1;
}
public 
OnVehicleMod(playeridvehicleidcomponentid)
{
    return 
1;
}
public 
OnVehiclePaintjob(playeridvehicleidpaintjobid)
{
    return 
1;
}
public 
OnVehicleRespray(playeridvehicleidcolor1color2)
{
    return 
1;
}
public 
OnPlayerSelectedMenuRow(playeridrow)
{
    return 
1;
}
public 
OnPlayerExitedMenu(playerid)
{
    return 
1;
}
public 
OnPlayerInteriorChange(playeridnewinterioridoldinteriorid)
{
    return 
1;
}
public 
OnPlayerKeyStateChange(playeridnewkeysoldkeys)
{
    return 
1;
}
public 
OnRconLoginAttempt(ip[], password[], success)
{
    return 
1;
}
public 
OnPlayerUpdate(playerid)
{
    return 
1;
}
public 
OnPlayerStreamIn(playeridforplayerid)
{
    return 
1;
}
public 
OnPlayerStreamOut(playeridforplayerid)
{
    return 
1;
}
public 
OnVehicleStreamIn(vehicleidforplayerid)
{
    return 
1;
}
public 
OnVehicleStreamOut(vehicleidforplayerid)
{
    return 
1;
}
public 
OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    
//--------------------------------------------------------
    // Sistema Mysql:
    //--------------------------------------------------------
    
    // Nuevas variables:
    
new Query256 ];
    new 
DBResultResult;
    new 
nameMAX_PLAYER_NAME ];
    new 
ip16 ];
    
    
GetPlayerName(playeridnamesizeof(name));
    
GetPlayerIp(playeridipsizeof(ip));
    
    
// Codigo de los dialogos (Usuario Registrado):
    
if (dialogid == 1)
    {
         
// El jugador esta registrado:
          
if (response)
           {
            
// Lectura del usuario en la base de datos:
            
format(Querysizeof(Query), "SELECT * FROM `USERS` WHERE `NAME` = '%s' AND `PASSWORD` = '%s'"DB_Escape(name), DB_Escape(inputtext));
            
Result db_query(DatabaseQuery);
            
// Conexion realizada correctamente:
            
if (db_num_rows(Result))
            {
                
// Nueva variable:
                
new Field20 ];
                
// Carga el score del jugador:
                
db_get_field_assoc(Result"SCORE"Field30);
                
SetPlayerScore(playeridstrval(Field));
                
// Carga el dinero del jugador:
                
db_get_field_assoc(Result"CASH"Field30);
                
GivePlayerMoney(playeridstrval(Field));
                
// Carga el accesslevel del jugador:
                
db_get_field_assoc(Result"ADMINLEVEL"Field30);
                
Bit16_Set(g_AdminLevelplayeridstrval(Field));
                
// El jugador loguea al servidor:
                
Bit1_Set(g_PlayerLoggedplayeridtrue);
                
// Mensaje de logueo en la consola del servidor:
                
SendClientMessage(playerid, -1"Conexion realizada correctamente, disfrute! ");
            }
            
// La contraseсa indicada es incorrecta:
            
else
            {
                
// Mensaje de aviso de la contraseсa incorrecta:
                   
format(Querysizeof(Query), "Actualmente ya os encontrais registrado, por favor indiquenos su contraseсa para loguear."nameplayerid);
                
ShowPlayerDialog(playerid1DIALOG_STYLE_INPUT"SISTEMA DE LOGUEO"Query"Conectar""Salir");
                
// Show the player the wrong password message.
                
SendClientMessage(playerid, -1"Contraseсa incorrecta , intentelo de nuevo.");
            }
            
// Actualizando base de datos:
            
db_free_result(Result);
        }
        else
        {
            return 
Kick(playerid);
        }
        
        
// Codigo de los dialogos (Usuario No Registrado):
        
if (dialogid == 0)
        {
            
// El jugador no esta registrado:
            
if (response)
            {
                
// Sistema de seguridad del nombre:
                
if (strlen(inputtext) > 24 || strlen(inputtext) < 3)
                {
                    
// Mensaje de aviso por el uso de un nombre no valido:
                    
format(Querysizeof(Query), "Actualmente ya os encontrais registrado, por favor indiquenos su contraseсa para loguear."nameplayerid);
                    
ShowPlayerDialog(playerid1DIALOG_STYLE_INPUT"SISTEMA DE LOGUEO"Query"Conectar""Salir");
                    
// Send a message about the length of characters used for their password.
                    
SendClientMessage(playerid, -1"ERROR: Vuestra contraseсa ha de tener entre 3 - 24 caracteres!");
                }
                else
                {
                    
// Creando en la base de datos al nuevo usuario:
                    
format(Querysizeof(Query), "INSERT INTO `USERS` (`NAME`, `PASSWORD`, `IP`, `SCORE`, `CASH`, `ADMINLEVEL`) VALUES('%s','%s','%s', '0', '0', '0')"DB_Escape(name), DB_Escape(inputtext), DB_Escape(ip));
                    
db_query(DatabaseQuery);
                    
// El jugador loguea al servidor:
                    
Bit1_Set(g_PlayerLoggedplayeridtrue);
                    
                    
// Valores iniciales del jugador:
                    
GivePlayerMoney(playerid500);             // Dinero inicial.
                    
SetPlayerScore(playerid0);                // Score "0"
                    
                     // Mensaje de conexion con el servidor:
                    
SendClientMessage(playerid, -1"Felicidades! Habeis creado una cuenta en nuestro servidor, que comienze vuestra aventura!");
                }
            }
            else
            {
                return 
Kick(playerid);
            }
        }
    }
    
    return 
1;
}
public 
OnPlayerClickPlayer(playeridclickedplayeridsource)
{
    return 
1;
}
//----------------------------------------------------------
// CODIGO ADICIONAL DEL SCRIPT:
//----------------------------------------------------------
// Sistema Mysql:
stock DB_Escape(text[])
{
    new
        
ret[80 2],
        
ch,
        
i,
        
j;
    while ((
ch text[i++]) && sizeof (ret))
    {
        if (
ch == '\'')
        {
            if (
sizeof (ret) - 2)
            {
                
ret[j++] = '\'';
                
ret[j++] = '\'';
            }
        }
        else if (
sizeof (ret))
        {
            
ret[j++] = ch;
        }
        else
        {
            
j++;
        }
    }
    
ret[sizeof (ret) - 1] = '\0';
    return 
ret;

The code:

Code:
db_query(Database, "CREATE TABLE IF NOT EXISTS `USERS` (`NAME`, `PASSWORD`, `IP`, `SCORE`, `CASH`, `ADMINLEVEL`)");
Work, but no save info player is connected: is connected with the assigned database (checked).
Reply
#55

Quote:
Originally Posted by iSaad
View Post
Lorenc_,

Can you please explain this part :
pawn Code:
public OnFilterScriptExit()
{
    for(new i; i != MAX_PLAYERS; i++) OnPlayerDisconnect(i, 1);
    db_close(Database);
    return 1;
}
I am new to scripting i just want to know why are you looping ? Why don't you just use :
pawn Code:
db_close(Database);
And also Do i need the DB_Escape stock :
pawn Code:
stock DB_Escape(text[])
{
    new
        ret[80 * 2],
        ch,
        i,
        j;
    while ((ch = text[i++]) && j < sizeof (ret))
    {
        if (ch == '\'')
        {
            if (j < sizeof (ret) - 2)
            {
                ret[j++] = '\'';
                ret[j++] = '\'';
            }
        }
        else if (j < sizeof (ret))
        {
            ret[j++] = ch;
        }
        else
        {
            j++;
        }
    }
    ret[sizeof (ret) - 1] = '\0';
    return ret;
}
Is it necessary ?
1) You can remove it, it was meant to ensure all statistics are saved a second time.
2) Of course, you are not going to risk your DB being hacked, dropped, or truncated.

You might not even read this as it is a response to a three month old comment. But eh..

@u3games

Not sure at all, I used SQLite on CentOS (VPS in early 2012). Worked flawlessly.
Reply
#56

me ajuda ai

C:\Users\ryan\Documents\Meus arquivos recebidos\Nova pasta\Game_Mode SP Vida RPG By Daniel\gamemodes\SPG.pwn(45446) : warning 217: loose indentation
C:\Users\ryan\Documents\Meus arquivos recebidos\Nova pasta\Game_Mode SP Vida RPG By Daniel\gamemodes\SPG.pwn(4549 : error 029: invalid expression, assumed zero
C:\Users\ryan\Documents\Meus arquivos recebidos\Nova pasta\Game_Mode SP Vida RPG By Daniel\gamemodes\SPG.pwn(4549 : warning 215: expression has no effect
C:\Users\ryan\Documents\Meus arquivos recebidos\Nova pasta\Game_Mode SP Vida RPG By Daniel\gamemodes\SPG.pwn(4549 : error 001: expected token: ";", but found "]"
C:\Users\ryan\Documents\Meus arquivos recebidos\Nova pasta\Game_Mode SP Vida RPG By Daniel\gamemodes\SPG.pwn(4549 : error 029: invalid expression, assumed zero
C:\Users\ryan\Documents\Meus arquivos recebidos\Nova pasta\Game_Mode SP Vida RPG By Daniel\gamemodes\SPG.pwn(4549 : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase


4 Errors.






codigo


if(strcmp(cmd, "/algemar", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(!IsACop(playerid))
{
SendClientMessage(playerid, COLOR_GREY, " Vocк nгo й um policial!");
return 1;
}
if(OnDuty[playerid] != 1)
{
SendClientMessage(playerid, COLOR_GREY, " Vocк nгo Bateu o cartгo!");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_WHITE, "Use: /algemar [id]");
return 1;
}
giveplayerid = ReturnUser(tmp);
if(IsPlayerConnected(giveplayerid))
{
if(giveplayerid != INVALID_PLAYER_ID)
{
if(gTeam[giveplayerid] == 2 || IsACop(giveplayerid))
{
SendClientMessage(playerid, COLOR_GREY, " Vocк nгo pode algemar COPs !");
return 1;
}
if(PlayerCuffed[giveplayerid] > 0)
{
SendClientMessage(playerid, COLOR_GREY, " O Jogador jб esta algemado !");
return 1;
}
if (ProxDetectorS(8.0, playerid, giveplayerid))
{
//new car = GetPlayerVehicleID(playerid);
if(giveplayerid == playerid) { SendClientMessage(playerid, COLOR_GREY, "Vocк nao pode se algemar!"); return 1; }
//if(IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == 2 && IsPlayerInVehicle(giveplayerid, car))
{
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "* Vocк foi algemado pelo: %s.", sendername);
SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, string);
format(string, sizeof(string), "* Vocк algemou %s.", giveplayer);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
format(string, sizeof(string), "* %s Algemou %s, para nao fugir.", sendername ,giveplayer);
ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPL E,COLOR_PURPLE);
GameTextForPlayer(giveplayerid, "~r~Algemado", 2500, 3);
TogglePlayerControllable(giveplayerid, 0);
PlayerCuffed[giveplayerid] = 2;
PlayerInfo[giveplayerid][pMuted] = 1;
SetPlayerAttachedObject(giveplayerid, 4, 19418, 6, -0.031999, 0.024000, -0.024000, -7.900000, -32.000011, -72.299987, 1.115998, 1.322000, 1.406000);
for(new i = 0; i < MAX_PLAYERS; i++)
{
return SetPlayerSpecialAction(giveplayerid, SPECIAL_ACTION_CUFFED);
}
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, " O Jogador estб longe de Vocк !");
return 1;
}
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, " O Jogador Estб Offline !");
return 1;
}
}
return 1;
}
Reply
#57

Good job.
Reply
#58

Quote:
Originally Posted by Lorenc_
View Post
@u3games

Not sure at all, I used SQLite on CentOS (VPS in early 2012). Worked flawlessly.
In windows WORK, in ubuntu NO WORK.

I have a ubuntu. With nothing installed, only the samp.

You have to add a library or something for samp server?

The problem is that it loads the dialogues, the second dialog window is not displayed.
Reply
#59

How can I make my self Admin and make others.
Reply
#60

So much tutorials on this. Good job
Reply


Forum Jump:


Users browsing this thread: 4 Guest(s)