-
Notifications
You must be signed in to change notification settings - Fork 1
/
rm_random_item.sma
74 lines (61 loc) · 1.65 KB
/
rm_random_item.sma
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include <amxmodx>
#include <amxmisc>
#include <rm_api>
new rune_name[] = "rm_random_item";
new rune_descr[] = "rm_random_item_desc";
new g_CurrentRuneID = 0;
new g_iCfgSpawnSecondsDelay = 0;
public plugin_init()
{
register_plugin("RM_RANDOM_ITEM","1.1","Karaulov");
rm_register_rune(rune_name,rune_descr,Float:{255.0,255.0,255.0});
rm_base_use_rune_as_item( );
g_CurrentRuneID = rm_get_rune_by_name(rune_name);
// Максимальное количество предметов/рун которые могут быть на карте в одно время
new max_count = 10;
rm_read_cfg_int(rune_name,"MAX_COUNT_ON_MAP",max_count,max_count);
rm_base_set_max_count( max_count );
// Задержка между спавнами
rm_read_cfg_int(rune_name,"DELAY_BETWEEN_NEXT_SPAWN",g_iCfgSpawnSecondsDelay,g_iCfgSpawnSecondsDelay);
}
new Float:flLastSpawnTime = 0.0;
public rm_spawn_rune(iEnt)
{
if (floatround(floatabs(get_gametime() - flLastSpawnTime)) > g_iCfgSpawnSecondsDelay)
{
rm_set_rune_num(iEnt,g_CurrentRuneID);
set_task(1.0, "update_random_item", iEnt, _, _, "b");
flLastSpawnTime = get_gametime();
return SPAWN_SUCCESS;
}
return SPAWN_ERROR;
}
public update_random_item( ent )
{
if (is_nullent( ent ))
{
remove_task( ent );
return;
}
new rune_id = rm_get_rune_runeid(ent);
new rune_max_id = rm_get_runes_count();
if (rune_id >= 0 && rune_id < rune_max_id)
{
for(new i = 0; i < rune_max_id; i++)
{
if ( i != g_CurrentRuneID && rm_is_rune_item(i) )
{
rm_base_swap_rune_id(ent,i);
return;
}
}
}
}
public rm_remove_rune(ent)
{
remove_task(ent);
}
public rm_give_rune(id)
{
return NO_RUNE_PICKUP_SUCCESS;
}