Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

[ROZWIĄZANE] Vip plugin okno menu timer


  • Zamknięty Temat jest zamknięty
3 odpowiedzi w tym temacie

#1 esticire

    Nowy

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:6
Offline

Napisano 28.04.2025 12:35

Cześć wszystkim, 

Ostatnio stworzyłem plugin VIP poprzez generator i przerabiam go na własne potrzeby. Mam problem jeszcze z zamykaniem się menu po 20s.
Ustawiłem

set_task(20.0, "zamknij_menu", id + TASK_CLOSE_MENU);

Gdzie trzeba ale menu się nie zamyka... Gdy kliknę "AWP" i menu otworzy się ponownie, bo "nie ma środków" albo limit awp jest przekroczony to od tego momentu menu po 20 sekundach automatycznie się zamknie. 
Gdzie popełniam błąd? Jak to powinno wyglądać aby faktycznie za każdym razem menu zamykało się po 20 sekundach? 

#include <amxmodx>
#include <cstrike>
#include <csx>
#include <engine>
#include <fun>
#include <hamsandwich>
#include <stripweapons>

new bool:g_Vip[33], gRound=0, g_Hudmsg, maxPlayers,
menu, menu_callback_handler, weapon_id;
new bool:g_GameStarted;
new menu_id[33];

#define TASK_CLOSE_MENU 1000

new p_awp_limit_0_5, p_awp_limit_6_10, p_awp_limit_11_16, p_awp_limit_17_23, p_awp_limit_24_inf;

public plugin_init(){
register_plugin("VIP Ultimate", "12.3.0.3", "benio101 & speedkill");
RegisterHam(Ham_Spawn, "player", "SpawnedEventPre", 1);
register_event("HLTV", "event_new_round", "a", "1=0", "2=0");
register_logevent("GameCommencing", 2, "1=Game_Commencing");
register_event("DeathMsg", "DeathMsg", "a");
register_message(get_user_msgid("ScoreAttrib"), "VipStatus");
register_message(get_user_msgid("SayText"),"handleSayText");
g_Hudmsg=CreateHudSyncObj();
register_logevent("RoundEnd", 2, "1=Round_End");
register_logevent("event_round_start", 2, "1=Round_Start");

p_awp_limit_0_5 = register_cvar("awp_limit_0_5", "0");
p_awp_limit_6_10 = register_cvar("awp_limit_6_10", "5");
p_awp_limit_11_16 = register_cvar("awp_limit_11_16", "5");
p_awp_limit_17_23 = register_cvar("awp_limit_17_23", "5");
p_awp_limit_24_inf = register_cvar("awp_limit_24_inf", "5");
}

public plugin_cfg(){
maxPlayers = get_maxplayers();
}

public client_putinserver(id){
set_task(1.0, "check_vip_flag", id);
}

public check_vip_flag(id){
if (get_user_flags(id) & ADMIN_LEVEL_H){
client_authorized_vip(id);
}
}

public client_authorized_vip(id){
g_Vip[id]=true;
new g_Name[64];
get_user_name(id,g_Name,charsmax(g_Name));
set_hudmessage(24, 190, 220, 0.25, 0.2, 0, 6.0, 6.0);
ShowSyncHudMsg(0, g_Hudmsg, "V.I.P %s wbija na serwer!", g_Name);
}
public client_disconnected(id) {
if(g_Vip[id]) {
client_disconnect_vip(id);
}
remove_task(id + TASK_CLOSE_MENU);
if(menu_id[id]) {
menu_destroy(menu_id[id]);
menu_id[id] = 0;
}
}

public client_disconnect_vip(id){
g_Vip[id]=false;
}
public SpawnedEventPre(id){
if(g_Vip[id] && is_user_alive(id)){
SpawnedEventPreVip(id);
}
}
public SpawnedEventPreVip(id){
cs_set_user_armor(id, 100, CS_ARMOR_VESTHELM);

give_item(id, "weapon_hegrenade");
cs_set_user_bpammo(id, CSW_FLASHBANG, 2);
give_item(id, "weapon_flashbang");

StripWeapons(id, Secondary);
give_item(id, "weapon_deagle");
give_item(id, "ammo_50ae");

weapon_id = find_ent_by_owner(-1, "weapon_deagle", id);
if (weapon_id) cs_set_weapon_ammo(weapon_id, 7);
cs_set_user_bpammo(id, CSW_DEAGLE, 35);

show_vip_menu(id);

if (gRound >= 3){
give_item(id, "weapon_smokegrenade");
}

if (get_user_team(id) == 2){
give_item(id, "item_thighpack");
}
}

public event_new_round(){
++gRound;
}
public GameCommencing(){
gRound = 0;
g_GameStarted = false;
}
public event_round_start(){
if (!g_GameStarted) {
g_GameStarted = true;
gRound = 1;
} else {
gRound++;
}
}

public DeathMsg(){
new killer = read_data(1);
new victim = read_data(2);

if(is_user_alive(killer) && g_Vip[killer] && get_user_team(killer) != get_user_team(victim)){
DeathMsgVip(killer, victim, read_data(3));
}
}
public DeathMsgVip(kid, vid, hs){
set_user_health(kid, min(get_user_health(kid) + (hs ? 10 : 5), 100));
cs_set_user_money(kid, cs_get_user_money(kid) + (hs ? 500 : 300));
}

public RoundEnd(){
for(new i = 1; i <= maxPlayers; i++){
if(is_user_alive(i) && g_Vip[i]){
cs_set_user_money(i, cs_get_user_money(i) + 500);
}
}
}

public show_vip_menu(id){
if (!is_user_alive(id)) return;

if (gRound < 3) return;

set_task(20.0, "zamknij_menu", id + TASK_CLOSE_MENU);

menu = menu_create("\rMenu VIPa", "menu_handler");
menu_callback_handler = menu_makecallback("menu_callback");
new bool:active = false, num = -1;

menu_additem(menu, "\wAK47 + DEAGLE", "", 0, menu_callback_handler);
if (menu_callback(id, menu, ++num) == ITEM_ENABLED) active = true;

menu_additem(menu, "\wM4A1 + DEAGLE", "", 0, menu_callback_handler);
if (menu_callback(id, menu, ++num) == ITEM_ENABLED) active = true;

menu_additem(menu, "\d(\w2000\y$\d) \wAWP + DEAGLE", "", 0, menu_callback_handler);
if (menu_callback(id, menu, ++num) == ITEM_ENABLED) active = true;

menu_additem(menu, "\d(\w2000\y$\d) \wKROWA + DEAGLE", "", 0, menu_callback_handler);
if (menu_callback(id, menu, ++num) == ITEM_ENABLED) active = true;

menu_additem(menu, "\wFAMAS + DEAGLE", "", 0, menu_callback_handler);
if (menu_callback(id, menu, ++num) == ITEM_ENABLED) active = true;

menu_additem(menu, "\wSCOUT + DEAGLE", "", 0, menu_callback_handler);
if (menu_callback(id, menu, ++num) == ITEM_ENABLED) active = true;

if (active) {
menu_setprop(menu, MPROP_EXITNAME, "Wyjście");
menu_setprop(menu, MPROP_TITLE, "\r[\yMENU broni V.I.P'a\r]^n\r[\y20 sekund na wybór\r]^n\r[\yNasze forum: \r]");
menu_setprop(menu, MPROP_NUMBER_COLOR, "\r");
menu_display(id, menu);
menu_id[id] = menu;
} else {
menu_destroy(menu);
}
}

public menu_callback(id, menu, item){
return ITEM_ENABLED;
}

public menu_handler(id, menu, item) {
remove_task(id + TASK_CLOSE_MENU);

if (!is_user_alive(id) || item == MENU_EXIT) {
if (menu_id[id]) {
menu_destroy(menu_id[id]);
menu_id[id] = 0;
}
return PLUGIN_HANDLED;
}

if (gRound >= 3) {
switch (item) {
case 0: menu_1_handler(id);
case 1: menu_2_handler(id);
case 2: {
new money = cs_get_user_money(id);
if (money < 2000) {
client_print(id, print_center, "Nie masz 2000$ na AWP!");
show_vip_menu(id);
return PLUGIN_HANDLED;
}
if (!canBuyAWP(id)) {
client_print(id, print_center, "Limit AWP w druzynie zostal osiagniety!");
show_vip_menu(id);
return PLUGIN_HANDLED;
}
menu_3_handler(id);
cs_set_user_money(id, money - 2000, 1);
}
case 3: {
new money = cs_get_user_money(id);
if (money < 2000) {
client_print(id, print_center, "Nie masz 2000$ na KROWE!");
show_vip_menu(id);
return PLUGIN_HANDLED;
}
menu_4_handler(id);
cs_set_user_money(id, money - 2000, 1);
}
case 4: menu_5_handler(id);
case 5: menu_6_handler(id);
}
}

if (menu_id[id]) {
menu_destroy(menu_id[id]);
menu_id[id] = 0;
}
set_task(20.0, "zamknij_menu", id + TASK_CLOSE_MENU);
return PLUGIN_HANDLED;
}

