Hallo alle zusammen,
ich möchte gerne den ProgressBar Cerator benutzen aber iwie funktioniert er nicht mehr richtig ....
kann mir jmd helfen ?
Mein Problem: ich gebe /bar ein und dann erscheint eine "Bar" die ich verschieben kann dann muss man enter drucken und
dann kommt wieder das menü aber wenn ich was auswähle passiert garnichts mehr .... aber warum ?
(ps ich habe eine bar schon erstellt und dann ausversehen das FS gelöscht und neu Gedownloaden seit dem läuft es nicht mehr rund)
danke schon mal im vorraus
mfg CyZe (ach ya ich hoffe das diese Thread im richtigen bereich ist ...)
hier ist das Filterscript vvlt hat ya jmd eine idee ...
LEIDER KEIN PWN WEIL DIE FORMATIERUNG DANN IMMER VERÄNDERT WIRD
/**
* 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;
}