Co odpowiada za zmiane HUD?
Spoiler
/* Plugin generated by AMXX-Studio */ #include <amxmodx> #include <amxmisc> #include <codmod> #include <cstrike> #include <nvault> #define MAX_PLAYER 32 enum { NONE = 0, KILL = 1, SUBSTRATES = 2, DISARM = 3, HEADSHOT = 4, RESUCE_HOSTAGES = 5, DMG = 6 } new QuestInfoMessage[][] = { "Brak Questa %i", "Musisz zabic jeszcze %i osob", "Musisz podlozyc bombe jeszcze %i razy", "Musisz rozbroic bombe jeszcze %i razy", "Musisz zabic jeszcze %i osob headshotem", "Musisz uratowac jeszcze %i razy hosty", "Musisz zadac jeszcze %i obrazen" } new QuestyPrzedzial[][] = { {1, 25}, {26, 50}, {51, 75}, {76, 100} } new QuestRozdzial[][] = { "Pierwszy", "Drugi", "Trzeci", "Czwarty" }[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]// Polozenie x / y new Float:HudType[][3] = { {0.02, 0.43}, {0.02, 0.43}, {0.02, 0.43} }[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]// Red, green, blue new HudColor[][5] = { {0, 255, 0}, {255, 0, 0}, {0, 0, 255} }[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]new szPlayerName[MAX_PLAYER+1][64]; new iPlayerQuestID[MAX_PLAYER+1]; new ePlayerQuestType[MAX_PLAYER+1] new iPlayerQuestProgress[MAX_PLAYER+1] new iPlayerPrzedzial[MAX_PLAYER+1] new iPlayerHudType[MAX_PLAYER+1];[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]new vault; new vault2 new MenuCallback; new MaxQuest; new HudObj; new HudObj2;[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]new Array: gPrzedzial; new Array: gIleRazy; new Array: gTyp; new Array: gNagroda;[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]public plugin_cfg() { gPrzedzial = ArrayCreate(); gIleRazy = ArrayCreate(); gTyp = ArrayCreate(); gNagroda = ArrayCreate(); new plik[128]; get_localinfo("amxx_configsdir", plik, charsmax(plik)); format(plik, charsmax(plik), "%s/misje.ini", plik); if(!file_exists(plik)){ new szError[512]; formatex(szError, charsmax(szError), "[Questy] Nie mozna znależć pliku misje.ini w lokalizacji %s", plik) set_fail_state(szError); } new fp = fopen(plik, "r"); new tresc[128], dane[4][32]; while( !feof(fp) ) { fgets(fp, tresc, charsmax(tresc)); if(tresc[0] == ';' || tresc[0] == '^0') continue; parse(tresc, dane[0], 31, dane[1], 31, dane[2], 31, dane[3], 31); replace_all(tresc, 127, "^"", ""); ArrayPushCell(gPrzedzial, str_to_num(dane[0])); ArrayPushCell(gIleRazy, str_to_num(dane[1])); ArrayPushCell(gTyp, str_to_num(dane[2])); ArrayPushCell(gNagroda, str_to_num(dane[3])); } fclose(fp); MaxQuest = ArraySize(gPrzedzial); }[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]public plugin_init() { register_plugin("[CodMod] Quest", "1.0", "Gh0st") vault = nvault_open("Gh0st_quests"); vault2 = nvault_open("Gh0st_akt_quests") register_event("DeathMsg", "DeathMsg", "a") register_clcmd("say /questy", "Pierwsze_Menu"); register_logevent("LogEvent_Quest", 3, "1=triggered"); MenuCallback = menu_makecallback("menu_callback"); register_event("Damage", "Damage", "b", "2!=0") HudObj = CreateHudSyncObj(); HudObj2 = CreateHudSyncObj(); set_task(0.8, "HudInfo", _, _, _, "b"); }[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]public plugin_precache() { precache_sound("QTM_CodMod/select.wav"); precache_sound("QTM_CodMod/start.wav"); precache_sound("QTM_CodMod/start2.wav"); precache_sound("QTM_CodMod/levelup.wav"); }[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]public Pierwsze_Menu(id) { client_cmd(id, "spk QTM_CodMod/select"); new menu = menu_create("\wQuesty by: \dGh0st ^n \yWybierz Akcje:", "Pierwsze_Menu_Handle") (ePlayerQuestType[id]) ? menu_additem(menu, "Questy Podstawowe", _, _, MenuCallback) : menu_additem(menu, "Questy Podstawowe") (ePlayerQuestType[id]) ? menu_additem(menu, "Zakoncz Quest") : menu_additem(menu, "Zakoncz Quest", _, _, MenuCallback) menu_additem(menu, "Co to sa questy?[ Wiadomosc na czacie ]") menu_additem(menu, "Zarzadaj Hud")[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]menu_display(id,menu,0) }[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]public Pierwsze_Menu_Handle(id, menu, item) { if(item == MENU_EXIT){ menu_destroy(menu); return PLUGIN_CONTINUE; } switch( item ) { case 0: Menu_Questow(id) case 1: ResetQuest(id) case 2: QuestMessage(id, "Questy sa to misje, po ktorych wykonaniu mozesz dostac wyznaczana ilosc expa <img src='https://amxx.pl/public/style_emoticons/<#EMO_DIR#>/smile.png' class='bbc_emoticon' alt=':)' /> ") case 3: Menu_Hud(id) } client_cmd(id, "spk QTM_CodMod/select"); return PLUGIN_HANDLED; }[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]public Menu_Hud(id) { new menu = menu_create("\yWybierz Hud:", "Menu_Hud_Handle") new formats[100] menu_additem(menu, "wyłącz Hud"); for(new i; i<sizeof HudType; i++) { formatex(formats, charsmax(formats), "Styl Hud \y%i", i+1) menu_additem(menu, formats); } menu_display(id,menu,0) }[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]public Menu_Hud_Handle(id, menu, item) {[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]client_cmd(id, "spk QTM_CodMod/select"); if(item == MENU_EXIT){ menu_destroy(menu); return PLUGIN_CONTINUE; } if(item == 0){ iPlayerHudType[id]=0; menu_destroy(menu) return PLUGIN_HANDLED; } iPlayerHudType[id]=item; Menu_Hud(id); return PLUGIN_HANDLED; }[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]public menu_callback(id, Menu, item){ return ITEM_DISABLED }[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]public DeathMsg() { new id = read_data(1); new vid = read_data(2) new hs = read_data(3); if( is_user_connected(id) && get_user_team(id) != get_user_team(vid) ) { if( ePlayerQuestType[id] ) { switch(ePlayerQuestType[id]) { case KILL: { add_progress(id, 1) } case HEADSHOT: { if(hs) add_progress(id, 1); } } } } } [/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]public client_connect(id) { get_user_name(id, szPlayerName[id], 63); ResetQuest(id) LoadAktQuest(id) iPlayerHudType[id]=1; }[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]public add_progress(id, amount) { if( ! is_user_connected(id) ) return PLUGIN_HANDLED; new Sprawdz = CheckProgress(id) if( Sprawdz == 0 ){ iPlayerQuestProgress[id]+=amount; return PLUGIN_HANDLED; } else if( Sprawdz > 0 ){ give_award(id); return PLUGIN_HANDLED; } return PLUGIN_HANDLED; }[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]public CheckProgress(id) { if( ! is_user_connected(id) ) return PLUGIN_HANDLED; new need = get_user_progress_need(id) - 1; new progress = get_user_progress(id) if( progress >= need ) return 1; else return 0; return PLUGIN_HANDLED; }[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]public give_award(id) { if( ! is_user_connected(id) ) return PLUGIN_HANDLED; if(LoadQuest(id, iPlayerQuestID[id])) return PLUGIN_HANDLED; new award = ArrayGetCell(gNagroda, iPlayerQuestID[id]); cod_set_user_xp(id, cod_get_user_xp(id)+award) SaveQuest(id, iPlayerQuestID[id]) new formats[512]; formatex(formats, 511, "Gratulacje! Ukonczyles Quest, otrzymales %i expa", award); QuestMessage(id, formats); ResetQuest(id) return PLUGIN_HANDLED; }[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]public ResetQuest(id) { ePlayerQuestType[id] = NONE; iPlayerQuestID[id] = -1; iPlayerQuestProgress[id] = 0; }[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]public SaveQuest(id, QuestID) { if(is_user_bot(id)) return PLUGIN_CONTINUE; new vaultkey[64], vaultdata[64]; formatex(vaultkey, charsmax(vaultkey), "%s-%i", szPlayerName[id], QuestID); formatex(vaultdata, charsmax(vaultdata), "1"); nvault_set(vault, vaultkey, vaultdata); return PLUGIN_CONTINUE; }[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]public LoadQuest(id, QuestID) { if(is_user_bot(id)) return PLUGIN_CONTINUE; new vaultkey[64], vaultdata[64]; formatex(vaultkey, charsmax(vaultkey), "%s-%i", szPlayerName[id], QuestID); nvault_get(vault, vaultkey, vaultdata, charsmax(vaultdata)); return str_to_num(vaultdata) > 0 ? true : false; }[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]public QuestMessage(id, Message[]){ set_hudmessage(0, 255, 0, 0.02, 0.65, 0, 1.0, 0.6) ShowSyncHudMsg(id, HudObj2, "%s", Message); }[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]public Menu_Questow(id) { if( ! ePlayerQuestType[id] ) { new menu = menu_create("\yWybierz Rozdzial:", "menu_first_handle") new formats[128] for(new i; i < sizeof(QuestyPrzedzial); i++) { if( cod_get_user_level(id) >= QuestyPrzedzial[i][0]){ formatex(formats,127,"Rozdzial \r%s \y(od %i do %i Lv.)",QuestRozdzial[i], QuestyPrzedzial[i][0], QuestyPrzedzial[i][1]); menu_additem(menu,formats) }else{ formatex(formats,127,"\dRozdzial %s (od %i do %i Lv.)",QuestRozdzial[i], QuestyPrzedzial[i][0], QuestyPrzedzial[i][1]); menu_additem(menu,formats, _, _, MenuCallback) } } menu_display(id,menu,0) }else{ QuestMessage(id, "Wykonaj najpierw poprzedni quest"); } }[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]public menu_first_handle(id, menu, item) {[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]client_cmd(id, "spk QTM_CodMod/select"); if(item == MENU_EXIT){ menu_destroy(menu); return PLUGIN_CONTINUE; }[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]new menu2 = menu_create("Wybierz Quest:","menu_handle") new formats[128] for(new i = 0;i<MaxQuest;i++) { if(ArrayGetCell(gPrzedzial, i) == item) { switch(ArrayGetCell(gTyp, i)) { case KILL: formatex(formats, 127, "Zabij %i osob Nagroda: %i expa", ArrayGetCell(gIleRazy, i), ArrayGetCell(gNagroda, i)) case HEADSHOT: formatex(formats, 127, "Jebnij %i HeadShotow Nagroda: %i expa", ArrayGetCell(gIleRazy, i), ArrayGetCell(gNagroda, i)) case SUBSTRATES: formatex(formats, 127, "Podloz %i bomb Nagroda: %i expa", ArrayGetCell(gIleRazy, i), ArrayGetCell(gNagroda, i)) case RESUCE_HOSTAGES: formatex(formats, 127, "Uratuj %i razy hosty Nagroda: %i expa", ArrayGetCell(gIleRazy, i), ArrayGetCell(gNagroda, i)) case DISARM: formatex(formats, 127, "Rozbroj %i bomb Nagroda: %i expa", ArrayGetCell(gIleRazy, i), ArrayGetCell(gNagroda, i)) case DMG: formatex(formats, 127, "Zadaj %i obrazen Nagroda: %i expa", ArrayGetCell(gIleRazy, i), ArrayGetCell(gNagroda, i)) } menu_additem(menu2, formats); } } iPlayerPrzedzial[id] = item; menu_setprop(menu2, MPROP_PERPAGE, 6); menu_display(id,menu2,0) menu_destroy(menu); return PLUGIN_HANDLED } public menu_handle(id, menu, item) { if(item == MENU_EXIT){ menu_destroy(menu); return PLUGIN_CONTINUE; } new ile = 0; for(new i = 0;i<MaxQuest;i++){ if(ArrayGetCell(gPrzedzial, i) != iPlayerPrzedzial[id]) continue; if(ile == item) { item = i; break; } ile++; }[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]if(LoadQuest(id, item)){ QuestMessage(id, "Juz wykonywales tego Questa!. Wybierz Innego."); Menu_Questow(id); return PLUGIN_HANDLED; } ResetQuest(id) iPlayerQuestID[id] = item; ePlayerQuestType[id] = ArrayGetCell(gTyp, item) QuestMessage(id, "Rozpoczales Quest. Powodzenia!"); menu_destroy(menu) return PLUGIN_HANDLED }[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]public LogEvent_Quest() { new user[80] new action[64] new name[32] read_logargv(0, user, 79); read_logargv(2, action, 63); parse_loguser(user, name, 31); new id = get_user_index(name); if( ! is_user_connected(id) || ePlayerQuestType[id] == NONE ) return PLUGIN_HANDLED; new type = ePlayerQuestType[id]; if(equal(action, "Planted_The_Bomb")) { if(type == SUBSTRATES) add_progress(id, 1); } else if(equal(action, "Defused_The_Bomb")) { if(type == DISARM) add_progress(id, 1); } else if(equal(action, "Rescued_A_Hostage")) { if(type == RESUCE_HOSTAGES) add_progress(id, 1); }[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]return PLUGIN_HANDLED; }[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]public Damage(id) {[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]if( is_user_connected(id) ) { new atc_id = get_user_attacker(id); if( ! is_user_connected(atc_id) ) return PLUGIN_HANDLED; if( ! ePlayerQuestType[atc_id] ) return PLUGIN_HANDLED; if( ePlayerQuestType[atc_id] != DMG ) return PLUGIN_HANDLED; new damage = read_data(2); add_progress(atc_id, damage); }[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]return PLUGIN_HANDLED;[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]}[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]public HudInfo() {[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]new Msg[1024];[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]new Float:HUD_X new Float:HUD_Y new HEX_COLOR_1 new HEX_COLOR_2 new HEX_COLOR_3 new Msg2[512] for(new id; id<MAX_PLAYER+1; id++){ if( ! is_user_connected(id) ) continue; if( ! is_user_alive(id) ) continue; if( ! iPlayerHudType[id] ) continue; HEX_COLOR_1 = HudColor[iPlayerHudType[id]-1][0]; HEX_COLOR_2 = HudColor[iPlayerHudType[id]-1][1]; HEX_COLOR_3 = HudColor[iPlayerHudType[id]-1][2]; HUD_X = HudType[iPlayerHudType[id] - 1][0]; HUD_Y = HudType[iPlayerHudType[id] - 1][1]; if( ! ePlayerQuestType[id] ) Msg = "[Nie Robisz Zadnej Misji]^n[Say /questy]"; else{ formatex(Msg2, charsmax(Msg2), QuestInfoMessage[ePlayerQuestType[id]], (get_user_progress_need(id)-get_user_progress(id))); formatex(Msg, charsmax(Msg), "[Rozdzial: %s]^n[Postep: %i/%i]^n[Info: %s]", QuestRozdzial[iPlayerPrzedzial[id]], get_user_progress(id), get_user_progress_need(id), Msg2); } set_hudmessage(HEX_COLOR_1, HEX_COLOR_2, HEX_COLOR_3, HUD_X, HUD_Y, 0, 1.0, 0.8) ShowSyncHudMsg(id, HudObj, Msg); } }[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]public get_user_progress(id){ return iPlayerQuestProgress[id] ? iPlayerQuestProgress[id] : 0; }[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]public get_user_progress_need(id){ if(ePlayerQuestType[id]) return ArrayGetCell(gIleRazy, iPlayerQuestID[id]); return 0; }[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]public SaveAktQuest(id, ma) { if(is_user_bot(id)) return PLUGIN_CONTINUE; new vaultkey[64], vaultdata[64]; formatex(vaultkey, charsmax(vaultkey), "%s", szPlayerName[id]); formatex(vaultdata, charsmax(vaultdata), "%i %i %i %i", ma ? iPlayerQuestID[id] : -1, ePlayerQuestType[id], iPlayerQuestProgress[id], iPlayerPrzedzial[id]); nvault_set(vault2, vaultkey, vaultdata); return PLUGIN_CONTINUE; }[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]public LoadAktQuest(id) { if(is_user_bot(id)) return PLUGIN_CONTINUE; new vaultkey[64], vaultdata[64]; formatex(vaultkey, charsmax(vaultkey), "%s", szPlayerName[id]); nvault_get(vault2, vaultkey, vaultdata, charsmax(vaultdata)); new data[5][64]; parse(vaultdata, data[0], 63, data[1], 63, data[2], 63, data[3], 63) new new_data[6] for(new i=0; i<4; i++) new_data[i] = str_to_num(data[i]); if(new_data[0] == -1) return PLUGIN_HANDLED iPlayerQuestID[id] = new_data[0] ePlayerQuestType[id] = new_data[1]; iPlayerQuestProgress[id] = new_data[2] iPlayerPrzedzial[id] = new_data[3] return PLUGIN_HANDLED; }[/color][/size][/font][/b][/i] [i][b][font=comic sans ms,cursive][size=4][color=#ffa07a]public client_disconnect(id) { SaveAktQuest(id, ePlayerQuestType[id]); ResetQuest(id) }