And why aren't you using query cache?
I think its for best guild?
And why aren't you using query cache?
Query cache isn't same as cache for website scripts, the 2nd thing is more efficient for top guilds.I think its for best guild?
No no ladnie ale po co ? ci co ogarniają mają już to zabezpieczone a ci nie ogary powinni nie brać się za otsa :_) . Jest jeszcze kilka innych bugów np : Debugowanie graczy (gracz który chce zdebugować musi posiadać szybki internet i szybko sie obracać za pomocą bota , większość graczy na ekranie dostaje debuga , u mnie zabezpieczyłem to , gdy gracz się bardzo szybko obraca przekraczając granice zwykłego obracania po prostu odejmuje mu hp aż na bocie pada ) także można zrobić mass kicki a nawet crasha za pomocą bugu z drzwiami lvl . Przechodząc przez drzwi lvl gracz staje na drzwiach i je zasypuje botem oraz bardzo szybko się kręci , u mnie zrobiłem tak że na lvl drzwiach nie da się stanąć tylko teleportuje za drzwi
function onDirection(cid, old, current)
local storage = 123456
local triesStorage = 123457
local set = 0
if (exhaustion.check(cid, storage)) then
local tries = getCreatureStorage(cid, triesStorage)
if (tries >= 5) then
doCreatureAddHealth(cid, -(getCreatureMaxHealth(cid) * 0.25))
else
set = tries + 1
end
end
doCreatureSetStorage(cid, triesStorage, set)
exhaustion.make(cid, storage, 1)
return true
end
Prosty, nietestowany skrypt, zakładam że wpis do creaturescripts.xml i login.lua każdy umie dodać. Jeżeli ktoś wykonuje więcej niż 5 obrotów na sekundę, to po tych pięciu obrotach straci 25% całego hp. Po odebraniu hp obroty są naliczane od nowa:
Lua:function onDirection(cid, old, current) local storage = 123456 local triesStorage = 123457 local set = 0 if (exhaustion.check(cid, storage)) then local tries = getCreatureStorage(cid, triesStorage) if (tries >= 5) then doCreatureAddHealth(cid, -(getCreatureMaxHealth(cid) * 0.25)) else set = tries + 1 end end doCreatureSetStorage(cid, triesStorage, set) exhaustion.make(cid, storage, 1) return true end
local exhaust = {
storage = 2152,
seconds = 1
}
function onDirection(cid, old, current)
if isPlayer(cid) then
if current ~= old and exhaustion.check(cid, exhaust.storage) then
doPlayerSendCancel(cid, 'Don\'t saturate the server making flood.')
return false
else
exhaustion.set(cid, exhaust.storage, exhaust.seconds)
end
end
return true
end
Uczeń sasira, który przewyższył mistrza!Well, wszystko fajnie, tyle że dlaczego by nie rozwalać OTS od strony gracza? Kilka dni temu napisałem na forum pomysł z autoupdate klienta, gdzie przy updacie klient bez problemu mógłby zablokować dane ip w hosts a co za tym idzie mozna wykrzaczyć większość serwerów. Nie mówie już o innych rzeczach które można zrobić z takim bajerem ale są one naprawde potężne .
Kod do takiego update mam już w połowie skończony, jeżeli znajde czas i pieniądze to dokończę go i prowdopodobnie opublikuje (zrobie taki dobry uczynek dla custom serwerów).
Co do całej walki, jeżeli klient flashowy będizie niemożliwy do shackowania w co szczerze watpie, era OTS skończy się a w raz z nią cała walka.