Peršokti į turinį

ZCMD komandų hook


LRGP

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3392 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

Šioje pamokoje parodysiu, kaip naudojantis y_hooks YSI bibliotekos dalimi, galima 'hookinti' ZCMD komandas.

 

Mums prireiks dviejų bibliotekų:

#include <zcmd> // komandos
#include <YSI/y_hooks> // hooks

Visų pirma Jums reikia žinoti, kad kiekviena komanda:

CMD:komanda(playerid){
return(true);
}

Yra sukompiliuojama kaip 'public' ir atrodo štai taip:

public cmd_komanda(playerid){
return(true);
}

Kadangi naudojantis y_hooks galime hookinti public'us, toje vietoje kur reikia hookinti rašome:

hook cmd_komanda(playerid){
// jusu veiksmai kurie bus vykdomi suvedus komanda
}

Tai ypač naudinga, kai modifikacija yra struktūruota.

Nuoroda į komentarą
Dalintis per kitą puslapį

O kam tas komandas hook'inti nelabai supratau :D

Nes ne visi mėgsta rašyti viską į vieną x0k eilučių šiukšlyną. 

 

Sakykim yra komanda /labas, ją naudoja administratoriai, pareigūnai ir medikai. Tai yra trys grupės iš kurių visos turėtų turėti savo modulį. Tarkim tokia struktūra:

//gamemodes
- pagrindinis_failas kuriame viskas suincludinta.
     -administracija
         - komandos.p 
     - darbai
         - policija
            -komandos.p
         - medikai
            - komandos.p

Hook'as leistų visiems tiems failams komandos.p turėti tą pačią komandą. Nors abejoju kaip tai gerai veiktų...

// administracija/komandos.p
CMD:labas(playerid)
{
   policija_cmd_labas(playerid);
   if(!IsPlayerAdmin(playerid))
       return 0;
   SendClientMessageToAll(-1, "Administratorius sako labas.");
   return 1;
}

// darbai/policija/komandos.p
CMD:policija(playerid)
{
   medikai_cmd_labas(playerid);
   if(!IsPareigunas(playerid))
       return 0;
   SendClientMessageToAll(-1, "Pareigunas sako labas.");
   return 1;
}


// darbai/medikai/komandos.p
CMD:policija(playerid)
{
   if(!IsMedikas(playerid))
       return 0;
   SendClientMessageToAll(-1, "Medikas sako labas.");
   return 1;
}

Aišku su y_hooks kiek kitaip atrodytų, prefixai būtų sugeneruoti YSi. Čia panaudojau tokius kad būtų aiškiau kaip kas veikia. Atrodytų kad parašius komandą /labas įvykdoma viena komanda. Bet būtų iškviestos visos trys šios funkcijos. Šiuo atveju gal ir veiktų, bet žmonės mėgsta returninti žinutes. Tokiu atveju Medikas pradžiai gautų PD ir admin žinutes. 

 

 

Tiems kas domisi gera struktūra, siūlyčiau pažiūrėti PBP.

Nuoroda į komentarą
Dalintis per kitą puslapį

Nes ne visi mėgsta rašyti viską į vieną x0k eilučių šiukšlyną. 

 

Sakykim yra komanda /labas, ją naudoja administratoriai, pareigūnai ir medikai. Tai yra trys grupės iš kurių visos turėtų turėti savo modulį. Tarkim tokia struktūra:

//gamemodes
- pagrindinis_failas kuriame viskas suincludinta.
     -administracija
         - komandos.p 
     - darbai
         - policija
            -komandos.p
         - medikai
            - komandos.p

Hook'as leistų visiems tiems failams komandos.p turėti tą pačią komandą. Nors abejoju kaip tai gerai veiktų...

// administracija/komandos.p
CMD:labas(playerid)
{
   policija_cmd_labas(playerid);
   if(!IsPlayerAdmin(playerid))
       return 0;
   SendClientMessageToAll(-1, "Administratorius sako labas.");
   return 1;
}

// darbai/policija/komandos.p
CMD:policija(playerid)
{
   medikai_cmd_labas(playerid);
   if(!IsPareigunas(playerid))
       return 0;
   SendClientMessageToAll(-1, "Pareigunas sako labas.");
   return 1;
}


// darbai/medikai/komandos.p
CMD:policija(playerid)
{
   if(!IsMedikas(playerid))
       return 0;
   SendClientMessageToAll(-1, "Medikas sako labas.");
   return 1;
}

Aišku su y_hooks kiek kitaip atrodytų, prefixai būtų sugeneruoti YSi. Čia panaudojau tokius kad būtų aiškiau kaip kas veikia. Atrodytų kad parašius komandą /labas įvykdoma viena komanda. Bet būtų iškviestos visos trys šios funkcijos. Šiuo atveju gal ir veiktų, bet žmonės mėgsta returninti žinutes. Tokiu atveju Medikas pradžiai gautų PD ir admin žinutes. 

 

 

Tiems kas domisi gera struktūra, siūlyčiau pažiūrėti PBP.

 

Aš irgi nerašau visko į vieną ir bandau viską tobulinti. Pats dalykas visai geras kai supratau viską. Čia galės panaudoti pvz heal komandą jei esi adminas pvz rašys adminas pagydė, jei vipas, rašys vipas ir nereiks jokių /vheal, /aheal. Bet va problema jeigu tu esi ir tas ir tas? Rašys ir tą ir tą.

Nuoroda į komentarą
Dalintis per kitą puslapį

Aš irgi nerašau visko į vieną ir bandau viską tobulinti. Pats dalykas visai geras kai supratau viską. Čia galės panaudoti pvz heal komandą jei esi adminas pvz rašys adminas pagydė, jei vipas, rašys vipas ir nereiks jokių /vheal, /aheal. Bet va problema jeigu tu esi ir tas ir tas? Rašys ir tą ir tą.

Ne visai problema. Jei gražinsi "-2" hook'as bus sustabdytas ir pati funkcija gražins 1. 

Nuoroda į komentarą
Dalintis per kitą puslapį

Nes ne visi mėgsta rašyti viską į vieną x0k eilučių šiukšlyną. 

 

Sakykim yra komanda /labas, ją naudoja administratoriai, pareigūnai ir medikai. Tai yra trys grupės iš kurių visos turėtų turėti savo modulį. Tarkim tokia struktūra:

//gamemodes
- pagrindinis_failas kuriame viskas suincludinta.
     -administracija
         - komandos.p 
     - darbai
         - policija
            -komandos.p
         - medikai
            - komandos.p

Hook'as leistų visiems tiems failams komandos.p turėti tą pačią komandą. Nors abejoju kaip tai gerai veiktų...

// administracija/komandos.p
CMD:labas(playerid)
{
   policija_cmd_labas(playerid);
   if(!IsPlayerAdmin(playerid))
       return 0;
   SendClientMessageToAll(-1, "Administratorius sako labas.");
   return 1;
}

// darbai/policija/komandos.p
CMD:policija(playerid)
{
   medikai_cmd_labas(playerid);
   if(!IsPareigunas(playerid))
       return 0;
   SendClientMessageToAll(-1, "Pareigunas sako labas.");
   return 1;
}


// darbai/medikai/komandos.p
CMD:policija(playerid)
{
   if(!IsMedikas(playerid))
       return 0;
   SendClientMessageToAll(-1, "Medikas sako labas.");
   return 1;
}

Aišku su y_hooks kiek kitaip atrodytų, prefixai būtų sugeneruoti YSi. Čia panaudojau tokius kad būtų aiškiau kaip kas veikia. Atrodytų kad parašius komandą /labas įvykdoma viena komanda. Bet būtų iškviestos visos trys šios funkcijos. Šiuo atveju gal ir veiktų, bet žmonės mėgsta returninti žinutes. Tokiu atveju Medikas pradžiai gautų PD ir admin žinutes. 

 

 

Tiems kas domisi gera struktūra, siūlyčiau pažiūrėti PBP.

Šiais laikais žmonės mėgsta viską, o ypač nieko neveikimą ir netobulėjimą.

Nuoroda į komentarą
Dalintis per kitą puslapį

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3392 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Prisijungti prie diskusijos

Palikti atsakymą galite iš karto, o užsiregistruoti vėliau. Jeigu jau turite paskyrą mūsų forume, Prisijunkite.

Svečias
Atsakyti šioje temoje...

×   Įklijuotas tekstas turi teksto formatavimą.   Pašalinti teksto formatavimą

  Galimi tik 75 veidukai.

×   Nuoroda buvo automatiškai įterpta.   Įterpti nuorodą paprastai

×   Jūsų ankstesnis pranešimas buvo atkurtas.   Išvalyti redaktorių

×   Jūs negalite įkelti nuotraukas tiesiogiai.Įkelkite arba įdėkite nuotraukas iš URL.

  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai


×
×
  • Sukurti naują...