Skip to content

Commit 3d5be1a

Browse files
committed
nomination: refactoring
1 parent 4d24153 commit 3d5be1a

3 files changed

Lines changed: 35 additions & 38 deletions

File tree

addons/amxmodx/scripting/include/map_manager_consts.inc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ enum _:MapStruct {
1212
};
1313

1414
enum _:NomStruct {
15-
NomPlayer,
16-
NomMapIndex
15+
NomMapName[MAPNAME_LENGTH],
16+
NomPlayer
1717
};
1818

1919
enum {

addons/amxmodx/scripting/map_manager_effects.sma

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,10 @@ stock freeze_unfreeze(type)
182182
}
183183
is_map_extended(map[])
184184
{
185-
new curmap[MAPNAME_LENGTH]; get_mapname(curmap, charsmax(curmap));
185+
static curmap[MAPNAME_LENGTH];
186+
if(!curmap[0]) {
187+
get_mapname(curmap, charsmax(curmap));
188+
}
186189
return equali(map, curmap);
187190
}
188191
stock set_black_screenfade(fade)

addons/amxmodx/scripting/map_manager_nomination.sma

Lines changed: 29 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
#endif
88

99
#define PLUGIN "Map Manager: Nomination"
10-
#define VERSION "0.0.3"
10+
#define VERSION "0.0.4"
1111
#define AUTHOR "Mistrick"
1212

1313
#pragma semicolon 1
@@ -111,7 +111,7 @@ public clcmd_say(id)
111111
new map_index = mapm_get_map_index(text);
112112

