Szerző Téma: írd meg magadnak  (Megtekintve 5848 alkalommal)

Nem elérhető Xenius

  • 668
    • Profil megtekintése
írd meg magadnak
« Dátum: 2015. Augusztus 27. - 16:22:13 »
0
írd meg magadnak
« Utoljára szerkesztve: 2015. Augusztus 27. - 20:49:17 írta Xenius »

írd meg magadnak
« Válasz #1 Dátum: 2015. Augusztus 27. - 17:16:06 »
0
Ezek a timerek.. Játszik péld 200 játékos és 200 timer elindul akár egyidőben 2 másodpercre. Semmi értelme nincs. Erre van a getTickCount nevű funkció. A nearbyplayerst egyszerűbben temp colshapeval is meglehetne oldani, bár ez sem rossz, csak gondolom a C++-os colshape gyorsabban lefutna mint ez.

Nem elérhető Xenius

  • 668
    • Profil megtekintése
írd meg magadnak
« Válasz #2 Dátum: 2015. Augusztus 27. - 18:49:03 »
0
Idézetet írta: lackos888 date=1440688566\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"57497\" data-ipsquote-contentclass=\"forums_Topic
Ezek a timerek.. Játszik péld 200 játékos és 200 timer elindul akár egyidőben 2 másodpercre. Semmi értelme nincs. Erre van a getTickCount nevű funkció. A nearbyplayerst egyszerűbben temp colshapeval is meglehetne oldani, bár ez sem rossz, csak gondolom a C++-os colshape gyorsabban lefutna mint ez.
 
