Witam,
Mam do was pytanie jak scali plugin z silnikiem?
Bo che ograniczyć wysyłanie wiadomości w HUD.
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.
|
Napisano 02.02.2014 18:49
Witam,
Mam do was pytanie jak scali plugin z silnikiem?
Bo che ograniczyć wysyłanie wiadomości w HUD.
Napisano 10.02.2014 18:38
http://amxx.pl/topic...-hudem-codmoda/ masz poradnik
Ok. +
A z questami też da się tak zrobić?
/* Plugin generated by AMXX-Studio */ #include <amxmodx> #include <amxmisc> #include <codmod> #include <cstrike> #include <nvault> #define MAX_PLAYER 32 native cod_set_user_coins(id, wartosc); native cod_get_user_coins(id); 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, 50}, {51, 100}, {101, 150}, {151, 201} } new QuestRozdzial[][] = { "Easy", "Medium", "Hard", "Expert" } // Polozenie x / y new Float:HudType[][3] = { {0.01, 0.92}, {0.01, 0.92}, {0.01, 0.92} } // Red, green, blue new HudColor[][5] = { {255, 255, 0}, {255, 255, 0}, {255, 255, 0} } 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 HudObj2; new Array: gPrzedzial; new Array: gIleRazy; new Array: gTyp; new Array: gNagroda; new Array: gNagrodaCoins; public plugin_cfg() { gPrzedzial = ArrayCreate(); gIleRazy = ArrayCreate(); gTyp = ArrayCreate(); gNagroda = 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), "[Questy] Nie mozna znależć pliku misje.ini w lokalizacji %s", plik) set_fail_state(szError); } new fp = fopen(plik, "r"); new tresc[128], dane[5][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, dane[4], 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])); ArrayPushCell(gNagrodaCoins, str_to_num(dane[4])); } fclose(fp); MaxQuest = ArraySize(gPrzedzial); } 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 /misje", "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"); } 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"); } public Pierwsze_Menu(id) { client_cmd(id, "spk QTM_CodMod/select"); new menu = menu_create("^n^n^n\yWybierz Akcje:", "Pierwsze_Menu_Handle") (ePlayerQuestType[id]) ? menu_additem(menu, "Wybierz Misje", _, _, MenuCallback) : menu_additem(menu, "Wybierz Misje") (ePlayerQuestType[id]) ? menu_additem(menu, "Zakoncz Misje") : menu_additem(menu, "Zakoncz Misje^n^n^n\w[\yForum\w: \rGanjaMafia-Cs.xaa.pl \w| \rZapraszamy\w]^n\w[\yKontakt z \rAdministratorem \d(\rH@\d)\w]^n\w[\ySkype\w: \rProSkillBongo \yGG\w: \r49822711\w]", _, _, MenuCallback) //menu_additem(menu, "Co to sa questy?[ Wiadomosc na czacie ]") //menu_additem(menu, "Zarzadaj Hud") 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) case 2: QuestMessage(id, "Questy sa to misje, po ktorych wykonaniu mozesz dostac wyznaczana ilosc Expa i Srebrnikow:) ") case 3: Menu_Hud(id) } client_cmd(id, "spk QTM_CodMod/select"); return PLUGIN_HANDLED; } 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) } public Menu_Hud_Handle(id, menu, item) { 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; } public menu_callback(id, Menu, item){ return ITEM_DISABLED } 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); } } } } } 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 = ArrayGetCell(gNagroda, iPlayerQuestID[id]); new award_coins = ArrayGetCell(gNagrodaCoins, iPlayerQuestID[id]); cod_set_user_coins(id, cod_get_user_coins(id) + award_coins); 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 Doswiadczenia i %i Srebrnikow", award, award_coins); QuestMessage(id, formats); 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 QuestMessage(id, Message[]){ set_hudmessage(0, 255, 0, 0.02, 0.65, 0, 1.0, 0.6) ShowSyncHudMsg(id, HudObj2, "%s", Message); } public Menu_Questow(id) { if( ! ePlayerQuestType[id] ) { new menu = menu_create("^n^n\yWybierz Etap:", "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,"Etap \r%s \d(\wod\y %i \wdo\y %i \rLv\w.\d)",QuestRozdzial[i], QuestyPrzedzial[i][0], QuestyPrzedzial[i][1]); menu_additem(menu,formats) }else{ formatex(formats,127,"\Etap %s \d(\yod \y%i \wdo\y %i \rLv\w.\d)",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"); } } public menu_first_handle(id, menu, item) { if(item == MENU_EXIT){ menu_destroy(menu); return PLUGIN_CONTINUE; } 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 \r%i\y osob \w Nagroda: \r%i\y Expa \r %i\y SB", ArrayGetCell(gIleRazy, i), ArrayGetCell(gNagroda, i), ArrayGetCell(gNagrodaCoins, i)) case HEADSHOT: formatex(formats, 127, "Traf \r%i\y HeadShotow \wNagroda: \r %i \y Expa \r %i\y SB", ArrayGetCell(gIleRazy, i), ArrayGetCell(gNagroda, i), ArrayGetCell(gNagrodaCoins, i)) case SUBSTRATES: formatex(formats, 127, "Podkluz \r%i\y bomb \wNagroda: \r %i \y Expa \r %i\y SB", ArrayGetCell(gIleRazy, i), ArrayGetCell(gNagroda, i), ArrayGetCell(gNagrodaCoins, i)) case RESUCE_HOSTAGES: formatex(formats, 127, "Uratuj \r%i\y razy hosty \wNagroda: \r %i\y Expa \r%i \y SB", ArrayGetCell(gIleRazy, i), ArrayGetCell(gNagroda, i), ArrayGetCell(gNagrodaCoins, i)) case DISARM: formatex(formats, 127, "Rozbroj \r%i\y bomb \wNagroda: \r %i \y Expa\r %i\y SB", ArrayGetCell(gIleRazy, i), ArrayGetCell(gNagroda, i), ArrayGetCell(gNagrodaCoins, i)) case DMG: formatex(formats, 127, "Zadaj \r%i\y obrazen \wNagroda: \r %i \y Expa \r %i\y SB", ArrayGetCell(gIleRazy, i), ArrayGetCell(gNagroda, i), ArrayGetCell(gNagrodaCoins, 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++; } if(LoadQuest(id, item)){ QuestMessage(id, "Juz wykonywales ta Misje!. Wybierz Inna."); Menu_Questow(id); return PLUGIN_HANDLED; } ResetQuest(id) iPlayerQuestID[id] = item; ePlayerQuestType[id] = ArrayGetCell(gTyp, item) QuestMessage(id, "Rozpoczales Misje. Powodzenia!"); menu_destroy(menu) return PLUGIN_HANDLED } 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); } return PLUGIN_HANDLED; } public Damage(id) { 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); } return PLUGIN_HANDLED; } public HudInfo() { new Msg[1024]; 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 Misji^nWpisz /misje"; else{ formatex(Msg2, charsmax(Msg2), QuestInfoMessage[ePlayerQuestType[id]], (get_user_progress_need(id)-get_user_progress(id))); formatex(Msg, charsmax(Msg), "Rozdzial: %s^nPostep: %i/%i^nInfo: %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); } } public get_user_progress(id){ return iPlayerQuestProgress[id] ? iPlayerQuestProgress[id] : 0; } public get_user_progress_need(id){ if(ePlayerQuestType[id]) return ArrayGetCell(gIleRazy, iPlayerQuestID[id]); return 0; } 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; } 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; } public client_disconnect(id) { SaveAktQuest(id, ePlayerQuestType[id]); ResetQuest(id) }
CoD Nowy
Dodatkowe, osobne trzy linie opisu klasNapisany przez Rafii, 27.01.2025 cod nowy |
|
||||
CoD Nowy
problem z kompilacjaNapisany przez Anonimowy09, 21.01.2025 cod nowy |
|
||||
CoD Nowy
problem z HUDNapisany przez Anonimowy09, 10.01.2025 cod nowy |
|
||||
|
CoD Nowy
[KOSZ] PytanieNapisany przez Anonimowy09, 09.01.2025 cod nowy |
|
|||
CoD Nowy
klasa ProlemNapisany przez Anonimowy09, 09.01.2025 cod nowy |
|
0 użytkowników, 1 gości, 0 anonimowych