113113
if(map_index != INVALID_MAP_INDEX) {
114-
nominate_map(id, text, map_index);
114+
nominate_map(id, text);
115115
} else if(strlen(text) >= 4) {
116116
new Array:nominate_list = ArrayCreate(1, 1), array_size;
117117

@@ -125,7 +125,7 @@ public clcmd_say(id)
125125
if(array_size == 1) {
126126
map_index = ArrayGetCell(nominate_list, 0);
127127
new map_info[MapStruct]; ArrayGetArray(g_aMapsList, map_index, map_info);
128-
nominate_map(id, map_info[MapName], map_index);
128+
nominate_map(id, map_info[MapName]);
129129
} else if(array_size > 1) {
130130
show_nomlist(id, nominate_list, array_size);
131131
}
@@ -135,10 +135,8 @@ public clcmd_say(id)
135135

136136
return PLUGIN_CONTINUE;
137137
}
138-
nominate_map(id, map[], index)
138+
nominate_map(id, map[])
139139
{
140-
new map_info[MapStruct]; ArrayGetArray(g_aMapsList, index, map_info);
141-
142140
if(mapm_get_blocked_count(map)) {
143141
client_print_color(id, print_team_default, "%s^1 %L", g_sPrefix, id, "MAPM_NOM_NOT_AVAILABLE_MAP");
144142
return NOMINATION_FAIL;
@@ -152,7 +150,7 @@ nominate_map(id, map[], index)
152150
new nom_info[NomStruct], name[32];
153151
get_user_name(id, name, charsmax(name));
154152

155-
new nom_index = map_nominated(index);
153+
new nom_index = map_nominated(map);
156154
if(nom_index != INVALID_MAP_INDEX) {
157155
ArrayGetArray(g_aNomList, nom_index, nom_info);
158156
if(id != nom_info[NomPlayer]) {
@@ -179,8 +177,8 @@ nominate_map(id, map[], index)
179177
return NOMINATION_FAIL;
180178
}
181179

180+
copy(nom_info[NomMapName], charsmax(nom_info[NomMapName]), map);
182181
nom_info[NomPlayer] = id;
183-
nom_info[NomMapIndex] = index;
184182
ArrayPushArray(g_aNomList, nom_info);
185183

186184
g_iNomMaps[id]++;
@@ -200,23 +198,23 @@ show_nomlist(id, Array: array, size)
200198
ArrayGetArray(g_aMapsList, map_index, map_info);
201199

202200
num_to_str(map_index, str_num, charsmax(str_num));
203-
nom_index = map_nominated(map_index);
201+
nom_index = map_nominated(map_info[MapName]);
204202
block_count = mapm_get_blocked_count(map_info[MapName]);
205203

206204
if(block_count) {
207205
formatex(item_info, charsmax(item_info), "%s[\r%d\d]", map_info[MapName], block_count);
208-
menu_additem(menu, item_info, str_num, _, g_hCallbackDisabled);
206+
menu_additem(menu, item_info, .callback = g_hCallbackDisabled);
209207
} else if(nom_index != INVALID_MAP_INDEX) {
210208
new nom_info[NomStruct]; ArrayGetArray(g_aNomList, nom_index, nom_info);
211209
if(id == nom_info[NomPlayer]) {
212210
formatex(item_info, charsmax(item_info), "%s[\y*\w]", map_info[MapName]);
213-
menu_additem(menu, item_info, str_num);
211+
menu_additem(menu, item_info);
214212
} else {
215213
formatex(item_info, charsmax(item_info), "%s[\y*\d]", map_info[MapName]);
216-
menu_additem(menu, item_info, str_num, _, g_hCallbackDisabled);
214+
menu_additem(menu, item_info, .callback = g_hCallbackDisabled);
217215
}
218216
} else {
219-
menu_additem(menu, map_info[MapName], str_num);
217+
menu_additem(menu, map_info[MapName]);
220218
}
221219
}
222220

@@ -238,16 +236,15 @@ public nomlist_handler(id, menu, item)
238236

239237
new item_info[8], item_name[MAPNAME_LENGTH + 16], access, callback;
240238
menu_item_getinfo(menu, item, access, item_info, charsmax(item_info), item_name, charsmax(item_name), callback);
241-
242-
new map_index = str_to_num(item_info);
239+
243240
trim_bracket(item_name);
244-
new map_nominated = nominate_map(id, item_name, map_index);
241+
new nominated = nominate_map(id, item_name);
245242

246-
if(map_nominated == NOMINATION_REMOVED || get_num(DONT_CLOSE_MENU)) {
247-
if(map_nominated == NOMINATION_SUCCESS) {
243+
if(nominated == NOMINATION_REMOVED || get_num(DONT_CLOSE_MENU)) {
244+
if(nominated == NOMINATION_SUCCESS) {
248245
format(item_name, charsmax(item_name), "%s[\y*\w]", item_name);
249246
menu_item_setname(menu, item, item_name);
250-
} else if(map_nominated == NOMINATION_REMOVED) {
247+
} else if(nominated == NOMINATION_REMOVED) {
251248
menu_item_setname(menu, item, item_name);
252249
}
253250
menu_display(id, menu);
@@ -265,7 +262,7 @@ public clcmd_mapslist(id)
265262
new map_info[MapStruct], item_info[48], block_count, size = ArraySize(g_aMapsList);
266263
new random_sort = get_num(RANDOM_SORT), Array:array = ArrayCreate(1, 1);
267264

268-
for(new i = 0, index, nom_index, num[8]; i < size; i++) {
265+
for(new i = 0, index, nom_index; i < size; i++) {
269266
if(random_sort) {
270267
do {
271268
index = random(size);
@@ -275,25 +272,24 @@ public clcmd_mapslist(id)
275272
index = i;
276273
}
277274

278-
num_to_str(index, num, charsmax(num));
279275
ArrayGetArray(g_aMapsList, index, map_info);
280-
nom_index = map_nominated(index);
276+
nom_index = map_nominated(map_info[MapName]);
281277
block_count = mapm_get_blocked_count(map_info[MapName]);
282278

283279
if(block_count) {
284280
formatex(item_info, charsmax(item_info), "%s[\r%d\d]", map_info[MapName], block_count);
285-
menu_additem(menu, item_info, _, _, g_hCallbackDisabled);
281+
menu_additem(menu, item_info, .callback = g_hCallbackDisabled);
286282
} else if(nom_index != INVALID_MAP_INDEX) {
287283
new nom_info[NomStruct]; ArrayGetArray(g_aNomList, nom_index, nom_info);
288284
if(id == nom_info[NomPlayer]) {
289285
formatex(item_info, charsmax(item_info), "%s[\y*\w]", map_info[MapName]);
290-
menu_additem(menu, item_info, num);
286+
menu_additem(menu, item_info);
291287
} else {
292288
formatex(item_info, charsmax(item_info), "%s[\y*\d]", map_info[MapName]);
293-
menu_additem(menu, item_info, num, _, g_hCallbackDisabled);
289+
menu_additem(menu, item_info, .callback = g_hCallbackDisabled);
294290
}
295291
} else {
296-
menu_additem(menu, map_info[MapName], num);
292+
menu_additem(menu, map_info[MapName]);
297293
}
298294
}
299295

@@ -327,15 +323,14 @@ public mapslist_handler(id, menu, item)
327323
new item_info[8], item_name[MAPNAME_LENGTH + 16], access, callback;
328324
menu_item_getinfo(menu, item, access, item_info, charsmax(item_info), item_name, charsmax(item_name), callback);
329325

330-
new map_index = str_to_num(item_info);
331326
trim_bracket(item_name);
332-
new map_nominated = nominate_map(id, item_name, map_index);
327+
new nominated = nominate_map(id, item_name);
333328

334329
if(g_iNomMaps[id] < get_num(MAPS_PER_PLAYER) || get_num(DONT_CLOSE_MENU)) {
335-
if(map_nominated == NOMINATION_SUCCESS) {
330+
if(nominated == NOMINATION_SUCCESS) {
336331
format(item_name, charsmax(item_name), "%s[\y*\w]", item_name);
337332
menu_item_setname(menu, item, item_name);
338-
} else if(map_nominated == NOMINATION_REMOVED) {
333+
} else if(nominated == NOMINATION_REMOVED) {
339334
menu_item_setname(menu, item, item_name);
340335
}
341336
menu_display(id, menu, item / 7);
@@ -351,26 +346,25 @@ public mapm_prepare_votelist(type)
351346
if(type == VOTE_BY_SCHEDULER_SECOND) {
352347
return;
353348
}
354-
new nom_info[NomStruct], map_info[MapStruct];
349+
new nom_info[NomStruct];
355350
for(new i, index; i < get_num(MAPS_IN_VOTE) && ArraySize(g_aNomList); i++) {
356351
index = random(ArraySize(g_aNomList));
357352
ArrayGetArray(g_aNomList, index, nom_info);
358-
ArrayGetArray(g_aMapsList, nom_info[NomMapIndex], map_info);
359353
ArrayDeleteItem(g_aNomList, index);
360354
g_iNomMaps[nom_info[NomPlayer]]--;
361355

362-
if(mapm_push_map_to_votelist(map_info[MapName], PUSH_BY_NOMINATION) == PUSH_BLOCKED) {
356+
if(mapm_push_map_to_votelist(nom_info[NomMapName], PUSH_BY_NOMINATION) == PUSH_BLOCKED) {
363357
i--;
364358
}
365359
}
366360
}
367361

368-
map_nominated(index)
362+
map_nominated(map[])
369363
{
370364
new nom_info[NomStruct], size = ArraySize(g_aNomList);
371365
for(new i; i < size; i++) {
372366
ArrayGetArray(g_aNomList, i, nom_info);
373-
if(index == nom_info[NomMapIndex]) {
367+
if(equali(map, nom_info[NomMapName])) {
374368
return i;
375369
}
376370
}

0 commit comments

Comments
 (0)