Üzenetek megjelenítése

Ez a szekció lehetővé teszi a felhasználó által írt összes hozzászólás megtekintését. Vedd figyelembe, hogy csak azokba a fórumokba írt hozzászólásokat látod, amelyekhez hozzáférésed van.


Üzenetek - Zsolesszka

Oldalak: 1 ... 131 132 [133] 134 135 136
1981
Segítségkérés / ütés anim
« Dátum: 2011. március 27. - 17:41:24 »
Légy kreatív csak azt tudom mondani.
http://wiki.sa-mp.com/wiki/GetPlayerAnimationIndex
Az ott látható kódot szépen bemásolod a a módodba igen az OnPlayerUpdate részt,
felmész a szerveredre kiválasztasz egy harci stílust elkezdesz ütni vágni (játékban lehetõleg) és szépen kiírja épp melyik animációt játsza le, innen már menni fog szerintem.

1982
SA-MP / Open.mp: Szerverfejlesztés / HasDuplicateValues
« Dátum: 2011. március 27. - 17:13:32 »
Fõ topic
Ez a funkció egy adott karakterlánc, számsorozat egyes elemeit hasonlítja össze szerepel-e benne duplán ugyanolyan érték.
Ha van egy egyezés a vissza térés értéke \"true\".
(Igazából a lottóscriptben használtam annak ellenõrzésére ne lehessen megadni egyforma nyerõszámokat.)
 

stock
    HasDuplicateValues(array[], size = sizeof array)
{
    for(new f = 0; f < size - 1; f++)
        for(new c = f + 1; c < size; c++)
            if(array[f] == array[c])
                return true;
    return false;
}

 
És a példa:
 

