@@ -41,16 +41,15 @@ static enum CIRCLE_ENUM {
4141 // Colors
4242 E_CIRCLEDRAW_COLOR,
4343 E_CIRCLEDRAW_BACKGROUND,
44+ E_CIRCLEDRAW_POLYGONS_COUNT,
4445
4546 // Draws
47+ bool: E_CIRCLEDRAW_CREATED[MAX_CIRCLES_POLYGONS + 1 ],
4648 PlayerText: E_CIRCLEDRAW_POINTS[MAX_CIRCLES_POLYGONS + 1 ]
4749};
4850
49- static
50- Iterator: Circles[MAX_PLAYERS]< MAX_CIRCLES_DRAW> ,
51- Iterator: CirclesPointers[MAX_PLAYERS]< MAX_CIRCLES_DRAW, MAX_CIRCLES_POLYGONS> ;
52-
5351static
52+ Iterator: Circles[MAX_PLAYERS]< MAX_CIRCLES_DRAW> ,
5453 e_CircleDraw[MAX_PLAYERS][MAX_CIRCLES_DRAW][CIRCLE_ENUM];
5554
5655
@@ -106,11 +105,10 @@ stock DestroyPlayerCircleProgress(playerid, id) {
106105 if (! Iter_Contains (Circles[playerid], id))
107106 return false ;
108107
109- foreach (new i: CirclesPointers [playerid]< id > ) {
108+ for (new i = 0 ; i < e_CircleDraw [playerid][id][E_CIRCLEDRAW_POLYGONS_COUNT]; i ++ ) {
110109 PlayerTextDrawDestroy (playerid, e_CircleDraw[playerid][id][E_CIRCLEDRAW_POINTS][i]);
111110 e_CircleDraw[playerid][id][E_CIRCLEDRAW_POINTS][i] = PlayerText: INVALID_TEXT_DRAW;
112-
113- Iter_Remove (CirclesPointers[playerid]< id> , i);
111+ e_CircleDraw[playerid][id][E_CIRCLEDRAW_CREATED][i] = false ;
114112 }
115113
116114 Iter_Remove (Circles[playerid], id);
@@ -167,13 +165,13 @@ stock UpdatePlayerCircleProgress(playerid, id, value) {
167165 for (new Float: v = 0 .0 ; v < 360 .0 ; v += preValue) {
168166 ctd (v + 180 .0 , e_CircleDraw[playerid][id][E_CIRCLEDRAW_SIZE], e_CircleDraw[playerid][id][E_CIRCLEDRAW_POSITION][0 ], e_CircleDraw[playerid][id][E_CIRCLEDRAW_POSITION][1 ], x, y);
169167
170- if (! Iter_Contains (CirclesPointers [playerid]< id > , index) ) {
168+ if (! e_CircleDraw [playerid][id][E_CIRCLEDRAW_CREATED][ index] ) {
171169 e_CircleDraw[playerid][id][E_CIRCLEDRAW_POINTS][index] = CreatePlayerTextDraw (playerid, x, y, " ." );
172170 PlayerTextDrawAlignment (playerid, e_CircleDraw[playerid][id][E_CIRCLEDRAW_POINTS][index], 2 );
173171 PlayerTextDrawLetterSize (playerid, e_CircleDraw[playerid][id][E_CIRCLEDRAW_POINTS][index], e_CircleDraw[playerid][id][E_CIRCLEDRAW_THICKNESS], e_CircleDraw[playerid][id][E_CIRCLEDRAW_THICKNESS] + (e_CircleDraw[playerid][id][E_CIRCLEDRAW_THICKNESS] * 2 ));
174172 PlayerTextDrawSetShadow (playerid, e_CircleDraw[playerid][id][E_CIRCLEDRAW_POINTS][index], 0 );
175173
176- Iter_Add (CirclesPointers [playerid]< id > , index) ;
174+ e_CircleDraw [playerid][id][E_CIRCLEDRAW_CREATED][ index] = true ;
177175 }
178176
179177 PlayerTextDrawColor (playerid, e_CircleDraw[playerid][id][E_CIRCLEDRAW_POINTS][index], percent <= index ? (e_CircleDraw[playerid][id][E_CIRCLEDRAW_BACKGROUND]) : (e_CircleDraw[playerid][id][E_CIRCLEDRAW_COLOR]));
@@ -182,9 +180,10 @@ stock UpdatePlayerCircleProgress(playerid, id, value) {
182180
183181 /* Security Update */
184182 e_CircleDraw[playerid][id][E_CIRCLEDRAW_VALUE] = value;
183+ e_CircleDraw[playerid][id][E_CIRCLEDRAW_POLYGONS_COUNT] = index;
185184
186185 /* Update */
187- foreach (new i: CirclesPointers[playerid] < id > )
186+ for (new i = 0 ; i < value; i ++ )
188187 PlayerTextDrawShow (playerid, e_CircleDraw[playerid][id][E_CIRCLEDRAW_POINTS][i]);
189188
190189 return true ;
0 commit comments