wojownik27
Wiek: 47 Na forum: 4771 dni Posty: 23
Nick w MP: KolekcjaMilitarna
Piwa : 46
Witam mam tak? rejestracj? jak podaj? poni?ej ca?y kod skrypt dzia?a wszystko jest ok ale po zarejestrowaniu si? nie ma logowania tylko jest ponownie rejestracja oznacza to ?e czego? brakuje w FTP tylko czego prosz? was o pomoc...
Kod: #include "bRegLite_INC.inc"
#include "zcmd.inc"
#define DIALOG_REG (7300)
#define DIALOG_LOG (7400)
#define DIALOG_TOP (7500)
new query[128], DB:b_Acc;
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
public OnFilterScriptInit()
{
b_Acc = db_open("Acc 3.0.db");
db_free_result(db_query(b_Acc, "CREATE TABLE IF NOT EXISTS `players` ( `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, `login` VARCHAR UNIQUE NOT NULL, `pass` VARCHAR NOT NULL, `respect` INTEGER DEFAULT '0' NOT NULL, `money` INTEGER DEFAULT '10000' NOT NULL );"));
return 1;
}
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
public OnFilterScriptExit()
return db_close(b_Acc);
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
public OnPlayerConnect(playerid)
{
new DBResult:result, Text:respekt;
format(query, sizeof query, "SELECT `id` FROM `players` WHERE `login` = '%s'", PlayerName(playerid));
result = db_query(b_Acc, query);
if(!db_num_rows(result))
ShowPlayerDialog(playerid, DIALOG_REG, DIALOG_STYLE_INPUT, "Zarejestruj si?", "Aby gra? na tym serwerze musisz si? zarejestrowa?\n * Podaj has?o:", "Rejestruj", "Wyjd?");
else
ShowPlayerDialog(playerid, DIALOG_LOG, DIALOG_STYLE_INPUT, "Zaloguj si?", "Istnieje konto o twoim nicku\n * Musisz si? zalogowa?", "Zaloguj", "Wyjd?");
db_free_result(result);
respekt = TextDrawCreate(503.000000, 98.000000, " ");
TextDrawBackgroundColor(respekt, 0x000000FF);
TextDrawFont(respekt,3);
TextDrawLetterSize(respekt, 0.499999, 1.700000);
TextDrawColor(respekt, 0xC99229FF);
TextDrawShowForPlayer(playerid, respekt);
return SetPVarInt(playerid, "b_AccTD", _:respekt);
}
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
public OnPlayerDisconnect(playerid, reason)
{
format(query, sizeof query, "UPDATE `players` SET `money` = %d WHERE `login` = '%s'", GetPlayerMoney(playerid), PlayerName(playerid));
db_free_result(db_query(b_Acc, query));
new Text:respekt = Text:GetPVarInt(playerid, "b_AccTD");
TextDrawHideForPlayer(playerid, respekt);
TextDrawDestroy(respekt);
return 1;
}
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
public OnPlayerDeath(playerid, killerid, reason)
{
if(killerid == INVALID_PLAYER_ID)
{
format(query, sizeof query, "UPDATE `players` SET `respect` = `respect` - 1 WHERE `login` = '%s'", PlayerName(playerid));
db_free_result(db_query(b_Acc, query));
return RefreshRespect(playerid);
}
else
{
format(query, sizeof query, "UPDATE `players` SET `respect` = `respect` - 2 WHERE `login` = '%s'", PlayerName(playerid));
db_free_result(db_query(b_Acc, query));
format(query, sizeof query, "UPDATE `players` SET `respect` = `respect` + 2 WHERE `login` = '%s'", PlayerName(killerid));
db_free_result(db_query(b_Acc, query));
return RefreshRespect(playerid), RefreshRespect(killerid);
}
}
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case DIALOG_REG:
{
if(!response)
return SendClientMessage(playerid, 0x800000AA, "Rejestracja na tym serwerze jest obowi?zkowa!"), Kick(playerid);
switch(strlen(inputtext))
{
case 5..20:
{
new message[128];
ConvertToSQLitePass(inputtext);
format(query, sizeof query, "INSERT INTO `players` (`login`, `pass`) VALUES ('%s', '%s');", PlayerName(playerid), inputtext);
db_free_result(db_query(b_Acc,query));
RefreshRespect(playerid);
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, 10000);
format(message, sizeof message, "Poprawnie za?orzy?e? konto twoje has?o to >>> %s <<<", inputtext);
return SendClientMessage(playerid, 0x80FF00AA, message);
}
default:
return ShowPlayerDialog(playerid, DIALOG_REG, DIALOG_STYLE_INPUT, "Zarejestruj si?", "Has?o musi zawiera? od 5 do 20 znak?w", "Rejestruj", "Wyjd?");
}
}
case DIALOG_LOG:
{
if(!response)
return SendClientMessage(playerid, 0x800000AA, "Ten nick jest ju? zarejestrowany w naszej bazie, musisz si? zalogowa?!"), Kick(playerid);
new DBResult:result, money[16];
ConvertToSQLitePass(inputtext);
format(query, sizeof query, "SELECT `money` FROM `players` WHERE `login` = '%s' AND `pass` = '%s'", PlayerName(playerid), inputtext);
result = db_query(b_Acc, query);
if(!db_num_rows(result))
return ShowPlayerDialog(playerid, DIALOG_LOG, DIALOG_STYLE_INPUT, "Zaloguj si?", "Istnieje konto o twoim nicku\n\tMusisz si? zalogowa?\nB??d: poda?e? nieprawid?owe has?o!", "Zaloguj", "Wyjd?");
db_get_field(result, 0, money, sizeof money);
db_free_result(result);
RefreshRespect(playerid);
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, strval(money));
return SendClientMessage(playerid, 0x80FF00AA, "Zalogowano!");
}
}
return 0;
}
// Wywo?ywanie komend z innych nazw np. "/changepass 1234" = "/pass 1234"
CMD:changepass(playerid, params[])
return cmd_pass(playerid, params);
CMD:zmienhaslo(playerid, params[])
return cmd_pass(playerid, params);
CMD:nowynick(playerid, params[])
return cmd_nick(playerid, params);
CMD:zmiennick(playerid, params[])
return cmd_nick(playerid, params);
CMD:nick(playerid, params[])
{
new DBResult:result;
if(isnull(params) || strlen(params) > MAX_PLAYER_NAME)
return SendClientMessage(playerid, 0x800040AA, "/nick [nowy nick]");
if(!IsValidPlayerName(params))
return SendClientMessage(playerid, 0x800040AA, "Zmiana nicku: poda?e? nieprawid?owy nick!");
format(query, sizeof query, "SELECT `id` FROM `players` WHERE `login` = '%s'", params);
result = db_query(b_Acc, query);
if(db_num_rows(result))
return SendClientMessage(playerid, 0x800040AA, "Zmiana nicku: ten nick jest ju? zaj?ty!");
db_free_result(result);
format(query, sizeof query, "UPDATE `players` SET `login` = '%s' WHERE `login` = %s", params, PlayerName(playerid));
db_free_result(db_query(b_Acc, query));
SetPlayerName(playerid, params);
SendClientMessage(playerid, 0x80FF00AA, "Prawid?owo zmieni?e? nick i przenis?e? swoje statystyki! Tw?j nowy nick to:");
SendClientMessage(playerid, 0x0080FFAA, PlayerName(playerid));
return 1;
}
CMD:pass(playerid, params[])
{
if(isnull(params) || strlen(params) > 24 || strlen(params) < 5)
return SendClientMessage(playerid, 0x800040AA, "/pass [nowe has?o]");
ConvertToSQLitePass(params);
format(query, sizeof query, "UPDATE `players` SET `pass` = '%s' WHERE `login` = '%s'", params, PlayerName(playerid));
db_free_result(db_query(b_Acc, query));
SendClientMessage(playerid, 0x80FF00AA, "Prawid?owo zmieni?e? has?o! Twoje nowe has?o to:");
SendClientMessage(playerid, 0x0080FFAA, params);
return 1;
}
CMD:top10(playerid, params[])
{
new DBResult:result, buf_Nick[MAX_PLAYER_NAME], buf_resp[8], dialog[512] = " ** Lista Top 10 Graczy: **\n";
result = db_query(b_Acc, "SELECT `login`, `respect` FROM `players` ORDER BY `respect` DESC LIMIT 10");
do
{
db_get_field(result, 0, buf_Nick, sizeof(buf_Nick));
db_get_field(result, 1, buf_resp, sizeof(buf_resp));
format(dialog, sizeof dialog, "%s\n\t%sp. %s", dialog, buf_Nick, buf_resp);
}
while(db_next_row(result));
format(dialog, sizeof dialog, "%s\n_____________________________________________________________", dialog);
db_free_result(result);
ShowPlayerDialog(playerid, DIALOG_TOP, DIALOG_STYLE_MSGBOX, "TOP 10", dialog, "OK", "Wyjd?");
}
CMD:top25(playerid, params[])
{
new DBResult:result, buf_Nick[MAX_PLAYER_NAME], buf_resp[8], dialog[512] = " ** Lista Top 25 Graczy: **\n";
result = db_query(b_Acc, "SELECT `login`, `respect` FROM `players` ORDER BY `respect` DESC LIMIT 25");
do
{
db_get_field(result, 0, buf_Nick, sizeof(buf_Nick));
db_get_field(result, 1, buf_resp, sizeof(buf_resp));
format(dialog, sizeof dialog, "%s\n\t%sp. %s", dialog, buf_Nick, buf_resp);
}
while(db_next_row(result));
format(dialog, sizeof dialog, "%s\n_____________________________________________________________", dialog);
db_free_result(result);
ShowPlayerDialog(playerid, DIALOG_TOP, DIALOG_STYLE_MSGBOX, "TOP 25", dialog, "OK", "Wyjd?");
}
stock PlayerName(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, MAX_PLAYER_NAME);
return name;
}
stock RefreshRespect(playerid)
{
new DBResult:result, TD_string[16], tmp_resp[8];
format(query, sizeof query, "SELECT `respect` FROM `players` WHERE `login` = '%s'", PlayerName(playerid));
result = db_query(b_Acc, query);
db_get_field(result, 0, tmp_resp, sizeof tmp_resp);
db_free_result(result);
format(TD_string, sizeof TD_string, "Respekt: %s", tmp_resp);
TextDrawSetString(Text:GetPVarInt(playerid, "b_AccTD"), TD_string);
SetPlayerScore(playerid, strval(tmp_resp));
return 1;
}
stock ConvertToSQLitePass(password[])
{
for(new c, len = strlen(password); c != len; c++)
{
switch(password[c])
{
case 39, 92:
password[c] = ' ';
}
}
}
stock IsValidPlayerName(name[])
{
new len = strlen(name);
if(len > 24 || len < 3)
return 0;
for(new c; c != len; c++)
switch(name[c])
{
case 'a'..'z', 'A'..'Z', '0'..'9', '[', ']':
continue;
default:
return 0;
}
return 1;
}
/*
Funckje do obs?ugi bRegLite_INC
*/
forward b_AddPlayerRespect(playerid, resp_val);
public b_AddPlayerRespect(playerid, resp_val)
{
if(!IsPlayerConnected(playerid) || IsPlayerNPC(playerid))
return INVALID_PLAYER_ID;
format(query, sizeof query, "UPDATE `players` SET `respect` = `respect` + %d WHERE `login` = '%s'", resp_val, PlayerName(playerid));
return db_free_result(db_query(b_Acc, query));
}
forward b_GetPlayerRespect(playerid);
public b_GetPlayerRespect(playerid)
{
new DBResult:result, tmp_resp[8];
format(query, sizeof query, "SELECT `respect` FROM `players` WHERE `login` = '%s'", PlayerName(playerid));
result = db_query(b_Acc, query);
db_get_field(result, 0, tmp_resp, sizeof tmp_resp);
db_free_result(result);
return strval(tmp_resp);
}
forward b_RespectUpdate(playerid);
public b_RespectUpdate(playerid)
return RefreshRespect(playerid);
Czekam na odp....
Mo?e potrzebny jaki? plugin?...