Witam. Proszę o przerobienie pluginu tak aby co 20 rund zmieniał drużyny graczom, lecz nie restartował serwera.
Aby po prostu było 20 rund to zmiana na CT, następne 20 rund to zmiana na TT i znów 20 rund i zmienia na CT i tak na okrągło aż do końca czasu mapy.
Chciałbym również aby po zmianie drużyn nie restartował rund. Aby mieli swoje $ z wcześniejszych rund i bronie itp...
Będę bardzo wdzięczny za przeróbkę Pozdrawiam
/* 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 amxx-dev.pl - Minds on the Move - Strona główna rr_limit - ilosc granych rund rr_change 0/1 - zamiana druzyn po ukonczeniu rund 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_B) */ #include <amxmodx> #include <fakemeta> #pragma semicolon 1 #define LIMIT_GRACZY_B 4 #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 (B) new Float: xyz[][] = { { -1736.3, 2348.1, -59.9 }, { -1356.3, 2878.1, 160.0 } }; new tt, ct, plimit, pchange, pinforma, psoundy, ponly1bs; new SayText, SyncHudObj; new bool: byla_zmiana; new tag[] = "!t[DD2]"; public plugin_precache() { plimit = register_cvar("rr_limit", "20"); pchange = register_cvar("rr_change", "1"); pinforma = register_cvar("rr_plainfo", "1"); psoundy = register_cvar("rr_winsound", "1"); ponly1bs = register_cvar("rr_only1bs", "1"); if(get_pcvar_num(psoundy)) { 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("BarTime", "event_BarTime", "be", "1=3"); register_message(get_user_msgid("TextMsg"), "message_TextMsg"); SyncHudObj = CreateHudSyncObj(); SayText = get_user_msgid("SayText"); byla_zmiana = false; } public event_RoundStart() { 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)) { if(!byla_zmiana) ZamianaTeam(); else server_cmd("changelevel de_dust2"); } 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]); } 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_BarTime(id) { new players[32], num; get_players(players, num, "ae", "CT"); if(!is_user_alive(id) || num >= 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, "Poniewaz jest malo graczy gramy tylko na BS A^nJestes na niewlasciwym BS'ie, idz na drugi."); 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); set_cvar_num("sv_restartround", 1); byla_zmiana = true; } 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]); } 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; }
Użytkownik mrdrag0n edytował ten post 10.08.2014 10:56