public zamknij_menu(taskid) {
new id = taskid - TASK_CLOSE_MENU;

if (!is_user_connected(id))
return;

if (menu_id[id]) {
show_menu(id, 0, "^n", 1);

menu_destroy(menu_id[id]);
menu_id[id] = 0;

client_print(id, print_center, "Menu VIP wygasło po 20 sekundach!");
}
}

public menu_2_handler(id){
StripWeapons(id, Primary);
give_item(id, "weapon_m4a1");
give_item(id, "ammo_556nato");
set_weapon_ammo(id, "weapon_m4a1", 30, CSW_M4A1, 90);
}
public menu_1_handler(id){ 
StripWeapons(id, Primary);
give_item(id, "weapon_ak47");
give_item(id, "ammo_762nato");
set_weapon_ammo(id, "weapon_ak47", 30, CSW_AK47, 90);
}
public menu_3_handler(id){ 
StripWeapons(id, Primary);
give_item(id, "weapon_awp");
give_item(id, "ammo_338magnum");
set_weapon_ammo(id, "weapon_awp", 10, CSW_AWP, 30);
}
public menu_5_handler(id){ 
StripWeapons(id, Primary);
give_item(id, "weapon_famas");
give_item(id, "ammo_556nato");
set_weapon_ammo(id, "weapon_famas", 25, CSW_FAMAS, 90);
}
public menu_4_handler(id){
StripWeapons(id, Primary);
give_item(id, "weapon_m249");
give_item(id, "ammo_556natobox");
set_weapon_ammo(id, "weapon_m249", 100, CSW_M249, 200);
}
public menu_6_handler(id){ 
StripWeapons(id, Primary);
give_item(id, "weapon_scout");
give_item(id, "ammo_762nato");
set_weapon_ammo(id, "weapon_scout", 10, CSW_SCOUT, 90);
}

stock set_weapon_ammo(id, const weapon[], clip, csw, bpammo){
weapon_id = find_ent_by_owner(-1, weapon, id);
if(weapon_id) cs_set_weapon_ammo(weapon_id, clip);
cs_set_user_bpammo(id, csw, bpammo);
}

public bool:canBuyAWP(const id){
new players[32], num;
get_players(players, num, "a");

new team = get_user_team(id);
new awpCount = 0;

for(new i = 0; i < num; i++){
new pid = players[i];
if(get_user_team(pid) == team && user_has_weapon(pid, CSW_AWP)){
awpCount++;
}
}

new limit = getDynamicAWPLimit();
return (awpCount < limit);
}
public getDynamicAWPLimit(){
new players[32], num;
get_players(players, num, "h");

if(num <= 5)
return get_pcvar_num(p_awp_limit_0_5);
else if(num <= 10)
return get_pcvar_num(p_awp_limit_6_10);
else if(num <= 16)
return get_pcvar_num(p_awp_limit_11_16);
else if(num <= 23)
return get_pcvar_num(p_awp_limit_17_23);
else if(num > 23)
return get_pcvar_num(p_awp_limit_24_inf);

return 0;
}

public VipStatus(){
new id = get_msg_arg_int(1);
if(is_user_alive(id) && g_Vip[id]){
set_msg_arg_int(2, ARG_BYTE, get_msg_arg_int(2) | 4);
}
}
public bomb_planted(id){
if(is_user_alive(id) && g_Vip[id]){
cs_set_user_money(id, cs_get_user_money(id) + 250);
}
}
public bomb_defused(id){
if(is_user_alive(id) && g_Vip[id]){
cs_set_user_money(id, cs_get_user_money(id) + 250);
}
}

public handleSayText(msgId,msgDest,msgEnt){
new id = get_msg_arg_int(1);

if(is_user_connected(id) && g_Vip[id]){
new szTmp[256],szTmp2[256];
get_msg_arg_string(2,szTmp, charsmax(szTmp))

new szPrefix[64] = "^x04[V.I.P]";

if(!equal(szTmp,"#Cstrike_Chat_All")){
add(szTmp2,charsmax(szTmp2),szPrefix);
add(szTmp2,charsmax(szTmp2)," ");
add(szTmp2,charsmax(szTmp2),szTmp);
}
else{
add(szTmp2,charsmax(szTmp2),szPrefix);
add(szTmp2,charsmax(szTmp2),"^x03 %s1^x01 : %s2");
}
set_msg_arg_string(2,szTmp2);
}
return PLUGIN_CONTINUE;
}

  • +
  • -
  • 0

#2 Zjarany_Ziomek_420

    Początkujący

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:14
  • Imię:Damian
Offline

Napisano 28.04.2025 21:56

Sprawdź


