Peršokti į turinį
  • ŽAIDIMAI
  • , ŽAIDIMAI
  • ŽAIDIMAI

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 4534 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

Dėl to nes ZCMD yra greitesnis. Kodėl? 

 

 

Pažiūrėkime kaip jie veikia. Strcmp būdas atrodo taip:

public OnPlayerCommandText(playerid,cmdtext[])
{
   if(!strcmp(cmdtext,"/komanda"))
   {
        //Komanda
        return 1; 
   }
   if(!strcmp(cmdtext,"/komanda2"))
   {
       //Komanda 2
       return 1;
   }
   return 0;
}

Atrodo gal ir nieko kai vos porą komandų. O kas jeigu yra 100? 200? Pagalvok kiek užtrunka kodas kol suranda kurią komandą žaidėjas parašė? Jis eina iš eilės ir tikrina.....

 

Su ZCMD viskas kitaip, jam neįdomu ar komanda egzistuoja, jis ją kviečia ir tiek, supaprastinus ZCMD veikia taip:

#define CMD:%0(%1,%2) cmd_%0(%1,%2) //Žinoma yra kelios versijos galimo pavadinimo ZCMD komandai, bet ko gero šis populiariausias


public OnPlayerCommmandText(playerid,cmdtext[])
{
   new funcname[MAX_FUNC_NAME];
   while (cmdtext[++pos] > ' ') // Eisim kol rasi tarpą ar kitą simbolį. PRE-increment nes juk žinom koks pirmasis simbolis.
   {
	funcname[pos-1] = tolower(cmdtext[pos]); //Įrašom tą sumažinę raidę į funkcijos pavadnimą
   }
   format(funcname, sizeof(funcname), "cmd_%s", funcname); // Su formatuojam su "cmd_", kadangi toks yradefine.
   while (cmdtext[pos] == ' ') pos++; // Susižinom kur prasideda parametrai
   if(!cmdtext[pos]) //Jei parametrų nėra, kviečiam fukciją su tuščiu "params"
       return CallLocalFunction(funcname, "is", playerid, "\1");	
   return CallLocalFunction(funcname, "is", playerid, cmdtext[pos]); //Kitais atvejais kviečiam funkcija perduodami tai ką žaidėjas įvedė po komandos
}

Ir čia jeigu bus 100 ar 200 komandų, OnPlayerCommandText kodas nesikeis. ZCMD/YCMD tiesiog kviečia funkciją komandos pavadinimu. Tai yra DAUG greičiau, CallLocalFunction net neįdomu ar ta funkcija egzistuoja!

Reikia Pawn pagalbos? Skype nerašyk.

 

 

 

 

 

 

(redaguota)

Dėl to nes ZCMD yra greitesnis. Kodėl? 

 

 

Pažiūrėkime kaip jie veikia. Strcmp būdas atrodo taip:

public OnPlayerCommandText(playerid,cmdtext[])
{
   if(!strcmp(cmdtext,"/komanda"))
   {
        //Komanda
        return 1; 
   }
   if(!strcmp(cmdtext,"/komanda2"))
   {
       //Komanda 2
       return 1;
   }
   return 0;
}

Atrodo gal ir nieko kai vos porą komandų. O kas jeigu yra 100? 200? Pagalvok kiek užtrunka kodas kol suranda kurią komandą žaidėjas parašė? Jis eina iš eilės ir tikrina.....

 

Su ZCMD viskas kitaip, jam neįdomu ar komanda egzistuoja, jis ją kviečia ir tiek, supaprastinus ZCMD veikia taip:

#define CMD:%0(%1,%2) cmd_%0(%1,%2) //Žinoma yra kelios versijos galimo pavadinimo ZCMD komandai, bet ko gero šis populiariausias


public OnPlayerCommmandText(playerid,cmdtext[])
{
   new funcname[MAX_FUNC_NAME];
   while (cmdtext[++pos] > ' ') // Eisim kol rasi tarpą ar kitą simbolį. PRE-increment nes juk žinom koks pirmasis simbolis.
   {
	funcname[pos-1] = tolower(cmdtext[pos]); //Įrašom tą sumažinę raidę į funkcijos pavadnimą
   }
   format(funcname, sizeof(funcname), "cmd_%s", funcname); // Su formatuojam su "cmd_", kadangi toks yradefine.
   while (cmdtext[pos] == ' ') pos++; // Susižinom kur prasideda parametrai
   if(!cmdtext[pos]) //Jei parametrų nėra, kviečiam fukciją su tuščiu "params"
       return CallLocalFunction(funcname, "is", playerid, "\1");	
   return CallLocalFunction(funcname, "is", playerid, cmdtext[pos]); //Kitais atvejais kviečiam funkcija perduodami tai ką žaidėjas įvedė po komandos
}

Ir čia jeigu bus 100 ar 200 komandų, OnPlayerCommandText kodas nesikeis. ZCMD/YCMD tiesiog kviečia funkciją komandos pavadinimu. Tai yra DAUG greičiau, CallLocalFunction net neįdomu ar ta funkcija egzistuoja!

Man pvz: ZCMD atrodo sudėtingesnė, o yra skirtumas kurti serverius su kokia nors iš šitų? Neįskaitant komandų greičio

Redaguota , nario Tadas_Dalgiux

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 4534 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ą...