Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.
Модераторы: Subb98, liFe iS GoOD
Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.
В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.
Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.
Misha90 » 19 июн 2017, 16:03
Всем снова приветик) Как дела? Как лето проходит? Вообщем тут проблема. У меня раунд идёт 8 минут.
Игрокам надоедает ждать столько времени и они выходят. Помогите пожалуйста сделать авто-респавн в обычным моде и мульти-инфекции пожалуйста. Вот ещё у зомби 5 возрождений, то есть если убили 5 раз то он не возрождается. Можно ли ещё сделать если он перезаходит то эти 5 возрождение вычитаются, то есть его убили осталось 4, он перезашел осталось 3. Умоляю помогите
- Код: Выделить всё
enum (+= 100)
{
TASK_SPAWN
}
enum cvar
{
spawndelay, amount, nemesis, survivor, plague, swarm
}
new pcvar[cvar]
new current[33] = 0
new bool: ended = false
public plugin_init()
{
events()
cvars()
}
public events()
{
RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1)
RegisterHam(Ham_Killed, "player", "fw_PlayerKilled")
}
public cvars()
{
pcvar[spawndelay] = register_cvar("zp_spawn_delay", "1.5")
pcvar[amount] = register_cvar("zp_spawn_amount", "5")
pcvar[nemesis] = register_cvar("zp_respawn_in_nemesis", "0")
pcvar[survivor] = register_cvar("zp_respawn_in_survivor", "0")
pcvar[plague] = register_cvar("zp_respawn_in_plague", "0")
pcvar[swarm] = register_cvar("zp_respawn_in_swarm", "0")
}
public fw_PlayerSpawn_Post(id)
{
if(!is_user_alive(id))
return
remove_task(id+TASK_SPAWN)
return
}
public fw_PlayerKilled(victim, attacker, shouldgib)
{
if(zp_is_nemesis_round() && !get_pcvar_num(pcvar[nemesis]))
return
if(zp_is_survivor_round() && !get_pcvar_num(pcvar[survivor]))
return
if(zp_is_plague_round() && !get_pcvar_num(pcvar[plague]))
return
if(zp_is_swarm_round() && !get_pcvar_num(pcvar[swarm]))
return
set_task(get_pcvar_float(pcvar[spawndelay]), "respawn_player_task", victim+TASK_SPAWN)
return
}
public respawn_player_task(taskid)
{
if(!is_user_connected(ID_SPAWN))
{
remove_task(ID_SPAWN+TASK_SPAWN)
return
}
if(current[ID_SPAWN] >= get_pcvar_num(pcvar[amount]))
{
remove_task(ID_SPAWN+TASK_SPAWN)
return
}
if(ended)
{
remove_task(ID_SPAWN+TASK_SPAWN)
return
}
if(cs_get_user_team(ID_SPAWN) != CS_TEAM_SPECTATOR && cs_get_user_team(ID_SPAWN) != CS_TEAM_UNASSIGNED)
{
if(zp_is_nemesis_round())
{
zp_respawn_user(ID_SPAWN, ZP_TEAM_HUMAN)
current[ID_SPAWN]++
return
}
else if(zp_is_plague_round())
{
return
}
else if(zp_is_swarm_round())
{
return
}
zp_respawn_user(ID_SPAWN, ZP_TEAM_ZOMBIE)
current[ID_SPAWN]++
}
return
}
public zp_round_ended(winter)
{
ended = true
}
public zp_round_started()
{
ended = false
new MaxPlayers = get_maxplayers()
for (new player = 1; player <= MaxPlayers; player++)
{
current[player] = 0
}
}
-
Misha90
-
- Сообщения: 94
- Зарегистрирован: 05 апр 2017, 20:06
- Благодарил (а): 49 раз.
- Поблагодарили: 2 раз.
- Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#
Misha90 » 19 июн 2017, 20:37
UP - ПОЖАЛУЙСТА
(
-
Misha90
-
- Сообщения: 94
- Зарегистрирован: 05 апр 2017, 20:06
- Благодарил (а): 49 раз.
- Поблагодарили: 2 раз.
- Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#
Subb98 » 19 июн 2017, 22:30
Misha90, напоминаю Вам, что:
Fedcomp писал(а):На нашем форуме запрещено:
15. Подымать свою тему ранее чем через 8 часов с момента последнего поста. Стандартное время ожидания ответа на форуме - 2 дня.
Вы должны зарегистрироваться, чтобы видеть ссылки.
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
-
Subb98
-
- Сообщения: 5485
- Зарегистрирован: 24 мар 2011, 19:42
- Откуда: г. Пермь
- Благодарил (а): 1329 раз.
- Поблагодарили: 2343 раз.
- Опыт программирования: Больше трех лет
- Языки программирования: PHP
Misha90 » 21 июн 2017, 16:22
Subb98 писал(а):Misha90, напоминаю Вам, что:
Fedcomp писал(а):На нашем форуме запрещено:
15. Подымать свою тему ранее чем через 8 часов с момента последнего поста. Стандартное время ожидания ответа на форуме - 2 дня.
Вы должны зарегистрироваться, чтобы видеть ссылки.
Поможешь?
-
Misha90
-
- Сообщения: 94
- Зарегистрирован: 05 апр 2017, 20:06
- Благодарил (а): 49 раз.
- Поблагодарили: 2 раз.
- Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#
Subb98 » 21 июн 2017, 17:15
Misha90, Ваши попытки предоставьте, а там посмотрим.
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
-
Subb98
-
- Сообщения: 5485
- Зарегистрирован: 24 мар 2011, 19:42
- Откуда: г. Пермь
- Благодарил (а): 1329 раз.
- Поблагодарили: 2343 раз.
- Опыт программирования: Больше трех лет
- Языки программирования: PHP
R0mz1k » 21 июн 2017, 18:20
Код для проверки количества спавн после отключения. Вот только не знаю нужно ли проверять на то, что идёт тот же раунд.
После этого :
- Код: Выделить всё
public fw_PlayerKilled(victim, attacker, shouldgib)
{
if(zp_is_nemesis_round() && !get_pcvar_num(pcvar[nemesis]))
return
if(zp_is_survivor_round() && !get_pcvar_num(pcvar[survivor]))
return
if(zp_is_plague_round() && !get_pcvar_num(pcvar[plague]))
return
if(zp_is_swarm_round() && !get_pcvar_num(pcvar[swarm]))
return
set_task(get_pcvar_float(pcvar[spawndelay]), "respawn_player_task", victim+TASK_SPAWN)
return
}
Добавь это:
- Код: Выделить всё
public client_disconnect(id){
current[id]++
return
}
И ещё, у вас в коде не будут происходить возрождения в plague и swarm раундах даже при включении через квар, а то почему не происходят возрождения в обычном и мульти непонятно
-
R0mz1k
-
- Сообщения: 20
- Зарегистрирован: 30 июл 2014, 12:55
- Благодарил (а): 6 раз.
- Поблагодарили: 0 раз.
- Опыт программирования: Меньше недели
- Языки программирования: Counter-Strike 1.6
Misha90 » 22 июн 2017, 14:46
Subb98 писал(а):Misha90, Ваши попытки предоставьте, а там посмотрим.
- Код: Выделить всё
enum (+= 100)
{
TASK_SPAWN
}
new bool:g_IsZspawned[33]
new z_spawn_mode, z_spawn_infection, z_spawn_team_infection, z_spawn_swarm, z_spawn_team_swarm, z_spawn_plague, z_spawn_team_plague, z_spawn_nemesis, z_spawn_team_nemesis, z_spawn_survivor, z_spawn_team_survivor
enum cvar
{
spawndelay, amount, nemesis, survivor, plague, swarm
}
new pcvar[cvar]
new current[33] = 0
new bool: ended = false
public plugin_init()
{
z_spawn_mode = register_cvar("zp_spawn_mode", "1")
z_spawn_infection = register_cvar("zp_spawn_infection", "1")
z_spawn_team_infection = register_cvar("zp_spawn_team_infection", "0")
z_spawn_swarm = register_cvar("zp_spawn_swarm", "1")
z_spawn_team_swarm = register_cvar("zp_spawn_team_swarm", "0")
z_spawn_plague = register_cvar("zp_spawn_plague", "1")
z_spawn_team_plague = register_cvar("zp_spawn_team_plague", "0")
z_spawn_nemesis = register_cvar("zp_spawn_nemesis", "1")
z_spawn_team_nemesis = register_cvar("zp_spawn_team_nemesis", "0")
z_spawn_survivor = register_cvar("zp_spawn_survivor", "1")
z_spawn_team_survivor = register_cvar("zp_spawn_team_survivor", "0")
register_event("TeamInfo", "event_TeamInfo", "a", "2 = TERRORIST", "2 = CT")
events()
cvars()
}
public client_putinserver(id)
{
g_IsZspawned[id] = false
}
public event_TeamInfo()
{
static id
id = read_data(1)
if (!g_IsZspawned[id])
{
set_task(3.0, "ZSpawnMode", id)
g_IsZspawned[id] = true
}
}
public ZSpawnMode(id)
{
if (0 < get_pcvar_num(z_spawn_mode))
switch (get_pcvar_num(z_spawn_mode))
{
case 1:
{
set_task(0.1, "ZSpawn", id)
if (!is_user_alive(id))
set_task(0.5, "FuncTeleport", id)
}
}
}
public ZSpawn(id)
{
if (zp_is_nemesis_round() && get_pcvar_num(z_spawn_nemesis))
{
switch (get_pcvar_num(z_spawn_team_nemesis))
{
case 0:
{
zp_respawn_user(id, ZP_TEAM_ZOMBIE)
}
case 1:
{
zp_respawn_user(id, ZP_TEAM_HUMAN)
}
}
}
else if (zp_is_survivor_round() && get_pcvar_num(z_spawn_survivor))
{
switch (get_pcvar_num(z_spawn_team_survivor))
{
case 0:
{
zp_respawn_user(id, ZP_TEAM_ZOMBIE)
}
case 1:
{
zp_respawn_user(id, ZP_TEAM_HUMAN)
}
}
}
else if (zp_is_swarm_round() && get_pcvar_num(z_spawn_swarm))
{
switch (get_pcvar_num(z_spawn_team_swarm))
{
case 0:
{
zp_respawn_user(id, ZP_TEAM_ZOMBIE)
}
case 1:
{
zp_respawn_user(id, ZP_TEAM_HUMAN)
}
}
}
else if (zp_is_plague_round() && get_pcvar_num(z_spawn_plague))
{
switch (get_pcvar_num(z_spawn_team_plague))
{
case 0:
{
zp_respawn_user(id, ZP_TEAM_ZOMBIE)
}
case 1:
{
zp_respawn_user(id, ZP_TEAM_HUMAN)
}
}
}
else if (zp_has_round_started() && get_pcvar_num(z_spawn_infection) && zp_is_nemesis_round() == 0 && zp_is_survivor_round() == 0 && zp_is_swarm_round() == 0 && zp_is_plague_round() == 0)
{
switch (get_pcvar_num(z_spawn_team_infection))
{
case 0:
{
zp_respawn_user(id, ZP_TEAM_ZOMBIE)
}
case 1:
{
zp_respawn_user(id, ZP_TEAM_HUMAN)
}
}
}
}
public events()
{
RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1)
RegisterHam(Ham_Killed, "player", "fw_PlayerKilled")
}
public cvars()
{
pcvar[spawndelay] = register_cvar("zp_spawn_delay", "1.5")
pcvar[amount] = register_cvar("zp_spawn_amount", "5")
pcvar[nemesis] = register_cvar("zp_respawn_in_nemesis", "0")
pcvar[survivor] = register_cvar("zp_respawn_in_survivor", "0")
pcvar[plague] = register_cvar("zp_respawn_in_plague", "0")
pcvar[swarm] = register_cvar("zp_respawn_in_swarm", "0")
}
public fw_PlayerSpawn_Post(id)
{
if(!is_user_alive(id))
return
remove_task(id+TASK_SPAWN)
return
}
public fw_PlayerKilled(victim, attacker, shouldgib)
{
if(zp_is_nemesis_round() && !get_pcvar_num(pcvar[nemesis]))
return
if(zp_is_survivor_round() && !get_pcvar_num(pcvar[survivor]))
return
if(zp_is_plague_round() && !get_pcvar_num(pcvar[plague]))
return
if(zp_is_swarm_round() && !get_pcvar_num(pcvar[swarm]))
return
set_task(get_pcvar_float(pcvar[spawndelay]), "respawn_player_task", victim+TASK_SPAWN)
return
}
public client_disconnect(id)
{
current[id]++
return
}
public respawn_player_task(taskid)
{
if(!is_user_connected(ID_SPAWN))
{
remove_task(ID_SPAWN+TASK_SPAWN)
return
}
if(current[ID_SPAWN] >= get_pcvar_num(pcvar[amount]))
{
remove_task(ID_SPAWN+TASK_SPAWN)
return
}
if(ended)
{
remove_task(ID_SPAWN+TASK_SPAWN)
return
}
if(cs_get_user_team(ID_SPAWN) != CS_TEAM_SPECTATOR && cs_get_user_team(ID_SPAWN) != CS_TEAM_UNASSIGNED)
{
if(zp_is_nemesis_round())
{
zp_respawn_user(ID_SPAWN, ZP_TEAM_HUMAN)
current[ID_SPAWN]++
return
}
else if(zp_is_plague_round())
{
return
}
else if(zp_is_swarm_round())
{
return
}
zp_respawn_user(ID_SPAWN, ZP_TEAM_ZOMBIE)
current[ID_SPAWN]++
}
return
}
public zp_round_ended(winter)
{
ended = true
}
public zp_round_started()
{
ended = false
new MaxPlayers = get_maxplayers()
for (new player = 1; player <= MaxPlayers; player++)
{
current[player] = 0
}
}
-
Misha90
-
- Сообщения: 94
- Зарегистрирован: 05 апр 2017, 20:06
- Благодарил (а): 49 раз.
- Поблагодарили: 2 раз.
- Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#
Вернуться в Скриптинг
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16