Page 1 of 2

teamswap - komandu keitimo optimizacija

Posted: 2012 Dec 08 21:31
by Tetusis
Pirmasis kodas yra nemano, man ji pasiule naudoti exolent norint apkeisti komandas kai yra didziule apkrova serveryje, esme suprasite, ar verta naudoti delay? kam man to reikia? noriu 13x13 keitime ar daugiau isvengti crash'u, ar tai kazka keicia? gal tiesiog likti prie paprastesnio? noriu jusu nuomoniu.

Code: Select all

SwapTeams( ){    const GROUP = 5; // 5 people at a time    const Float:INTERVAL = 0.5; // delay between groups        new switched, data[ 1 ];        for( new i = 1; i <= g_iMaxPlayers; i++ )    {        if( is_user_connected( i ) )        {            data[ 0 ] = get_user_team( i );                        if( TEAM_TERRORIST <= data[ 0 ] <= TEAM_CT )            {                data[ 0 ] = 3 - data[ 0 ];                                if( switched++ < GROUP )                {                    TaskSwitch( data, i );                }                else                {                    set_task( INTERVAL * ( switched / GROUP ), "TaskSwitch", i, data, sizeof( data ) );                }            }        }    }} public TaskSwitch( data[ ], id ){    if( is_user_connected( id ) )    {        cs_set_team( id, data[ 0 ] );    }}

Code: Select all

 public kazkas_atsitiko() {    set_task(0.5,"Keiciames")} // Apkeiciam komandaspublic Keiciames() {    for (new id; id <= get_maxplayers(); id++) {        if(get_user_team(id) == 2)            cs_set_user_team(id, CS_TEAM_T)        else if(get_user_team(id) == 1)            cs_set_user_team(id, CS_TEAM_CT)    }}

Re: teamswap - komandu keitimo optimizacija

Posted: 2012 Dec 08 22:24
by newb
Tavo tas paprastesnis blogas. Jei exolentas pasiule naudot ta, tai kame beda ? Ar manai daugiau kodo, daugiau apkrovos ?

Re: teamswap - komandu keitimo optimizacija

Posted: 2012 Dec 08 22:59
by Tetusis
newb wrote:Tavo tas paprastesnis blogas. Jei exolentas pasiule naudot ta, tai kame beda ? Ar manai daugiau kodo, daugiau apkrovos ?
Nevisada, bet dazniausiai taip buna, aisku cia yra 2 konkrecios funkcijos t.y laikas per kuri apkeis nurodyta skaiciu zmoniu, pamastymui, delay tai yra tam tikras uzdelsimas arba intervalas per kuri ivygdoma tam tikra funkcija jeigu nurodyta ja kartoti ar daryti kazka panasaus? man idomu kas vyksta tarkim kai yra iskvieciama

Code: Select all

set_task(60.0, "kazkokia_funkcija", id)
cia aisku nurodoma, kad po 60 sec funkcija kazkokia_funkcija bus iskviesta, ar nera papildomos apkrovos tarp to laiko kai jau

Code: Select all

set_task(60.0, "kazkokia_funkcija", id)
iskviesta ,bet dar neivykdyta.? ar yra kazkokia alternatyva set_task?

Re: teamswap - komandu keitimo optimizacija

Posted: 2012 Dec 09 00:32
by hleV
Yra modulis komandos keitimui, su kuriuo necrash'ina serveris.

Re: teamswap - komandu keitimo optimizacija

Posted: 2012 Dec 09 01:08
by Tetusis
hleV wrote:Yra modulis komandos keitimui, su kuriuo necrash'ina serveris.
taip zinau senai si, is patirties tavo noriu paklausti, ar verta siustis kazkokius pap modulius del vienos funkcijos ar tiesiog tvarkingai tai imanoma padaryti be modulio pagalbos?

Re: teamswap - komandu keitimo optimizacija

Posted: 2012 Dec 09 11:28
by InvIs

Code: Select all

switchinam(id){switch(id){case 1..6: set_task(0.1, "keiciam", id)case 7..13: set_task(0.2, "keiciam", id)case 14..20: set_task(0.3, "keiciam", id)case 21..25: set_task(0.4, "keiciam", id)case 26..32: set_task(0.5, "keiciam", id)}{}}keiciam(id){switch(get_user_team(id)){case 1: cs_set_user_team(id, 2)case 2: cs_set_user_team(id, 1)}}
Na, jei tau Exolent kodas atrodo keistas ar nesuprantamas, naudok šitą. Šitas naudojamas umbrellaswarm modifikacijoje ir veikia be problemų.

Re: teamswap - komandu keitimo optimizacija

Posted: 2012 Dec 09 14:49
by hleV
Tikiuos suvoki, kad jei serveryje bus 32 žaidėjai, tai tu sukursi 32 task'us?

Re: teamswap - komandu keitimo optimizacija

Posted: 2012 Dec 09 15:02
by Tetusis
InvIs wrote:

Code: Select all

switchinam(id){switch(id){case 1..6: set_task(0.1, "keiciam", id)case 7..13: set_task(0.2, "keiciam", id)case 14..20: set_task(0.3, "keiciam", id)case 21..25: set_task(0.4, "keiciam", id)case 26..32: set_task(0.5, "keiciam", id)}{}}keiciam(id){switch(get_user_team(id)){case 1: cs_set_user_team(id, 2)case 2: cs_set_user_team(id, 1)}}
Na, jei tau Exolent kodas atrodo keistas ar nesuprantamas, naudok šitą. Šitas naudojamas umbrellaswarm modifikacijoje ir veikia be problemų.
hmm idomus kodas, cia kaip supratau supaprastintas? teks isbandyti, na as suprantu matematiskai kas po ko vyksta ir kaip tai padaroma, man tik iskilo esminis klausimas, i kuri atsake hlev
hleV wrote:Tikiuos suvoki, kad jei serveryje bus 32 žaidėjai, tai tu sukursi 32 task'us?

Re: teamswap - komandu keitimo optimizacija

Posted: 2012 Dec 09 19:13
by InvIs
Kur tu matai 32 task'us ? :D Aš matau tik 5

Re: teamswap - komandu keitimo optimizacija

Posted: 2012 Dec 09 19:33
by newb
InvIs wrote:Kur tu matai 32 task'us ? :D Aš matau tik 5
Nu tai neziurek vien tik i zodzius set_task, o ziurek kaip sitas dalykas veiks...