Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <dudb>
- #include <progress>
- new Text:ExpText[MAX_PLAYERS];
- new Text:LevelText[MAX_PLAYERS];
- new Bar:bar[MAX_PLAYERS];
- new Text3D:LevelLabel[MAX_PLAYERS];
- //You can change these values.
- #define ExpForLevel 1000 //How much exp you need to pass a level. The Exp gets multiplied by the level. If you've got 1000 total exp then for lvl 2 it will be 2000
- #define MaxLevel 99 //The maximum level a player can achieve.
- #define UseProgBar // Define wheater to use the progress bar or not. Comment the line if you don't want a progress bar and leave like that if you do want a progress bar.
- #define ProgBarColor 0x0000FFFF //The experience bar's color.
- #define TextLabelColor 0x00FFFFFF // The textlabel's color.
- #define CashForLevelUp 300 //This is the cash you get for levelling up. It gets multiplied by the level you achieved and one more time by a number you define.
- #define CashMultiplier 1 //This multiplies the Cash * Level achieved by the number you want.
- #define GameTextStyle 4 //This defines the GameText's style used for the GivePlayerExp function.
- #define GameTextTime 3000 //This defines the time for which the GameText for the GivePlayerExp function will be visible
- //Don't change these values.
- #define mustlogin
- #define autologin
- #pragma unused strtok
- #pragma unused ret_memcpy
- //Declaring New
- new logged_in[MAX_PLAYERS];
- new Retries[MAX_PLAYERS];
- //The function which gives exp. Usage: GivePlayerExp(playerid, ammount, reason);
- stock GivePlayerExp(playerid, exp, reason[])
- {
- new pfile[100], pname[MAX_PLAYER_NAME], string2[126], string3[126], string4[126];
- GetPlayerName(playerid, pname, sizeof(pname));
- format(pfile, sizeof(pfile), "HAccounts/%s.ini",pname);
- dini_IntSet(pfile, "Exp", dini_Int(pfile, "Exp") +exp);
- if (dini_Int(pfile, "Exp") >= dini_Int(pfile, "TotalExp"))
- {
- if (dini_Int(pfile, "ExpLevel") < MaxLevel)
- {
- while (dini_Int(pfile, "Exp") >= dini_Int(pfile, "TotalExp"))
- {
- dini_IntSet(pfile, "Exp", dini_Int(pfile, "Exp") - dini_Int(pfile, "TotalExp"));
- dini_IntSet(pfile, "ExpLevel", dini_Int(pfile, "ExpLevel") + 1);
- dini_IntSet(pfile, "TotalExp", dini_Int(pfile, "ExpLevel") * ExpForLevel);
- format(string3, sizeof(string3), "Level: %02d",dini_Int(pfile, "ExpLevel"));
- TextDrawSetString(LevelText[playerid], string3);
- GivePlayerMoney(playerid, CashForLevelUp * dini_Int(pfile, "ExpLevel") * CashMultiplier);
- format(string4, sizeof(string4), "~p~You got %d Exp for ~n~%s !~n~~g~Level up!", exp, reason);
- }
- }
- else
- {
- GameTextForPlayer(playerid, "~g~Max Level Reached!", GameTextTime, GameTextStyle);
- dini_IntSet(pfile, "Exp", dini_Int(pfile, "TotalExp"));
- }
- }
- else
- {
- format(string4, sizeof(string4), "~p~You got %d Exp for ~n~%s !", exp, reason);
- }
- format(string2, sizeof(string2), "Exp: %05d/%05d",dini_Int(pfile, "Exp"), dini_Int(pfile, "TotalExp"));
- TextDrawSetString(ExpText[playerid], string2);
- #if defined UseProgBar
- SetProgressBarValue(bar[playerid], dini_Int(pfile, "Exp"));
- SetProgressBarMaxValue(bar[playerid], dini_Int(pfile, "TotalExp"));
- UpdateProgressBar(bar[playerid], playerid);
- #endif
- GameTextForPlayer(playerid, string4, GameTextTime, GameTextStyle);
- format(string3, sizeof(string3), "Level: %02d",dini_Int(pfile, "ExpLevel"));
- Update3DTextLabelText(LevelLabel[playerid], TextLabelColor, string3);
- }
- //The function to get a player's level. Usage: GetPlayerLevel(playerid)
- stock GetPlayerExpLevel(playerid)
- {
- new pfile[100], pname[MAX_PLAYER_NAME], Plevel;
- GetPlayerName(playerid, pname, sizeof(pname));
- format(pfile, sizeof(pfile), "HAccounts/%s.ini",pname);
- Plevel = dini_Int(pfile, "ExpLevel");
- return Plevel;
- }
- //The function to get a player's experience. Usage: GetPlayerExp(playerid)
- stock GetPlayerExp(playerid)
- {
- new pfile[100], pname[MAX_PLAYER_NAME], PExp;
- GetPlayerName(playerid, pname, sizeof(pname));
- format(pfile, sizeof(pfile), "HAccounts/%s.ini",pname);
- PExp = dini_Int(pfile, "Exp");
- return PExp;
- }
- //The function to get a player's experience needed to lvl up. Usage: GetPlayerTotalExp(playerid)
- stock GetPlayerTotalExp(playerid)
- {
- new pfile[100], pname[MAX_PLAYER_NAME], PTotalExp;
- GetPlayerName(playerid, pname, sizeof(pname));
- format(pfile, sizeof(pfile), "HAccounts/%s.ini",pname);
- PTotalExp = dini_Int(pfile, "TotalExp");
- return PTotalExp;
- }
- public OnFilterScriptInit()
- {
- print("\n--------------------------------------");
- print(" King_Hual's Experience & Simple Account System Filterscript.");
- print("--------------------------------------\n");
- return 1;
- }
- public OnFilterScriptExit()
- {
- return 1;
- }
- 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 1;
- }
- public OnPlayerConnect(playerid)
- {
- new pname[MAX_PLAYER_NAME],string2[126], string3[126];
- Retries[playerid] = 0;
- SendDeathMessage(INVALID_PLAYER_ID, playerid, 200);
- new pfile[100];
- GetPlayerName(playerid, pname, sizeof(pname));
- format(pfile, sizeof(pfile), "HAccounts/%s.ini",pname);
- if (!dini_Exists(pfile))
- {
- ShowPlayerDialog(playerid,101,DIALOG_STYLE_INPUT,"Registration","Please enter a password to register this account!","Register","Cancel");
- }
- else if (dini_Exists(pfile)) ShowPlayerDialog(playerid,100,DIALOG_STYLE_INPUT,"Login","Please enter a password to login to this account!","Login","Cancel");
- #if defined UseProgBar
- bar[playerid] = CreateProgressBar(500.00, 5.00, 137.50, 15.19, ProgBarColor, 100.0);
- #endif
- format(string2, sizeof(string2), "Exp: %05d/%05d",dini_Int(pfile, "Exp"), dini_Int(pfile, "TotalExp"));
- format(string3, sizeof(string3), "Level: %02d",dini_Int(pfile, "ExpLevel"));
- ExpText[playerid] = TextDrawCreate(500.000000,3.000000,string2);
- TextDrawAlignment(ExpText[playerid],0);
- TextDrawBackgroundColor(ExpText[playerid],0x000000ff);
- TextDrawFont(ExpText[playerid],1);
- TextDrawLetterSize(ExpText[playerid],0.399999,1.800000);
- TextDrawColor(ExpText[playerid],0xffff00ff);
- TextDrawSetOutline(ExpText[playerid],1);
- TextDrawSetProportional(ExpText[playerid],1);
- LevelText[playerid] = TextDrawCreate(546.000000,25.000000,string3);
- TextDrawAlignment(LevelText[playerid],0);
- TextDrawBackgroundColor(LevelText[playerid],0x000000ff);
- TextDrawFont(LevelText[playerid],2);
- TextDrawLetterSize(LevelText[playerid],0.299999,1.400000);
- TextDrawColor(LevelText[playerid],0x00ff0099);
- TextDrawSetOutline(LevelText[playerid],1);
- TextDrawSetProportional(LevelText[playerid],1);
- TextDrawSetShadow(LevelText[playerid],1);
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- TextDrawDestroy(ExpText[playerid]);
- TextDrawDestroy(ExpText[playerid]);
- #if defined UseProgBar
- DestroyProgressBar(bar[playerid]);
- #endif
- Delete3DTextLabel(LevelLabel[playerid]);
- Retries[playerid] = 0;
- if(logged_in[playerid] == 1)
- {
- new pfile[100], pname[MAX_PLAYER_NAME];
- GetPlayerName(playerid, pname, sizeof(pname));
- format(pfile, sizeof(pfile), "HAccounts/%s.ini",pname);
- dini_IntSet(pfile, "Cash", GetPlayerMoney(playerid));
- dini_IntSet(pfile, "Score", GetPlayerScore(playerid));
- }
- logged_in[playerid] = 0;
- SendDeathMessage(INVALID_PLAYER_ID, playerid, 201);
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- GivePlayerWeapon(playerid, 24, 500);
- return 1;
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- if (killerid != playerid) {
- if (GetPlayerExpLevel(playerid) < GetPlayerExpLevel(killerid))
- {
- GivePlayerExp(killerid, 100, "killing a lower level player");
- }
- else if (GetPlayerExpLevel(playerid) > GetPlayerExpLevel(killerid))
- {
- GivePlayerExp(killerid, 300, "killing a higher level player");
- }
- else
- {
- GivePlayerExp(killerid, 200, "killing a player at your own level");
- }
- } // An example of using my exp system.
- return 1;
- }
- public OnVehicleSpawn(vehicleid)
- {
- return 1;
- }
- public OnVehicleDeath(vehicleid, killerid)
- {
- return 1;
- }
- public OnPlayerText(playerid, text[])
- {
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- if (strcmp("/mycommand", cmdtext, true, 10) == 0)
- {
- // Do something here
- return 1;
- }
- return 0;
- }
- 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)
- {
- if (logged_in[playerid] == 0)
- {
- SendClientMessage(playerid, 0xFF00FFFF, "*You need to login to spawn.*");
- return 0;
- }
- else
- {
- 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[])
- {
- if(dialogid == 101)
- {
- if(!strlen(inputtext) || !response) return ShowPlayerDialog(playerid,101,DIALOG_STYLE_INPUT,"Registration","ERROR: You did not enter a password.\nPlease enter a password to register this account!","Register","Cancel");
- new pfile[128], pname[MAX_PLAYER_NAME], string2[64], string3[32];
- GetPlayerName(playerid, pname, sizeof(pname));
- format(pfile, sizeof(pfile), "HAccounts/%s.ini",pname);
- new playerip[20];
- GetPlayerIp(playerid, playerip, sizeof(playerip));
- dini_Create(pfile);
- dini_IntSet(pfile, "Password", udb_hash(inputtext));
- dini_Set(pfile, "Ip", playerip);
- dini_IntSet(pfile, "Cash", 0);
- dini_IntSet(pfile, "ExpLevel", 1);
- dini_IntSet(pfile, "Exp", 0);
- dini_IntSet(pfile, "TotalExp", ExpForLevel);
- dini_IntSet(pfile, "Score", 0);
- logged_in[playerid] = 1;
- SendClientMessage(playerid, 0x00FF00FF, "*You have been registered! You have also been logged in!*");
- format(string2, sizeof(string2), "Exp: %05d/%05d",dini_Int(pfile, "Exp"), dini_Int(pfile, "TotalExp"));
- TextDrawSetString(ExpText[playerid], string2);
- format(string3, sizeof(string3), "Level: %02d",dini_Int(pfile, "ExpLevel"));
- TextDrawSetString(LevelText[playerid], string3);
- TextDrawShowForPlayer(playerid, ExpText[playerid]);
- TextDrawShowForPlayer(playerid, LevelText[playerid]);
- #if defined UseProgBar
- ShowProgressBarForPlayer(playerid, bar[playerid]);
- SetProgressBarMaxValue(bar[playerid], dini_Int(pfile, "TotalExp"));
- SetProgressBarValue(bar[playerid], dini_Int(pfile, "Exp"));
- UpdateProgressBar(bar[playerid], playerid);
- #endif
- LevelLabel[playerid] = Create3DTextLabel(string3, TextLabelColor, 0, 0, 0, 50, 0);
- Attach3DTextLabelToPlayer(LevelLabel[playerid], playerid, 0, 0, 0.7);
- }
- if(dialogid == 100)
- {
- if(!strlen(inputtext) || !response) return ShowPlayerDialog(playerid,100,DIALOG_STYLE_INPUT,"Login","ERROR: You did not enter a password.\nPlease enter a password to login to this account!","Login","Cancel");
- new pfile[100], pname[MAX_PLAYER_NAME];
- GetPlayerName(playerid, pname, sizeof(pname));
- format(pfile, sizeof(pfile), "HAccounts/%s.ini",pname);
- new tmp[256];
- tmp = dini_Get(pfile, "Password");
- if(udb_hash(inputtext) == strval(tmp))
- {
- new playerip[20], string[32];
- GetPlayerIp(playerid, playerip, sizeof(playerip));
- dini_Set(pfile, "Ip", playerip);
- GivePlayerMoney(playerid, dini_Int(pfile, "Cash"));
- SetPlayerScore(playerid, dini_Int(pfile, "Score"));
- logged_in[playerid] = 1;
- SendClientMessage(playerid, 0x00FF00FF, "*You have been logged in!*");
- TextDrawShowForPlayer(playerid, ExpText[playerid]);
- TextDrawShowForPlayer(playerid, LevelText[playerid]);
- #if defined UseProgBar
- SetProgressBarValue(bar[playerid], dini_Int(pfile, "Exp"));
- SetProgressBarMaxValue(bar[playerid], dini_Int(pfile, "TotalExp"));
- UpdateProgressBar(bar[playerid], playerid);
- #endif
- format(string, sizeof(string), "Level: %02d",dini_Int(pfile, "ExpLevel"));
- LevelLabel[playerid] = Create3DTextLabel(string, TextLabelColor, 0, 0, 0, 50, 0);
- Attach3DTextLabelToPlayer(LevelLabel[playerid], playerid, 0, 0, 0.7);
- }
- else
- {
- ShowPlayerDialog(playerid,100,DIALOG_STYLE_INPUT,"Login","ERROR: Invalid Password.\nPlease enter a password to login to this account!","Login","Cancel");
- Retries[playerid]++;
- if (Retries[playerid] == 5)
- {
- SendClientMessage(playerid, 0xFF0000, "*You have been kicked for 5 incorrect password inputs.*");
- Kick(playerid);
- }
- }
- }
- return 1;
- }
- public OnPlayerClickPlayer(playerid, clickedplayerid, source)
- {
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment