Senior Member
Join Date: Oct 2021
Location: Jupiter
|
07-12-2023
, 19:23
Re: Slide/Push Array/CellArray
|
#9
|
Quote:
Originally Posted by Black Rose
Here's how I interpret your description so far.
If you have a HUD/timer I would use prune inside that to update it accordingly.
arrayfirst()+120-current time = countdown clock. Would only work after the first one is picked up though.
arrayindex() would tell how many is left to pickup for the bonus, 20-arrayindex() is obviously the picked up number.
Everything else within the ring pickup event.
Not sure if it should be -1 within "arrayprune(a, sys_time - (120-1));", I hate calculating time. I think it should be there though because i used >= inside pruning meaning the minimum value is an acceptable value.
If I would use the stocks outside of this example I would replace this inside of _arrayindex():
return size;
with
return -1;
Code:
#include <amxmodx>
#define arraypush(%0,%1) _arraypush(%0,sizeof(%0),%1)
#define arrayfirst(%0) _arrayfirst(%0,sizeof(%0))
#define arrayprune(%0,%1) _arrayprune(%0,sizeof(%0),%1)
#define arrayindex(%0) _arrayindex(%0,sizeof(%0))
public plugin_init() {
register_plugin("a Plugin 7", "1.0", "[ --{-@ ]");
new a[20];
new sys_time = 100;
server_print("-1: %03d, %03d, %03d, %03d, %03d, %03d, %03d, %03d, %03d, %03d, %03d, %03d, %03d, %03d, %03d, %03d, %03d, %03d, %03d, %03d", a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15], a[16], a[17], a[18], a[19]);
for (new i = 0; i < 100; i++) {
sys_time += random_num(3,10);
arrayprune(a, sys_time - (120-1));
arraypush(a, sys_time);
server_print("%02d: %03d, %03d, %03d, %03d, %03d, %03d, %03d, %03d, %03d, %03d, %03d, %03d, %03d, %03d, %03d, %03d, %03d, %03d, %03d, %03d, L%02d, T%03d, F%03d, P%03d", i, a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15], a[16], a[17], a[18], a[19], arrayindex(a), arrayfirst(a)+120-sys_time, arrayfirst(a), clamp(sys_time-(120-1), 0, 2147483647));
if (a[0])
{
server_print("BONUS!");
arrayset(a, 0, sizeof(a));
}
}
}
stock _arraypush(arr[], size, value)
{
for (new i = 0; i < size - 1; i++)
arr[i] = arr[i + 1];
arr[size - 1] = value;
}
stock _arrayfirst(arr[], size)
{
for (new i = 0; i < size; i++)
{
if (!arr[i])
continue;
return arr[i];
}
return 0;
}
stock _arrayindex(arr[], size)
{
for (new i = 0; i < size; i++)
{
if (!arr[i])
continue;
return i;
}
return size;
}
stock _arrayprune(arr[], size, minval)
{
for (new i = 0; i < size; i++)
{
if (arr[i]>=minval)
return;
arr[i] = 0;
}
}
L: Rings Left
T: Time Left
F: Timestamp of first valid ring (after pruning)
P: Cut-off at previous pruning
Code:
-1: 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000
00: 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 109, L19, T120, F109, P000
01: 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 109, 114, L18, T115, F109, P000
02: 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 109, 114, 123, L17, T106, F109, P004
03: 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 109, 114, 123, 131, L16, T098, F109, P012
04: 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 109, 114, 123, 131, 136, L15, T093, F109, P017
05: 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 109, 114, 123, 131, 136, 139, L14, T090, F109, P020
06: 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 109, 114, 123, 131, 136, 139, 144, L13, T085, F109, P025
07: 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 109, 114, 123, 131, 136, 139, 144, 153, L12, T076, F109, P034
08: 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 109, 114, 123, 131, 136, 139, 144, 153, 156, L11, T073, F109, P037
09: 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 109, 114, 123, 131, 136, 139, 144, 153, 156, 166, L10, T063, F109, P047
10: 000, 000, 000, 000, 000, 000, 000, 000, 000, 109, 114, 123, 131, 136, 139, 144, 153, 156, 166, 176, L09, T053, F109, P057
11: 000, 000, 000, 000, 000, 000, 000, 000, 109, 114, 123, 131, 136, 139, 144, 153, 156, 166, 176, 186, L08, T043, F109, P067
12: 000, 000, 000, 000, 000, 000, 000, 109, 114, 123, 131, 136, 139, 144, 153, 156, 166, 176, 186, 191, L07, T038, F109, P072
13: 000, 000, 000, 000, 000, 000, 109, 114, 123, 131, 136, 139, 144, 153, 156, 166, 176, 186, 191, 195, L06, T034, F109, P076
14: 000, 000, 000, 000, 000, 109, 114, 123, 131, 136, 139, 144, 153, 156, 166, 176, 186, 191, 195, 204, L05, T025, F109, P085
15: 000, 000, 000, 000, 109, 114, 123, 131, 136, 139, 144, 153, 156, 166, 176, 186, 191, 195, 204, 212, L04, T017, F109, P093
16: 000, 000, 000, 109, 114, 123, 131, 136, 139, 144, 153, 156, 166, 176, 186, 191, 195, 204, 212, 221, L03, T008, F109, P102
17: 000, 000, 109, 114, 123, 131, 136, 139, 144, 153, 156, 166, 176, 186, 191, 195, 204, 212, 221, 227, L02, T002, F109, P108
18: 000, 000, 000, 123, 131, 136, 139, 144, 153, 156, 166, 176, 186, 191, 195, 204, 212, 221, 227, 234, L03, T009, F123, P115
19: 000, 000, 123, 131, 136, 139, 144, 153, 156, 166, 176, 186, 191, 195, 204, 212, 221, 227, 234, 239, L02, T004, F123, P120
20: 000, 000, 131, 136, 139, 144, 153, 156, 166, 176, 186, 191, 195, 204, 212, 221, 227, 234, 239, 249, L02, T002, F131, P130
21: 000, 000, 000, 000, 144, 153, 156, 166, 176, 186, 191, 195, 204, 212, 221, 227, 234, 239, 249, 259, L04, T005, F144, P140
22: 000, 000, 000, 000, 153, 156, 166, 176, 186, 191, 195, 204, 212, 221, 227, 234, 239, 249, 259, 267, L04, T006, F153, P148
23: 000, 000, 000, 000, 156, 166, 176, 186, 191, 195, 204, 212, 221, 227, 234, 239, 249, 259, 267, 274, L04, T002, F156, P155
24: 000, 000, 000, 000, 166, 176, 186, 191, 195, 204, 212, 221, 227, 234, 239, 249, 259, 267, 274, 280, L04, T006, F166, P161
25: 000, 000, 000, 166, 176, 186, 191, 195, 204, 212, 221, 227, 234, 239, 249, 259, 267, 274, 280, 285, L03, T001, F166, P166
26: 000, 000, 000, 176, 186, 191, 195, 204, 212, 221, 227, 234, 239, 249, 259, 267, 274, 280, 285, 290, L03, T006, F176, P171
27: 000, 000, 000, 186, 191, 195, 204, 212, 221, 227, 234, 239, 249, 259, 267, 274, 280, 285, 290, 297, L03, T009, F186, P178
28: 000, 000, 186, 191, 195, 204, 212, 221, 227, 234, 239, 249, 259, 267, 274, 280, 285, 290, 297, 301, L02, T005, F186, P182
29: 000, 186, 191, 195, 204, 212, 221, 227, 234, 239, 249, 259, 267, 274, 280, 285, 290, 297, 301, 305, L01, T001, F186, P186
30: 000, 000, 195, 204, 212, 221, 227, 234, 239, 249, 259, 267, 274, 280, 285, 290, 297, 301, 305, 312, L02, T003, F195, P193
31: 000, 000, 204, 212, 221, 227, 234, 239, 249, 259, 267, 274, 280, 285, 290, 297, 301, 305, 312, 322, L02, T002, F204, P203
32: 000, 000, 212, 221, 227, 234, 239, 249, 259, 267, 274, 280, 285, 290, 297, 301, 305, 312, 322, 330, L02, T002, F212, P211
33: 000, 000, 221, 227, 234, 239, 249, 259, 267, 274, 280, 285, 290, 297, 301, 305, 312, 322, 330, 339, L02, T002, F221, P220
34: 000, 000, 227, 234, 239, 249, 259, 267, 274, 280, 285, 290, 297, 301, 305, 312, 322, 330, 339, 342, L02, T005, F227, P223
35: 000, 000, 234, 239, 249, 259, 267, 274, 280, 285, 290, 297, 301, 305, 312, 322, 330, 339, 342, 352, L02, T002, F234, P233
36: 000, 000, 239, 249, 259, 267, 274, 280, 285, 290, 297, 301, 305, 312, 322, 330, 339, 342, 352, 356, L02, T003, F239, P237
37: 000, 000, 249, 259, 267, 274, 280, 285, 290, 297, 301, 305, 312, 322, 330, 339, 342, 352, 356, 366, L02, T003, F249, P247
38: 000, 000, 259, 267, 274, 280, 285, 290, 297, 301, 305, 312, 322, 330, 339, 342, 352, 356, 366, 369, L02, T010, F259, P250
39: 000, 259, 267, 274, 280, 285, 290, 297, 301, 305, 312, 322, 330, 339, 342, 352, 356, 366, 369, 375, L01, T004, F259, P256
40: 000, 267, 274, 280, 285, 290, 297, 301, 305, 312, 322, 330, 339, 342, 352, 356, 366, 369, 375, 379, L01, T008, F267, P260
41: 000, 274, 280, 285, 290, 297, 301, 305, 312, 322, 330, 339, 342, 352, 356, 366, 369, 375, 379, 388, L01, T006, F274, P269
42: 000, 280, 285, 290, 297, 301, 305, 312, 322, 330, 339, 342, 352, 356, 366, 369, 375, 379, 388, 396, L01, T004, F280, P277
43: 000, 285, 290, 297, 301, 305, 312, 322, 330, 339, 342, 352, 356, 366, 369, 375, 379, 388, 396, 402, L01, T003, F285, P283
44: 000, 290, 297, 301, 305, 312, 322, 330, 339, 342, 352, 356, 366, 369, 375, 379, 388, 396, 402, 408, L01, T002, F290, P289
45: 000, 297, 301, 305, 312, 322, 330, 339, 342, 352, 356, 366, 369, 375, 379, 388, 396, 402, 408, 415, L01, T002, F297, P296
46: 000, 000, 305, 312, 322, 330, 339, 342, 352, 356, 366, 369, 375, 379, 388, 396, 402, 408, 415, 423, L02, T002, F305, P304
47: 000, 000, 312, 322, 330, 339, 342, 352, 356, 366, 369, 375, 379, 388, 396, 402, 408, 415, 423, 427, L02, T005, F312, P308
48: 000, 312, 322, 330, 339, 342, 352, 356, 366, 369, 375, 379, 388, 396, 402, 408, 415, 423, 427, 431, L01, T001, F312, P312
49: 000, 322, 330, 339, 342, 352, 356, 366, 369, 375, 379, 388, 396, 402, 408, 415, 423, 427, 431, 439, L01, T003, F322, P320
50: 000, 330, 339, 342, 352, 356, 366, 369, 375, 379, 388, 396, 402, 408, 415, 423, 427, 431, 439, 442, L01, T008, F330, P323
51: 330, 339, 342, 352, 356, 366, 369, 375, 379, 388, 396, 402, 408, 415, 423, 427, 431, 439, 442, 446, L00, T004, F330, P327
BONUS!
52: 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 449, L19, T120, F449, P330
53: 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 449, 456, L18, T113, F449, P337
54: 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 449, 456, 463, L17, T106, F449, P344
55: 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 449, 456, 463, 466, L16, T103, F449, P347
56: 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 449, 456, 463, 466, 470, L15, T099, F449, P351
57: 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 449, 456, 463, 466, 470, 475, L14, T094, F449, P356
58: 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 449, 456, 463, 466, 470, 475, 480, L13, T089, F449, P361
59: 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 449, 456, 463, 466, 470, 475, 480, 487, L12, T082, F449, P368
60: 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 449, 456, 463, 466, 470, 475, 480, 487, 491, L11, T078, F449, P372
61: 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 449, 456, 463, 466, 470, 475, 480, 487, 491, 496, L10, T073, F449, P377
62: 000, 000, 000, 000, 000, 000, 000, 000, 000, 449, 456, 463, 466, 470, 475, 480, 487, 491, 496, 506, L09, T063, F449, P387
63: 000, 000, 000, 000, 000, 000, 000, 000, 449, 456, 463, 466, 470, 475, 480, 487, 491, 496, 506, 514, L08, T055, F449, P395
64: 000, 000, 000, 000, 000, 000, 000, 449, 456, 463, 466, 470, 475, 480, 487, 491, 496, 506, 514, 518, L07, T051, F449, P399
65: 000, 000, 000, 000, 000, 000, 449, 456, 463, 466, 470, 475, 480, 487, 491, 496, 506, 514, 518, 527, L06, T042, F449, P408
66: 000, 000, 000, 000, 000, 449, 456, 463, 466, 470, 475, 480, 487, 491, 496, 506, 514, 518, 527, 530, L05, T039, F449, P411
67: 000, 000, 000, 000, 449, 456, 463, 466, 470, 475, 480, 487, 491, 496, 506, 514, 518, 527, 530, 534, L04, T035, F449, P415
68: 000, 000, 000, 449, 456, 463, 466, 470, 475, 480, 487, 491, 496, 506, 514, 518, 527, 530, 534, 541, L03, T028, F449, P422
69: 000, 000, 449, 456, 463, 466, 470, 475, 480, 487, 491, 496, 506, 514, 518, 527, 530, 534, 541, 548, L02, T021, F449, P429
70: 000, 449, 456, 463, 466, 470, 475, 480, 487, 491, 496, 506, 514, 518, 527, 530, 534, 541, 548, 552, L01, T017, F449, P433
71: 449, 456, 463, 466, 470, 475, 480, 487, 491, 496, 506, 514, 518, 527, 530, 534, 541, 548, 552, 559, L00, T010, F449, P440
BONUS!
72: 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 562, L19, T120, F562, P443
73: 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 562, 572, L18, T110, F562, P453
74: 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 562, 572, 582, L17, T100, F562, P463
75: 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 562, 572, 582, 592, L16, T090, F562, P473
76: 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 562, 572, 582, 592, 596, L15, T086, F562, P477
77: 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 562, 572, 582, 592, 596, 606, L14, T076, F562, P487
78: 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 562, 572, 582, 592, 596, 606, 612, L13, T070, F562, P493
79: 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 562, 572, 582, 592, 596, 606, 612, 621, L12, T061, F562, P502
80: 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 562, 572, 582, 592, 596, 606, 612, 621, 629, L11, T053, F562, P510
81: 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 562, 572, 582, 592, 596, 606, 612, 621, 629, 638, L10, T044, F562, P519
82: 000, 000, 000, 000, 000, 000, 000, 000, 000, 562, 572, 582, 592, 596, 606, 612, 621, 629, 638, 646, L09, T036, F562, P527
83: 000, 000, 000, 000, 000, 000, 000, 000, 562, 572, 582, 592, 596, 606, 612, 621, 629, 638, 646, 652, L08, T030, F562, P533
84: 000, 000, 000, 000, 000, 000, 000, 562, 572, 582, 592, 596, 606, 612, 621, 629, 638, 646, 652, 661, L07, T021, F562, P542
85: 000, 000, 000, 000, 000, 000, 562, 572, 582, 592, 596, 606, 612, 621, 629, 638, 646, 652, 661, 668, L06, T014, F562, P549
86: 000, 000, 000, 000, 000, 562, 572, 582, 592, 596, 606, 612, 621, 629, 638, 646, 652, 661, 668, 675, L05, T007, F562, P556
87: 000, 000, 000, 000, 000, 572, 582, 592, 596, 606, 612, 621, 629, 638, 646, 652, 661, 668, 675, 682, L05, T010, F572, P563
88: 000, 000, 000, 000, 000, 582, 592, 596, 606, 612, 621, 629, 638, 646, 652, 661, 668, 675, 682, 692, L05, T010, F582, P573
89: 000, 000, 000, 000, 582, 592, 596, 606, 612, 621, 629, 638, 646, 652, 661, 668, 675, 682, 692, 696, L04, T006, F582, P577
90: 000, 000, 000, 582, 592, 596, 606, 612, 621, 629, 638, 646, 652, 661, 668, 675, 682, 692, 696, 701, L03, T001, F582, P582
91: 000, 000, 000, 592, 596, 606, 612, 621, 629, 638, 646, 652, 661, 668, 675, 682, 692, 696, 701, 710, L03, T002, F592, P591
92: 000, 000, 000, 000, 606, 612, 621, 629, 638, 646, 652, 661, 668, 675, 682, 692, 696, 701, 710, 717, L04, T009, F606, P598
93: 000, 000, 000, 606, 612, 621, 629, 638, 646, 652, 661, 668, 675, 682, 692, 696, 701, 710, 717, 721, L03, T005, F606, P602
94: 000, 000, 000, 612, 621, 629, 638, 646, 652, 661, 668, 675, 682, 692, 696, 701, 710, 717, 721, 731, L03, T001, F612, P612
95: 000, 000, 000, 621, 629, 638, 646, 652, 661, 668, 675, 682, 692, 696, 701, 710, 717, 721, 731, 736, L03, T005, F621, P617
96: 000, 000, 621, 629, 638, 646, 652, 661, 668, 675, 682, 692, 696, 701, 710, 717, 721, 731, 736, 740, L02, T001, F621, P621
97: 000, 000, 629, 638, 646, 652, 661, 668, 675, 682, 692, 696, 701, 710, 717, 721, 731, 736, 740, 745, L02, T004, F629, P626
98: 000, 000, 638, 646, 652, 661, 668, 675, 682, 692, 696, 701, 710, 717, 721, 731, 736, 740, 745, 752, L02, T006, F638, P633
99: 000, 000, 646, 652, 661, 668, 675, 682, 692, 696, 701, 710, 717, 721, 731, 736, 740, 745, 752, 758, L02, T008, F646, P639
|
my brain clenching reading this
__________________
|
|