#1

So, I have added this into my script but it doesn't show me register dialog box when i join the server. Can you help me how to script it it should show to new players registration dialog box on public playerconnect so new players can register. Help me someone. Thank you!

PHP код:
/* 
                    This is Simple MySQL r9-3 GameMode by JeaSon  
                    Do no re release without my permission 
*/ 
//First, of course we need to include these files first 
#include <a_samp> //Without this, we won't be able to use all samp functions/callbacks 
#include <a_mysql> //Without this, we won't be able to use all mysql functions 
#include <sscanf2> // without this we wont be able to use commands and compile code 
#include <zcmd> // without this our commands will not work 
//Let's define our mysql settings 
#define host    "localhost" //This will be your mysql host. Default for xampp is localhost 
#define user    "root" //This will be your mysql username. Default for xampp is root 
#define db        "sami" //This is your database name. Remember we have created a database called server before. 
#define pass     "" //This is your mysql password. In xampp, the password didn't set. So leave it empty. 
//dialogs 
#define dREGISTER    1 //dialog register id 
#define dLOGIN        2 // ^dialog login id 
#define dSTATS             3 //dialog stats id 
#define LIST_COMMAND            true 
#define LIST_USE_DIALOG         false 
#define COMMAND_BLOCKED_MSG     "This command has been blocked, you cannot use it." 
#define COMMAND_BLOCKED_COLOR   0xFF0000FF 
#define MAX_COMMAND_BLOCKED     25 
#define COLOR_RED        0xFF0000FF                     
#define COLOR_CMY        0xFFFF00FF 
#define COLOR_YELLOW     0xFFDD00AA 
//these are custom callbacks so they must be forwarded otherwise compiler will show error 
forward OnAccountCheck(playerid); 
forward OnAccountLoad(playerid); 
forward OnAccountRegister(playerid); 
forward UnMutedTimer(playerid); 
new 
BlockedCommand[MAX_COMMAND_BLOCKED][25]; 
new 
IsPlayerRegisterd[MAX_PLAYERS]; 
new 
bool:pMuted[MAX_PLAYERS];//Global variables. We will use them later 
static 
    
mysql//This variable will be used to manage our database 
    
Name[MAX_PLAYERS][24], //We will use this variable to store player's name. 
    
