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


Témák - hegdavid95

Oldalak: [1] 2 3 4
1
Beszélgetés / Labgame
« Dátum: 2014. március 30. - 18:38:22 »
Sziasztok!
Korábban írtam a DFS algoritmus segítségével egy labirintus generátort pawnban és nemrég elkezdtem foglalkozni az OpenGL-el azon belül is az SFML-el és gondoltam elsõ játéknak megcsinálhatnám a labirintusos algoritmust. Átírtam C++ ra egy barátom segített textúrákat létrehozni én pedig megírtam a játékprogramot :D Itt látható az eredmény:
\"width=500http://kepfeltoltes.hu/140330/Labgame_2014-03-30_18-35-35-60_www.kepfeltoltes.hu_.jpg[/img]
Letöltés:
http://www.solidfiles.com/d/e72186a13f/Labgame.rar

2
Segítségkérés / HTTP_ERROR_MALFORMED_RESPONSE
« Dátum: 2013. március 05. - 18:34:30 »
Üdv!
a http függvény valamiért 6-os response code val tér vissza ami a HTTP_ERROR_MALFORMED_RESPONSE. Na msot fogalmam sincs hogy mibaja. Ha ugyanazt a linket ami a scriptben szerepel bemásolom egy böngészõbe, tökéletesen megtörténik aminek meg kell történni.
HTTP( 0, HTTP_GET, string,\"\", \"Response\" );
Lényegében ez egy php scriptet futtat le az URL helyességében 100%-ig biztos vagyok, de akkor mégis mi lehet a baj?

3
Segítségkérés / Hogyan fûzzünk össze több lekérdezést egy query-be?
« Dátum: 2013. március 02. - 18:58:25 »
Üdv.
Azt szeretném megoldani, hogy van mondjuk 4 tábla a 4 táblának különbözõ mennyiségû mezõje amik közt igazából semmiféle kapcsolat sincs (így nem jó megoldás a join)
viszont az UNION meg azért nem jó mert az egyes táblák mezõinek száma gyakran változik, így nem lehet kitölteni NULL értékekkel a hiányzó részeket.
Szóval megpróbáltam azt hogy
 
SELECT * FROM `Tabla1`,`Tabla2`,`Tabla3`,`Tabla4` WHERE `Tabla1`.`Adat1` = 1 OR `Tabla2`.`Adat1` = 2 OR `Tabla3`.`Adat1` = 3 OR `Tabla4`.`Adat1` = 4 

 
Viszont ezzel az a baj, hogy ha mondjuk a Tabla2 táblában nincs rekord akkor a visszatérésben az összes mezõ értéke NULL nem csak azok amelyek hiányoznak.
Igazából csak össze szeretnék fûzni több lekérdezést egy lekérdezésbe bizonyos okokból, Ezt szeretném megoldani.

4
Üdv mindenkinek!
Teljesen véletlen bukkantam rá a pawnnak erre a nagyon egyszerû funkciójára.Ugye a baj az, hogy a pawnban egy sor maximum 510 karakter hosszúságú lehet.De vannak esetek amikor nekünk ettõl hosszabb karakterláncokra van szükségünk és ennek a szövegnek a nagyrésze állandó karakterekbõl áll.
Eddig milyen megoldások voltak?
Foghattunk egy jó hosszú stringet és vagy strcattal belepakoltuk amit akartunk, vagy format függvény segítségével de lényegében ugyanazt megcsináltuk mint strcattal.
Ettõl ezerszer egyszerûbb megoldás a következõ:
SendClientMessage-ben:
 
SendClientMessage(playerid,0xFFFFFFFF,\"Ez egy nagyonhosszú szöveg.....elérkezünk a pawn határaihoz\\
De semmi baj mert egy a sor végére tett fordított zárójellel a stringet folytathatjuk a következõ sorban.\");

 
format-ban:
 
format(string,sizeof(string),\"Ez szintén egy elég hosszú szöveg %s és el is értünk a pawn határaihoz ismét\\
Ismét folytathatjuk tovább %d sõt még ez is mûködik: %\\
s ennyire egyszerû az egész.\",\"asd\",5,\"asd\");

 
Tehát a dolog lényege: a sor végére illesztett \\ jellel a következõ sorban folytathatjuk a stringet.
Amit nem lehet:
 
SendClientMessage(playerid,0xFFFFFFFF,\"teszt\\
teszt\\
\\
teszt\\
teszt\");

 
Valamiért nállam ugyanazt a hibasort írta ki ennél, mint amikor egy sorban több mint 510 karakter volt.
Ennyi lenne.

5
Segítségkérés / InterpolateCameraPos állandó sebességgel
« Dátum: 2012. október 29. - 19:21:24 »
Sziasztok.
Van rá bármilyen mód hogy az InterpolateCameraPos függvénnyel a kamera ne úgy mozogjon hogy elõször felgyorsít majd lelassít, hanem folyamatosan állandó sebességgel mozogjon a két pont között? Esetleg ha ezzel a függvénynel nem megoldható más alternatíva van e?

Dupla hozzászólás automatikusan összefûzve. ( 2012. október 29. - 19:34:14 )

Egyébként arra számítottam hogy a CAMERA_CUT mód az iylen amilyen nekem kell de ahogy megnéztem full ugyanaz mint a CAMERA_MOVE vagy egyáltalán mi a különbség a kettö közt?

6
Üdv mindenkinek!
Nyilván páran használjátok azokat a láthatatlan checkpoint készítõket, ami úgy készít \"láthatatlan checkpointokat\" hogy egy timerrel leellenõrzi, hogy a játékos adott pozícióhoz közel van e.
Nos ez is egy megoldás, viszont. Létezik egy másik módszer.
Nemrég nézelõdtem a sa-mp wikin a SetPlayerRaceCheckpoint függvénynél és láttam, hogy csak 5 fajta checkpoint van. Ebbõl a 3 és a 4 véleményem szerint teljesen ugyanúgy néz ki. Ezért úgy gondoltam megnézem mit csinál ha 5-öt írok be a checkpoint típushoz.
Legnagyobb meglepetésemre kiadott egy légi cp-t azonban 45 fokos szögben eldöntve.
a 6-os furcsán vibrál majd pár mp múlva eltûnik. a 7-es fel le ugrál. a 8-as szintén fel le ugrál, de kb 10 méterrel a fölött a koordináta fölött ahol létrehoztad. majd ha belemégy egyre lejjebb és lejjebb kerül. És ami a lényeg. 9-es checkpoint nincs, viszont attól még ha abba belemész az ugyanúgy meghívja az OnPlayerEnterRaceCheckpoint függvényt, és a többi hozzátartozót. (OnPlayerLeaveRaceCheckpoint stb...) Szóval máris kész a láthatatlan checkpoint.
Példa:
 
SetPlayerRaceCheckpoint(playerid,9,0,0,0,0,0,0,5);

 
Ennyi lenne :) Ha ezt még kombináljátok incognito streamer pluginjával (tehát egyszerre több ilyen race checkpointot tesztek le a plugin segítségével) akkor máris megkapjuk ugyanazokat a láthatatlan checkpoint készítõ includekat amiket már korábban megírtak páran az IsPlayerInRangeOfPoint függvény segítségével.

7
Segítségkérés / Pontatlan a GetTickCount
« Dátum: 2012. október 22. - 12:00:12 »
Sziasztok.
Szükségem lenne egy olyan módszerre amivel ezredmásodperces pontossággal lehet eltelt idõt mérni. Próbáltam a GetTickCountot, azonban ha annak eredményeit összehasonlítod egy 1000 ms re beállított timerrel jelentõs különbségeket lehet tapasztalni.
Bal oldalt a timer állása, jobb oldalt a GetTickCount értéke.
1000 = 1119
2000 = 2251
3000 = 3377
4000 = 4504
5000 = 5629
6000 = 6760
7000 = 7882
8000 = 9001
9000 = 10124
10000 = 11249
A legnagyobb gond hogy az eltérés sem állandó mértékû így nem tudom azt csinálni hogy egy bizonyos számmal megszorozva megkapom a helyes értéket itt egy másik példa:
1000 = 1131
2000 = 2252
3000 = 3372
4000 = 4499
5000 = 5612
6000 = 6738
7000 = 7859
8000 = 8975
9000 = 10092
10000 = 11213
Amiért lényeges lenne ez a nagy pontosságú idõmérés, mert egy bizonyos feladatnál kétféleképpen szeretném mérni az idõt.
Egyszer másodpercenként lefutna egy timer ami növelne egy változót, ez az amit a játékosok látnának egy textdraw formájában, viszont amikor az eseménysorok végéreérünk fontos lenne, hogy ezredmásodperc pontosságban tudjuk az eredményt ennek céljára csináltam a szokásos GetTickCount az elején utánna kivonjuk az akkori GetTickCount ot az elején mértbõl. Esetleg egyéb ötlete valakinek van e hogy ez megoldható legyen?

8
Segítségkérés / MYSQL lekérdezési értékek hibásak
« Dátum: 2012. augusztus 27. - 12:08:56 »
Üdv nemtudom hogy létezik e ilyen, de tegnap óta, amikor semmit sem módosítottam a szerver módjában,
valamilyen oknál fogva a mysql lekérdezések nagy része értelmetlen értékeket ad vissza
pl lekérdezem egy játékos összes adatát
és visszatér egy teljesen oda nem illõ dologgal pl hogy 19
[12:06:37] CMySQLHandler::Query(SELECT * FROM `players` WHERE `Name` LIKE \'Devilke\' AND `pass` LIKE \'***\') - Successfully executed.
[12:06:37] >> mysql_store_result( Connection handle: 1 )
[12:06:37] CMySQLHandler::StoreResult() - Result was stored.
[12:06:37] >> mysql_num_rows( Connection handle: 1 )
[12:06:37] CMySQLHandler::NumRows() - Returned 1 row(s)
[12:06:37] >> mysql_fetch_row_format( Connection handle: 1 )
[12:06:37] CMySQLHandler::FetchRow() - Return: 19
Ez teljességgel lehetetlen hogy ezt adja vissza, mivel a players táblában 50 adat van tárolva.
és az nyilván nem egy szám. Ami még érdekes, hogy más lekérdezéseknél tökéletesen hiba mentes minden, és ez sem minden játékosnál fordul elõ csak ugy a 30% nál

9
Idézetet írta: Vampesz date=1293976952\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"26247\" data-ipsquote-contentclass=\"forums_Topic
Köööszi! :)

Ez most pont jól jött. :)


ZeRo: Aaaaz milyen?:D

 
A lényege az újrarendezésnek, hogy elkerüljük a float függvények használatát. Ebben az esetben ezt úgy tehetjük meg hogy a floatsqroot függvényt nem használjuk (tehát nem vonunk gyököt) hanem azt az értéket emeljük négyzetre amivel összehasonlitjuk mivel ha A = floatsqroot(B) akkor A*A = B

10
Segítségkérés / Titkosítás jelszóval
« Dátum: 2012. július 20. - 16:58:27 »
Olyan titkosító rendszer nincs ami egy megadott mesterkód alapján titkosítja le a dolgokat? tehát a megadott kód függvényében más eredményt adna ki. És az visszatudná fejteni a titkosítást akinek a birtokába van ez a kód.

11
Segítségkérés / MYSQL JOIN
« Dátum: 2012. július 18. - 14:23:51 »
Üdv!
Azt szeretném megoldani, hogy van két tábla. Mindkét táblába más adatokat tárolunk de a két táblában azonos, hogy minden sornak van egy párja a másik táblában. Konkrétan mind a két táblában a sorok játékosokat jelölnek. Azért kell két külön tábla, mert az egyik táblának az oszlopai dinamikusak ezért egyszerûbb, ha külön táblában vannak.
A gond csak az, hogy szeretném egy query ben lekérdezni az adatokat Belépéskor, mert úgy jóval egyszerûbb lenne az új pluginban a THREAD-ok miatt.
Szóval.
Adott két tábla:
Players: adat1|adat2|adat3
Players2: adatA|AdatB|AdatC|AdatD|AdatE
Úgy szeretném ennek a két táblának az adatait lekérni, hogy a cache_get_row nál 0. sorba a Players táblába levö adatokat adja 1. sorba pedig a Players2 adatait.
Ez azért szükséges, mert a Players2 adatait ciklussal kell PV arokba tölteni, mivel nincs meghatározva, hogy konkrétan hány oszlop is van az adott sorban.
Én arra gyanakszom, hogy a JOIN függvényre lesz szükségem, de ennek használatában még eléggé tapasztalatlan vagyok.
Remélem érthetõen fogalmaztam :D

12
Leírások/Útmutatók / MYSQL több lekérdezés egy query-ben
« Dátum: 2012. július 18. - 10:13:31 »
Üdv!
Kutattam kicsit a mysql rejtelmei között és találtam egy igen hasznos lehetõséget.
Ha valamien oknál fogva nekünk két táblából kellene kinyernünk adatokat és nem egybõl, viszont nem akarjuk hogy két külön lekérdezés legyen, mert ugye akkor külön callback kell. Meg lehet oldani úgy is, hogy egy queryben legyen. igazából csak annyi, hogy a két külön lekérdezés query-jét egymás mögé tesszük, és közé rakjuk az UNION szót.
A visszatérésnél pedig az elsõ sor az elsõ lekérdezés a második sor a második lekrédezés
pl:
 
//a lekérdezés
mysql_function_query(1, query, true, \"THREAD_pelda\", \"SELECT `Adat1` FROM `Tabla1` WHERE `valami` = \'1\' UNION SELECT `Adat2` FROM `Tabla2` WHERE `valami` = \'2\'\");
//a visszatérés
forward THREAD_pelda();
public THREAD_pelda()
{
new string[128];
cache_get_row(0,0,string);
printf(\"Adat1: %s\",string);
cache_get_row(1,0,string);
printf(\"Adat2: %s\",string);
}

 
Ennek a dolognaka  hátulütõje annyi, hogy a két táblának azonos adat struktúrával kell rendelkeznie.
Helyesbítek: Azonos cella számúnak kell lennie a két sornak (köszönet Anthonynak)

13
SA-MP: Szerverfejlesztés / Anti Bot Script
« Dátum: 2012. július 06. - 13:24:18 »
Üdv mindenkinek.
Sajnos én is áldozatául estem az ujonnan feltünt hacknek, amivel sok sok botot küldenek fel a szerverünkre. Ennek hatására rákerestem sampforumona dologra találtam is egy scriptet amit a fiuk áthoztak hiv fórumról.
http://sampforum.hu/index.php?topic=24256.0
Be raktam, de ezzel a  scripttel az a gond, hogy sajnos lehet olyat is csinálni a hackkel, hogy felcsatlakozik és egybõl le is csatlakozik, így elég nehezen veszi észre az a script, ha ilyen támadás van. Ennek kiküszöbölésének érdekében megírtam ezt a scriptet.
Mûködéséhez szükséges a Gvar plugin (http://sampforum.hu/index.php?topic=9769.0). és dudb include (http://forum.sa-mp.com/showthread.php?t=31)
A script mûködése elég egyszerû. Csatlakozáskor lekérdezzük a játékos IP címét, átalakítjuk udbhas függvénnyel az IP címet egyetlen számadattá. (nem erre szokták használni de itt most tökéletes) Egyel növeljük azt a GV ar változót, amelynek az azonosítója a számmá alakított IP cím. megnézzük, hogy a növelt érték meghaladja e a maximum csatlakoztatható emberek számát azonos IP rõl adott idõn belül. ha meghaladja banolja. Ezután indítunk egy timert ami az adott idõre van beállítja és egyel csökkentjük az adott idõ elteltével a változót. (valamiért nálam filterscriptként nem csinált semmit a script, de ha beleírtam a gamemodeba a scriptet tökéletesen mûködött)
Letöltés (pastebin): http://pastebin.com/YMj6Mxhk
a script konkrétan:
 
#define FILTERSCRIPT
#include <a_samp>
#include <gvar>
#include <dudb>
#define MAX_CONNECTIONS_FROM_IP     2 //azért 2 mert ha esetleg véletlen testvérek csatlakoznak és pont ugyanakkor akkor õket ne banolja
#define TIME_BETWEEN_CONNECTIONS   500
#pragma unused ret_memcpy
 
//IP cím számként tárolva
public OnFilterScriptInit()
{
print(\"BOT VÉDELEM AKTIVÁLVA\");
return 1;
}
public OnFilterScriptExit()
{
print(\"BOT VÉDELEM DEAKTIVÁLVA\");
return 1;
}
public OnPlayerConnect(playerid)
{
    new hashIP,IP[32];
GetPlayerIp(playerid,IP,sizeof(IP));
hashIP = udbhash(IP);
SetGVarInt(\"IPconnections\",GetGVarInt(\"IPconnections\",hashIP)+1,hashIP);
if(GetGVarInt(\"IPconnections\",hashIP) > MAX_CONNECTIONS_FROM_IP)
{
printf(\"BOT: connections from %s. IP has been banned.\",IP);
    BanEx(playerid, \"BOT attack! version Devil\");
    SetTimerEx(\"ConnectionBack\",TIME_BETWEEN_CONNECTIONS,0,\"d\",hashIP);
    return 1;
}
else
{
SetTimerEx(\"ConnectionBack\",TIME_BETWEEN_CONNECTIONS,0,\"d\",hashIP);
}
return 0;
}
 
forward ConnectionBack(hashid);
public ConnectionBack(hashid)
{
SetGVarInt(\"IPconnections\",GetGVarInt(\"IPconnections\",hashid)-1,hashid);
if(!GetGVarInt(\"IPconnections\",hashid)) DeleteGVar(\"IPconnections\",hashid);
}

 
Ez a script és a fentebb említett script kombinálva szinte tökéletes védelmet nyújt a nemkívánatos BOT támadások ellen :)

14
Segítségkérés / Textdraw Font 4, nincs átlátszóság
« Dátum: 2012. június 24. - 14:49:41 »
Üdv
A problémám az lenne, hogy az alább látható textdraw nem átlátszó egyáltalán.
Ez a két függvény pontosan ugyanolyan színt ad a textdrawnak. Semmi átlátszóság. Ha viszont a font nem 4, akkora szöveg valamennyire átlátszó, pont amennyire kell. Ez miért lehet?
TextDrawColor(Textdraw14, 0x000000AA);
TextDrawColor(Textdraw14, 0x000000FF);
Textdraw14 = TextDrawCreate(161.000000, 366.000000, \"LD_SPAC:white\");
TextDrawBackgroundColor(Textdraw14, 255);
TextDrawFont(Textdraw14, 4);
TextDrawLetterSize(Textdraw14, 0.500000, 1.000000);
TextDrawColor(Textdraw14, 0x000000AA);
TextDrawSetOutline(Textdraw14, 0);
TextDrawSetProportional(Textdraw14, 1);
TextDrawSetShadow(Textdraw14, 1);
TextDrawUseBox(Textdraw14, 1);
TextDrawBoxColor(Textdraw14, 255);
TextDrawTextSize(Textdraw14, 315.000000, 15.000000);

15
SA-MP: Szerverfejlesztés / Mktime és Date függvények (Unix-idõ)
« Dátum: 2012. május 27. - 21:51:08 »
Unix idõ
 
Üdv most szeretnék bemutatni egy hasznos idõmeghatározó módszert.
Pontosabban egy informatikában használt a dátumok könnyebb tárolására létrehozott módszert.
Az Unix-idõt.
Ennek lényege, hogy a dátumokat ne egy hosszú sok külön álló számmal(év/hónap/nap óra/perc/másodperc) tároljuk, hanem egyetlen számmal, mégpedig úgy, hogy ez a szám
1970. 01. 01. 00:00:00 óta eltelt másodpercek számát adja meg, igen ez egy elég nagy szám, viszont elõnye, hogy csak egyetlen adatban eltárolhatunk vele 1970-tõl minden dátumot
Annak, aki többet szeretne megtudni errõl annak ajánlom figyelmébe a következõ linket:
http://hu.wikipedia.org/wiki/Unix-id%C5%91
nos íme a két hasznos kis függvény:
A gettime függvény az Unix idõvel tér vissza, ha nem adunk meg neki semmilyen paramétert.
Így tehát ez nekünk tökéletesen megfelel arra a célra, hogy megtudjuk, hogy abban a pillanatban mennyi is az Unix idõ.
például:
 
new unixtime = gettime();

 
A másik, amivel ezt az idõformátumot vissza lehet konvertálni a normális általunk érthetõ formába:
 
stock date(timestamp, &f_day, &f_month, &f_year, &f_hour, &f_min, &f_sec)
{
new s_year=1970, s_day=0, s_month=0, s_hour=0, s_mins=0;
new days_of_month[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
while(timestamp > 31622400)
{
timestamp -= 31536000;
if(((s_year % 4 == 0) && (s_year % 100 != 0)) || (s_year % 400 == 0))  timestamp -= 86400;
s_year++;
}
if(((s_year % 4 == 0) && (s_year % 100 != 0)) || (s_year % 400 == 0))
{
days_of_month[1] = 29;
}
else
{
days_of_month[1] = 28;
}
while(timestamp > 86400)
{
timestamp -= 86400, s_day++;
if(s_day == days_of_month[s_month]) s_day=0, s_month++;
}
while(timestamp>60)
{
timestamp -= 60, s_mins++;
if(s_mins == 60) s_mins=0, s_hour++;
}
f_day = s_day + 1;
f_month = s_month + 1;
f_year = s_year;
f_hour = s_hour;
f_min = s_mins;
f_sec = timestamp;
return true;
}

 
Szerintem eléggé nyilvánvaló, az elsõ paraméter a konvertálandó Unix idõ, a többi 6 pedig az aminek az értékeit módosítja a kapott dátumra.
Azonban elõfordulhat, hogy nekünk nem a jelenlegi Unix idõre van szükségünk, és a 6 általunk ismert dátum paraméterekbõl (év/hó/nap /óra/perc/másodperc)
meg kellene határoznunk az Unix-idõt. Nos a következõ függvény pontosan ezt a célt szolgálja. Visszatérési értéke maga a paraméterekbõl kiszámolt Unix idõ.
 
stock mktime(m_hour, m_minute, m_second, m_day, m_month, m_year)
{
new timestamp2;
timestamp2 = m_second + (m_minute * 60) + (m_hour * 3600);
new days_of_month[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if(((m_year % 4 == 0) && (m_year % 100 != 0)) || (m_year % 400 == 0))
{
days_of_month[1] = 29;
}
else
{
days_of_month[1] = 28;
}
new days_this_year = 0;
days_this_year = --m_day;
if(m_month > 1)
{
for(i = 0; i < m_month - 1; i++)
{
   days_this_year += days_of_month;
}
}
timestamp2 += days_this_year * 86400;
for(new j = 1970; j < m_year; j++)
{
timestamp2 += 31536000;
if(((j % 4 == 0) && (j % 100 != 0)) || (j % 400 == 0))  timestamp2 += 86400;
}
return timestamp2;
}

Oldalak: [1] 2 3 4
SimplePortal 2.3.7 © 2008-2024, SimplePortal