Veteran Member
Join Date: Feb 2012
Location: GuateAmala
|
04-28-2020
, 23:23
Problem with task
|
#1
|
Hi everyone, well I'm doing like a mini game that is battle of deagles, the mini game consists of that every 15 seconds the player freezes and gives him a deagle to kill them, after the 15 second has passed he drops the deagle and He gives a knife and so on, when there are only two players left, I remove the tasks and they give them deagle again but with more bullets, the problem is that the task of removing the deagle does not work and drops the deagle and gives me the knife. It is like I removed the task of giving deagle but since this task activates the other it is like in progress and it is removed until when the eight seconds I give to remove the deagle pass. In other words I want to remove the tasks instantly when there are only two players left so that it does not activate after there are only the two players and doesn't affect the mini game, Could someone tell me how can I fix it please? ... Thanks in advance
This is the code:
PHP Code:
#include <amxmodx> #include <fun> #include <hamsandwich> #include <fakemeta> #include <engine> #include <cstrike> #include <dhudmessage>
#define PLUGIN "deagle battle" #define VERSION "1.0" #define AUTHOR "kha"
#define flag_get(%1,%2) (%1 & (1 << (%2 & 31))) #define flag_set(%1,%2) %1 |= (1 << (%2 & 31)) #define flag_unset(%1,%2) %1 &= ~(1 << (%2 & 31))
new g_MaxPlayers
#define TASK_GIVEDEAGLE 558 #define TASK_REMOVEDEAGLE 559
new g_IsFrozen new Float:g_FrozenGravity[33]
new Ham:Ham_Player_ResetMaxSpeed = Ham_Item_PreFrame
#define GRAVITY_HIGH 999999.9 #define GRAVITY_NONE 0.000001
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) RegisterHam(Ham_Killed, "player", "fw_PlayerKilled_Post", 1) RegisterHam(Ham_Player_ResetMaxSpeed, "player", "fw_ResetMaxSpeed_Post", 1) register_forward(FM_PlayerPreThink, "fw_PlayerPreThink") register_event("HLTV","NewRound","a", "1=0", "2=0") register_logevent("RoundEnd", 2, "1=Round_End") g_MaxPlayers = get_maxplayers() }
public NewRound() { new id for (id = 1; id <= g_MaxPlayers; id++) { if (!is_user_alive(id)) continue show_menu(id, 0, "^n", 1) strip_user_weapons(id) give_item(id, "weapon_knife") set_user_health(id, 500) set_task(15.0, "Task_GiveDeagle", id+TASK_GIVEDEAGLE, _, _, "b") } }
public fw_ResetMaxSpeed_Post(id) { if (!is_user_alive(id) || !flag_get(g_IsFrozen, id)) return set_user_maxspeed(id, 1.0) }
public fw_PlayerPreThink(id) { if (!is_user_alive(id) || !flag_get(g_IsFrozen, id)) return set_pev(id, pev_velocity, Float:{0.0,0.0,0.0}) }
public fw_PlayerKilled_Post(victim, attacker, shouldgib) { CheckRoundStatus() }
CheckRoundStatus() { new name1[32], name2[32], iPlayers[32], iNum for(new iPlayer = 1; iPlayer <= g_MaxPlayers; iPlayer++) { if(is_user_alive(iPlayer)) iPlayers[iNum++] = iPlayer } if(iNum < 3) { if(iNum > 1) { get_user_name(iPlayers[0], name1, charsmax(name1)) get_user_name(iPlayers[1], name2, charsmax(name2)) for(new id = 1; id < g_MaxPlayers; id++) { if(!is_user_alive(id)) continue ApplyFrozenGravity(id) flag_unset(g_IsFrozen, id) set_pev(id, pev_gravity, g_FrozenGravity[id]) ExecuteHamB(Ham_Player_ResetMaxSpeed, id) remove_task(id+TASK_GIVEDEAGLE) remove_task(id+TASK_REMOVEDEAGLE) } entity_set_float(iPlayers[0], EV_FL_health, 100.0) entity_set_float(iPlayers[1], EV_FL_health, 100.0) strip_user_weapons(iPlayers[0]) strip_user_weapons(iPlayers[1]) give_item(iPlayers[0], "weapon_deagle") cs_set_user_bpammo(iPlayers[0], CSW_DEAGLE, 200) give_item(iPlayers[1], "weapon_deagle") cs_set_user_bpammo(iPlayers[1], CSW_DEAGLE, 200) set_dhudmessage(50, 205, 50, -1.0, 0.20, 0, 6.0, 3.0, 0.5, 0.13) show_dhudmessage(0, "%s^n- VS -^n%s", name1, name2) } else { get_user_name(iPlayers[0], name1, charsmax(name1)) set_dhudmessage(50, 205, 50, -1.0, 0.20, 0, 6.0, 3.0, 0.5, 0.13) show_dhudmessage(0, "%s is the winner!", name1) } } }
public Task_GiveDeagle(id) { id -= TASK_GIVEDEAGLE flag_set(g_IsFrozen, id) ApplyFrozenGravity(id) ExecuteHamB(Ham_Player_ResetMaxSpeed, id) set_dhudmessage(0, 255, 0, -1.0, 0.20, 0, 6.0, 3.0, 0.5, 0.13) show_dhudmessage(id, "KILL NOW!") strip_user_weapons(id) give_item(id, "weapon_deagle") set_task(8.0, "Task_RemoveDeagle", id+TASK_REMOVEDEAGLE) }
public Task_RemoveDeagle(id) { id -= TASK_REMOVEDEAGLE for(new id = 1; id < g_MaxPlayers; id++) { if(!is_user_alive(id)) continue flag_unset(g_IsFrozen, id) set_pev(id, pev_gravity, g_FrozenGravity[id]) ExecuteHamB(Ham_Player_ResetMaxSpeed, id) set_dhudmessage(0, 255, 0, -1.0, 0.20, 0, 6.0, 3.0, 0.5, 0.13) show_dhudmessage(id, "Time finished^nPrepare for the next battle!") strip_user_weapons(id) give_item(id, "weapon_knife") } }
ApplyFrozenGravity(id) { new Float:gravity = get_user_gravity(id) if (gravity == GRAVITY_HIGH || gravity == GRAVITY_NONE) return g_FrozenGravity[id] = gravity if (pev(id, pev_flags) & FL_ONGROUND) set_user_gravity(id, GRAVITY_HIGH) // set really high else set_user_gravity(id, GRAVITY_NONE) // no gravity }
public RoundEnd() { for(new id = 1; id <= g_MaxPlayers; ++id) { if(!is_user_alive(id)) continue if (flag_get(g_IsFrozen, id)) { ApplyFrozenGravity(id) flag_unset(g_IsFrozen, id) set_pev(id, pev_gravity, g_FrozenGravity[id]) ExecuteHamB(Ham_Player_ResetMaxSpeed, id)
remove_task(id+TASK_GIVEDEAGLE)
remove_task(id+TASK_REMOVEDEAGLE) } } }
Last edited by wicho; 04-28-2020 at 23:30.
|
|