IP[MAX_PLAYERS][16//We will use this variable to store player's ip. 
    

native WP_Hash(buffer[], len, const str[]); //whirlpool, for hashing our password 
//Now let's create an enumerator that holds player's information 
enum DATAX //We name our enumerator as PDATA (which stands for PlayerDATA). You can name it however you want. 

    
IDs//Will be used later to store player's ID from database so we can use it anywhere later 
    
Password[129], //We will load player's password into this varible from database 
    
Admin//We will load player's admin level from database into this variable so we can use it anywhere later. 
    
VIP//We will load player's VIP level from database into this variable so we can use it anywhere later. 
    
Kills
    
Deaths
    
Score
    
Money //We will load player's money from database into this variable so we can use it anywhere later. 

new 
pData[MAX_PLAYERS][DATAX]; //Variable that stores enumerator above 
main(){} 
public 
OnGameModeInit() 

    
mysql_log(LOG_ERROR LOG_WARNING LOG_DEBUG); //Let's enable debugging so we can detect a problem(if there is) 
    
mysql mysql_connect(hostuserdbpass); //This function will connect your server to database. Remember we have defined our host, username, database and password. It's time to use it here. 
    
if(mysql_errno(mysql) != 0
    { 
         print(
"Could not connect to database!"); //This will tell if your connection to database is successful or not. If it's not, check your host, username, database and password. Make sure they all right. 
    

    else 
    { 
        
printf("Successfully connected on DB %s",db); 
    }     
    
SetGameModeText("MySQL R9-3"); 
    return 
1

//Checking player's account if they are registered or not. 
public OnPlayerConnect(playerid

    
// resetting player enums so old's stats wont mix to new playerid 
    
for(new iDATAX:DATAXi++) 
    { 
         
pData[playerid][DATAX:i] = 0
    } 
    
IsPlayerRegisterd[playerid] = 0
    new 
query[128]; //We use this variable to format our query 
    
GetPlayerName(playeridName[playerid], 24); //Getting player's name 
    
GetPlayerIp(playeridIP[playerid], 16); //Getting layer's IP 
    
mysql_format(mysqlquerysizeof(query),"SELECT `IP`, `Password`, `IDs` FROM `players` WHERE `Username` = '%e' LIMIT 1"Name[playerid]); 
    
// - We use mysql_format instead of format because we can use an %e specifier. %e specifier escapes a string so we can avoid sql injection which means we don't have to use mysql_real_escape_string 
    // - Formatting our query; SELECT `Password`, `ID` FROM `players` WHERE `Username`='%e' means we are selecting a Password and ID's column in the table that has player's name in Username column. 
    // - LIMIT 1; we only need 1 result to be shown 
    
mysql_tquery(mysqlquery"OnAccountCheck""i"playerid); 
    
//lets execute the formatted query and when the execution is done, a callback OnAccountCheck will be called 
    //You can name the callback however you like 
    
return 1

//Now once the query has been processed; 
public OnAccountCheck(playerid

    new 
rowsfields//a variable that will be used to retrieve rows and fields in the database. 
    
cache_get_data(rowsfieldsmysql);//let's get the rows and fields from the database. 
    
if(rows//if there is row 
    

        
cache_get_field_content(0"IP"IP[playerid], mysql16); 
        new 
newIP[16]; 
        
GetPlayerIp(playeridnewIP16); 
        
IsPlayerRegisterd[playerid] = 1
        if(
strlen(IP[playerid]) != && !strcmp(IP[playerid], newIPtrue)) //Checks that the MySQL IP has a value and that they are the same. 
        

            
GameTextForPlayer(playerid"Loading Account"30003); 
            
SetTimerEx("OnAccountLoad"3000false"i"playerid); 
        } 
        else 
        { 
            (!
strlen(IP[playerid]) || strcmp(IP[playerid], newIPtrue)); 
            
//then 
            
cache_get_field_content(0"Password"pData[playerid][Password], mysql129); 
            
//we will load player's password into pData[playerid][Password] to be used in logging in 
            
pData[playerid][IDs] = cache_get_field_content_int(0"IDs"); //now let's load player's ID into pData[playerid][ID] so we can use it later 
            
printf("%s"pData[playerid][Password]); //OPTIONAL: Just for debugging. If it didn't show your password, then there must be something wrong while getting player's password 
            
ShowPlayerDialog(playeriddLOGINDIALOG_STYLE_INPUT"Login""In order to play, you need to login""Login""Quit"); //And since we found a result from the database, which means, there is an account; we will show a login dialog 
        

    } 
    else 
//if we didn't find any rows from the database, that means, no accounts were found 
    

        
ShowPlayerDialog(playeriddREGISTERDIALOG_STYLE_INPUT"Register""In order to play, you need to register.""Register""Quit"); 
        
//So we show them a dialog register 
    

    return 
1

//Now let's response to the login and register dialog 
public OnDialogResponse(playeriddialogidresponselistiteminputtext[]) 

    switch(
dialogid
    { 
        case 
dLOGIN//login dialog 
        

            if(!
responseKick(playerid); //if they clicked Quit, we will kick them 
            
new hpass[129]; //for password hashing 
            
new query[100]; // for formatting our query. 
            
WP_Hash(hpass129inputtext); //hashing inputtext 
            
if(!strcmp(hpasspData[playerid][Password])) //remember we have loaded player's password into this variable, pData[playerid][Password] earlier. Now let's use it to compare the hashed password with password that we load 
            
//if the hashed password matches with the loaded password from database 
                
mysql_format(mysqlquerysizeof(query), "SELECT * FROM `players` WHERE `Username` = '%e' LIMIT 1"Name[playerid]); 
                
//let's format our query 
                //We select all rows in the table that has your name and limit the result to 1 
                
mysql_tquery(mysqlquery"OnAccountLoad""i"playerid); 
                
//lets execute the formatted query and when the execution is done, a callback OnAccountLoad will be called 
                //You can name the callback however you like 
            

            else 
//if the hashed password didn't match with the loaded password(pData[playerid][Password]) 
            

                
//we tell them that they have inserted a wrong password 
                
ShowPlayerDialog(playeriddLOGINDIALOG_STYLE_INPUT"Login""In order to play, you need to login\nWrong password!""Login""Quit"); 
            } 
        } 
        case 
dREGISTER//register dialog 
        

            if(!
response) return Kick(playerid); //if they clicked Quit, we will kick them 
            
if(strlen(inputtext) < 6) return ShowPlayerDialog(playeriddREGISTERDIALOG_STYLE_INPUT"Register""In order to play, you need to register.\nYour password must be at least 6 characters long!""Register""Quit"); 
            
//strlen checks a lenght of a string. so if player types their password that is lower than 6, we tell them; Your password must be at least 6 characters long! 
            
new query[300]; 
            
WP_Hash(pData[playerid][Password], 129inputtext); //hashing inputtext 
            
mysql_format(mysqlquerysizeof(query), "INSERT INTO `players` (`Username`, `Password`, `IP`, `Admin`, `VIP`,`Kills`,`Deaths`,`Score`, `Money`) VALUES ('%e', '%s', '%s', 0, 0, 0, 0, 0, 50000)"Name[playerid], pData[playerid][Password], IP[playerid]); 
            
//Now let's create a new row and insert player's information in it 
            
mysql_tquery(mysqlquery"OnAccountRegister""i"playerid); 
            
//let's execute the query 
        

    } 
    return 
1

//let's load player's information 
public OnAccountLoad(playerid

    new 
score
     
pData[playerid][Admin] = cache_get_field_content_int(0"Admin"); //we're getting a field 4 from row 0. And since it's an integer, we use cache_get_row_int 
     
pData[playerid][VIP] = cache_get_field_content_int(0"VIP"); //Above 
     
pData[playerid][Money] = cache_get_field_content_int(0"Money");//Above 
     
pData[playerid][Kills] = cache_get_field_content_int(0,"Kills"); 
     
pData[playerid][Deaths] = cache_get_field_content_int(0"Deaths"); 
     
score cache_get_field_content_int(0"Score"); 
     
SetPlayerScore(playeridscore); 
     
GivePlayerMoney(playeridpData[playerid][Money]);//Let's set their money 
     //For player's position, set it once they spawn(OnPlayerSpawn) 
    
SendClientMessage(playerid, -1"Successfully logged in"); //tell them that they have successfully logged in 
    
return 1

public 
OnAccountRegister(playerid

    
pData[playerid][IDs] = cache_insert_id(); //loads the ID of the player in the variable once they registered. 
    
printf("New account registered. ID: %d"pData[playerid][IDs]); //just for debugging. 
    
pData[playerid][Money] = 50000
    
GivePlayerMoney(playerid50000); 
    return 
1

public 
OnPlayerDisconnect(playeridreason

    if(
IsPlayerRegisterd[playerid] != 0
    {      
        
SavePlayerData(playerid); 
    } 
    return 
1

public 
OnPlayerDeath(playeridkilleridreason

    if(
killerid != INVALID_PLAYER_ID
    { 
        
SetPlayerScore(killeridGetPlayerScore(killerid) + 1); 
        
pData[killerid][Kills]++; 
    } 
    
pData[playerid][Deaths]++; 
    return 
1

stock SavePlayerData(playerid

    new 
query[100]; //query[128] is for formatting our query and Float:pos[3] is for getting and saving player's position 
    
mysql_format(mysqlquerysizeof(query), "UPDATE `players` SET `IP`='%s', `Admin`=%d, `VIP`=%d, `Kills`=%d, `Deaths`=%d, `Score`=%d, `Money`=%d WHERE `IDs`=%d",\ 
    
IP[playerid], pData[playerid][Admin], pData[playerid][VIP], pData[playerid][Kills], pData[playerid][Deaths], GetPlayerScore(playerid), pData[playerid][Money], pData[playerid][IDs]); 
    
//We update the table(`players`) by getting player's admin level, vip level, money, and positions and save them in the database 
    
mysql_tquery(mysqlquery""""); 
    
//let's execute the query. 

CMD:setlevel(playeridparams[]) 

    new 
lookupidstr[128], level
    if(
pData[playerid][Admin] == 5
    { 
        if(
sscanf(params,"ud",lookupid,level)) return SendClientMessage(playerid, -1"Usage: /setlevel (UserID | UserName) (level)"); 
        if(
pData[lookupid][Admin] > pData[playerid][Admin]) return SendClientMessage(playerid, -1"Sorry you cant setlevel becoz his level is higher then you"); 
        if(
level ||level 5) return SendClientMessage(playerid, -1"1 to 5 levels"); //  you can change this to any level you want 
        
if(!IsPlayerConnected(lookupid)) return SendClientMessage(playerid, -1"Sorry this player isnt connected "); 
        if(
level pData[lookupid][Admin]) 
        { 
            
format(strsizeof(str), "Admin %s (ID:%d) has demoted you to level %d",GetName(playerid), playeridlevel); 
            
SendClientMessage(lookupid, -1str); 
            
format(strsizeof(str),"You have demoted %s (ID:%d) to level %d",GetName(lookupid),lookupid,level); 
            
SendClientMessage(playerid, -1str); 
        } 
        if(
level pData[lookupid][Admin]) 
        { 
            
format(strsizeof(str), "Admin %s (ID:%d) has promoted you to level %d",GetName(playerid), playeridlevel); 
            
SendClientMessage(lookupid, -1str); 
            
format(strsizeof(str),"You have promoted %s (ID:%d) to level %d",GetName(lookupid),lookupid,level); 
            
SendClientMessage(playerid, -1str); 
        } 
    } 
    else return 
SendClientMessage(playerid, -1"You are not authorized to can use this command"); 
    return 
1

CMD:setvip(playeridparams[]) 

    new 
lookupidstr[128], level
    if(
pData[playerid][Admin] == 5
    { 
        if(
sscanf(params,"ud",lookupid,level)) return SendClientMessage(playerid, -1"Usage: /setlevel (UserID | UserName) (level)"); 
        if(
pData[lookupid][Admin] > pData[playerid][Admin]) return SendClientMessage(playerid, -1"Sorry you cant setlevel becoz his level is higher then you"); 
        if(
level ||level 5) return SendClientMessage(playerid, -1,  "1 to 5 levels"); //  you can change this to any level you want 
        
if(!IsPlayerConnected(lookupid)) return SendClientMessage(playerid, -1"Sorry this player isnt connected "); 
        if(
level pData[lookupid][Admin]) 
        { 
            
format(strsizeof(str), "Admin %s (ID:%d) has demoted you to VIP level %d",GetName(playerid), playeridlevel); 
            
SendClientMessage(lookupid, -1str); 
            
format(strsizeof(str),"You have demoted %s (ID:%d) to VIP level %d",GetName(lookupid),lookupid,level); 
            
SendClientMessage(playerid, -1str); 
        } 
        if(
level pData[lookupid][Admin]) 
        { 
            
format(strsizeof(str), "Admin %s (ID:%d) has promoted you to VIP level %d",GetName(playerid), playeridlevel); 
            
SendClientMessage(lookupid, -1str); 
            
format(strsizeof(str),"You have promoted %s (ID:%d) to VIP level %d",GetName(lookupid),lookupid,level); 
            
SendClientMessage(playerid, -1str); 
        } 
    } 
    else return 
SendClientMessage(playerid, -1"You are not authorized to can use this command"); 
    return 
1

CMD:stats(playeridparams[]) 
{     
    new 
str[64]; 
    new 
deaths pData[playerid][Deaths]; 
    if(!
deathsdeaths 1
    new 
Float:kd =  floatdiv(pData[playerid][Kills], deaths); 
    
format(strsizeof(str),"Your Stats\nScore: %d\nKills: %d\nDeaths: %d\nKD-Ratio: %0.2f\nMoney: %d\n Level: %d",pData[playerid][Score],pData[playerid][Kills],pData[playerid][Deaths],kd,pData[playerid][Money],pData[playerid][Admin]); 
    
ShowPlayerDialog(playeriddSTATS,DIALOG_STYLE_MSGBOX,"Account stats",str"Close",""); 
    return 
1

CMD:mute(playeridparams[]) 

    if(
pData[playerid][Admin] >= 3// player is not admin 
    

        new 
idminsstr[128]; 
        if(
sscanf(params,"ui",id,mins)) return SendClientMessage(playerid, -1,"Usage: /mute <playerid> <minutes>"); 
        if (!
IsPlayerConnected(id)) return 1// invalid player 
        
if(pMuted[id] == true) return SendClientMessage(playeridCOLOR_RED,"already muted "); 
        
pMuted[id] = true
        
format(strsizeof(str),"Admin %s (ID:%d) has muted %s (ID:%d) for %d min(s)",GetName(playerid), playeridGetName(id), idmins); 
        
SendClientMessageToAll(COLOR_REDstr); 
        
SetTimerEx("UnMutedTimer"60*1000*minsfalse"i"id); //60*1000 = 1 minute 
    

    return 
1

CMD:unmute(playeridparams[]) 

    if(
pData[playerid][Admin] >= 3// player is not admin 
    

        new 
idstr[128]; 
        if(
sscanf(params,"u",id)) return SendClientMessage(playeridCOLOR_CMY,"Usage: /mute <playerid>"); 
        if(!
IsPlayerConnected(id)) return SendClientMessage(playeridCOLOR_CMY,"target is not connected"); // invalid player id 
        
if(pMuted[id] == false) return SendClientMessage(playeridCOLOR_RED,"Player is not muted "); 
        
pMuted[id] = false
        
format(strsizeof(str),"Admin %s (ID:%d) has unmuted %s (ID:%d)",GetName(playerid), playeridGetName(id), id); 
        
SendClientMessageToAll(COLOR_REDstr); 
    } 
    return 
1

public 
UnMutedTimer(playerid

    new 
str[128]; 
    
pMuted[playerid] = false
    
format(str,sizeof(str),"%s (ID:%d) has been auto unmuted by server ",GetName(playerid), playerid); 
    
SendClientMessageToAll(COLOR_REDstr); 
    return 
1

CMD:setmoney(playeridparams[]) 

    new 
str[128], lookupidamount
    if(
pData[playerid][Admin] >= 3
    { 
        if(
sscanf(params"ui",lookupidamount)) return SendClientMessage(playerid ,COLOR_YELLOW"Usage: /setmoney <playerid/Name> <amount>"); 
        if(!
IsPlayerConnected(lookupid)) return SendClientMessage(playeridCOLOR_YELLOW"Player is not connected"); 
        
format(strsizeof(str), "Admin %s (ID:%d) has setted %s (ID:%d) money count to (%d)"GetName(playerid), playeridGetName(lookupid),lookupidamount); 
        
SendClientMessage(lookupidCOLOR_YELLOWstr); 
        
SetPlayerMoney(lookupidamount); 
        
pData[lookupid][Money] = amount
    } else return 
SendClientMessage(playeridCOLOR_YELLOW"Only admin level 3+ can use this cmd"); 
    return 
1

CMD:setscore(playeridparams[]) 

    new 
str[128], lookupidamount
    if(
pData[playerid][Admin] >= 3
    { 
        if(
sscanf(params"ui",lookupidamount)) return SendClientMessage(playerid ,COLOR_YELLOW"Usage: /setscore <playerid/Name> <amount>"); 
        if(!
IsPlayerConnected(lookupid)) return SendClientMessage(playeridCOLOR_YELLOW"Player is not connected"); 
        
format(strsizeof(str), "Admin %s (ID:%d) has setted %s (ID:%d) score count to (%d)"GetName(playerid), playeridGetName(lookupid),lookupidamount); 
        
SendClientMessage(lookupidCOLOR_YELLOWstr); 
        
SetPlayerScore(lookupidamount); 
        
pData[lookupid][Score] = amount
    } else return 
SendClientMessage(playeridCOLOR_YELLOW"Only admin level 3+ can use this cmd"); 
    return 
1

CMD:setdeaths(playeridparams[]) 

    new 
str[128], lookupidamount
    if(
pData[playerid][Admin] >= 3
    { 
        if(
sscanf(params"ui",lookupidamount)) return SendClientMessage(playerid ,COLOR_YELLOW"Usage: /setdeaths <playerid/Name> <amount>"); 
        if(!
IsPlayerConnected(lookupid)) return SendClientMessage(playeridCOLOR_YELLOW"Player is not connected"); 
        
format(strsizeof(str), "Admin %s (ID:%d) has setted %s (ID:%d) Death count to (%d)"GetName(playerid), playeridGetName(lookupid),lookupidamount); 
        
SendClientMessage(lookupidCOLOR_YELLOWstr); 
        
pData[lookupid][Deaths] = amount
    } else return 
SendClientMessage(playeridCOLOR_YELLOW"Only admin level 3+ can use this cmd"); 
    return 
1

CMD:setkills(playeridparams[]) 

    new 
str[128], lookupidamount
    if(
pData[playerid][Admin] >= 3
    { 
        if(
sscanf(params"ui",lookupidamount)) return SendClientMessage(playerid ,COLOR_YELLOW"Usage: /sekills <playerid/Name> <amount>"); 
        if(!
IsPlayerConnected(lookupid)) return SendClientMessage(playeridCOLOR_YELLOW"Player is not connected"); 
        
format(strsizeof(str), "Admin %s (ID:%d) has setted %s (ID:%d) Kill count to (%d)"GetName(playerid), playeridGetName(lookupid),lookupidamount); 
        
SendClientMessage(lookupidCOLOR_YELLOWstr); 
        
pData[lookupid][Kills] = amount
    } else return 
SendClientMessage(playeridCOLOR_YELLOW"Only admin level 3+ can use this cmd"); 
    return 
1

CMD:blockcommand(playeridparams[]) 

    if(!
IsPlayerAdmin(playerid)) return 0
    new 
command[25]; 
    if(
sscanf(params"s[25]"command)) return SendClientMessage(playerid, -1"USAGE: /blockcommand [command]"); 
    if(
command[0] == '/'strdel(command01); 
    new 
slotfree = -1
    for(new 
0MAX_COMMAND_BLOCKEDi++) 
    { 
        if(
BlockedCommand[i][0] == '\0'slotfree i
        else if(!
strcmp(BlockedCommand[i], commandtrue)) return SendClientMessage(playerid, -1"This command is already blocked. Use '/unblockcommand [command]' to unblock it."); 
        if(
slotfree != -1) continue; 
    } 
    if(
slotfree == -1) return SendClientMessage(playerid, -1"You have reached the maximum limit of blocked commands. Please unblock some before proceeding."); 
    
format(BlockedCommand[slotfree], 25"%s"command); 
    
SendClientMessage(playerid, -1"SUCCESS: Command Blocked successfully."); 
    return 
1

CMD:blockcmd(playeridparams[]) return cmd_blockcommand(playeridparams); 
CMD:unblockcommand(playeridparams[]) 

    if(!
IsPlayerAdmin(playerid)) return 0
    new 
command[25]; 
    if(
sscanf(params"s[25]"command)) return SendClientMessage(playerid, -1"USAGE: /unblockcommand [command]"); 
    if(
command[0] == '/'strdel(command01); 
    new 
slotfree = -1
    for(new 
0MAX_COMMAND_BLOCKEDi++) 
    { 
        if(!
strcmp(BlockedCommand[i], commandtrue) && BlockedCommand[i][0] != '\0'
        { 
            
slotfree i
            break; 
        } 
    } 
    if(
slotfree == -1) return SendClientMessage(playerid, -1"This command is not blocked. Use '/blockcommand [command]' to block it."); 
    
strdel(BlockedCommand[slotfree], 0strlen(BlockedCommand[slotfree])); 
    
SendClientMessage(playerid, -1"SUCCESS: Command Unblocked successfully."); 
    return 
1

CMD:unblockcmd(playeridparams[]) return cmd_unblockcommand(playeridparams); 
public 
OnPlayerCommandPerformed(playeridcmdtext[], success

    new 
bool:CMD_BLOCKED false
    for(new 
0MAX_COMMAND_BLOCKEDi++) 
    { 
        if(
BlockedCommand[i][0] == '\0') continue; 
        if(
cmdtext[0] == '/'
        { 
            if(!
strcmp(BlockedCommand[i], cmdtext[1], true)) CMD_BLOCKED true
        } 
        else if(!
strcmp(BlockedCommand[i], cmdtexttrue)) CMD_BLOCKED true
        else continue; 
    } 
    if(
CMD_BLOCKED) return SendClientMessage(playeridCOMMAND_BLOCKED_COLORCOMMAND_BLOCKED_MSG); 
    return 
success

stock GetName(playerid

    new 
PlayerName[MAX_PLAYER_NAME]; 
    
GetPlayerName(playeridPlayerNamesizeof(PlayerName)); 
    return 
PlayerName

stock SetPlayerMoney(playeridmoney

     
ResetPlayerMoney(playerid); 
     
GivePlayerMoney(playeridmoney); 
     return 
1

Reply
#2

I need help as fast as you can guyz. How can i script it so it ask new players for registration and old players for login on player connect.
Reply
#3

Do you have XAMPP installed?If not install it.

You can use other MySQL servers too but you'll have to change the host,pass,user,db defines.
Reply
#4

Are you sure that you have mysql server and having its tables and fields?.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)