Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Created by: B-Matt
- //(c) 2013.
- #include <a_samp>
- #include <a_mysql>
- #include <sscanf2>
- #include <zcmd>
- #define MAX_PLAYER_PASS (24)
- enum player_enum
- {
- ORM:ORMId,
- pId,
- pName[MAX_PLAYER_NAME],
- pPassword[MAX_PLAYER_PASS],
- pSkin,
- pMoney,
- pLevel,
- pBanned,
- pGun,
- pAmmo,
- Float:pPosX,
- Float:pPosY,
- Float:pPosZ
- }
- new
- PlayerInfo[MAX_PLAYERS][player_enum];
- new
- SQL = -1,
- start_tick = 0;
- //Stocks
- stock ResetPlayerEnums(playerid)
- {
- for(new player_enum:e; e < player_enum; ++e)
- PlayerInfo[playerid][e] = 0;
- }
- stock RegisterPlayer(playerid, password[])
- {
- new
- pname[MAX_PLAYER_NAME];
- GetPlayerName(playerid, pname, sizeof(pname));
- format(PlayerInfo[playerid][pName], MAX_PLAYER_NAME, "%s", pname);
- format(PlayerInfo[playerid][pPassword], MAX_PLAYER_PASS, "%s", password);
- PlayerInfo[playerid][pSkin] = 1;
- PlayerInfo[playerid][pMoney] = 2000;
- PlayerInfo[playerid][pLevel] = 1;
- PlayerInfo[playerid][pBanned] = 0;
- PlayerInfo[playerid][pGun] = 0;
- PlayerInfo[playerid][pAmmo] = 0;
- PlayerInfo[playerid][pPosX] = 300.6595;
- PlayerInfo[playerid][pPosY] = 1412.0372;
- PlayerInfo[playerid][pPosZ] = 8.4545;
- orm_insert(PlayerInfo[playerid][ORMId], "OnPlayerRegister", "d", playerid);
- return 1;
- }
- //Custom Callbacks
- forward OnPlayerLoad(playerid);
- public OnPlayerLoad(playerid)
- {
- printf("Player load took: %d ms", GetTickCount() - start_tick);
- start_tick = 0;
- switch(orm_errno(PlayerInfo[playerid][ORMId]))
- {
- case ERROR_OK: ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "Login", "Please insert your password.", "Login", "Abort");
- case ERROR_NO_DATA: ShowPlayerDialog(playerid, 2, DIALOG_STYLE_PASSWORD, "Register", "Please insert your password.", "Register", "Abort");
- }
- orm_setkey(PlayerInfo[playerid][ORMId], "id");
- return 1;
- }
- forward OnPlayerRegister(playerid);
- public OnPlayerRegister(playerid)
- {
- printf("Playerid %d took SQL database ID %d.", playerid, PlayerInfo[playerid][pId]);
- SpawnPlayer(playerid);
- printf("Player insert took: %d ms", GetTickCount() - start_tick);
- start_tick = 0;
- return 1;
- }
- main() { }
- public OnGameModeInit()
- {
- SetGameModeText("MySQL r33 ORM Test");
- AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
- SQL = mysql_connect("127.0.0.1", "root", "samp", "");
- mysql_log(LOG_DEBUG);
- return 1;
- }
- public OnGameModeExit()
- {
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- ResetPlayerEnums(playerid);
- start_tick = GetTickCount();
- GetPlayerName(playerid, PlayerInfo[playerid][pName], MAX_PLAYER_NAME);
- new ORM:ormid = PlayerInfo[playerid][ORMId] = orm_create("accounts");
- orm_addvar_int(ormid, PlayerInfo[playerid][pId], "id");
- orm_addvar_string(ormid, PlayerInfo[playerid][pName], MAX_PLAYER_NAME+1, "name");
- orm_addvar_string(ormid, PlayerInfo[playerid][pPassword], MAX_PLAYER_PASS, "password");
- orm_addvar_int(ormid, PlayerInfo[playerid][pSkin], "skin");
- orm_addvar_int(ormid, PlayerInfo[playerid][pMoney], "money");
- orm_addvar_int(ormid, PlayerInfo[playerid][pLevel], "level");
- orm_addvar_int(ormid, PlayerInfo[playerid][pBanned], "banned");
- orm_addvar_int(ormid, PlayerInfo[playerid][pGun], "gun");
- orm_addvar_int(ormid, PlayerInfo[playerid][pAmmo], "ammo");
- orm_addvar_float(ormid, PlayerInfo[playerid][pPosX], "posx");
- orm_addvar_float(ormid, PlayerInfo[playerid][pPosY], "posy");
- orm_addvar_float(ormid, PlayerInfo[playerid][pPosZ], "posz");
- orm_setkey(ormid, "name");
- orm_select(ormid, "OnPlayerLoad", "d", playerid);
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- orm_update(PlayerInfo[playerid][ORMId]);
- for(new player_enum:e; e < player_enum; ++e) {
- PlayerInfo[playerid][e] = 0;
- }
- orm_destroy(PlayerInfo[playerid][ORMId]);
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- SetPlayerColor(playerid, -1);
- SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
- SetPlayerPos(playerid, PlayerInfo[playerid][pPosX], PlayerInfo[playerid][pPosY], PlayerInfo[playerid][pPosZ]);
- GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]);
- SetPlayerScore(playerid, PlayerInfo[playerid][pLevel]);
- GivePlayerWeapon(playerid, PlayerInfo[playerid][pGun], PlayerInfo[playerid][pAmmo]);
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- switch(dialogid)
- {
- case 1: //Login
- {
- if(!response) return Kick(playerid);
- if(PlayerInfo[playerid][pBanned]) return SendClientMessage(playerid, -1, "You are banned from this server!");
- if(!strcmp(inputtext, PlayerInfo[playerid][pPassword], false, MAX_PLAYER_PASS))
- {
- SpawnPlayer(playerid);
- }
- else return ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "Login", "Please insert your password. Wrong password!", "Login", "Abort");
- return 1;
- }
- case 2: //Register
- {
- if(!response) return Kick(playerid);
- start_tick = GetTickCount();
- RegisterPlayer(playerid, inputtext);
- return 1;
- }
- }
- return 0;
- }
- //Commands
- CMD:money(playerid, params[])
- {
- new
- gplayerid, money;
- if(sscanf(params, "ud", gplayerid, money)) return SendClientMessage(playerid, -1, "USAGE: /money [playerid/part of name][money]");
- GivePlayerMoney(gplayerid, money);
- PlayerInfo[playerid][pMoney] += money;
- new
- mysqlquery[500];
- start_tick = GetTickCount();
- mysql_format(SQL, mysqlquery, sizeof(mysqlquery), "UPDATE `accounts` SET `money` = '%d' WHERE `id` = '%d'", PlayerInfo[playerid][pMoney], PlayerInfo[playerid][pId]);
- mysql_tquery(SQL, mysqlquery, "", "");
- orm_apply_cache(PlayerInfo[playerid][ORMId], 0);
- printf("Player update money (format+tquery) took: %d ms", GetTickCount() - start_tick);
- start_tick = 0;
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement