Szerző Téma: SoAP\'s InGame Saver  (Megtekintve 2279 alkalommal)

Nem elérhető SoAP

  • 182
    • Profil megtekintése
SoAP\'s InGame Saver
« Dátum: 2011. március 20. - 13:49:36 »
0 Show voters
Üdv, kedves fórumozók.
Készítettem egy játékban történõ lementõ rendszert.
Név: SoAP\'s InGame Saver
Sorok: 285
Verzió: 1.0
Amit lementhetsz:
- MapIcon
- PickUp
- Jármû
A lementett adatokat megtalálod a: scriptfiles/SoAPInGameSaver/ mappában.  ;)
Parancs: /opensaver (RCON ADMIN szükséges)
LETÖLTÉS:
zcmd.inc mellékelve
SoAP\'s InGame Saver.rar
Várom a véleményeket illetve a kritikákat.
« Utoljára szerkesztve: 2011. november 13. - 11:52:33 írta APC »

Nem elérhető nyE

  • 1745
    • Profil megtekintése
SoAP\'s InGame Saver
« Válasz #1 Dátum: 2011. március 20. - 13:54:21 »
0 Show voters
A lusta scripterek biztosan örülni fognak neki :D

SoAP\'s InGame Saver
« Válasz #2 Dátum: 2011. március 20. - 14:25:12 »
0 Show voters
Idézetet írta: Antonyo date=1300625661\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"6986\" data-ipsquote-contentclass=\"forums_Topic
A lusta scripterek biztosan örülni fognak neki :D
 
Van benne valami. :D
Amúgy hasznos script.
Egy apró észrevétel ilyen funkciókat így is lehet írni de ez tényleg csak egy apróság.
 

stock IsValidMapIconID(mapicon)
{
if(mapicon > 1 && mapicon < 63)
{
return 1;
}
return 0;
}

 
Helyett:
 

stock IsValidMapIconID(mapicon)
return(mapicon > 1 && mapicon < 63);

 
Kicsit gyorsabb mivel kimarad egy (if) feltétel vizsgálat.
És még gyorsabb lehet egyes esetekben ha || logikai vagy operator van használva, ez akkor igaz ha nagyobb a mapicon értéke mint 62 jelen esetben.
 

stock IsValidMapIconID(mapicon)
return(!(mapicon > 62 || mapicon < 2));
« Utoljára szerkesztve: 2011. március 20. - 14:27:52 írta Zsolesszka »

Nem elérhető Epsilon

  • 1854
    • Profil megtekintése
SoAP\'s InGame Saver
« Válasz #3 Dátum: 2011. március 21. - 18:36:47 »
0 Show voters
|| és a && operátorok között nincs sebességbeli különbség. Ebben az esetben az utóbbi megoldás lassít is, hiszen + tagadó operátor is van...
Az ilyen esetekben, mikor az alsó és a felsõ határ megvan egy értéknél (és kivétel sincs) ajánlatos az alábbi módon megoldani:
 

stock bool: IsValidMapIconID(mapicon)  return(64 > mapicon > 1);

 
Ezenkívül a felsõ határ nem 62 (ahogy a te funkciód megállapította,hanem 64 (ahogy az enyém állapította meg).
Ugyanígy az alsó határ sem 2, hanem 1;
Írd felül a régi funkciót az újjal, a hibák elkerülésére.
Azt viszont nem értem miért írtál jármûlementõt, mikor ott van az alap?

Nem elérhető kurta999

  • 2759
  • Éllő fédisznó
    • Profil megtekintése
SoAP\'s InGame Saver
« Válasz #4 Dátum: 2011. március 21. - 19:15:10 »
0 Show voters
Szép szrkipt, grat!
Amúgy ezzel ugyanazt érjük el, mintha definálnánk, nem ? ( Tudom, ez visszatér, de végülis sztem ugyanaz lenne )
 
(64 > mapicon > 1)

 
E: A bool-nak a funkció elõtt amúgy pontosan mi szerepe is van ? :D ( stock bool:IsValid(...) )
« Utoljára szerkesztve: 2011. március 21. - 19:17:53 írta kurta999 »

SoAP\'s InGame Saver
« Válasz #5 Dátum: 2011. március 21. - 20:55:22 »
0 Show voters
Jha én a határokat  a scriptbõl néztem nem az volt a lényeg. :D
 
Idézetet írta: Epsilon date=1300729007\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"6986\" data-ipsquote-contentclass=\"forums_Topic
|| és a && operátorok között nincs sebességbeli különbség.
 
Ezzel kicsit vitatkoznék, igaz lehet hogy köztük nincs sebességbeli különbség de ha egy konkrét példán vizsgáljuk meg mûködésüket, már más eredményt kapunk.
|| logikai vagy operator használatakor ha az egyik feltétel igaz akkor igaz (true) értéket kapunk
&& logikai és operator használatakor ha mind a kettõ feltétel igaz csak abban ez esetben kapunk igaz(true) értéket
Megpróbálok egy ugyanolyan feltétel vizsgálatot írni hogy igaz legyen mindkét állítás logikai és, logikai vagy operatorral nehogy visszatérési érték különbözõsége miatt legyen a sebesség különbség.
Íme a két vizsgálandó feltétel, t = 1-el.
 

if(t > 0 || t > 0) test++; // logikai vagy
if(t > 0 && t > 0) test++; // logikai és

 
És a teszt:
 

new
t = 1, // ki kellett ide tennem változóba mert reklamált a pawn fordító ha így próbáltam       if(1 > 0 || 1 > 0) test++;
starttime = GetTickCount(),
test;
for(new i; i < 1000000; i++)
{
if(t > 0 || t > 0) test++;
}
printf(\"Logikai vagy || operator test. time: %d, count: %d\", GetTickCount() - starttime, test);
starttime = GetTickCount();
test = 0;
for(new i; i < 1000000; i++)
{   
if(t > 0 && t > 0) test++;
}
printf(\"Logikai és && operator test. time: %d, count: %d\", GetTickCount() - starttime, test);
starttime = GetTickCount();
test = 0;   
for(new i; i < 1000000; i++)
{
if(t > 0 || t > 0) test++;
}
printf(\"2 Logikai vagy || operator test. time: %d, count: %d\", GetTickCount() - starttime, test);
starttime = GetTickCount();
test = 0;
for(new i; i < 1000000; i++)
{   
if(t > 0 && t > 0) test++;
}
printf(\"2 Logikai és && operator test. time: %d, count: %d\", GetTickCount() - starttime, test);

 
Kétszer futtattam le a tesztet egymás után és az eredmény ez lett:
 

[20:39:35] Logikai vagy || operator test. time: 55, count: 1000000
[20:39:35] Logikai és && operator test. time: 179, count: 1000000
[20:39:35] 2 Logikai vagy || operator test. time: 60, count: 1000000
[20:39:35] 2 Logikai és && operator test. time: 144, count: 1000000

 
Igaz ez 1 millió ismétlõdés esetén mérhetõ,
de mibõl is adódik akkor ez a sebesség különbség?
A válasz egyszerû mint írtam az elején logikai || vagy feltétel vizsgálatkor ha az egyik feltétel igaz true értéket kapunk. Ismétlem, elég ha az egyik igaz, true a visszatérési érték!
Persze a vizsgálatot direkt úgy írtam hogy már az elsõ vizsgálat igaz legyen,
 

if(1 > 0 || 1 > 0) test++; // logikai vagy
 
[/quote]
ebbõl az következik hogy || logikai vagy operator használatkor ha a legelsõ feltétel vizsgálat igaz
(mivel 1 nagyobb 0 nál) a másodikat már nem vizsgálja meg.
Van másik szembetûnõbb vizsgálat erre a célra, megírom azt is, amint lesz egy kis idõm.
//¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
Íme meg is írtam.
 

//   Elsõ feltétel hamis a második már igaz.
//   És lehet próbálgatni > < váltogatással.
if(1 < printf(\"Elsõ feltétel..\") || 1 > printf(\"Második feltétel..\") || 1 > printf(\"Harmadik feltétel..\") || 1 > printf(\"Negyedik feltétel..\"))
{
printf(\"Íme ez lenne a logikai vagy || láthatóbb vizsgálata\");
}
« Utoljára szerkesztve: 2011. március 21. - 21:30:15 írta Zsolesszka »

Nem elérhető Epsilon

  • 1854
    • Profil megtekintése
SoAP\'s InGame Saver
« Válasz #6 Dátum: 2011. március 22. - 16:27:10 »
0 Show voters
Idézetet írta: Epsilon date=1300729007\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"6986\" data-ipsquote-contentclass=\"forums_Topic
+ tagadó operátor is van...
 
Ha azt is belevéve futtatod le a fenti szkripteket valószínûleg fordul a kocka.
Kösz, hogy rámutattál.
Azt azonban elfelejtetted, hogy a teszteknél tízmilliószor annyi idõt vesz igénybe mint esetünkben.
Ez azt jelenti, hogy ennél a szkriptél jelentéktelen a sebességbeli különbség.

SoAP\'s InGame Saver
« Válasz #7 Dátum: 2011. március 22. - 18:18:35 »
0 Show voters
Idézetet írta: Epsilon date=1300807630\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"6986\" data-ipsquote-contentclass=\"forums_Topic


+ tagadó operátor is van...
 
Ha azt is belevéve futtatod le a fenti szkripteket valószínûleg fordul a kocka.
Kösz, hogy rámutattál.
Azt azonban elfelejtetted, hogy a teszteknél tízmilliószor annyi idõt vesz igénybe mint esetünkben.
Ez azt jelenti, hogy ennél a szkriptél jelentéktelen a sebességbeli különbség.
 
[/quote]
Így van.
Nincs mit.
Nem felejtettem el, írtam is igaz ez 1 millio ismétlésnél mérhetõ különbség.
Így van. (de \"Sok kicsi sokra megy\", vagy ahogy bátyám mondaná \"Sokra kicsi sokra megy\") :D

SoAP\'s InGame Saver
« Válasz #8 Dátum: 2011. március 22. - 19:20:24 »
0 Show voters
Szép grat
\"at_2275511.png\"

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal