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.
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.
szerveroldal használata nélkül adatokat közölni kliens-kliens közt
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)) doif 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) endendendendaddEventHandler(\"onPlayerChat\", root, function(message, messageType)if not antiSpam[source] or antiSpam[source] < getTickCount() thenantiSpam[source] = getTickCount() + 2000sendMessageToNearbyPlayers(source, 20, message)endcancelEvent()end)
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)) doif 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) endendendendaddEventHandler(\"onPlayerChat\", root, function(message, messageType)if not antiSpam[source] or antiSpam[source] < getTickCount() thenantiSpam[source] = getTickCount() + 2000sendMessageToNearbyPlayers(source, 20, message)endcancelEvent()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-\"
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)) doif 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) endendendendaddEventHandler(\"onPlayerChat\", root, function(message, messageType)if not antiSpam[source] or antiSpam[source] < getTickCount() thenantiSpam[source] = getTickCount() + 2000sendMessageToNearbyPlayers(source, 20, message)endcancelEvent()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 ^^
addCommandHandler(\"say\", function(_, ...)outputDebugString(\"K\")end)
addEventHandler(\"onPlayerChat\", root, function(message, messageType)outputDebugString(\"B\")end)
Hát akkor tájékozódj, mivel meghívódik a kliens oldali say parancs, és az onPlayerChat is ^^
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 :\\
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
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)
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)