Jump to content

Smagiam laiko praleidimui!

Mūsų projektas sėkmingai gyvuoja virš 8 metų, turime 7 išskirtinius serverius, pasižyminčius unikaliomis ir įdomiomis sistemomis, todėl žaidimas čia tampa smagus kiekvienam Counter-Strike 1.6 žaidėjui!



Skaityti plačiau
Sign in to follow this  
tt4994

(Išsamesni) alias pagrindai

Rekomenduojami pranešimai

Parašė (redaguota)

Perrašytas, papildytas bei struktūruotas šios temos variantas.

Turinys

  1. Kas yra "alias"?
  2. Sintaksė
  3. alias būsenos
  4. wait komanda
  5. alias redeklaracija
  6. Ciklai


1. Kas yra "alias"?
Konkrečiai kalbant, alias yra žodis anglų kalboj, kuris reiškia kažko (tarkim, vardo: aš (kažkas) => tt4994 (alias)) perteikimą kitaip. Panašiai ir 1.6'o kontekste: alias nusako komandų (pvz. drop, +attack, -jump, impulse 101, ...) sekos pavadinimą.

Dar viena analogija, kurią galima pritaikyti, yra matematikoj pristatytas kintamasis/nežinomasis (pvz. x = 5 + 3 + 7, kur x, tam tikra prasme, yra "alias'as" trejų skaičių sumai), jei paaiškinimas viršuj nepadėjo.


2. Sintaksė
alias sintaksė yra ganėtinai elementari:

alias <pavadinimas> "komanda; komanda; ..."

kur <pavadinimas> yra alias pavadinimas be jokių tarpų. Pavyzdžiui:

alias @hw "say Hello, World!"

Tuomet @hw tampa alias'as komandai say Hello, World!, todėl visur, kur naudosim @hw, bus įterpta say Hello, World!. Pavyzdžiui, atsidarę konsolę ir parašę @hw, pamatysim, jog į chat'ą parašėm "Hello, World!".