public show_vip_menu(id) {
if (!is_user_alive(id)) return;
if (gRound < 3) return;

remove_task(id + TASK_CLOSE_MENU);
set_task(20.0, "zamknij_menu", id + TASK_CLOSE_MENU);

menu = menu_create("\rMenu VIPa", "menu_handler");
menu_callback_handler = menu_makecallback("menu_callback");
new bool:active = false, num = -1;

menu_additem(menu, "\wAK47 + DEAGLE", "", 0, menu_callback_handler);
if (menu_callback(id, menu, ++num) == ITEM_ENABLED) active = true;

menu_additem(menu, "\wM4A1 + DEAGLE", "", 0, menu_callback_handler);
if (menu_callback(id, menu, ++num) == ITEM_ENABLED) active = true;

menu_additem(menu, "\d(\w2000\y$\d) \wAWP + DEAGLE", "", 0, menu_callback_handler);
if (menu_callback(id, menu, ++num) == ITEM_ENABLED) active = true;

menu_additem(menu, "\d(\w2000\y$\d) \wKROWA + DEAGLE", "", 0, menu_callback_handler);
if (menu_callback(id, menu, ++num) == ITEM_ENABLED) active = true;

menu_additem(menu, "\wFAMAS + DEAGLE", "", 0, menu_callback_handler);
if (menu_callback(id, menu, ++num) == ITEM_ENABLED) active = true;

menu_additem(menu, "\wSCOUT + DEAGLE", "", 0, menu_callback_handler);
if (menu_callback(id, menu, ++num) == ITEM_ENABLED) active = true;

if (active) {
menu_setprop(menu, MPROP_EXITNAME, "Wyjście");
menu_setprop(menu, MPROP_TITLE, "\r[\yMENU broni V.I.P'a\r]^n\r[\y20 sekund na wybór\r]^n\r[\yNasze forum: \r]");
menu_setprop(menu, MPROP_NUMBER_COLOR, "\r");
menu_display(id, menu);
menu_id[id] = menu;
} else {
menu_destroy(menu);
}
}

public menu_handler(id, menu, item) {
remove_task(id + TASK_CLOSE_MENU); // usuwamy stary task, bo gracz coś wybrał

if (!is_user_alive(id) || item == MENU_EXIT) {
if (menu_id[id]) {
menu_destroy(menu_id[id]);
menu_id[id] = 0;
}
return PLUGIN_HANDLED;
}

if (gRound >= 3) {
switch (item) {
case 0: menu_1_handler(id);
case 1: menu_2_handler(id);
case 2: {
new money = cs_get_user_money(id);
if (money < 2000) {
client_print(id, print_center, "Nie masz 2000$ na AWP!");
show_vip_menu(id);
return PLUGIN_HANDLED;
}
if (!canBuyAWP(id)) {
client_print(id, print_center, "Limit AWP w druzynie zostal osiagniety!");
show_vip_menu(id);
return PLUGIN_HANDLED;
}
menu_3_handler(id);
cs_set_user_money(id, money - 2000, 1);
}
case 3: {
new money = cs_get_user_money(id);
if (money < 2000) {
client_print(id, print_center, "Nie masz 2000$ na KROWE!");
show_vip_menu(id);
return PLUGIN_HANDLED;
}
menu_4_handler(id);
cs_set_user_money(id, money - 2000, 1);
}
case 4: menu_5_handler(id);
case 5: menu_6_handler(id);
}
}

if (menu_id[id]) {
menu_destroy(menu_id[id]);
menu_id[id] = 0;
}

set_task(20.0, "zamknij_menu", id + TASK_CLOSE_MENU);

return PLUGIN_HANDLED;
}

public zamknij_menu(taskid) {
new id = taskid - TASK_CLOSE_MENU;

if (!is_user_connected(id))
return;

if (menu_id[id]) {
show_menu(id, 0, "^n", 1);

menu_destroy(menu_id[id]);
menu_id[id] = 0;

client_print(id, print_center, "Menu VIP wygasło po 20 sekundach!");
}
}
  • +
  • -
  • 0

#3 esticire

    Nowy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:6
Offline

Napisano 29.04.2025 21:13

Dzięki za pomoc, już to ogarnięte ale mam inny problem. Założe nowy temat aby nie mylić ludzi :) 


  • +
  • -
  • 0

#4 dasiek

    Nie wiem, nie znam się, nie orientuję się, zarobiony jestem.

  • Junior Admin

Reputacja: 2 081
Godlike

  • Postów:5 717
  • Imię:Adaś
  • Lokalizacja:No teraz trochę dalej od WWy
Offline

Napisano 13.05.2025 11:56

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, report.png raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL


  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 1

0 użytkowników, 1 gości, 0 anonimowych