Proszę o przerobienie poniższego pluginu (aktualnie plugin restartuje mape, pokazuje najlepszego gracza rundy, blokuje bombsite
Prosiłbym aby ktoś mi przerobił ten plugin żeby tylko blokował bombsite b (na mapie dd2) od 10 graczy + napis na hudzie
/* Changelog: 1.0 - pierwsze wydanie pluginu. 1.1 - poprawione zaliczanie punktu za wybuch C4 1.2 - dodana opcja zamiany druzyn 1.3 - dodanie rozgrzewki (pierwsza runda) 1.4 - lekkie bugfixy 1.5 - dodanie najlepszego gracza 1.6 - poprawione bledy 1.7 - dodanie dzwiekow na koniec gry (mp3), dodano limit 2 graczy by rundy zbednie sie nie dodawaly 1.8 - dodanie opcji only 1 bs http://amxx-dev.pl rr_limit - ilosc granych rund rr_change 0/1 - zamiana druzyn po ukonczeniu rund rr_restart 0/1 - czy 1 runda to rozgrzewka rr_plainfo 0/1 - czy pokazywac info o najlepszym graczu rr_winsound 0/1 - czy ma odgrywac piosenki rr_only1bs 0/1 - czy gramy tylko na A (LICZBA Graczy LIMIT_GRACZY_<img src='https://amxx.pl/public/style_emoticons/<#EMO_DIR#>/cool.png' class='bbc_emoticon' alt='B)' /> */ #include <amxmodx> #include <fakemeta> #include <hamsandwich> #pragma semicolon 1 #define LIMIT_GRACZY_B 6 #define RESPAWN 9875 enum { MIN = 0, MAX }; // Dzwieki TT, CT w mp3 ! new const d[][] = { "sound/misc/dev/terwin.mp3", "sound/misc/dev/ctwin.mp3" }; // Polozenie bombsite (<img src='https://amxx.pl/public/style_emoticons/<#EMO_DIR#>/cool.png' class='bbc_emoticon' alt='B)' /> new Float: xyz[][] = { { -1736.3, 2348.1, -59.9 }, { -1356.3, 2878.1, 160.0 } }; new tt, ct, plimit, bool: roz = false, pchange, prestart, pinforma, psoundy, ponly1bs; new SayText, SyncHudObj; new tag[] = "!t[ amxx-dev.pl ]"; public plugin_precache() { precache_sound(d[0]); precache_sound(d[1]); } public plugin_init() { register_plugin("DD2", "1.8", "byQQ"); register_event("HLTV", "event_RoundStart", "a", "1=0", "2=0"); register_event("DeathMsg", "event_DeathMsg", "a"); register_event("BarTime", "event_BarTime", "be", "1=3"); register_message(get_user_msgid("TextMsg"), "message_TextMsg"); plimit = register_cvar("rr_limit", "20"); pchange = register_cvar("rr_change", "1"); prestart = register_cvar("rr_restart", "0"); pinforma = register_cvar("rr_plainfo", "1"); psoundy = register_cvar("rr_winsound", "1"); ponly1bs = register_cvar("rr_only1bs", "1"); SyncHudObj = CreateHudSyncObj(); SayText = get_user_msgid("SayText"); if(get_pcvar_num(prestart)) WymusRes(60); } public WymusRes(czas) { new param[1]; param[0] = czas; set_task(1.0, "WyswietlRes", _, param, 1); } public event_RoundStart() { if(roz) return; new limit = get_pcvar_num(plimit); new sumka = ct+tt; new pozos = limit - (ct+tt); if(sumka >= limit) { if(ct == tt) { msg(0, "%s!g Mamy remis, runda rozstrzygajaca", tag); return; } if(get_pcvar_num(pchange)) ZamianaTeam(); set_cvar_num("sv_restart", 3); set_cvar_num("amx_reloadadmins", 1); if(tt > ct) { msg(0, "%s!g Wygrali Terrorysci %d/%d", tag, tt, ct); if(get_pcvar_num(psoundy)) client_cmd(0, "stopsound; mp3 stop; mp3 play %s", d[0]); } else { msg(0, "%s!g Wygrali Anty Terrorysci %d/%d", tag, ct, tt); if(get_pcvar_num(psoundy)) client_cmd(0, "stopsound; mp3 stop; mp3 play %s", d[1]); } if(get_pcvar_num(prestart)) WymusRes(50); ct = tt = 0; } else { msg(0, "%s!g Restart mapy za %d rund%s", tag, pozos, (pozos == 1) ? "e" : (pozos < 5) ? "y" : ""); if(get_pcvar_num(pinforma)) ZwrocNajlepszego(); } } public event_DeathMsg() { new kid = read_data(1); new vid = read_data(2); if(!is_user_alive(kid) || !roz || get_user_team(kid) == get_user_team(vid)) return PLUGIN_CONTINUE; set_task(1.0, "OdrodzGracza", vid + RESPAWN); return PLUGIN_CONTINUE; } public event_BarTime(id) { if(roz || !is_user_alive(id) || get_playersnum() >= LIMIT_GRACZY_B || !get_pcvar_num(ponly1bs)) return PLUGIN_CONTINUE; if(gracz_na_b(id) && get_user_team(id) == 1) { set_hudmessage(250, 70, 0, -1.0, 0.4, 0, 0.0, 3.0); ShowSyncHudMsg(id, SyncHudObj, "Zbyt malo graczy by tu klasc^nOgarnij sie!"); client_cmd(id, "drop weapon_c4"); } return PLUGIN_CONTINUE; } public message_TextMsg(const MsgId, const MsgDest, const MsgEntity) { static message[32]; get_msg_arg_string(2, message, charsmax(message)); if(get_playersnum() < 2) return PLUGIN_CONTINUE; if(equal(message, "#Game_will_restart_in")) { Wyzeruj(); } else if(equal(message, "#Terrorists_Win") || equal(message, "#Target_Bombed")) { tt++; } else if(equal(message, "#CTs_Win")) { ct++; } return PLUGIN_CONTINUE; } public ZamianaTeam() { new players[32], num; get_players(players, num, "ch"); for(new i = 0; i < num; i++) { fm_set_user_team(players[i], (get_user_team(players[i]) == 2) ? 1 : 2); } msg(0, "%s!g Zamieniam druzyny!", tag); } public Wyzeruj() ct = tt = 0; public ZwrocNajlepszego() { new players[32], num; get_players(players, num); new fragi, dedy, top[4]; for(new i = 0; i < num; i++) { new id = players[i]; if(!is_user_connected(id) || is_user_hltv(id)) continue; fragi = get_user_frags(id); dedy = get_user_deaths(id); new suma = fragi*2 - dedy; if(suma > top[3]) { top[0] = fragi; // Fragi najlepszego top[1] = dedy; // Dedy najlepszego top[2] = id; // ID najlepszego top[3] = top[0]*2 - top[1]; // Bilans do dalszego porownania } } if(!top[2]) return; new name[33]; get_user_name(top[2], name, 32); msg(0, "%s!g Najlepszym graczem jest !t%s (%d/%d)", tag, name, top[0], top[1]); } public WyswietlRes(param[]) { set_hudmessage(0, 255, 0, 0.65, 0.75, 0, 0.0, 1.0, 0.0, 0.0); ShowSyncHudMsg(0, SyncHudObj, "=== Rozgrzewka ===^n[Pozostaly czas: %d]", param[0]); param[0]--; roz = true; if(param[0] >= 0) { set_task(1.0, "WyswietlRes", _, param, 1); } else { roz = false; set_cvar_num("sv_restartround", 1); Wyzeruj(); } } public OdrodzGracza(taskid) ExecuteHamB(Ham_CS_RoundRespawn, taskid - RESPAWN); stock msg(const id, const string[], {Float, Sql, Resul,_}:...) { new msgs[191], players[32], count = 1; vformat(msgs, sizeof msgs - 1, string, 3); replace_all(msgs, 190, "!g", "^4"); replace_all(msgs, 190, "!y", "^1"); replace_all(msgs, 190, "!t", "^3"); if(id) players[0] = id; else get_players(players,count,"ch"); new index; for (new i = 0 ; i < count ; i++) { index = players[i]; message_begin(MSG_ONE_UNRELIABLE, SayText, _, index); write_byte(index); write_string(msgs); message_end(); } } stock gracz_na_b(id) { new Float: fO[3]; pev(id, pev_origin, fO); if(xyz[MIN][0] < fO[0] && xyz[MIN][1] < fO[1] && xyz[MIN][2] < fO[2] && xyz[MAX][0] > fO[0] && xyz[MAX][1] > fO[1] && xyz[MAX][2] > fO[2]) return 1; return 0; } stock fm_set_user_team(id, team) { if(!is_user_connected(id)) return 0; set_pdata_int(id, 114, team); dllfunc(DLLFunc_ClientUserInfoChanged, id, engfunc(EngFunc_GetInfoKeyBuffer, id)); return 1; }
Dam reputacje!
P.S
Próbowałem sam to jakoś przerobić i non-stop był błąd przy kompilacji ;/
dd2_v18.sma 6,69 KB 35 Ilość pobrań
dd2_v18.amxx
Pomoże ktoś?!
Użytkownik 'eXe' edytował ten post 11.11.2011 08:48