Pozdrav.
Krenuo sam raditi mod od pocetka naravno, koristio sam mysql R41-2 register/login tutorial koji sam nasao ovdje na forumu, ali mi ne zeli pokazati pocetni dialog, kada udjem i igru. znaci samo one dvije strelice i tipka spawn.
trazio sam prosle postove o tome, pokusao sve moguce sto sam pronasao, ali i dalje ne radi.
imam mysql plugin u server.cfg. skripta je bez warninga i gresaka.
link straince tutoriala: http://balkan-samp.com/forum/index.php?topic=111286.0
Evo skripte:
//============================================================================//
// < Includes > //
//============================================================================//
#include <a_samp>
#include <a_mysql>
//============================================================================//
// < Defines > //
//============================================================================//
#define MYSQL_HOST "localhost"
#define MYSQL_USER "root"
#define MYSQL_PASSWORD ""
#define MYSQL_DATABASE "xtrucking"
#define D_Register 1
#define D_Login 2
#define GPN GetPlayerName
#define SPD ShowPlayerDialog
#define DSP DIALOG_STYLE_PASSWORD
#define DSI DIALOG_STYLE_INPUT
//============================================================================//
static MySQL:Database,pName[MAX_PLAYERS][24];
//============================================================================//
// < Enumators > //
//============================================================================//
enum e_User_Data
{
iSQLID,
iPassword[65],
iSalt[11],
iRegDate[65],
iScore,
iAdmin
}
//============================================================================//
// < Arrays > //
//============================================================================//
new pInfo[MAX_PLAYERS][e_User_Data];
//============================================================================//
// < Main > //
//============================================================================//
main()
{
print("\n----------------------------------");
print(" Blank Gamemode by your name here");
print("----------------------------------\n");
}
//============================================================================//
// < Publics > //
//============================================================================//
public OnGameModeInit()
{
Database = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE);
if(mysql_errno(Database) != 0 || Database == MYSQL_INVALID_HANDLE) { print(" "); print("MYSQL | Connection with database has not been established. Shutting down!"); printf("MYSQL | Error code: %d",mysql_errno(Database)); print(" "); print(" "); SendRconCommand("exit"); return true; }
else { print("MYSQL | Connection with database has been established!"); print(" "); print (" "); }
mysql_log(ALL);
mysql_tquery(Database, "CREATE TABLE IF NOT EXISTS `Players` ( `ID` INT NOT NULL AUTO_INCREMENT , `Name` VARCHAR(24) NOT NULL , `Password` VARCHAR(65) NOT NULL , `Salt` VARCHAR(11) NOT NULL , `Regdate` DATETIME NOT NULL , PRIMARY KEY (`ID`))");
// Don't use these lines if it's a filterscript
SetGameModeText("Blank Script");
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
return true;
}
//============================================================================//
public OnGameModeExit()
{
return true;
}
//============================================================================//
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
return true;
}
//============================================================================//
public OnPlayerConnect(playerid)
{
new query[128];
mysql_format(Database, query, sizeof(query), "SELECT * FROM Players WHERE Name=`%e` LIMIT 1", PlayerName(playerid));
mysql_tquery(Database, query, "PlayerAccountCheck", "i", playerid);
return true;
}
//============================================================================//
public OnPlayerDisconnect(playerid)
{
PlayerAccountUpdate(playerid);
return true;
}
//============================================================================//
public OnPlayerSpawn(playerid)
{
return true;
}
//============================================================================//
public OnPlayerDeath(playerid, killerid, reason)
{
return true;
}
//============================================================================//
public OnVehicleSpawn(vehicleid)
{
return true;
}
//============================================================================//
public OnVehicleDeath(vehicleid, killerid)
{
return true;
}
//============================================================================//
public OnPlayerText(playerid, text[])
{
return true;
}
//============================================================================//
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/mycommand", cmdtext, true, 10) == 0)
{
// Do something here
return true;
}
return 0;
}
//============================================================================//
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
return true;
}
//============================================================================//
public OnPlayerExitVehicle(playerid, vehicleid)
{
return true;
}
//============================================================================//
public OnPlayerStateChange(playerid, newstate, oldstate)
{
return true;
}
//============================================================================//
public OnPlayerEnterCheckpoint(playerid)
{
return true;
}
//============================================================================//
public OnPlayerLeaveCheckpoint(playerid)
{
return true;
}
//============================================================================//
public OnPlayerEnterRaceCheckpoint(playerid)
{
return true;
}
//============================================================================//
public OnPlayerLeaveRaceCheckpoint(playerid)
{
return true;
}
//============================================================================//
public OnRconCommand(cmd[])
{
return true;
}
//============================================================================//
public OnPlayerRequestSpawn(playerid)
{
return true;
}
//============================================================================//
public OnObjectMoved(objectid)
{
return true;
}
//============================================================================//
public OnPlayerObjectMoved(playerid, objectid)
{
return true;
}
//============================================================================//
public OnPlayerPickUpPickup(playerid, pickupid)
{
return true;
}
//============================================================================//
public OnVehicleMod(playerid, vehicleid, componentid)
{
return true;
}
//============================================================================//
public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
return true;
}
//============================================================================//
public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
return true;
}
//============================================================================//
public OnPlayerSelectedMenuRow(playerid, row)
{
return true;
}
//============================================================================//
public OnPlayerExitedMenu(playerid)
{
return true;
}
//============================================================================//
public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
return true;
}
//============================================================================//
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
return true;
}
//============================================================================//
public OnRconLoginAttempt(ip[], password[], success)
{
return true;
}
//============================================================================//
/*forward PlayerAccountCheck(playerid);
public PlayerAccountCheck(playerid)
{
if(cache_num_rows() > 0)
{
cache_get_value(0,"Lozinka",pInfo[playerid][iPassword],65);
cache_get_value(0,"Salt",pInfo[playerid][iSalt],11);
SPD(playerid,D_Login,DSP,"Prijava", "Vas racun je pronadjen, molimo vas upisite lozinku da se prijavite:", "Dalje", "Izlaz");
}
else
{
SPD(playerid,D_Register,DSI,"Registracija", "Vas racun nije pronadjen, molimo vas upisite lozinku da se registrujete:", "Dalje", "Izlaz");
}
return true;
}*/
//============================================================================//
forward PlayerAccountRegister(playerid);
public PlayerAccountRegister(playerid)
{
pInfo[playerid][iSQLID] = cache_insert_id(); // uzimamo id igraca koji je unesen u bazu
SendClientMessage(playerid, -1, "Registrovali ste se na server.");
return true;
}
//============================================================================//
forward PlayerAccountUpdate(playerid);
public PlayerAccountUpdate(playerid)
{
new query[128];
mysql_format(Database, query, sizeof(query), "UPDATE Players SET Score=`%d`, Admin=`%d` WHERE ID=`%d`", pInfo[playerid][iScore], pInfo[playerid][iAdmin], pInfo[playerid][iSQLID]);
mysql_tquery(Database, query);
return true;
}
//============================================================================//
forward PlayerAccountLoad(playerid);
public PlayerAccountLoad(playerid)
{
if(cache_num_rows() > 0)
{
cache_get_value_int(0, "ID", pInfo[playerid][iSQLID]);
cache_get_value(0, "Regdate", pInfo[playerid][iRegDate], 65);
// ovde ispod dodajete spawn, novac i slicno
printf("SQLID: %d | Register date: %s", pInfo[playerid][iSQLID], pInfo[playerid][iRegDate]);
SendClientMessage(playerid, -1, "Dobrodosli nazad.");
}
return true;
}
//============================================================================//
public OnPlayerStreamIn(playerid, forplayerid)
{
return true;
}
//============================================================================//
public OnPlayerStreamOut(playerid, forplayerid)
{
return true;
}
//============================================================================//
public OnVehicleStreamIn(vehicleid, forplayerid)
{
return true;
}
//============================================================================//
public OnVehicleStreamOut(vehicleid, forplayerid)
{
return true;
}
//============================================================================//
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case D_Register: Dialog_Register(playerid,response,inputtext);
case D_Login: Dialog_Login(playerid,response,inputtext);
}
return true;
}
//============================================================================//
public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
return true;
}
//============================================================================//
// < Dialogs > //
//============================================================================//
Dialog_Register(playerid,response,inputtext[])
{
new query[256];
switch(response)
{
case 1:
{
if(strlen(inputtext) < 6 || strlen(inputtext) > 20) // ako je lozinka kraca od 6 i duza od 20 karaktera vraca dialog
{
SPD(playerid, D_Register, DIALOG_STYLE_INPUT, "Registracija", "Vas racun nije pronadjen, molimo vas upisite lozinku da se registrujete:", "Dalje", "Izlaz");
return true;
}
for (new i = 0; i < 10; i++) { pInfo[playerid][iSalt][i] = random(100) + 50; }
pInfo[playerid][iSalt][10] = 0;
SHA256_PassHash(inputtext, pInfo[playerid][iSalt], pInfo[playerid][iPassword], 65);
mysql_format(Database,query,sizeof(query),"INSERT INTO Players SET Name=`%e`, Password=`%e`, Salt=`%e`, Regdate=NOW()", PlayerName(playerid), pInfo[playerid][iPassword], pInfo[playerid][iSalt]);
mysql_tquery(Database, query, "PlayerAccountRegister", "d", playerid);
}
case 0:
{
Kick(playerid);
return true;
}
}
return true;
}
//============================================================================//
Dialog_Login(playerid,response,inputtext[])
{
new buf[65], query[256];
switch(response)
{
case 1:
{
SHA256_PassHash(inputtext, pInfo[playerid][iSalt], buf, 65);
if(strcmp(buf, pInfo[playerid][iPassword]) == 0)
{
mysql_format(Database, query, sizeof(query), "SELECT * FROM Players WHERE Name = `%e` LIMIT 1", PlayerName(playerid));
mysql_tquery(Database, query, "PlayerAccountLoad", "i", playerid);
}
else
{
ShowPlayerDialog(playerid, D_Login, DIALOG_STYLE_PASSWORD, "Prijava", "Lozinka koju ste uneli nije ispravna, pokusajte ponovo:", "Dalje", "Izlaz");
}
}
case 0:
{
Kick(playerid);
return true;
}
}
return true;
}
//============================================================================//
// < Stocks > //
//============================================================================//
stock PlayerName(playerid)
{
new oyString[24];
GPN(playerid,pName[playerid],24);
format(oyString,sizeof(oyString),"%s",pName[playerid]);
return oyString;
}
Hvala unaprijed.
Provjeri mysql logs, da li ima ista u mysql error.txt datoteci?
dobivam ovaj error u mysql log dadoteci
[22:54:50] [ERROR] error #1054 while executing query "SELECT * FROM Players WHERE Name=`RoadKing[CRO].` LIMIT 1": Unknown column 'RoadKing[CRO].' in 'where clause'
ovaj query
mysql_format(Database, query, sizeof(query), "SELECT * FROM Players WHERE Name=`%e` LIMIT 1", PlayerName(playerid));
zamjeni ovim
mysql_format(Database, query, sizeof(query), "SELECT * FROM Players WHERE Name='%e' LIMIT 1", PlayerName(playerid));
Jel sam samo ja ili oba kverija izgledaju isto?
@Ino42O
Citat: nikisb poslato Avgust 07, 2018, 07:41:59 PRE PODNE
Jel sam samo ja ili oba kverija izgledaju isto? @Ino42O
Samo si ti. Razlija je izgleda u apostrofima kod
Name='%e' .
To cu isprobati dok dodjem s posla.
na telefonu je totalno isto izgledalo, sad na kompu je durgacije xd
Sada sve radi. Hvala puno na pomoci.
Recite mi jos samo molim vas razliku izmedju ` i ' .
Poput ovoga Name=`%e` i Name='%e'
' je za string
` je za query kolone i tablice
`kolona`
'string'
stoga bi bilo
`Name`='%e'
Hvala decki. sve je rjeseno sada.