От
erg rfbfdh
//
#include <a_samp>
#include <a_mysql>
#define MYSQL_HOST "localhost"
#define MYSQL_USER "root"
#define MYSQL_PASS ""
#define MYSQL_BASE "newsamp"
#define SCM SendClientMessage
#define SPD ShowPlayerDialog
#define COLOR_WHITE 0xFFFFFFFF
new MySQL: dbHandle;
new query[256];
enum
{
DLG_NOME,
DLG_REG,
DLG_REG_GENDER,
DLG_REG_AGE,
DLG_LOGIN,
};
enum PLAYER_INFO
{
id,
name[MAX_PLAYER_NAME + 1],
pass[22 + 1],
gender,
age,
skin,
level,
};
new player_info[MAX_PLAYERS] [PLAYER_INFO];
//
main()
{
print("\n----------------------------------");
print(" Blank Gamemode by your name here");
print("----------------------------------\n");
}
public OnGameModeInit()
{
dbHandle = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS, MYSQL_BASE);
if(mysql_errno()!= 0)
{
print("[MySQL R41-4]: Ïîäêëþ÷åíèå ê áàçå äàííûõ: íåóñïåøíî");
return SendRconCommand("exit");
}
else
{
print("[MySQL R41-4]: Ïîäêëþ÷åíèå ê áàçå äàííûõ: óñïåøíî");
}
SetGameModeText("Parallel");
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
return 1;
}
public OnGameModeExit()
{
mysql_close(dbHandle);
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, 2534.7480,2427.5808,54.9348);
InterpolateCameraPos(playerid, 2552.605224, 2426.749267, 22.178434, 2552.605224, 2426.749267, 22.178434, 1000);
InterpolateCameraLookAt(playerid, 2555.998535, 2423.079589, 22.311231, 2555.998535, 2423.079589, 22.311231, 1000);
return 1;
}
public OnPlayerConnect(playerid)
{
GetPlayerName(playerid, player_info[playerid][name], MAX_PLAYER_NAME);
SetTimerEx("CheckAccountFromMysql", 1000, false, "i",playerid);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
return 1;
}
public OnPlayerSpawn(playerid)
{
SetPlayerSkin(playerid, player_info[playerid][skin]);
SetPlayerScore(playerid, player_info[playerid][level]);
SetPlayerColor(playerid, 0x99999900);
switch(random(3))
{
case 0:
{
SetPlayerPos(playerid,1758.4210,-1893.0044,13.5560);
SetPlayerFacingAngle(playerid, 265.3591);
SetCameraBehindPlayer(playerid);
}
case 1:
{
SetPlayerPos(playerid,1155.0690,-1771.6304,16.5992);
SetPlayerFacingAngle(playerid, 355.5767);
SetCameraBehindPlayer(playerid);
}
case 2:
{
SetPlayerPos(playerid,2223.0942,-1175.4476,25.7266);
SetPlayerFacingAngle(playerid, 359.4460);
SetCameraBehindPlayer(playerid);
}
}
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
return 1;
}
public OnVehicleSpawn(vehicleid)
{
return 1;
}
public OnVehicleDeath(vehicleid, killerid)
{
return 1;
}
public OnPlayerText(playerid, text[])
{
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
return 1;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
return 1;
}
public OnPlayerExitVehicle(playerid, vehicleid)
{
return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
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(playerid, objectid)
{
return 1;
}
public OnPlayerPickUpPickup(playerid, pickupid)
{
return 1;
}
public OnVehicleMod(playerid, vehicleid, componentid)
{
return 1;
}
public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
return 1;
}
public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
return 1;
}
public OnPlayerSelectedMenuRow(playerid, row)
{
return 1;
}
public OnPlayerExitedMenu(playerid)
{
return 1;
}
public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
return 1;
}
public OnRconLoginAttempt(ip[], password[], success)
{
return 1;
}
public OnPlayerUpdate(playerid)
{
return 1;
}
public OnPlayerStreamIn(playerid, forplayerid)
{
return 1;
}
public OnPlayerStreamOut(playerid, forplayerid)
{
return 1;
}
public OnVehicleStreamIn(vehicleid, forplayerid)
{
return 1;
}
public OnVehicleStreamOut(vehicleid, forplayerid)
{
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
new str[256];
switch(dialogid)
{
case DLG_REG:
{
if(!response) return Kick(playerid);
if(!(strlen(inputtext) >= 8 && strlen(inputtext)<= 22))
{
SCM(playerid, COLOR_WHITE, "Äëèíà ïàðîëÿ áûòü íå ìåíåå 8 è íå áîëåå 22 ñèìâîëîâ." );
format(str, sizeof(str), "{FFFFFF}Äîáðî ïîæàëîâàòü íà íàø ñåðâåð, âàø íèê: %s[%i]\nÄàííûé àêêàóíò íå çàðåãèñòðèðîâàí, äëÿ ðåãèñòðàöèè ââåäèòå ïàðîëü\nâ ïîëå íèæå:\n", player_info[playerid][name], playerid);
return SPD(playerid, DLG_REG, DIALOG_STYLE_INPUT, "Ðåãèñòðàöèÿ", str, "Äàëåå", "Îòìåíà");
}
for(new i = 0; i < strlen(inputtext); i++)
{
switch(inputtext[i])
{
case 'a' ..'z', 'A'..'Z', '0'..'9': continue;
default:
{
SCM(playerid, COLOR_WHITE, "Ïàðîëü ìîæåò òîëüêî ñîñòîÿòü èç ëàòèíñêèõ ñèìâîëîâ è öèôîð ." );
format(str, sizeof(str), "{FFFFFF}Äîáðî ïîæàëîâàòü íà íàø ñåðâåð, âàø íèê: %s[%i]\nÄàííûé àêêàóíò íå çàðåãèñòðèðîâàí, äëÿ ðåãèñòðàöèè ââåäèòå ïàðîëü\nâ ïîëå íèæå:\n", player_info[playerid][name], playerid);
return SPD(playerid, DLG_REG, DIALOG_STYLE_INPUT, "Ðåãèñòðàöèÿ", str, "Äàëåå", "Îòìåíà");
}
}
}
player_info[playerid][pass] = EOS;
strins(player_info[playerid][pass], inputtext, 0);
SPD(playerid, DLG_REG_GENDER, DIALOG_STYLE_MSGBOX, "Ðåãèñòðàöèÿ", "{FFFFFF}Âûáåðèòå ïîë âàøåãî ïåðñàíàæà:", "Ìóæñêîé", "Æåíñêèé");
}
case DLG_REG_GENDER:
{
if(!response) player_info[playerid][gender] = 2;
if(!response)player_info[playerid][gender] = 1;
SPD(playerid, DLG_REG_AGE, DIALOG_STYLE_INPUT, "Ðåãèñòðàöèÿ", "{FFFFFF}Âûäèòå âîçðîñò âàøåãî ïåðñàíàæà (îò 18 äî 99):", "Äàëåå", "Îòìåíà");
}
case DLG_REG_AGE:
{
if(!response) return Kick(playerid);
for(new i = 0; i < strlen(inputtext); i++)
{
switch(inputtext[i])
{
case '0'..'9': continue;
default:
{
SCM(playerid, COLOR_WHITE, "Âîçðîñò ïåðñàíàæà íå îáõîäèìî âîäèòü öèôðàìè." );
return SPD(playerid, DLG_REG_AGE, DIALOG_STYLE_INPUT, "Ðåãèñòðàöèÿ", "{FFFFFF}Âûäèòå âîçðîñò âàøåãî ïåðñàíàæà (îò 18 äî 99):", "Äàëåå", "Îòìåíà");
}
}
}
if(!(strval(inputtext) >= 18 && strval (inputtext) <= 99))
{
SCM(playerid, COLOR_WHITE, "Âîçðîñò ïåðñàíàæà íå ìåíüøå 18 ëåò è íå áîëüøå 99 ëåò.");
return SPD(playerid, DLG_REG_AGE, DIALOG_STYLE_INPUT, "Ðåãèñòðàöèÿ", "{FFFFFF}Âûäèòå âîçðîñò âàøåãî ïåðñàíàæà (îò 18 äî 99):", "Äàëåå", "Îòìåíà");
}
player_info[playerid][age] = strval (inputtext);
switch(player_info[playerid][gender])
{
case 18..49:
{
if(player_info[playerid][gender] == 1)
{
switch(random(4))
{
case 0: player_info[playerid][skin] = 3;
case 1: player_info[playerid][skin] = 4;
case 2: player_info[playerid][skin] = 6;
case 3: player_info[playerid][skin] = 15;
}
}
if(player_info[playerid][gender] == 2)
{
switch(random(4))
{
case 0: player_info[playerid][skin] = 12;
case 1: player_info[playerid][skin] = 9;
case 2: player_info[playerid][skin] = 31;
case 3: player_info[playerid][skin] = 41;
}
}
}
case 50..99:
{
if(player_info[playerid][gender] == 1)
{
switch(random(4))
{
case 0: player_info[playerid][skin] = 58;
case 1: player_info[playerid][skin] = 68;
case 2: player_info[playerid][skin] = 72;
case 3: player_info[playerid][skin] = 79;
}
}
if(player_info[playerid][gender] == 2)
{
switch(random(4))
{
case 0: player_info[playerid][skin] = 54;
case 1: player_info[playerid][skin] = 55;
case 2: player_info[playerid][skin] = 53;
case 3: player_info[playerid][skin] = 56;
}
}
}
}
format(query, sizeof(query), "INSERT INTO `accounts` (`name`, `password`, `gender`, `age`, `skin`) VALUES ('%s', '%s', '%d', '%d', '%d')", player_info[playerid][name], player_info[playerid][pass], player_info[playerid][gender], player_info[playerid][age], player_info[playerid][skin]);
mysql_query(dbHandle, query);
mysql_format(dbHandle, query, sizeof(query), "SELECT * FROM `accounts` WHERE `name` = '%s'", player_info[playerid][name]);
mysql_tquery(dbHandle, query,"CheckAccountFromMysql", "i", playerid);
}
case DLG_LOGIN:
{
if(!response) return Kick(playerid);
mysql_format(dbHandle, query, sizeof(query), "SELECT * FROM `accounts` WHERE `name` = '%s' AND `password` = '%s'", player_info[playerid][name], inputtext);
mysql_tquery(dbHandle, query, "UploadPlayerAccout", "i", playerid);
}
}
return 1;
}
public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
return 1;
}
public OnPlayerClickMap(playerid, Float:fX, Float:fY, Float:fZ)
{
SetPlayerPos(playerid, fX, fY, fZ);
return 1;
}
forward GetAccountFromMysql(playerid);
public GetAccountFromMysql(playerid)
{
format(query, sizeof(query),"SELECT * FROM `accounts` WHERE `name` = `%s", player_info[playerid][name]);
mysql_tquery(dbHandle, query,"CheckAccountFromMysql","i",playerid);
}
forward CheckAccountFromMysql(playerid);
public CheckAccountFromMysql(playerid)
{
new str[256];
if(cache_num_rows() == 0)
{
format(str, sizeof(str), "{FFFFFF}Äîáðî ïîæàëîâàòü íà íàø ñåðâåð, âàø íèê: %s[%i]\nÄàííûé àêêàóíò íå çàðåãèñòðèðîâàí, äëÿ ðåãèñòðàöèè ââåäèòå ïàðîëü\nâ ïîëå íèæå:\n", player_info[playerid][name], playerid);
SPD(playerid, DLG_REG, DIALOG_STYLE_INPUT, "Ðåãèñòðàöèÿ", str, "Äàëåå", "Îòìåíà");
}
else
{
format(str, sizeof(str), "{FFFFFF}Äîáðî ïîæàëîâàòü íà íàø ñåðâåð, âàø íèê: %s[%i]\nÄàííûé àêêàóíò çàðåãèñòðèðîâàí, àâòîðèçàöèÿ ââåäèòå ïàðîëü\nâ ïîëå íèæå:\n", player_info[playerid][name], playerid);
SPD(playerid, DLG_LOGIN, DIALOG_STYLE_PASSWORD, "Àâòîðèçàöèÿ", str, "Äàëåå", "Îòìåíà");
}
}
forward UploadPlayerAccout(playerid);
public UploadPlayerAccout(playerid)
{
new rows, str[135+3+MAX_PLAYER_NAME];
cache_get_row_count(rows);
if(!rows)
{
SCM(playerid, COLOR_WHITE, "{FFFFFF}Âû ââåëè íåâåðíûé ïàðîëü îò àêêàóíòà.Ïîïðîáóéòå åù¸ ðàç");
format(str, sizeof(str), "{FFFFFF}Äîáðî ïîæàëîâàòü íà íàø ñåðâåð, âàø íèê: %s[%i]\nÄàííûé àêêàóíò çàðåãèñòðèðîâàí, àâòîðèçàöèÿ ââåäèòå ïàðîëü\nâ ïîëå íèæå:\n", player_info[playerid][name], playerid);
return SPD(playerid, DLG_LOGIN, DIALOG_STYLE_PASSWORD, "Àâòîðèçàöèÿ", str, "Äàëåå", "Îòìåíà");
}
else if(rows)
{
cache_get_value_name_int(0, "id", player_info[playerid][id]);
cache_get_value_name_int(0, "gender", player_info[playerid][gender]);
cache_get_value_name_int(0, "age", player_info[playerid][age]);
cache_get_value_name_int(0, "skin", player_info[playerid][skin]);
cache_get_value_name_int(0, "level", player_info[playerid][level]);
SpawnPlayer(playerid);
}
return 1;
}