new
arr[] = { 21, 34, 45, 15, 56, 123, 34, 67 },
arr2[] = { 21, 34, 45, 56, 123, 36, 67 },
arr3[] = { 2, 5, 34, 56, 332, 67, 32, 43, 6554, 1234, 542},
arr4[] = { 4, 8, 10, 12, 3, -45, -78, 45, -78, 90},
arr5[] = { \'x\', \'d\', \'s\', \'e\', \'t\', \'r\', \'o\', 67, 23, \'r\'};
printf(\"Duplicate value in array?  %s\",  (HasDuplicateValues(arr))?(\"Yes\"):(\"No\"));
printf(\"Duplicate value in array?  %s\",  (HasDuplicateValues(arr2))?(\"Yes\"):(\"No\"));
printf(\"Duplicate value in array?  %s\",  (HasDuplicateValues(arr3))?(\"Yes\"):(\"No\"));
printf(\"Duplicate value in array?  %s\",  (HasDuplicateValues(arr4))?(\"Yes\"):(\"No\"));
printf(\"Duplicate value in array?  %s\",  (HasDuplicateValues(arr5))?(\"Yes\"):(\"No\"));
/*
[17:23:20] Duplicate value in array?  Yes
[17:23:20] Duplicate value in array?  No
[17:23:20] Duplicate value in array?  No
[17:23:20] Duplicate value in array?  Yes
[17:23:20] Duplicate value in array?  Yes
*/

 
Alap elve a következõ:
Az elsõ cella tartalmát hasonlítja össze a többi celláéval, majd a másodikét és így tovább, ez egy 10 cellás folyamatsorozatot próbál ábrázolni:
 

  • == [1],[2],[3],[4],[5],[6],[7],[8],[9]
  • [1] == [2],[3],[4],[5],[6],[7],[8],[9]
    [2] == [3],[4],[5],[6],[7],[8],[9]
    [3] == [4],[5],[6],[7],[8],[9]
    [4] == [5],[6],[7],[8],[9]
    [5] == [6],[7],[8],[9]
    [6] == [7],[8],[9]
    [7] == [8],[9]
    [8] == [9]

1983
SA-MP / Open.mp: Szerverfejlesztés / IsPrime
« Dátum: 2011. március 27. - 15:57:48 »
Idézetet írta: Jex date=1301181803\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"7086\" data-ipsquote-contentclass=\"forums_Topic
õõ akkor valamit elírtam.. igazából csak ilyen hatalmas számokra teszteltem xD majd holnap még kitalálok valamit.
edit:
 

stock IsPrime2(value)
{
    if(value < 2) return false;
if(value == 2) return true;
if(value % 2 == 0) return false;
new Float:val = floatsqroot(value);
for(new i = 3; i<val;i+=2)
{
    if(value % i == 0) return false;
}
return true;
}

 
ez a leggyorsabb amit írni tudtam.
 
Szép egy apró jel maradt csak le = és máris megfelelõen mûködik. Biztos te is ezt az értéket kaptad 78665.
Kösz Jex sokat segítettél és persze a hivatalos fórumon Nero_3D is írt egy változatot.
Így talán eddig amit elértünk ez a leggyorsabb változat:
 

stock
IsPrime(value)
{
if(value < 2 || value & 0b1 == 0)
return(value == 2);
new
i = 3,
Float:val = floatsqroot(value);
for( ; i <= val; i++, i++)
if((value % i) == 0)
   return false;
return true;
}

 

[2011.03.27 18:32:33] Prímszámteszt count: 78498 | time: 5188ms[/quote]

1984
SA-MP / Open.mp: Szerverfejlesztés / IsPrime
« Dátum: 2011. március 27. - 00:17:44 »
Nem rossz elképzelés csak valami hiba van benne túl sok igaz értékkel tér vissza,
a teszt egyszerû amivel ellenõrzöm csak megszámolom mennyi igaz értékkel tér vissza és ha többi verzióval egyezik a szám akkor megfelelõen mûködik.
 
[2011.03.27 00:12:18] Prímszám teszt count: 78498 | time: 7421ms
[2011.03.27 00:13:04] Prímszám teszt count: 123494 | time: 10840ms
[/quote]
Itt látható hogy jóval több mint 78498.
De az ötlet nem rossz. Köszi.
Itt a tesztelésre írt kód:
 

#define LOOP 1000000
new
count,
st = GetTickCount();
for(new i; i < LOOP; i++)
{
if(IsPrime(i))
{
   count++;
}
}
printf(\"Prímszám teszt count: %d | time: %dms\", count, GetTickCount() - st);
count = 0;
st = GetTickCount();
for(new i; i < LOOP; i++)
{
if(IsPrime2(i))
{
   count++;
}
}
printf(\"Prímszám teszt count: %d | time: %dms\", count, GetTickCount() - st);

1985
SA-MP / Open.mp: Szerverfejlesztés / IsPrime
« Dátum: 2011. március 27. - 00:00:21 »
Idézetet írta: Arnold_Alexander date=1301155830\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"7086\" data-ipsquote-contentclass=\"forums_Topic
én ezekbõl sajnos egy szót nemértek de sebaj majd megtanulom ezeket is xD am f***án néz ki
 
Köszi én se tudtam róla sok mindent pár napja.
Újabb verzió.
Kiderült hogy while ciklusban bármilyen egyéb függvény használat lassú, így kitettem a floatsqroot -ot egy újabb változóba, így még gyorsabban fut le a kód, 1 millió növekvõ ismétlõdésnél mérve.

1986
SA-MP / Open.mp: Szerverfejlesztés / Csak magyarok
« Dátum: 2011. március 26. - 20:50:41 »
Szép szép de én kicsit hiányosnak találom nézd át újra mert szerintem egy igen igen lényeges rész hiányzik innen.
Talán ez lenne az?

1987
Segítségkérés / szerver parancs
« Dátum: 2011. március 26. - 17:30:18 »
Idézetet írta: straY\' date=1301154925\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"7076\" data-ipsquote-contentclass=\"forums_Topic
@DareDevil: Filterscriptek is bezavarhatnak. Azoknál is állítsd át a visszatérési értéket 0-ról 1-re.
@Zsoleszka: MAX_PLAYERS helyett használd a GetMaxPlayers() -t. Mivel a MAX_PLAYERS értéke 500, míg a GetMaxPlayers-é csak annyi ahány férõhelyes a szerver.
http://wiki.sa-mp.com/wiki/GetMaxPlayers
 
Köszi.
Ez így van ha megfelelõen van használva, persze ez függ attól is épp mennyi a slot mert lehet 400 slotnál már nem gyorsabb a GetMaxPlayers mint a MAX_PLAYERS, persze ez attól is függ épp hogy használod ciklus utasításokban az imént említett funkciót.
Én maradok ennél az eljárásnál, ha nem gond:
 

#undef MAX_PLAYERS
#define MAX_PLAYERS 50 // mivel ennyi a jelenlegi számomra, -unkra bérelt szerveren a slotok száma.

1988
SA-MP / Open.mp: Szerverfejlesztés / IsPrime
« Dátum: 2011. március 26. - 17:03:46 »
Idézetet írta: Jex date=1301155035\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"7086\" data-ipsquote-contentclass=\"forums_Topic
igazából az elsõ rész, hogy ++i, vagy i++ az tényleg mindegy. a másik viszont már nem :D de mondom, c++-ban szinte felesleges ilyen gyorsítással próbálkoznod, inkább lassítás lesz belõle... ajánlanám esetleg a funkcionális nyelveket, ott tényleg maximális gyorsaságot érhetsz el :D
 
Sok esetben nem mindegy igaz pawn nyelv nem nagyon tesz különbséget ++i;  i++;  között de while ciklusnál már néha különbség van benne.
És ahogy most van már eleve 2-õvel kezdi ellenõrizni az oszthatóságot.
És valóban érdekes a belinkelt oldal elfog tartani egy darabig míg értelmezem.
Köszi még egyszer.
Na átolvastam kicsit. Szóval az oszthatóság vizsgálatból ki kell venni minden prímszám többszörösét, viszont megvalósítani nem lesz könnyû, vagy túl bonyolult lesz a kód ami nem gyorsabb hanem egyes esetekben még lassabb is lesz, vagy be kell iktatni egy határt melyik számtól gyorsabb a mostani mint a bonyolultabb verzió.
El leszek vele egy darabig. ;D

1989
SA-MP / Open.mp: Szerverfejlesztés / IsPrime
« Dátum: 2011. március 26. - 16:55:06 »
Idézetet írta: Epsilon date=1301154419\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"7086\" data-ipsquote-contentclass=\"forums_Topic


if(value < 2) return false;

 
Tudtommal az 1 prímszám.
 
[/quote]
Én nem tudom hogy  az 1 prímszám lenne wikin 2-vel kezdõdik.
http://hu.wikipedia.org/wiki/Pr%C3%ADmsz%C3%A1mok
Kösz jex próbálkozok még gyorsabb verziót írni ezen leírás alapján, egy kis idõbe is telik mire értelmezem, de megvannak az okai mit miért csináltam mivel a tesztek mást mutatnak, mûködõképesség terén.

1990
SA-MP / Open.mp: Szerverfejlesztés / IsPrime
« Dátum: 2011. március 26. - 15:17:02 »
Hát nem tudom mennyire hasznos egy funkció de leírom itt is érdekességnek jó lesz.
A lényege egy megadott számról eldönteni prímszám avagy sem.
Eredeti kezdeti topic: http://forum.sa-mp.com/showpost.php?p=1136560&postcount=1841 [FeK]DraKiNs írta.
Egy php ból merített prímszám ellenõrzõ funkció. (szerintem kiválasztotta a legbonyolultabbat) >:D
Mivel ezt én kicsit túl bonyolultnak találtam, így némi kutatás és tesztelés után, írtam egy-két változatot, köszönet érte az interneten megtalálható leírások készítõinek.
A leggyorsabb változat amit eddig elértem az ez lenne:
 

stock
IIsPrime(value)
{
if(value < 2) return false;
if(value == 2) return true;
new
Float:value2 = floatsqroot(value);
new
i = 1;
while(i++ < value2)
{
if(value % i == 0)
   return false;
if(i > 4) i++;
}
return true;
}

 
Ha valakinek akadna gyorsabb verzió, örömmel venném ha láthatnám. (csak tanulás végett)
Sikerült egy kis gyorsabb lefutást eszközölni e sor beírásával:
 

if(i > 4) i++;

 
Íme az eredmény amit mértem a két verzió közt 1 millió ismétlõdésnél.
 
[2011.03.26 20:04:18] Prímszám teszt count: 78498 | time: 10153ms // újabb prímszám ellenõrzõ
[2011.03.26 20:04:36] Prímszám teszt count: 78498 | time: 17491ms
[/quote]
Igaz most már tudom hogy kellene ellenõrizni de megvalósítani az már kicsit nehezebb.
Az oszthatóságot csak prím számokkal kellene vizsgálni, úgy lehetne elérni a leggyorsabb ellenõrzést.
Újabb gyorsabb verzió kiderült hogy while funkcióban a flootsqroot eléggé lassú:
 
[2011.03.26 23:49:18] Prímszám teszt count: 78498 | time: 7362ms[/quote]
Ez szintén 1 millió ismétlõdésnél mért idõ.
Újabb fejlesztés köszönet érte Jex_nek és a hivatalos forumon Nero_3D nek is az általa írt verziónak.
Így talán eddig amit elértünk ez a leggyorsabb változat:
 

stock
IsPrime(value)
{
if(value < 2 || value & 0b1 == 0)
return(value == 2);
new
i = 3,
Float:val = floatsqroot(value);
for( ; i <= val; i++, i++)
if((value % i) == 0)
   return false;
return true;
}

 

[2011.03.27 18:32:33] Prímszámteszt count: 78498 | time: 5188ms[/quote]

1991
Segítségkérés / szerver parancs
« Dátum: 2011. március 26. - 09:21:03 »
Idézetet írta: DareDevil date=1301125827\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"7076\" data-ipsquote-contentclass=\"forums_Topic
if(strcmp(\"/lp2\", cmdtext, true, 10) ==0)
{
   SetPlayerPos(playerid,sx[playerid],sy[playerid],sz[playerid]);
   SendClientMessage(playerid, 0x008000AA, \"Betöltötted a poziciódat\");
   return 1;
}
ennél pl kiirja
 
A létrehozott változók így néznek ki?
 

new
Float:sx[MAX_PLAYERS],
Float:sy[MAX_PLAYERS],
Float:sz[MAX_PLAYERS];

 
ha igen akkor az Unknown Command felirat mellett megjelenik ez a SendClientMessage szöveg is \"Betöltötted a pozíciódat\"?
Esetleg próbáld meg így is:
 

if(strcmp(\"/lp2\", cmdtext, true) == 0)
{
SetPlayerPos(playerid, sx[playerid], sy[playerid], sz[playerid]);
SendClientMessage(playerid, 0x008000AA, \"Betöltötted a poziciódat\");
return 1;
}

 
(de ez nem lehet a hiba oka valahol máshol kell keresni csak találgatni tudok ennyi információból)
Említetted dcmd-t is használsz esetleg lenne másik parancs is ami /lp2 lenne?
Lehet a hiba akár egy másik filterscriptben is.
(mondjuk ha a használt filterscript már zcmd-t használ)
Látod már ez a pár sor is mennyi kérdést vet fel, több adat kell hogy meglehessen állapítani a hiba forrását.
Én teszteltem a feljebb idézett parancsot mûködik rendesen nincs vele gond persze a feljebb kiírt változókat használtam, az okot máshol kell keresni.

1992
Segítségkérés / szerver parancs
« Dátum: 2011. március 26. - 08:31:21 »
Esetleg másolnál ide olyan parancsot amelyiknél ezt az üzenetet írja ki \"Unknown Command\".
A lényeg ami a lényeg ezen figyelmeztetés abban az esetben jelenik meg
 
  • ha a beírt parancs return 0; -val tér vissza.
  • ha a parancsban egy nem létrehozott memória cellára történik a hivatkozás,

ezt a samp programozása hibásnak ítéli meg és megjelenik a fentebb említett szöveg.
 

Mit is jelent az utóbbi?
 

new
     valami[MAX_PLAYERS];
// Ugye a max_players értéke alapból 500 (0.3 server)
for(new i; i <= MAX_PLAYERS; i++)
{
     valami = random(10);
}
 
Létrehoztunk egy 500-as változót ami 0-tól 499 tart \"valami\" néven.
De a for ciklusban 0-tól 500-ig futtatjuk le ennek a változó celláinak érték megadását,
ami 501 szer fut le és már itt is van egy olyan hiba amirõl írtam feljebb.
És itt a helyes kód egyetlen egy apró eltéréssel:
 

for(new i; i < MAX_PLAYERS; i++)
{
     valami = random(10);
}

1993
Segítségkérés / SA-MP RPG szerver | Házin igen,Host-on nem indul |
« Dátum: 2011. március 26. - 00:27:34 »
Aha itt tényleg nem árt egy frissítés.
Nem csak a pluginok de a samp alap könyvtárait is frissítened kell.
 
v0.3a R7, ©2005-2010 SA-MP Team
[/quote]
A te házi szervered még 0.3a R7 verzió
a hoston lévõ már 0.3c verzió.
 
v0.3c, ©2005-2010 SA-MP Team[/quote]
Így le kell töltened a a legfrissebb samp szervert.
És frissítened kell a legújabb .inc fájlokkal a régieket, és ezután újra konvertálni a mafia2.pwn fájlt mafia2.amx-é pawn editorral.

1994
Segítségkérés / SA-MP RPG szerver | Házin igen,Host-on nem indul |
« Dátum: 2011. március 26. - 00:10:45 »
A használt scripteket (gamemod filterscript. -eket) is újra konvertáltad a használt plugin verziószámának megfelelõ .inc fájlokkal?

1995
Segítségkérés / SA-MP RPG szerver | Házin igen,Host-on nem indul |
« Dátum: 2011. március 25. - 23:54:01 »
Itt látom hogy egy régebbi kiadású streamer plugint használsz
 
*** Streamer Plugin v2.3.4 by Incognito loaded ***[/quote]
Próbáld meg az újabb kiadású pluginnal.
Innen letöltheted.
Incognito pluginjai általában olyanok hogy egy kiadott verzió csak a hozzá kiadott streamer.inc használatával mûködik együtt, ellenkezõ esetben az említett hiba üzenetek jelennek meg.
Tehát a scripteket 2.5.2 es verzió plugin használatkor csak a 2.5.2 streamer.inc fájllal kell konvertálni .amx-be.
És ugyanígy a régebbi verziókat is.
És ez elõfordulhat az audio pluginnal is, tehát azonos verziójú .inc fájlokat használj a scriptekhez, mint amilyen a használni kívánt .dll .so plugin verzió.

Oldalak: 1 ... 131 132 [133] 134 135 136
SimplePortal 2.3.7 © 2008-2026, SimplePortal