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 - DamieN007
Oldalak: [1]
1
« Dátum: 2014. január 01. - 22:58:17 »
Sziasztok! Problémám támadt a DateDiff-el ami a két nap között eltelt napokat számolja meg. Eddig minden hibátlanul mûködött (amíg minden dátum 2013 volt), de most hogy 2014 lett nem hajlandó kiszámolni az eltelt napokat. A kód: #define swap(%1,%2); { %1 = %1 + %2; %2 = %1 - %2; %1 = %1 - %2; } stock IsLeapYear(year) if((year % 400) == 0 || (((year % 100) != 0) && ((year % 4) == 0))) return 1; else return 0; stock DateDiff(year1,year2,month1,month2,day1,day2) { new days; new days_of_months[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; if(year1 > year2) { swap(year1,year2); swap(month1,month2); swap(day1,day2); } else if(year1 == year2) { if(month1 > month2) { swap(month1,month2); swap(day1,day2); } else if(month1 == month2) { if(day1 == day2) return 0; else return day1>day2?day1-day2:day2-day1; } } for(new i = year1; i != year2; i++) { if(IsLeapYear(i)) days += 366; else days += 365; } for(; month1 != month2; month1++) { if(month1 == 2 && IsLeapYear(year2)) days += 29; else days += (days_of_months[month1-1]); } return (days+day2-day1); } Csináltam az ellenõrzéshez egy teszt scriptet is: #include <a_samp> public OnFilterScriptInit() { new RegiEv, RegiHonap, RegiNap; RegiEv = 2013; RegiHonap = 12; RegiNap = 31; new MostaniEv, MostaniHonap, MaiNap; MostaniEv = 2014; MostaniHonap = 1; MaiNap = 1; new ElteltNapok; ElteltNapok = DateDiff(MostaniEv,RegiEv,MostaniHonap,RegiHonap,MaiNap,RegiNap); printf(\"%d %d %d - %d %d %d = %d nap a különbség\",RegiEv, RegiHonap, RegiNap, MostaniEv, MostaniHonap, MaiNap, ElteltNapok); return 1; } #define swap(%1,%2); { %1 = %1 + %2; %2 = %1 - %2; %1 = %1 - %2; } stock IsLeapYear(year) if((year % 400) == 0 || (((year % 100) != 0) && ((year % 4) == 0))) return 1; else return 0; stock DateDiff(year1,year2,month1,month2,day1,day2) { new days; new days_of_months[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; if(year1 > year2) { swap(year1,year2); swap(month1,month2); swap(day1,day2); } else if(year1 == year2) { if(month1 > month2) { swap(month1,month2); swap(day1,day2); } else if(month1 == month2) { if(day1 == day2) return 0; else return day1>day2?day1-day2:day2-day1; } } for(new i = year1; i != year2; i++) { if(IsLeapYear(i)) days += 366; else days += 365; } for(; month1 != month2; month1++) { if(month1 == 2 && IsLeapYear(year2)) days += 29; else days += (days_of_months[month1-1]); } return (days+day2-day1); } A tesztelés alatt 2013.12.31 és 2014.1.1 dátummal próbáltam meg kiszámoltatni az eltelt napok számát, de nem futott le, hibát írt ki a crashdetect plugin. A hiba: Run time error 4: \"Array index out of bounds\" Accessing element at index 12 past array upper bound 11 AMX backtrace: #0 000008ec in DateDiff (year1=2013, year2=2014, month1=13, month2=1, day1=31, day2=1) at C:\\tesztszerver\\filterscripts\\DATE.pwn:75 #1 0000017c in public OnFilterScriptInit () at C:\\tesztszerver\\filterscripts\\DATE.pwn:16 [/quote] Valamiért a 12. hónap helyett 13. hónappal számol, és ezért nem fut le. :S (Pedig 12. hónap van beírva.) A válaszokat, és a segítséget elõre is köszönöm!
2
« Dátum: 2013. október 02. - 20:29:34 »
Sziasztok! Valaki nem tud kill hack ellen valami megoldást? A szerver ilyen üzeneteket adott ki: [19:26:35] [kill] Trolol killed Trolol [19:26:35] [kill] Trolol killed Trolol [19:26:35] [kill] Trolol killed Trolol [19:26:35] [kill] Trolol killed Trolol [19:26:35] [kill] Trolol killed Trolol [19:26:35] [kill] Trolol killed Trolol [19:26:35] [kill] Trolol killed Trolol [19:26:35] [kill] Trolol killed Trolol [19:26:35] [kill] Trolol killed Trolol [19:26:35] [kill] Trolol killed Trolol [19:26:35] [kill] Trolol killed Trolol [19:26:35] [kill] Trolol killed Trolol [19:26:35] [kill] Trolol killed Trolol [19:26:35] [kill] Trolol killed Trolol [19:26:35] [kill] Trolol killed Trolol [19:26:35] [kill] Trolol killed Trolol [19:26:35] [kill] Trolol killed Trolol [19:26:35] [kill] Trolol killed Trolol [19:26:35] [kill] Trolol killed Trolol [19:26:35] [kill] Trolol killed Trolol [19:26:35] [kill] Trolol killed Trolol [19:26:35] [kill] Trolol killed Trolol [19:26:35] [kill] Trolol killed Trolol [19:26:35] [kill] Trolol killed Trolol [19:26:35] [kill] Trolol killed Trolol [19:26:35] [kill] Trolol killed Trolol [19:26:35] [kill] Trolol killed Trolol [19:26:35] [kill] Trolol killed Trolol [19:26:35] [kill] Trolol killed Trolol [19:26:35] [kill] Trolol killed Trolol [19:26:35] [kill] Trolol killed Trolol [19:26:35] [kill] Trolol killed Trolol [19:26:35] [kill] Trolol killed Trolol [19:26:35] [kill] Trolol killed Trolol [19:26:35] [kill] Trolol killed Trolol [19:26:35] [kill] Trolol killed Trolol [19:26:35] [kill] Trolol killed Trolol [19:26:35] [kill] Trolol killed Trolol [19:26:35] [kill] Trolol killed Trolol [19:26:35] [kill] Trolol killed Trolol [19:26:35] [kill] Trolol killed Trolol [19:26:35] [kill] Trolol killed Trolol [/quote] Nagyon idegesítõ mert crasheltetik a szervert. Ebbõl az üzenetbõl több százat ír ki a szerver. Meg néha olyannal is támadnak, hogy nem a hacker öli meg magát, hanem random embereket ír.
3
« Dátum: 2013. szeptember 21. - 15:49:55 »
Így leáll a szerver. :/ A screenlog ezt a sort adja ki: \"/servers/scripts/samp_run: line 31: 8668 Segmentation fault ./samp03svr $3\" Crashdetect plugin ezt a hibaüzenetet adja ki: [debug] Server crashed while executing TESZT.amx [debug] AMX backtrace: [debug] #0 native dir_list () [b758db20] from filemanager.so [debug] #1 00000e5c in public OnFilterScriptInit () at D:\\server1\\filterscripts\\TESZT.pwn:10 [debug] System backtrace: [debug] #0 b74d70f3 in _ZN10StackTraceC1EPv () from plugins/crashdetect.so [debug] #1 b74ceb61 in _ZN11crashdetect20PrintSystemBacktraceEPv () from plugins/crashdetect.so [debug] #2 b74d1405 in _ZN11crashdetect15SystemExceptionEPv () from plugins/crashdetect.so [debug] #3 b74d6c42 in ?? () from plugins/crashdetect.so [debug] #4 b7849400 in ?? () [debug] #5 b762a96d in readdir () from /lib/i386-linux-gnu/libc.so.6 [debug] #6 b758db42 in ?? () from plugins/filemanager.so [debug] #7 b74d19d5 in _ZN11crashdetect13DoAmxCallbackEiPiS0_ () from plugins/crashdetect.so [debug] #8 b74d51ca in ?? () from plugins/crashdetect.so [debug] #9 b74d9136 in amx_Exec () from plugins/crashdetect.so [debug] #10 b74d18b4 in _ZN11crashdetect9DoAmxExecEPii () from plugins/crashdetect.so [debug] #11 b74d5203 in ?? () from plugins/crashdetect.so [debug] #12 080a9376 in ?? () from ./samp03svr [debug] #13 080a739d in ?? () from ./samp03svr [debug] #14 080a7d37 in ?? () from ./samp03svr [debug] #15 080b41e7 in ?? () from ./samp03svr [debug] #16 080b5729 in ?? () from ./samp03svr [debug] #17 080b5792 in ?? () from ./samp03svr [debug] #18 080b10a3 in ?? () from ./samp03svr [debug] #19 b75ace37 in __libc_start_main () from /lib/i386-linux-gnu/libc.so.6 [debug] #20 0804b521 in ?? () from ./samp03svr
Update: Idõközben sikerült megoldanom.
4
« Dátum: 2013. szeptember 21. - 15:28:30 »
Sziasztok! Korábban nyitottam egy témát ezzel kapcsolatban: http://sampforum.hu/index.php?topic=47348.0Itt a kódban lévõ problémát sikerült megoldani, megy is windows-on minden rendesen, viszont ha feltöltöm linux-os szerverre, semmit sem csinál. Szerintem az elérési útvonallal lehet a hiba. A windows megtalálta a \"./scriptfiles/ladmin/users/\" helyen a fájlokat, viszont a linux nem hajlandó rá. :/ A plugin betöltõdik rendesen! A végleges kód a következõ: #include <a_samp> #include <filemanager> #include <Dini> public OnFilterScriptInit() { new dir:dHandle = dir_open(\"./scriptfiles/ladmin/users/\"); new item[255], type; while(dir_list(dHandle, item, type)) { if(type == FM_FILE) { new file[255]; format(file, sizeof(file), \"ladmin/users/%s\",item); if(dini_Exists(file)) { printf(\"%s\", file); dini_IntSet(file,\"money\",0); } } } dir_close(dHandle); return 1; } Szerintetek mi lehet a hiba? linux hogy kezeli az elérési utakat?
5
« Dátum: 2013. szeptember 17. - 21:07:58 »
Oh én hülye.. Erre nem is gondoltam! :/ Köszönöm szépen a válaszokat! Így már mûködik! A végleges kódot kiteszem, akinek szüksége van rá, használja egészséggel! #include <a_samp> #include <filemanager> #include <Dini> public OnFilterScriptInit() { new dir:dHandle = dir_open(\"./scriptfiles/ladmin/users/\"); new item[255], type; while(dir_list(dHandle, item, type)) { if(type == FM_FILE) { new file[255]; format(file, sizeof(file), \"ladmin/users/%s\",item); if(dini_Exists(file)) { printf(\"%s\", file); dini_IntSet(file,\"money\",0); } } } dir_close(dHandle); return 1; }
6
« Dátum: 2013. szeptember 17. - 19:21:51 »
Kipróbáltam .txt kiterjesztéssel, és úgy sem mûködik. :S Amit kiír a szerver printf-el (\"item\"-et): 1997.txt @nth0n1.txt Andreas_00Sin.txt asdsad.txt _05HUN_06user.txt És így sem írja át :/ Viszont amit nem értek, az a következõ: #include <a_samp> #include <filemanager> #include <Dini> public OnFilterScriptInit() { new dir:dHandle = dir_open(\"./scriptfiles/ladmin/users/\"); new item[255], type; while(dir_list(dHandle, item, type)) { if(type == FM_FILE) { if(!dini_Exists(item)) { printf(\"%s\", item); dini_IntSet(item,\"money\",0); } } } dir_close(dHandle); return 1; } Ennél a kódnál ha ez szerepel: \"if(!dini_Exists(item))\" akkor kilistázza a fájlokat, viszont ha ez: \"if(dini_Exists(item))\" akkor nem. Tehát ha létezik a fájl nem listázza ki, ha meg létezik akkor igen?! Akkor ez most hogy van? :/
7
« Dátum: 2013. szeptember 17. - 18:53:18 »
Amikor kilistázza, akkor például ezeket írja ki: 1997.sav @nth0n1.sav Andreas_00Sin.sav asdsad.sav _05HUN_06user.sav Az item változó takarja a felhasználó fájlok neveit. (Viszont amikor rá akarok hivatkozni nem csinál semmit. :/)
8
« Dátum: 2013. szeptember 16. - 21:26:46 »
Sziasztok! Szeretném meghatározni, hogy egy mappában milyen fájlok vannak. (Felhasználók) Ehhez a FileManager nevû plugint használnám. ( http://forum.sa-mp.com/showthread.php?t=92246) A példa kód a listázásra így néz ki: new dir:dHandle = dir_open(\"./\"); new item[40], type; while(dir_list(dHandle, item, type)) { if(type == FM_FILE) printf(\"%s is a file\", item); else if(type == FM_DIR) printf(\"%s is a directory\", item); } dir_close(dHandle); Ezt kicsit átalakítottam, és most így néz ki a kód: #include <a_samp> #include <filemanager> #include <Dini> public OnFilterScriptInit() { new dir:dHandle = dir_open(\"./scriptfiles/ladmin/users/\"); new item[255], type; while(dir_list(dHandle, item, type)) { if(type == FM_FILE) { if(dini_Exists(item)) { printf(\"%s\", item); dini_IntSet(item,\"money\",0); } } } dir_close(dHandle); return 1; } Azt szeretném megcsinálni, hogy minden játékos pénzét átírni 0-ra. Viszont az a problémám, hogy nem írja át. printf-el kiírná azoknak a nevét, akiket lenullázott, viszont a módosításom után semmit sem ír ki, és nem is nyúl a fájlokhoz. :S Valaki tudna segíteni, mi lehet a probléma? Dupla hozzászólás automatikusan összefûzve. ( 2013. szeptember 17. - 14:03:55 )
Ezzel a kóddal kilistáz minden fájlt a mappában, csak nem tudom hogy tudnék rá hivatkozni a késõbbiekben. (például fájlból olvasáskor.) #include <a_samp> #include <filemanager> public OnFilterScriptInit() { new dir:dHandle = dir_open(\"./scriptfiles/ladmin/users/\"); new item[40], type; while(dir_list(dHandle, item, type)) { if(type == FM_FILE) { printf(\"%s\", item); // Az \"item\" a fájl neve, XYZ.sav formátumban. } } dir_close(dHandle); return 1; } Próbáltam fájlkezelõben az \"item\"-re hivatkozva megnyitni minden fájlt, és átírni a \"money\" értéket 0-ra, viszont valamiért nem listázza ki, ha elé teszem a \"if(dini_Exists(item))\"-t.
Oldalak: [1]
|