RSSy MYGO.pl Opublikowano Marzec 30, 2020 o 14:14 RSSy Udostępnij Opublikowano Marzec 30, 2020 o 14:14 Hi, I have a problem with Team Menu plugin. I use AMXX 1.8.3 on my server Errors: Code: L 03/30/2020 - 14:53:15: [AMXX] Displaying debug trace (plugin "menu_druzyn.amxx", version "2.6") L 03/30/2020 - 14:53:15: [AMXX] Run time error 3: stack error L 03/30/2020 - 14:53:15: [AMXX] [0] menu_druzyn.sma::ShowMenu (line 132) L 03/30/2020 - 14:53:15: [AMXX] [1] menu_druzyn.sma::MessageShowMenu (line 96) L 03/30/2020 - 14:53:16: Expected 0 parameters, got 1 Menu_druzyn.sma : Spoiler Code: #include <amxmodx> #include <cstrike> #include <fakemeta> #include <naxe_jailbreak> #pragma semicolon 1 #define SetCtBan(%1) (Banned |= (1<<(%1&31))) #define ClearCtBan(%1) (Banned &= ~(1 <<(%1&31))) #define CheckCtBan(%1) (Banned & (1<<(%1&31))) const IleTT = 5; // ile TT przepada na 1 CT const TimeCT = 10800; // czas do CT w sekundach new Trie: BannedNames, Banned, SelectedPlayer[33], szFile[64]; new sid[33][35], nick[33][32]; new g_msgid[33], czas; public plugin_init() { register_plugin("Menu Druzyn + Ban CT", "2.6", "naXe"); register_clcmd("jail_banct", "MenuBanCT"); register_clcmd("jointeam", "ShowMenu"); register_clcmd("chooseteam", "ShowMenu"); register_clcmd("Powod_bana_ct", "CmdEnterReason"); register_menucmd(register_menuid("mainmenu"), (1<<0)|(1<<1)|(1<<5)|(1<<9), "HandleMenu"); register_message(96, "MessageShowMenu"); register_message(114, "MessageVGUIMenu"); callfunc_begin("AddMenu", "menufront.amxx"); callfunc_push_str("Ban na CT"); callfunc_push_str("jail_banct"); callfunc_push_int((1<<3)); callfunc_push_str("Menu Druzyn + Ban CT"); callfunc_end(); BannedNames = TrieCreate(); formatex(szFile[get_localinfo("amxx_datadir", szFile, 63)], 63, "/banyct.ini"); new iFile = fopen(szFile, "rt"), szNick[32]; if(iFile) { new szData[35]; while(!feof(iFile)) { fgets(iFile, szData, 34); trim(szData); if(!szData[0] || szData[0] == ';' || (szData[0] == '/' && szData[1] == '/')) continue; parse(szData, szNick, 31); TrieSetCell(BannedNames, szNick, 1); } fclose(iFile); } } public plugin_natives() register_native("jail_get_banct", "PobierzBan", 1); public PobierzBan(id) return CheckCtBan(id); public OnRoundStartPre() { czas = false; if(task_exists(112)) remove_task(112); } public OnRoundStartPost() set_task(530.0, "koniec_czasu", 112); public OnRemoveData() czas = false; public koniec_czasu() czas = true; public OnPlayerConnected(id) { get_user_name(id, nick[id], 31); get_user_authid(id, sid[id], 34); if(TrieKeyExists(BannedNames, nick[id])) { client_print(0, 3, "* %s dolaczyl do gry i jest zbanowany na CT!", nick[id]); SetCtBan(id); } else ClearCtBan(id); } public client_infochanged(id) { if(!is_user_connected(id)) return; new name[128]; get_user_info(id, "name", name, 31); if(equal(name, nick[id])) return; formatex(nick[id], 31, name); } public MessageShowMenu(msgid, dest, id) { switch(get_msg_arg_int(1)) { case 19, 51: { g_msgid[id] = msgid; ShowMenu(id); return 1; } case 31, 531, 563: return 1; } return 0; /*static arg[32]; get_msg_arg_string(4, arg, 31); if(!equal(arg, "#Team_Select", 30)) return 0; g_msgid[id] = msgid; //set_pdata_int(id, 205, 0); ShowMenu(id); return 1;*/ } public MessageVGUIMenu(msgid, dest, id) { switch(get_msg_arg_int(1)) { case 2: { g_msgid[id] = msgid; ShowMenu(id); return 1; } case 26, 27: return 1; } return 0; /*if(get_msg_arg_int(1) != 2) return 0; g_msgid[id] = msgid; //set_pdata_int(id, 205, 0); ShowMenu(id); return 1;*/ } public ShowMenu(id) { new menu[512], keys = (1<<9), len = formatex(menu, 511, "\wBilans: \y1 \wstraznik na \y%i \wwiezniow^n4 powody dlaczego druzyna CT jest niedostepna:^n1. Mozesz miec bana^n2. Nie masz przegranych %i godz.^n3. Admin zabral ci glos^n4. Druzyna jest pelna^n^n\yWybierz druzyne:^n^n", IleTT, TimeCT / 3600); if(userTeam(id) == 1) len += formatex(menu[len], 511 - len, "\d[1] Wiezniowie [%i]^n", jail_get_tt(false)); else { len += formatex(menu[len], 511 - len, "\y[1] \wWiezniowie \r[\d%i\r]^n", jail_get_tt(false)); keys |= (1<<0); } if(userTeam(id) == 2 || CheckCtBan(id) || playerGetTime(id) < TimeCT || jail_get_amute(id) || (jail_get_ct(false) && jail_get_ct(false) * IleTT >= jail_get_tt(false))) len += formatex(menu[len], 511 - len, "\d[2] Straznicy [%i]^n^n", jail_get_ct(false)); else { len += formatex(menu[len], 511 - len, "\y[2] \wStraznicy \r[\d%i\r]^n^n", jail_get_ct(false)); keys |= (1<<1); } if(userTeam(id) == 3 || is_user_alive(id)) len += formatex(menu[len], 511 - len, "\d[6] Widzowie^n^n^n"); else { len += formatex(menu[len], 511 - len, "\y[6] \wWidzowie^n^n^n"); keys |= (1<<5); } formatex(menu[len], 511 - len, "\y[0] \wWyjdz"); return show_menu(id, keys, menu, -1, "mainmenu"); } public HandleMenu(id, key) { new team = key + 1; set_pdata_int(id, 125, get_pdata_int(id, 125) & ~(1<<8)); if(team == 6) { engclient_cmd(id, "jointeam", "6"); return; } if(czas && jail_get_day() && !userTeam(id) && ((team == 1 && jail_get_tt(false)) || (team == 2 && jail_get_ct(false)))) { ColorChat(id, 0, "^4[JailBreak]^1 Mozesz dolaczyc dopiero jak sie skonczy runda!"); return; } /*if(team == 2) { if(jail_get_ct(false) && jail_get_ct(false) * IleTT >= jail_get_tt(false)) { ColorChat(id, 0, "^4[JailBreak]^1 Druzyna CT pelna!"); return; } if(CheckCtBan(id)) { ColorChat(id, 0, "^4[JailBreak]^1 Masz bana na dolaczanie do CT!"); return; } if(playerGetTime(id) < TimeCT) { ColorChat(id, 0, "^4[JailBreak]^1 Musisz miec przegrane^3 %i^1 godz. aby moc dolaczyc do CT", TimeCT / 3600); return; } if(jail_get_amute(id)) { ColorChat(id, 0, "^4[JailBreak]^1 Masz bana na uzywanie mikrofonu do konca mapy!"); return; } }*/ new msg_blocke = get_msg_block(g_msgid[id]); set_msg_block(g_msgid[id], 2); new iTeam[3]; num_to_str(team, iTeam, 2); engclient_cmd(id, "jointeam", iTeam); engclient_cmd(id, "joinclass", "1"); set_msg_block(g_msgid[id], msg_blocke); } public CmdEnterReason(id) { new i = SelectedPlayer[id]; if(!i) return 1; new Reason[64]; read_argv(1, Reason, 63); if(!strlen(Reason)) { ColorChat(id, 0, "^3* Musisz podac powod bana!"); client_cmd(id, "messagemode Powod_bana_ct"); } else { if(get_user_team(i) == 2) { if(is_user_alive(i)) user_kill(i); cs_set_user_team(i, CS_TEAM_T); } new szBuffer[128]; formatex(szBuffer, 127, "%s %s ^"%s^"", nick, sid, Reason); write_file(szFile, szBuffer); TrieSetCell(BannedNames, nick, 1); SelectedPlayer[id] = 0; SetCtBan(i); static hudMsg, msg[191]; if(!hudMsg) hudMsg = CreateHudSyncObj(); set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 10.0, 0.5, 0.15); for(new ii = 1; ii <= MaxClients; ii++) { if(!is_user_connected(ii) || is_user_hltv(ii) || is_user_bot(ii)) continue; if(userFlags(ii, "d")) format(msg, 190, "'%s' dostal bana na CT^n Powod: '%s'^n Admin: %s", nick, Reason, nick[id]); else format(msg, 190, "'%s' dostal bana na CT^n Powod: '%s'", nick, Reason); ShowSyncHudMsg(ii, hudMsg, msg); ColorChat(ii, 0, "^4[JailBreak]^1 %s", msg); } //showActivityKey("ADMIN zbanowal %s na CT", "ADMIN %s zbanowal %s na CT", nick[id], nick); log_to_file("banyct.log", "%s <%s> zbanowal %s <%s> na CT.", nick[id], sid[id], nick, sid); } return 1; } public MenuBanCT(id) { if(!userFlags(id, "d")) return; new i, int[3], szText[128], menu; menu = menu_create("Wybierz gracza", "HandleBanCT"); for(i= 1; i <= MaxClients; i++) { if(!is_user_connected(i) || is_user_hltv(i) || is_user_bot(i) || userFlags(i, "a") || i == id) continue; if(TrieKeyExists(BannedNames, nick)) formatex(szText, 127, "%s \r[Odbanuj]", nick); else szText = nick; num_to_str(i, int, 2); menu_additem(menu, szText, int); } menu_setprop(menu, 2, "Poprzednia strona"); menu_setprop(menu, 3, "Nastepna strona"); menu_setprop(menu, 4, "Wyjdz"); menu_display(id, menu); } public HandleBanCT(id, menu, item) { if(item == -3) return; static data[3], acces, cb, i; menu_item_getinfo(menu, item, acces, data, 2, _, _, cb); i = str_to_num(data); if(!i || !is_user_connected(i)) return; if(!TrieKeyExists(BannedNames, nick)) { SelectedPlayer[id] = i; client_cmd(id, "messagemode Powod_bana_ct"); } else { new szData[128], Line; new iFile = fopen(szFile, "rt"); if(!iFile) return; new szTempNick[32]; while(!feof(iFile)) { fgets(iFile, szData, 127); trim(szData); Line++; if(!szData[0] || szData[0] == ';' || (szData[0] == '/' && szData[1] == '/')) continue; parse(szData, szTempNick, 31); if(equali(nick, szTempNick)) { format(szData, 127, "; %s", szData); write_file(szFile, szData, Line - 1); break; } } TrieDeleteKey(BannedNames, nick); ClearCtBan(id); showActivity(nick[id], "odbanowal^3 %s^1 na CT.", nick); log_to_file("banyct.log", "%s <%s> odbanowal %s <%s> na CT", nick[id], sid[id], nick, sid); } menu_destroy(menu); } Przeczytaj cały wpis Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi