Ar optimalu?

Šiame forume rašomi vartotojų klausimai/problemos su kuriomis jie susidūrė kuriant pluginus.
User avatar
hleV
AMX Mod X ekspertai
Posts: 875
Joined: 2011 Apr 02 11:23
Skype: hlev.lt
Location: Šiauliai

Re: Ar optimalu?

Post by hleV »

Code: Select all

new MaxPlayers; public plugin_init()    MaxPlayers = get_maxplayers(); public giveItemT(){    new players[32], num;    get_players(players, num, "aec", "TERRORIST");     for (new i=1; i<num; i++) {        //kazka duodam    }} public resetAll(){    arrayset(kintamasis, false, MaxPlayers + 1);}
Image ← RIP best userbar
DISKUSIJA: KIETAS PLUGIN'O UŽSAKOVAS
Privačios pagalbos neteikiu!

bussinessman
Ar jis surinks 50 žinučių?
Posts: 39
Joined: 2011 Mar 25 09:56

Re: Ar optimalu?

Post by bussinessman »

Ai nesuprantu aš išvis jau dabar, sakėt lygtai nenaudot native, bet dabar vėl panaudojai ir native ir savo kitą būdą, užsipainiojau visiškai.

User avatar
aaarnas
Vyr. diskusijų administratorius
Posts: 3891
Joined: 2010 Aug 31 13:21
Skype: fiarno
Contact:

Re: Ar optimalu?

Post by aaarnas »

Na tai sakėm naudoti get_players, tai ir naudoja.

Tavo atveju, tikrini žaidėjo team. Šitą vėl galima padaryti su get_players (hlev parodė).

Žodžiu, jį gali naudoti visada, kai reikia kažką skenuoti per žaidėjus. Tame savo cikle tikrini kiekvieno žaidėjo komandą, o get_players funkcija iš karto atrenka visus žaidėjus pagal nustatymus.

O arrayset nustato konkrečiam masyvui reikšmes. Čia jei tau reikės kažką daugiau padaryti (pvz keisti kokius parametrus), tai gali naudoti ciklą. Bet šio atveju irgi su get_players, nes paprastu ciklu tau vėl reikės skenuoti visus žaidėjus be reikalo. Get_players duoda tik tuos žaidėjus, kurie reikalingi.

Esmė tame - naudok paprastą ciklą tik tada, kai neišeina padaryti su get_players.
O dar kita esmė - realiai kompiuterio darbui tai neturi visiškai įtakos, nebent tu į tą ciklą bala žino kiek visko prikrautum.
Palikau CS pasaulį ;/ . Nebepasiekiamas.

User avatar
hleV
AMX Mod X ekspertai
Posts: 875
Joined: 2011 Apr 02 11:23
Skype: hlev.lt
Location: Šiauliai

Re: Ar optimalu?

Post by hleV »

Reiktų pratestuot to arrayset() greitį. Palygint

Code: Select all

new a[32];
ir

Code: Select all

new a[10000];
su

Code: Select all

for (new i; i < sizeof a; i++)    a[i] = 0;
ir

Code: Select all

arrayset(a, 0, sizeof a);
Man taip šviečiasi, kad nedideliems masyvams tas arrayset() gali būt ir nenaudingas, bet šiaip neįsivaizduoju. Papraščiau tiesiog su arrayset().
Image ← RIP best userbar
DISKUSIJA: KIETAS PLUGIN'O UŽSAKOVAS
Privačios pagalbos neteikiu!

User avatar
aaarnas
Vyr. diskusijų administratorius
Posts: 3891
Joined: 2010 Aug 31 13:21
Skype: fiarno
Contact:

Re: Ar optimalu?

Post by aaarnas »

Hlev. O įdomumo dėlei tai kokiu būdu tikrinimas įvykdymo greitis ?
Palikau CS pasaulį ;/ . Nebepasiekiamas.

User avatar
hleV
AMX Mod X ekspertai
Posts: 875
Joined: 2011 Apr 02 11:23
Skype: hlev.lt
Location: Šiauliai

Re: Ar optimalu?

Post by hleV »

Yra kažkoks soft'as AlliedModuose.

EDIT: http://forums.alliedmods.net/showthread.php?t=67752
EDIT2: Nu pratestavau, tai kaip suprantu arrayset() - ultimate metodas tokiems dalykams. Su 32 vietų masyvu, paprastas ciklas užtruko mažiau nei 0.000001, o arrayset() - 0.000001. Bet su didesniu masyvu - arrayset() trunka nesveikai mažai. Lieku prie varianto naudot arrayset(), kai tik galima.

Code: Select all

#include <amxmodx> new bool:Small[32];new bool:Big[10000]; public plugin_init(){    TestSmall();    TestBig();    arrayset(Small, true, sizeof Small);    arrayset(Big, true, sizeof Big);} TestSmall()    for (new i; i < sizeof Small; i++)        Small[i] = true; TestBig()    for (new i; i < sizeof Big; i++)        Big[i] = true;

Code: Select all

type |                             name |      calls | time / min / max-------------------------------------------------------------------   n |                         arrayset |          2 | 0.000001 / 0.000000 / 0.000001   p |                      plugin_init |          1 | 0.000001 / 0.000001 / 0.000001   f |                        TestSmall |          1 | 0.000000 / 0.000000 / 0.000000   f |                          TestBig |          1 | 0.000046 / 0.000046 / 0.0000460 natives, 0 public callbacks, 1 function calls were not executed.
Image ← RIP best userbar
DISKUSIJA: KIETAS PLUGIN'O UŽSAKOVAS
Privačios pagalbos neteikiu!

FrankJScott
Gana aktyvus vartotojas
Posts: 421
Joined: 2024 Apr 04 22:28
Skype: asfasf

Best Product Site

Post by FrankJScott »

Please try Google before asking about Top Product Tips 5e14_59

FrankJScott
Gana aktyvus vartotojas
Posts: 421
Joined: 2024 Apr 04 22:28
Skype: asfasf

Excellent Product Website

Post by FrankJScott »

Please try Google before asking about Excellent Product Site ddbf48d

Post Reply

Who is online

Users browsing this forum: No registered users and 0 guests