/* Plugin generated by AMXX-Studio */ #include #include #include #include #include #include #define MAX_PLAYER 32 native set_user_diamenty(id, wartosc); native get_user_diamenty(id); enum { NONE = 0, M4A1 = 1, AK47 = 2, MP5 = 3, M3 = 4, P90 = 5, AWP = 6 } new QuestInfoMessage[][] = { "Brak Questa %i", "Musisz zabic jeszcze %i osob z M4A1", "Musisz zabic jeszcze %i osob z AK47", "Musisz zabic jeszcze %i osob z MP5", "Musisz zabic jeszcze %i osob z M3", "Musisz zabic jeszcze %i osob z P90", "Musisz zabic jeszcze %i osob z AWP" } new QuestRozdzial[][] = { "Stary Kraj", "Dziki Szal", "Pomroczne Widmo", "Mlot i Kowadlo", "Czysta krew", "Wymiana Ognia", "Tron" } // Polozenie x / y new Float:HudType[][3] = { {0.02, 0.23}, {0.02, 0.23}, {0.02, 0.23} } 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]; new vault; new vault2 new MenuCallback; new MaxQuest; new HudObj; new Array: gPrzedzial; new Array: gIleRazy; new Array: gTyp; new Array: gNagrodaCoins; public plugin_cfg() { gPrzedzial = ArrayCreate(); gIleRazy = ArrayCreate(); gTyp = ArrayCreate(); gNagrodaCoins = 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), "[Misje] Nie mozna znalesc 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(gNagrodaCoins, str_to_num(dane[3])); } fclose(fp); MaxQuest = ArraySize(gPrzedzial); } public plugin_init() { register_plugin("[4FUN] Questy/Misje", "1.0", "Gh0st (Przerobka Mentos)") vault = nvault_open("4fun_misje"); vault2 = nvault_open("4fun_misje") register_event("DeathMsg", "DeathMsg", "a") register_clcmd("say /misje", "Pierwsze_Menu"); register_clcmd("say /misja", "Pierwsze_Menu"); MenuCallback = menu_makecallback("menu_callback"); HudObj = CreateHudSyncObj(); set_task(0.8, "HudInfo", _, _, _, "b"); } public Pierwsze_Menu(id) { new menu = menu_create("yWybierz Akcje:", "Pierwsze_Menu_Handle") (ePlayerQuestType[id]) ? menu_additem(menu, "Misje Podstawowe", _, _, MenuCallback) : menu_additem(menu, "Questy Podstawowe") (ePlayerQuestType[id]) ? menu_additem(menu, "Zakoncz Misje") : menu_additem(menu, "Zakoncz Quest", _, _, MenuCallback) menu_display(id,menu,0) } 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) } return PLUGIN_HANDLED; } public menu_callback(id, Menu, item){ return ITEM_DISABLED } public DeathMsg() { new id = read_data(1); new vid = read_data(2) if( is_user_connected(id) && get_user_team(id) != get_user_team(vid) ) { if( ePlayerQuestType[id] ) { switch(ePlayerQuestType[id]) { case M4A1: { if( get_user_weapon(id) == CSW_M4A1 ) { add_progress(id, 1) } } case AK47: { if( get_user_weapon(id) == CSW_AK47 ) { add_progress(id, 1) } } case MP5: { if( get_user_weapon(id) == CSW_MP5NAVY ) { add_progress(id, 1) } } case M3: { if( get_user_weapon(id) == CSW_M3 ) { add_progress(id, 1) } } case P90: { if( get_user_weapon(id) == CSW_P90 ) { add_progress(id, 1) } } case AWP: { if( get_user_weapon(id) == CSW_AWP ) { add_progress(id, 1) } } } } } } public client_connect(id) { get_user_name(id, szPlayerName[id], 63); ResetQuest(id) LoadAktQuest(id) iPlayerHudType[id]=1; } 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; } 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; } public give_award(id) { if( ! is_user_connected(id) ) return PLUGIN_HANDLED; if(LoadQuest(id, iPlayerQuestID[id])) return PLUGIN_HANDLED; new award_coins = ArrayGetCell(gNagrodaCoins, iPlayerQuestID[id]); set_user_diamenty(id, get_user_diamenty(id) + award_coins); SaveQuest(id, iPlayerQuestID[id]) ColorChat(id, GREEN, "[MISJE] Gratulacje! Ukonczyles misje, otrzymujesz %i Diamentow", award_coins); ResetQuest(id) return PLUGIN_HANDLED; } public ResetQuest(id) { ePlayerQuestType[id] = NONE; iPlayerQuestID[id] = -1; iPlayerQuestProgress[id] = 0; } 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; } 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; } public Menu_Questow(id) { if( ! ePlayerQuestType[id] ) { new menu = menu_create("yWybierz Rozdzial:", "menu_first_handle") new formats[128] for(new i; i < sizeof(QuestRozdzial); i++) { if( is_user_connected(id)){ formatex(formats,127,"Rozdzial r%s",QuestRozdzial[i]); menu_additem(menu,formats) }else{ formatex(formats,127,"dRozdzial %s",QuestRozdzial[i]); menu_additem(menu,formats, _, _, MenuCallback) } } menu_display(id,menu,0) }else{ ColorChat(id, GREEN, "[MISJE] Wykonaj najpierw poprzednia misje !"); } } public menu_first_handle(id, menu, item) { if(item == MENU_EXIT){ menu_destroy(menu); return PLUGIN_CONTINUE; } new menu2 = menu_create("Wybierz Misje:","menu_handle") new formats[128] for(new i = 0;i