Problem z przydzielaniem
Andrzejek
08.05.2013
Witam, mam problem z przydzielaniem graczy w równych składach
ja zrobiłem tak, ale przydziela tylko do gangu czerwonego, a przykładowo chciał bym zrobić coś takiego że, mamy 15 graczy i do każdego gangu dołączają po 5 osoby jak to zrobić?
new losowy = przydzial;
switch(losowy)
{
case 0: {
Czerwony++;
NR_Gangu[gracz] = 1;
set_user_rendering(gracz, kRenderFxGlowShell, 255, 0, 0, kRenderNormal, 5);
}
case 1: {
Zielony++;
NR_Gangu[gracz] = 2;
set_user_rendering(gracz, kRenderFxGlowShell, 0, 255, 0, kRenderNormal, 5);
}
case 2: {
Niebieski++;
NR_Gangu[gracz] = 3;
set_user_rendering(gracz, kRenderFxGlowShell, 0, 0, 255, kRenderNormal, 5);
}
}
if(++przydzial >= 3)
przydzial = 0;
GT Team
08.05.2013
Kiedyś zrobiłem coś takiego, lecz nie sprawdzałem czy działa
Użytkownik PaTrIcKx edytował ten post 08.05.2013 20:30
/* Plugin generated by AMXX-Studio */ [code] /* Plugin generated by AMXX-Studio */ #include <amxmodx> #include <hamsandwich> #define PLUGIN "Team" #define VERSION "1.0" #define AUTHOR "author" #define TEAMS 4 // Liczba drużyn #define MAX_MEMBER 4 // Maxymalna liczba członków dla drużyny #define MAX_PLAYERS 32 //Maxymalna liczba graczy #define DEATH "Trup" new TeamName[ TEAMS ][ ] = { "Druzyna 1", "Druzyna 2", "Druzyna 3", "Druzyna 4" } new TeamMembers[ TEAMS ] new UserTeam[ MAX_PLAYERS ] = _:-1 new nazwa_gracza[33][33] new gSync; new Text[512], temp[64] new MAX_MEMBERS = MAX_MEMBER+1 public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) gSync = CreateHudSyncObj() register_clcmd("say /test", "PokazDruzyny") set_task(1.0, "PokazDruzyny", _, _, _, "b") } public client_putinserver( id ) { for( new i ; i < TEAMS +1; i ++ ) { new wylosowana_druzyna = random( TEAMS ) if( TeamMembers[ wylosowana_druzyna ]+1 > MAX_MEMBERS) continue else { UserTeam[ id ] = wylosowana_druzyna TeamMembers[ wylosowana_druzyna ] ++ } get_user_name(id, nazwa_gracza[id], 32) return } } public client_disconnect(id) { formatex(nazwa_gracza[id], 32, "") TeamMembers[UserTeam[id]]-- UserTeam[id] = -1 } public PokazDruzyny() { formatex(Text, 511, "") formatex(temp, 63, "") for( new i ; i < TEAMS + 1 ; i++ ) { if(get_teams_alive_num(i) > 0) { formatex(temp, 63, "^n%s:^n", TeamName[i]) add(Text, 511, temp) new ids[MAX_MEMBER+2] get_teams_id( i, ids, MAX_MEMBERS - 1 ) for( new j ; j <= MAX_MEMBERS ; j ++ ) { if(!is_user_connected(ids[j])) { if(j+1 == MAX_MEMBERS) add(Text, 511, "^n") continue } static type[10] num_to_str(get_user_health( ids[ j ] ), type, 9) formatex(temp, 63, "^n %s: %s", /*get_user_team(ids[j])==1?"TT":get_user_team(ids[j])==2?"CT":"",*/ nazwa_gracza[ ids[ j ] ], is_user_alive(ids[j])?type:DEATH) add(Text, 511, temp) if(j+1 == MAX_MEMBERS) add(Text, 511, "^n") } } } set_hudmessage( 255, 255, 255, 0.6, 0.1, 0, 6.0, 1.1 ) ShowSyncHudMsg( 0, gSync, Text) return PLUGIN_CONTINUE } stock get_teams_alive_num(team) { new num for(new i = 1 ; i < MAX_PLAYERS + 1 ; i ++ ) { if(!is_user_alive(i) || !is_user_connected(i) || is_user_hltv(i) || UserTeam[i] != team ) continue num++ } return num } stock get_teams_id(team, outpout[], len) { new num for(new i = 1 ; i < MAX_PLAYERS + 1 ; i ++ ) { if(!is_user_connected(i) || is_user_hltv(i) || UserTeam[i] != team ) continue outpout[ num++ ] = i if( num+1 > len ) return } }jak ucielo include to amxmodx, hamsandwich
Użytkownik PaTrIcKx edytował ten post 08.05.2013 20:30
Andrzejek
09.05.2013
Prosił bym kogoś bardziej doświadczonego o pomoc, bo ten Pan UP zamiast zmodyfikować mój kod, dał mi w ogóle co innego
GT Team
09.05.2013
Dałem Ci kod po to byś przejrzał i zrozumiał! Skoro Ci tak bardzo na tym zależy to proszę:
nie zapomnij przy client disconnet sprawdzic w ktorej druzynie jest gracz i odjąc liczbe czlonkow.
new Czerwony, Zielony, Niebieski new NR_Gangu[33] #define MAX 5 public przydziel() { for(new i = 1 ; i < 33; i++) { if(!is_user_connected(i) || is_user_hltv(i) || !is_user_alive(i)) continue again: new losowy = random(3) if(Czerwony >= MAX && Zielony >= MAX && Niebieski >= MAX) client_print(i, 3, "Nie zostaniesz przydzielony do zadnej druzyny. Max czlonkow!") if(losowy == 0 && Czerwony >= MAX || losowy == 1 && Zielony >= MAX || losowy == 2 && Niebieski >= MAX) goto again switch(losowy) { case 0: { Czerwony++; NR_Gangu[i] = 1; set_user_rendering(i, kRenderFxGlowShell, 255, 0, 0, kRenderNormal, 5); } case 1: { Zielony++; NR_Gangu[i] = 2; set_user_rendering(i, kRenderFxGlowShell, 0, 255, 0, kRenderNormal, 5); } case 2: { Niebieski++; NR_Gangu[i] = 3; set_user_rendering(i, kRenderFxGlowShell, 0, 0, 255, kRenderNormal, 5); } } } }Gdy wywołasz funkcję przydziel, zostanie przydzielony każdy gracz.
nie zapomnij przy client disconnet sprawdzic w ktorej druzynie jest gracz i odjąc liczbe czlonkow.
GT Team
09.05.2013
a przykładowo chciał bym zrobić coś takiego że, mamy 15 graczy i do każdego gangu dołączają po 5 osoby jak to zrobić?Dałem Ci, więc o co Ci chodzi ? Stawiam, że gdy gracz dołącza to wtedy chcesz, żeby go przydzielało, tak ?!
dasiek
09.05.2013
Wiadomość wygenerowana automatycznie
Ten temat został zamknięty przez moderatora.
Powód: Temat zamknięty na prośbę użytkownika.
Z pozdrowieniami,
Zespół AMXX.PL
Ten temat został zamknięty przez moderatora.
Powód: Temat zamknięty na prośbę użytkownika.
Z pozdrowieniami,
Zespół AMXX.PL