Tai iš esmės ir yra visa alias sintaksė, tačiau iš jos galima išvesti keletą naudingų operacijų, aprašytų kituose skyriuose. Taip pat verta paminėti, jog senesniuose 1.6'o build'uose (pre-2013 era) egzistavo (turbūt egzistuoja ir dabar, tačiau yra blokuojamos) komandos: _special bei special. Trumpai tariant, jos leido išsiųsti specialią komandą serveriui, tačiau dėl developer'ių neapžvalgumo tapo išnaudojamos kitiems tikslams, pagrinde - ciklams, kuriuos galima sustabdyti bei kurie netrikdo žaidėjo veiksmų. Vienas pagrindinių panaudojimų buvo bhop script'ai (kurie vis dar funkcionuoja dabartinėse Non-Steam versijose, kadangi šios yra galimai patch'intos arba naudoja senus Half-Life/1.6'o build'us). Šias komandas detaliau apžvelgsiu § 6.


3. alias būsenos
Viena svarbiausių alias funkcijų yra galimybė atlikti skirtingus veiksmus, priklausomai nuo tam tikro klavišo būsenos (ar jis nuspaustas, ar ne). Tarkim, norim, kad atsitūpę pradėtume šaudyti, o atsistoję - baigtume. Tuomet yra dvi alias būsenos: įjungta (kai esam nuspaudę CTRL klavišą ir tupim) bei išjungta (kai esam atleidę CTRL klavišą ir stovim). Įjungtą būseną simbolizuoja + (pliuso), o išjungtą - (minuso) ženklas prieš alias pavadinimą, todėl

alias +@ds "+duck; +attack"
alias -@ds "-duck; -attack"

Tačiau vien tai nieko neatliks - reikia bind'inti +@ds alias'ą su klavišu (šiuo atveju CTRL):

bind CTRL "+@ds"

Tuomet nuspaudus CTRL mes pradėsim ir tūpti, ir šaudyti. Jį atleidus grįšim į pradinę būseną.


4. wait komanda
Tai nėra konkrečiai susiję su alias'ais, tačiau dažnai pravartu žinoti apie šią komandą su jais dirbant.

wait, kaip ir pavadinimas sako, reiškia laukti. Specifiškai, 1 frame. Laukiant, nieko daugiau kaip žvalgytis neįmanoma daryti, tačiau tai, pavyzdžiui, suteikia laiko žaidimo varikliui užbaigti operacijas prieš vykdant kitą komandą.

wait komandą galima chain'inti (sujungti) ir gauti vis ilgesnius laukimo tarpus:

alias w2 "wait; wait"
alias w4 "w2; w2"
alias w8 "w4; w4"
alias w16 "w8; w8"
alias w32 "w16; w16"
alias w64 "w32; w32"

w2 lauks du frame'us, w4 - keturis, w8 - aštuonis, w16 - šešioliką ir t. t.


5. alias redeklaracija
alias deklaracija (minėta § 2) yra komanda, todėl ją ir naudoti galima kaip bet kokią kitą komandą. Konkrečiau - alias'ą galima (re)deklaruoti alias'e, t. y.:

alias @on "+duck; alias toggle @off"
alias @off "-duck; alias toggle @on"
alias toggle "@on"

Čia matom, jog pradinė toggle reikšmė nukreipia į @on alias'ą, kuris priverčia žaidėją atsitūpti bei redeklaruoja toggle alias'ą, kad šis nukreiptų į @off, kur žaidėjas priverčiamas atsistoti bei toggle yra redeklaruojamas, kad nukreiptų į @on. Gaunamas paprastas switch'as, kuris gali būti panaudotas, kai reikia ką nors toggle'inti (įjungti <=> išjungti). Šiuo atveju, galime bind'inti toggle su, pavyzdžiui, P klavišu, kad šį paspaudus vieną kartą būtų atsitupiama, o paspaudus antrą kartą - atsistojama.


6. Ciklai
Dabartiniuose Half-Life/1.6'o Steam build'uose nieko daugiau kaip begalinio ciklo su alias'ais neišgausi. Pavyzdžiui, iš šio ciklo

alias loop "say 1; loop"

ištrūkti neįmanoma (priverstinai neišjungiant hl.exe) - iki kol jis nesibaigs, tol jokios komandos iš žaidėjo nebus registruojamos.

Tačiau kaip ir minėta § 2, seniau egzistavo (dažnoje Non-Steam versijoje vis dar egzistuoja) komandos special bei _special. Komanda su apatiniu brūkšniu (_special) veikia kaip paprastas alias'as - saugo jai priskirtą komandų seką. Bet jos dvynė special turi ypatingą funkciją - nukelti _special saugomas komandas į kliento komandų buffer'io (angl. client command buffer) (jį galima įsivaizduoti kaip eilę komandų: ["drop", "+attack", "impulse 101", ...]), iš kurio viena po kitos yra traukiamos ir vykdomos komandos, galą (ne priekį). Tai reiškia, jog šios komandos bus įvykdytos paskutinės, todėl prieš tai yra galimybė užbaigti ciklą atleidžiant klavišą. Tai esminis skirtumas tarp aukščiau minėto ir šio ciklo, naudojančio special bei _special. Kaip paprastą ir nekenksmingą pavyzdį pateiksiu script'ą, kuris rašo "Hello, World!", kol yra nuspaustas klavišas H:

alias +@hello "alias _special @do_hello; special"
alias -@hello "alias _special"
alias @do_hello "say Hello, World!; special"

bind H "+@hello"

Veikimo principas nuspaudus H atrodytų daugmaž taip:

  1. _special tampa alias'u @do_hello alias'ui.
  2. Komandos, esančios _special ("say Hello, World!; special") yra nukeliamos į kliento komandų buffer'io galą.
  3. Pasiekus šias komandas, chat'e yra išprint'inama "Hello, World!" ir yra kartojamas antras (2) žingsnis.
  4. Jeigu iki pasiekiant šias komandas yra atleidžiamas klavišas H, _special yra išvalomas ir nors trečias (3) žingsnis atlieka tokią pačią funkciją, dabar _special yra tuščias, todėl special į klientų komandų buffer'io galą įterpia tik tuščią komandą.

 

Pastabos

  1. Neminėjau, tačiau, manau, akivaizdu, jog naudoti bhop script'us, sukurtus pasitelkiant metodiką, aprašytą § 6 (ar bet kokią kitą), yra daug kur draudžiama (įskaitant čia, Jaile), todėl nekaltinkit manęs, jei gausit ban'ą.
Redaguota nario tt4994
  • Patinka 3
  • Confused 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  


Mūsų projektas rekomenduoja

×