Milyen timerről beszélsz? Ez csak egyszer fut le kliens oldalon, 2 másodpercenként 1x enged írni.
Amúgy pedik nem létezik ennél jobb megoldás, colshape-val is csak zabáltatod a cpu-t. A getNearbyPlayers csak azokat a játékosokat kéri le akik a közeledben vannak (getElementsByType(\"players\", root, true)).
Máskor nézd meg jobban a dolgokat, mielőtt hülyeségeket írsz.
« Utoljára szerkesztve: 2015. Augusztus 27. - 18:55:26 írta Xenius »

írd meg magadnak
« Válasz #3 Dátum: 2015. Augusztus 27. - 18:56:17 »
0
Magam sem csináltam volna jobban.  :thumbsup:  XD

írd meg magadnak
« Válasz #4 Dátum: 2015. Augusztus 27. - 19:03:45 »
0
Bocsánat, a kliens oldalit elnéztem, viszont szerintem még mindig kézenfekvőbb a getTickCount. A colshapeba is lehet igazad, mert az összes elementet nézi.
« Utoljára szerkesztve: 2015. Augusztus 27. - 19:06:57 írta lackos888 »

Nem elérhető Xenius

  • 668
    • Profil megtekintése
írd meg magadnak
« Válasz #5 Dátum: 2015. Augusztus 27. - 19:18:41 »
0
Idézetet írta: lackos888 date=1440695025\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"57497\" data-ipsquote-contentclass=\"forums_Topic
Bocsánat, a kliens oldalit elnéztem, viszont szerintem még mindig kézenfekvőbb a getTickCount. A colshapeba is lehet igazad, mert az összes elementet nézi.
 
Kliens oldalon van a getElementsByType  funkciónak egy plusz paramétere, amivel csak a be streamelt elementeket kéri le. Amúgy meg tick count vagy timer, ilyen kis dolgoknál nem számít semmit hogy melyiket használod.
« Utoljára szerkesztve: 2015. Augusztus 27. - 19:28:31 írta Xenius »

Nem elérhető DrAkE

  • 2078
    • Profil megtekintése
írd meg magadnak
« Válasz #6 Dátum: 2015. Augusztus 27. - 19:52:41 »
+1
Ez a leírás már alapból több sebből vérzik:
 
Idézetet írta: Xenius date=1440685333\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"57497\" data-ipsquote-contentclass=\"forums_Topic
szerveroldal használata nélkül adatokat közölni kliens-kliens közt
 
Alapból hülyeség, hiszen a kliens elküldi először a szervernek az adatot, utána pedig a szerver küldi el a többi kliensnek az adatot, tehát már alapból nem lesz kliens-kliens kommunikáció.
Másrészt, Te fogod, és tiltod az eventet, majd csinálsz kliens oldalon egy \"/say\" parancsot. Ez mind szép és jó, csak ha írsz a chatbe, akkor 2X! küldi el ugyanazt az üzenetet. Egyszer ugye az alap MTA say parancsa, utána pedig a kliens oldali say parancs. Ezzel már alapból tönkrebasztad a(z) \"Szerver optimalizáció\"-t, és \"sok sok\" netet elhasználsz.
Ha annyira akarsz spam protectiont, meg lokális chatet, írtam neked egy nagyon szép, és rövidkét (FIGYELEM! EZ SZERVER OLDALI! TÖNKRE FOGJA BASZNI A SZERVERGÉP CPUJÁT, MEG A NETJÉT!!!!!!):
 

local antiSpam = {}
function sendMessageToNearbyPlayers(player, dist, message)
local x,y,z = getElementPosition(player)
local myDim = getElementDimension(player)
local myInt = getElementInterior(player)
for k,v in ipairs(getElementsByType(\"player\", root, true)) do
if myDim == getElementDimension(v) and myInt == getElementInterior(v) then
   local distance = getDistanceBetweenPoints3D(x, y, z, getElementPosition(v))
   if distance <= dist then
      outputChatBox(getPlayerName(player) .. \"#FFFFFF mondja: \" .. message, v, 255, 255, 255, true)
   end
end
end
end
addEventHandler(\"onPlayerChat\", root, function(message, messageType)
if not antiSpam[source] or antiSpam[source] < getTickCount() then
antiSpam[source] = getTickCount() + 2000
sendMessageToNearbyPlayers(source, 20, message)
end
cancelEvent()
end)

 
Legközelebb inkább gondolkodj el, hogyan is működik egy kliens - szerver kommunikáció.
(Jah meg a timer igen is nagy különbség, mivel ha létrehozol egy timert, az egy nagy tárolóba fog eltárolódni. Ezen a tárolón a játék, minden miliszekundumban végigfut, és összehasonlítja hogy lejárt-e már a timer vagy nem, ha igen, akkor meghívja azt a funkciót, ami a lua stackben el lett tárolva).
Peace.
« Utoljára szerkesztve: 2015. Augusztus 27. - 19:58:04 írta DrAkE »

Nem elérhető Xenius

  • 668
    • Profil megtekintése
írd meg magadnak
« Válasz #7 Dátum: 2015. Augusztus 27. - 19:57:28 »
0
Idézetet írta: DrAkE date=1440697961\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"57497\" data-ipsquote-contentclass=\"forums_Topic
Ez a leírás már alapból több sebből vérzik:
 

szerveroldal használata nélkül adatokat közölni kliens-kliens közt
 
Alapból hülyeség, hiszen a kliens elküldi először a szervernek az adatot, utána pedig a szerver küldi el a többi kliensnek az adatot, tehát már alapból nem lesz kliens-kliens kommunikáció.
Másrészt, Te fogod, és tiltod az eventet, majd csinálsz kliens oldalon egy \"/say\" parancsot kliens oldalon. Ez mind szép és jó, csak ha írsz a chatbe, akkor 2X! küldi el ugyanazt az üzenetet. Egyszer ugye az alap MTA say parancsa, utána pedig a kliens oldali say parancs. Ezzel már alapból tönkrebasztad a(z) \"Szerver optimalizáció\"-t, és \"sok sok\" netet elhasználsz.
Ha annyira akarsz spam protectiont, meg lokális chatet, írtam neked egy nagyon szép, és rövidkét:
 

local antiSpam = {}
function sendMessageToNearbyPlayers(player, dist, message)
local x,y,z = getElementPosition(player)
local myDim = getElementDimension(player)
local myInt = getElementInterior(player)
for k,v in ipairs(getElementsByType(\"player\", root, true)) do
if myDim == getElementDimension(v) and myInt == getElementInterior(v) then
   local distance = getDistanceBetweenPoints3D(x, y, z, getElementPosition(v))
   if distance <= dist then
      outputChatBox(getPlayerName(player) .. \"#FFFFFF mondja: \" .. message, v, 255, 255, 255, true)
   end
end
end
end
addEventHandler(\"onPlayerChat\", root, function(message, messageType)
if not antiSpam[source] or antiSpam[source] < getTickCount() then
antiSpam[source] = getTickCount() + 2000
sendMessageToNearbyPlayers(source, 20, message)
end
cancelEvent()
end)

 
Legközelebb inkább gondolkodj el, hogyan is működik egy kliens - szerver kommunikáció.
Peace.
 
[/quote]
\"szerveroldal használata nélkül adatokat közölni kliens-kliens közt\" - ezt a régi rendszerre írtam.
amúgy pedig nem fogja kétszer kiírni, tájékozódj jobban mielőtt hülyeséget írsz. a szerveroldali spam védelem pedig alapból fail, amit írtál  kód, az teljesen használhatatlan. lehet hogy 50 embernél nem fog nagyobb gondot okozni, viszont 200-300 embernél már meg fogod érezni. \"Nem mindegy hogy a hülye okoskodik vagy hogy az okos hülyéskedik-\"
« Utoljára szerkesztve: 2015. Augusztus 27. - 20:00:14 írta Xenius »

Nem elérhető DrAkE

  • 2078
    • Profil megtekintése
írd meg magadnak
« Válasz #8 Dátum: 2015. Augusztus 27. - 19:59:16 »
0
Idézetet írta: Xenius date=1440698248\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"57497\" data-ipsquote-contentclass=\"forums_Topic


Ez a leírás már alapból több sebből vérzik:
 

szerveroldal használata nélkül adatokat közölni kliens-kliens közt
 
Alapból hülyeség, hiszen a kliens elküldi először a szervernek az adatot, utána pedig a szerver küldi el a többi kliensnek az adatot, tehát már alapból nem lesz kliens-kliens kommunikáció.
Másrészt, Te fogod, és tiltod az eventet, majd csinálsz kliens oldalon egy \"/say\" parancsot kliens oldalon. Ez mind szép és jó, csak ha írsz a chatbe, akkor 2X! küldi el ugyanazt az üzenetet. Egyszer ugye az alap MTA say parancsa, utána pedig a kliens oldali say parancs. Ezzel már alapból tönkrebasztad a(z) \"Szerver optimalizáció\"-t, és \"sok sok\" netet elhasználsz.
Ha annyira akarsz spam protectiont, meg lokális chatet, írtam neked egy nagyon szép, és rövidkét:
 

local antiSpam = {}
function sendMessageToNearbyPlayers(player, dist, message)
local x,y,z = getElementPosition(player)
local myDim = getElementDimension(player)
local myInt = getElementInterior(player)
for k,v in ipairs(getElementsByType(\"player\", root, true)) do
if myDim == getElementDimension(v) and myInt == getElementInterior(v) then
   local distance = getDistanceBetweenPoints3D(x, y, z, getElementPosition(v))
   if distance <= dist then
      outputChatBox(getPlayerName(player) .. \"#FFFFFF mondja: \" .. message, v, 255, 255, 255, true)
   end
end
end
end
addEventHandler(\"onPlayerChat\", root, function(message, messageType)
if not antiSpam[source] or antiSpam[source] < getTickCount() then
antiSpam[source] = getTickCount() + 2000
sendMessageToNearbyPlayers(source, 20, message)
end
cancelEvent()
end)

 
Legközelebb inkább gondolkodj el, hogyan is működik egy kliens - szerver kommunikáció.
Peace.
 
[/quote]
\"szerveroldal használata nélkül adatokat közölni kliens-kliens közt\" - ezt a régi rendszerre írtam.
amúgy pedig nem fogja kétszer kiírni, tájékozódj jobban mielőtt hülyeséget írsz. a szerveroldali spam védelem pedig alapból fail, amit írtál  kód, az teljesen használhatatlan. lehet hogy 50 embernél nem fog nagyobb gondot okozni, viszont 200-300 embernél már meg fogod érezni.
 
[/quote]
Hát akkor tájékozódj, mivel meghívódik a kliens oldali say parancs, és az onPlayerChat is ^^.
Kliens:
 

addCommandHandler(\"say\", function(_, ...)
outputDebugString(\"K\")
end)

 
Szerver:
 

addEventHandler(\"onPlayerChat\", root, function(message, messageType)
outputDebugString(\"B\")
end)

 
A \"K\" és \"B\" ugyan úgy ki fogja írni debugba ^^

Nem elérhető Xenius

  • 668
    • Profil megtekintése
írd meg magadnak
« Válasz #9 Dátum: 2015. Augusztus 27. - 20:00:46 »
0
Idézetet írta: DrAkE date=1440698356\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"57497\" data-ipsquote-contentclass=\"forums_Topic
Hát akkor tájékozódj, mivel meghívódik a kliens oldali say parancs, és az onPlayerChat is ^^
 
Amit írtam legfelül, az 0.1% szerver-kliens oldali cpu-t használ 300 ember felett, gondolkozz el mielőtt brutál nagy f*szságot írsz.

Nem elérhető DrAkE

  • 2078
    • Profil megtekintése
írd meg magadnak
« Válasz #10 Dátum: 2015. Augusztus 27. - 20:02:57 »
0
Idézetet írta: Xenius date=1440698446\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"57497\" data-ipsquote-contentclass=\"forums_Topic


Hát akkor tájékozódj, mivel meghívódik a kliens oldali say parancs, és az onPlayerChat is ^^
 
Amit írtam legfelül, az 0.1% szerver-kliens oldali cpu-t használ 300 ember felett, gondolkozz el mielőtt brutál nagy f*szságot írsz.
 
[/quote]
Hidd el, nem Te vagy az egyetlen ember itt fórumon, aki ért programozáshoz. Én C++ - Lua közötti kommunikációval is foglalkoztam, illetve írtam is Lua plugint SA-MPra, szóval tudom, mi hogy működik, de azért köszi. Viszont szomorú, hogy még ilyen szar helyzetben is próbálsz \"okosnak\" tűnni :)
Illetve, ha nem hiszel nekem, nem muszáj. Én tudom az igazat, Te meg úgy se ismered be a hibádat. Csak az a gond, hogy így szar útra vezeted az embereket :\\
« Utoljára szerkesztve: 2015. Augusztus 27. - 20:05:51 írta DrAkE »

Nem elérhető Xenius

  • 668
    • Profil megtekintése
írd meg magadnak
« Válasz #11 Dátum: 2015. Augusztus 27. - 20:08:12 »
0
Idézetet írta: DrAkE date=1440698577\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"57497\" data-ipsquote-contentclass=\"forums_Topic
Hidd el, nem Te vagy az egyetlen ember itt fórumon, aki ért programozáshoz. Én C++ - Lua közötti kommunikációval is foglalkoztam, illetve írtam is Lua plugint SA-MPra, szóval tudom, mi hogy működik, de azért köszi. Viszont szomorú, hogy még ilyen szar helyzetben is próbálsz \"okosnak\" tűnni :)
 
Az is szomorú, hogy nem vagy képes ésszerűen gondolkozni, nem 40-50 emberre scriptelek mint a fórum többsége, az mta pedig mérföldekkel másképp működik mint egy sampos lua plugin, 3 éve foglalkozom az MTA-val ne akard megmagyarázni hogy mi hogyan működik. A magyar mentalitás is kibaszott vicces, segíteni próbálok a kezdőknek erre jönnek az olyan okoskodó hozzá nem értő emberek mint te.

írd meg magadnak
« Válasz #12 Dátum: 2015. Augusztus 27. - 20:11:15 »
0
Drake az hogy jó seggeket nyaltál és kaptál ide egy lokális moderátort nem jelenti azt hogy letettél annyit az asztalra mint Xenius, vagy hogy érsz bármit is ;)

Nem elérhető anGeL

  • Adminisztrátor
  • 2158
    • Profil megtekintése
írd meg magadnak
« Válasz #13 Dátum: 2015. Augusztus 27. - 20:13:05 »
+3
Ha Drake hozzá nem értő akkor én buzi vagyok  ???

Nem elérhető DrAkE

  • 2078
    • Profil megtekintése
írd meg magadnak
« Válasz #14 Dátum: 2015. Augusztus 27. - 20:14:25 »
0
Idézetet írta: Xenius date=1440698892\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"57497\" data-ipsquote-contentclass=\"forums_Topic


Hidd el, nem Te vagy az egyetlen ember itt fórumon, aki ért programozáshoz. Én C++ - Lua közötti kommunikációval is foglalkoztam, illetve írtam is Lua plugint SA-MPra, szóval tudom, mi hogy működik, de azért köszi. Viszont szomorú, hogy még ilyen szar helyzetben is próbálsz \"okosnak\" tűnni :)
 
Az is szomorú, hogy nem vagy képes ésszerűen gondolkozni, nem 40-50 emberre scriptelek mint a fórum többsége, az mta pedig mérföldekkel másképp működik mint egy sampos lua plugin, 3 éve foglalkozom az MTA-val ne akard megmagyarázni hogy mi hogyan működik. A magyar mentalitás is kibaszott vicces, segíteni próbálok a kezdőknek erre jönnek az olyan okoskodó hozzá nem értő emberek mint te.
 
[/quote]
Attól, hogy 3 éve programozol, nem jelenti azt, hogy ismered is a kliens - szerver kommunikációt, meg a Lua felépítését. A Te kódodat szimplán elkezdi spammelni egy emberke, akkor meghívódik a kliens oldali say parancs, triggerServerEventezel egyet, és elküldöd a szöveget. Csak az a gond, hogy közben az ALAP MTA SAY PARANCSA MÉG UGYAN ÚGY OTT VAN, ÉS MEGFOG HÍVÓDNI, ÉS ELFOGJA KÜLDENI AZ ÜZENETET. A szerver oldali scriptemben mellesleg semmi megterhelő nincs, mivel egy érték állítás van (2 secenként, vagy amikor lejárt a spam protection), meg egy érték vizsgálat :)
 

Drake az hogy jó seggeket nyaltál és kaptál ide egy lokális moderátort nem jelenti azt hogy letettél annyit az asztalra mint Xenius, vagy hogy érsz bármit is ;)
 
[/quote]
Egyrészt, több mindent tettem már alapból a közösségért, mint Te és Xenius tettetek, és valaha is fogtok. Szomorú azt is látni, hogy Xenius hívta a kis csicskáját, hogy \"2v1\"-be megpróbáljanak lenyomni (magyar mentalitás). Attól függetlenül még ugyan úgy szar Xenius megoldása, és le is írtam miért. Ha akarod megnézheted a munkáimat, C++-ban, PAWNban, na meg Luaban is ^^ Peace.
U.I.: https://github.com/drakeee/samp-plugin-lua/tree/master/lua_samp
(csak hogy okosodjatok is valamit Lua, meg C++ téren)
« Utoljára szerkesztve: 2015. Augusztus 27. - 20:17:44 írta DrAkE »

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal