Jump to content

script [ Inc ] Addressed Variable System v1.0.5


BatisCorleone

Recommended Posts

Zdravím , chcel by som vám predstaviť môj include Addressed Variable System v1.0.5.

Popis includu : 
- Tento include slúži na adresované ukladanie premenných typu INT,FLOAT,STRING.

- Tento include má slúžiť na rýchlejšie a prehladnejšie písanie scriptov v jazyku Pawn.
- Malo by to byť jednoduché na použitie pre začiatočníkov.

Výhody includu : 
- Nemusíte vytvárať žiadne premenné. [ "new Premenna[100];" ]
- Jednoducho viete vynulovať všetky premenné na jeden riadok pomocou funkcie DeleteAllVariables(playerid);. [ Hl.využitie na OnPlayerDisconnect(playerid,reason) ]
- Núti vás zadefinovať potrebné premenné podľa potreby. [ Pre začiatočníkov , napr #MAX_PLAYERS_EX ]
- Na uloženie reťazca ( stringu ) je potrebné 2x menej miesta.
- Pamätá sa na každého hráča že koľko premenných má nastavených a práve preto neprebehne cyklus viac krát ako je potrebné.
- Po vynulovaní adresy a hodnoty sa síce polia nezmažú ale nastavia sa ich hodnoty na nulu a pri nastavení novej premennej so zaťial nevytvorenou adresou pre daného hráča sa nájde prázdne miesto a údaje sa zapíšu tam.
- Načítanie a Zápis údajov je rýchlejší ako cez PVary.
- Ako môžete vedieť PVary sa dajú modifikovať a načítať mimo daného FS,premenné cez AVS nie.Taktiež premenné cez PVar na daného hráča sú obmedzené a v AVS si obmedzenia nastavujete vy podľa potreby.

Nevýhody includu : 
- Kvôli adries sa vytvorí viac polí akoby ste použili obyčajnú metódu "new Premenna[100];"
- Nakoľko sa hodnoty načítavajú z adries tak sú pomalšie ako obyčajné premenné. [ Cyklus for,volanie funkcie ]

Funkcie includu :
SetInt(playerid,VName[],i); - Uloží hodnotu i do adresy VName[] pre pole playerid.
SetFloat(playerid,VName[],f); - Uloží hodnotu do adresy VName[] pre pole playerid.
SetString(playerid,VName[],s[]); - Uloží reťazec do adresy VName[] pre pole playerid​.
GetInt(playerid,VName[]); - Zistí INT-ovú hodnotu z adresy VName[] pre pole playerid
GetFloat(playerid,VName[]); - Zistí FLOAT-ovú hodnotu z adresy VName[] pre pole playerid
GetString(playerid,VName[]); - Zistí reťazec z adresy VName[] pre pole playerid
DeleteVariable(playerid,VName[],VType); - Vymaže údaje a adresu z adresy VName[] pre pole playerid.
DeleteAllVaraibles(playerid); - Vymaže všetky údaje a všetky adresy pre pole playerid.

Porovnanie s PVarmi [ Rýchlosť ] :
- Pri každom teste sa vytvorilo 800 premenných a následne sa zapísali do logu (printf).

- Každý test sa vykonal 3x
Testy s verziou v1.0 :


- Intové premenné -
Test 1:
PVar : 176 ms
AVS : 120 ms
Test 2:
PVar : 174 ms
AVS : 119 ms
Test 3:
PVar : 176 ms
AVS : 124 ms
- Reťazce -
Test 1:

PVar : 172 ms

AVS : 140 ms
Test 2:
PVar : 170 ms
AVS : 137 ms
Test 3:
PVar : 173 ms
AVS : 138 ms


Testy s verziou v1.0.5 :


- Intové Premenné -
Test 1:
AVS : 107 ms
Test 2:
AVS : 108 ms
Test 3:
AVS : 108 ms
- Reťazce -
Test 1:
AVS : 121 ms
Test 2:
AVS : 119 ms
Test 3:
AVS : 120 ms

 
- FLOATy som netestoval z toho dôvodu že principialne fungujú rovnako ako INTy.
- Pri týchto testoch AVS aj PVary ešte spomaloval cyklus for a funkcia printf takže v reálnom využití sú ešte rýchlejšie. [ Síce podľa mňa ani takto niesu pomalé. ]

Changelog :


AVS v1.0.5 :
- V používaní funkcií pre používateľa sa nič nemenilo.
- Táto verzia obsahuje viac optimalizácii čo sa týka rýchlosti a záťaže na CPU.
- Funkcia SearchForFreeSpace(playerid,VType) bola nahradená novou funkciach ShiftVariableAddressess(playerid,AddressPos,VType).
- Funkcia GetDigits(n) bola prerobená a viac násobne zrýchlená.
- Na niektorých miestach bola funkcia format nahradená funkciou valstr.
- Na zopár ďalších miestach boli niektoré funkcie nahradené/prerobené a tým pádom zrýchlené.



AVS je teoreticky navrhnutý pre prácu s premennými pre hráčov,avšak nikde nie je obmedzené na playerid takže teoreticky je ho možné využiť aj na premenné ktoré nesúvisia s hráčom.
Pokiaľ by ste nepochopili niečo z tohto popisu tak pred otázkou sa nezabudnite pozrieť do návodu ktorý je pribalený v .rar súbore. 

Podrobný návod na použitie nájdete pribalený v .rar súbore !
Download tu : http://files.bcph.eu/download.php?file=AVS [ v1.0.5 ]


 

Edited by BatisCorleone
  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

  • Administrátor

 

 

 Ako môžete vedieť PVary sa dajú modifikovať a načítať mimo daného FS,premenné cez AVS nie.Taktiež premenné cez PVar na daného hráča sú obmedzené a v AVS si obmedzenia nastavujete vy podľa potreby.

To mi nepřijde jako výhoda.. Tady je spíš výhoda na straně pvarů..

Jak jsou pVary omezené ? 

  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

To mi nepřijde jako výhoda.. Tady je spíš výhoda na straně pvarů..

- Predstav si situáciu že niekto spraví zadarmo dostupné GM/Admin System ktorý bude bežať na PVaroch.

- Nakoľko bude zadarmo dostupné tak hociaké naivné dieťa si to GM/AS môže dať k sebe na server.

- Nakoľko je to decko tak uverí povedzme dobrej duše ktorá mu dá scripty len tak zadarmo kde povedzme bude jednoducho "SetPVarInt(playerid,"AdminLevel",5);" a tým pádom si nastaví pre seba AdminLevel alebo hociaké iné hráčske skóre.

 

 

Jak jsou pVary omezené ? 

- Neskúmal som presne ako sú obmedzené ale viem že sú. 

- Povedzme použi tento kód a uvidíš ako sú "obmedzené" :

 

#include <a_samp>

public OnPlayerConnect(playerid)
{
for(new s[4],i;i<1000;i++)
{
format(s,sizeof(s),"%d",i);
SetPVarInt(playerid,s,i);
printf("%d",GetPVarInt(playerid,s));
}
return 1;
}

- Posledných 200 hodnôt ti vyprintuje ako 0.

Link to comment
Share on other sites

  • Administrátor

- Predstav si situáciu že niekto spraví zadarmo dostupné GM/Admin System ktorý bude bežať na PVaroch.

- Nakoľko bude zadarmo dostupné tak hociaké naivné dieťa si to GM/AS môže dať k sebe na server.

- Nakoľko je to decko tak uverí povedzme dobrej duše ktorá mu dá scripty len tak zadarmo kde povedzme bude jednoducho "SetPVarInt(playerid,"AdminLevel",5);" a tým pádom si nastaví pre seba AdminLevel alebo hociaké iné hráčske skóre.

 

Tak to už je problém naivního dítěte :d když si nezmění jmena pvarů... :)

 

To tamto vyzkouším

Edited by Ewwe
Link to comment
Share on other sites

Tak to už je problém naivního dítěte :d když si nezmění jmena pvarů... :)

No tak z časti ano ale nie každý myslí na takéto potencionálne nebezpečenstvá :d , a kebyže niekto veľmi chce tak aj v AVS sa dá spraviť načítanie dát z iného scriptu :d Akurát to by už bolo pravdepodobne pomalšie ako cez PVary.

Takže keď pre niekoho to je výhoda aby sa dali zistiť jeho premenné ( čo pre mňa je obrovská nevýhoda ) tak v tom prípade môže použiť aj PVary :d

Link to comment
Share on other sites

V include sa našlo zopár úsekov kde sa dalo vykonať zrýchlenie a práve preto som nahral novú verziu v1.0.5 , prosím prečítajte si changelog a poprípadne si stiahnite novú verziu.

Edited by BatisCorleone
Link to comment
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
×
×
  • Create New...