Ü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 - DamieN007

Oldalak: [1]
1
Segítségkérés / DateDiff hiba (Két nap közti különbség)
« 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
Segítségkérés / Fake kill ellen megoldás
« 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
Segítségkérés / Windows & Linux elérési utak?
« 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
Segítségkérés / Windows & Linux elérési utak?
« 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.0
Itt 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
Segítségkérés / FileManager hiba :(
« 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
Segítségkérés / FileManager hiba :(
« 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
Segítségkérés / FileManager hiba :(
« 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
Segítségkérés / FileManager hiba :(
« 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]
SimplePortal 2.3.7 © 2008-2024, SimplePortal