Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Progress Bar Creator
- * Copyright 2007-2010 Infernus' Group,
- * Flávio Toribio (flavio_toribio@hotmail.com)
- *
- * This is an add-on for the include Progress Bar
- * http://forum.sa-mp.com/index.php?topic=138556
- */
- #include <a_samp>
- #include <progress>
- #if !defined SetPVarInt
- #error Version 0.3 R7 or higher of SA:MP Server requiered
- #endif
- #if _progress_version < 0x1310
- #error Version 1.3.1 or higher of progress.inc required
- #endif
- #define DIALOG_BAR 1834
- #define DIALOG_COLOR 1835
- #define DIALOG_DONE 1836
- #define ITEM_MOVE 0
- #define ITEM_RESIZE 1
- #define ITEM_COLOR 2
- #define ITEM_DONE 3
- #define MOVE_NONE 0
- #define MOVE_POSITION 1
- #define MOVE_SIZE 2
- static Bars[MAX_BARS][e_bar];
- public OnFilterScriptInit()
- {
- for(new i = 0; i < MAX_PLAYERS; ++i) if(IsPlayerConnected(i))
- {
- OnPlayerSpawn(i);
- }
- print("Progress Bar Creator by Flavio Toribio loaded");
- return 1;
- }
- public OnFilterScriptExit()
- {
- for(new i = 0; i < MAX_PLAYERS; ++i) if(IsPlayerConnected(i))
- {
- OnPlayerDisconnect(i, 0);
- if(GetPVarInt(i, "MovingBar"))
- {
- TogglePlayerControllable(i, true);
- }
- if(GetPVarInt(i, "CreatingBar"))
- {
- DeletePVar(i, "BarID");
- DeletePVar(i, "MovingBar");
- DeletePVar(i, "CreatingBar");
- }
- }
- print("Progress Bar Creator by Flavio Toribio unloaded");
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- SendClientMessage(playerid, 0xFFF000AA, "Use /bar to start making a progress bar!");
- return 1;
- }
- GetVars(index, &Float:x, &Float:y, &Float:w, &Float:h, &color)
- {
- x = Bars[index][pb_x];
- y = Bars[index][pb_y];
- w = Bars[index][pb_w];
- h = Bars[index][pb_h];
- color = Bars[index][pb_color];
- }
- UpdateVars(index, Float:x, Float:y, Float:w, Float:h, color)
- {
- Bars[index][pb_x] = x;
- Bars[index][pb_y] = y;
- Bars[index][pb_w] = w;
- Bars[index][pb_h] = h;
- Bars[index][pb_color] = color;
- }
- DeleteVars(index)
- {
- Bars[index][pb_x] = 0.0;
- Bars[index][pb_y] = 0.0;
- Bars[index][pb_w] = 0.0;
- Bars[index][pb_h] = 0.0;
- Bars[index][pb_color] = 0;
- }
- public OnPlayerUpdate(playerid)
- {
- if(GetPVarInt(playerid, "MovingBar"))
- {
- new keys, ud, lr;
- GetPlayerKeys(playerid, keys, ud, lr);
- new Bar:barid = Bar:GetPVarInt(playerid, "BarID");
- new Float:x, Float:y, Float:w, Float:h, color;
- if(ud || lr)
- {
- DestroyProgressBar(barid);
- GetVars(_:barid, x, y, w, h, color);
- DeleteVars(_:barid);
- if(ud == KEY_UP)
- {
- if(GetPVarInt(playerid, "MovingBar") == MOVE_POSITION)
- {
- y -= keys & KEY_SPRINT ? 2.0 : 1.0;
- if(y < 0.0) y = 0.0;
- }
- else if(GetPVarInt(playerid, "MovingBar") == MOVE_SIZE)
- {
- h -= keys & KEY_SPRINT ? 2.0 : 1.0;
- if(h < 1.5) h = 1.5;
- }
- }
- else if(ud == KEY_DOWN)
- {
- if(GetPVarInt(playerid, "MovingBar") == MOVE_POSITION)
- {
- y += keys & KEY_SPRINT ? 2.0 : 1.0;
- if(y > 480.0) y = 480.0;
- }
- else if(GetPVarInt(playerid, "MovingBar") == MOVE_SIZE)
- {
- h += keys & KEY_SPRINT ? 2.0 : 1.0;
- if(h > 480.0) h = 480.0;
- }
- }
- if(lr == KEY_LEFT)
- {
- if(GetPVarInt(playerid, "MovingBar") == MOVE_POSITION)
- {
- x -= keys & KEY_SPRINT ? 2.0 : 1.0;
- if(x < 0.0) x = 0.0;
- }
- else if(GetPVarInt(playerid, "MovingBar") == MOVE_SIZE)
- {
- w -= keys & KEY_SPRINT ? 2.0 : 1.0;
- if(w < 1.5) w = 1.5;
- }
- }
- else if(lr == KEY_RIGHT)
- {
- if(GetPVarInt(playerid, "MovingBar") == MOVE_POSITION)
- {
- x += keys & KEY_SPRINT ? 2.0 : 1.0;
- if(x > 640.0) x = 640.0;
- }
- else if(GetPVarInt(playerid, "MovingBar") == MOVE_SIZE)
- {
- w += keys & KEY_SPRINT ? 2.0 : 1.0;
- if(w > 640.0) w = 640.0;
- }
- }
- barid = CreateProgressBar(x, y, w, h, color, 100.0);
- SetProgressBarValue(barid, 50.0);
- ShowProgressBarForPlayer(playerid, barid);
- UpdateVars(_:barid, x, y, w, h, color);
- SetPVarInt(playerid, "BarID", _:barid);
- }
- }
- return 1;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- if(newkeys & KEY_SECONDARY_ATTACK)
- {
- if(GetPVarInt(playerid, "MovingBar"))
- {
- TogglePlayerControllable(playerid, true);
- SetPVarInt(playerid, "MovingBar", MOVE_NONE);
- SendClientMessage(playerid, 0xFFF000AA, "Now you can use /bar again to modify or finalize it.");
- }
- }
- return 1;
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- if(GetPVarInt(playerid, "MovingBar"))
- {
- TogglePlayerControllable(playerid, true);
- SetPVarInt(playerid, "MovingBar", MOVE_NONE);
- }
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- if(GetPVarInt(playerid, "CreatingBar") == 1)
- {
- DestroyProgressBar(Bar:GetPVarInt(playerid, "BarID"));
- DeleteVars(GetPVarInt(playerid, "BarID"));
- }
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- if(!strcmp(cmdtext, "/bar", true))
- {
- if(GetPVarInt(playerid, "CreatingBar") == 0)
- {
- new Bar:barid;
- if((barid = CreateProgressBar(320.0, 240.0, 56.50, 3.39, 0xFF0000FF, 100.0)) == INVALID_BAR_ID)
- {
- SendClientMessage(playerid, 0xFF0000AA, "Internal error occurred when creating progress bar.");
- return 1;
- }
- SetProgressBarValue(barid, 50.0);
- ShowProgressBarForPlayer(playerid, barid);
- TogglePlayerControllable(playerid, false);
- UpdateVars(_:barid, 320.0, 240.0, 55.5, 3.2, 0xFF0000FF);
- SetPVarInt(playerid, "MovingBar", MOVE_POSITION);
- SetPVarInt(playerid, "CreatingBar", 1);
- SetPVarInt(playerid, "BarID", _:barid);
- SendClientMessage(playerid, 0xFFF000AA, "Use the arrow keys to move the bar arround the screen.");
- SendClientMessage(playerid, 0xFFF000AA, "Keep pressing 'Sprint' key to move faster.");
- SendClientMessage(playerid, 0xFFF000AA, "Press the 'Enter car' key when done.");
- }
- else
- {
- ShowPlayerDialog(playerid, DIALOG_BAR, DIALOG_STYLE_LIST, "Progress Bar", "Change Position\nChange Size\nChange Color\nI'm done, save bar!", "OK", "Cancel");
- }
- return 1;
- }
- return 0;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- if(dialogid == DIALOG_BAR)
- {
- if(response)
- {
- if(listitem == ITEM_MOVE)
- {
- SetPVarInt(playerid, "MovingBar", MOVE_POSITION);
- TogglePlayerControllable(playerid, false);
- SendClientMessage(playerid, 0xFFF000AA, "Use the arrow keys to move the bar arround the screen.");
- SendClientMessage(playerid, 0xFFF000AA, "Keep pressing 'Sprint' key to move faster.");
- SendClientMessage(playerid, 0xFFF000AA, "Press the 'Enter car' key when done.");
- }
- else if(listitem == ITEM_RESIZE)
- {
- SetPVarInt(playerid, "MovingBar", MOVE_SIZE);
- TogglePlayerControllable(playerid, false);
- SendClientMessage(playerid, 0xFFF000AA, "Use the arrow keys to resize the bar.");
- SendClientMessage(playerid, 0xFFF000AA, "Keep pressing 'Sprint' key to resize faster.");
- SendClientMessage(playerid, 0xFFF000AA, "Press the 'Enter car' key when done.");
- }
- else if(listitem == ITEM_COLOR)
- {
- ShowPlayerDialog(playerid, DIALOG_COLOR, DIALOG_STYLE_INPUT, "Change Color", "Type the color in hexadecimal format.\nExample: 0xFFF000FF\nRemember the alpha parameter (the last 2 numbers),\nthey define the transparency.\nIf you have doubts, use an external Color Picker.", "OK", "Cancel");
- }
- else if(listitem == ITEM_DONE)
- {
- ShowPlayerDialog(playerid, DIALOG_DONE, DIALOG_STYLE_INPUT, "Saving Bar", "Type the file name which you want to save the bar;\nYou don't need to specify the extension;\nThe default one is .txt;\nThe file will be created in the scriptfiles folder;\nAny file with the same name will be replaced automatically.", "Save", "Cancel");
- }
- }
- }
- else if(dialogid == DIALOG_COLOR)
- {
- SetProgressBarColor(Bar:GetPVarInt(playerid, "BarID"), hexstr(inputtext));
- UpdateProgressBar(Bar:GetPVarInt(playerid, "BarID"), playerid);
- Bars[GetPVarInt(playerid, "BarID")][pb_color] = hexstr(inputtext);
- }
- else if(dialogid == DIALOG_DONE)
- {
- new File:file, name[32], line[128], barid;
- if(strlen(inputtext) > 32 - 4)
- {
- strdel(inputtext, 32 - 4, strlen(inputtext));
- }
- format(name, sizeof name, "%s.txt", inputtext);
- if(!(file = fopen(name, io_write)))
- {
- SendClientMessage(playerid, 0xFF0000AA, "There was an error on file writing, try again.");
- ShowPlayerDialog(playerid, DIALOG_DONE, DIALOG_STYLE_INPUT, "Saving Bar", "Type the file name which you want to save the bar;\nYou don't need to specify the extension;\nThe default one is .txt;\nThe file will be created in the scriptfiles folder;\nAny file with the same name will be replaced automatically.", "Save", "Cancel");
- return 1;
- }
- barid = GetPVarInt(playerid, "BarID");
- format(line, sizeof line, "new Bar:bar = CreateProgressBar(%.2f, %.2f, %.2f, %.2f, %d, 100.0);\r\n",
- Bars[barid][pb_x], Bars[barid][pb_y], Bars[barid][pb_w], Bars[barid][pb_h], Bars[barid][pb_color]);
- fwrite(file, line);
- fwrite(file, "ShowProgressBarForAll(bar);\r\n");
- fwrite(file, "\r\nNow, take a look at the official SA:MP forum topic to know how to use this:\r\n\r\nhttp://forum.sa-mp.com/index.php?topic=138556\r\n");
- fclose(file);
- DeleteVars(barid);
- DestroyProgressBar(Bar:barid);
- DeletePVar(playerid, "BarID");
- DeletePVar(playerid, "MovingBar");
- DeletePVar(playerid, "CreatingBar");
- SendClientMessage(playerid, 0xFFFF00AA, "All done! Now take a look at your file to see the result!");
- SendClientMessage(playerid, 0xFFFFFFAA, "You can create another progress bar now.");
- }
- return 1;
- }
- stock hexstr(string[])
- {
- new ret, val, i;
- if(string[0] == '0' && (string[1] == 'x' || string[1] == 'X')) i = 2;
- while(string[i])
- {
- ret <<= 4;
- val = string[i++] - '0';
- if(val > 0x09) val -= 0x07;
- if(val > 0x0F) val -= 0x20;
- if(val < 0x01) continue;
- if(val < 0x10) ret += val;
- }
- return ret;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement