• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!
  • 2026 staff recruitment is open! Check it out and consider applying!

Exhausted na komendy graczy

Witam,
Wie ktoś jak się do tego zabrać?
Pozdr. :)

Easy, do każdego skryptu dodajesz sobie Exhausted, bdp.

Code:
local storage = 99999999 # oczywiście do każdej komendy inne storage, chyba że chcesz że obojętnie jaka komende użyjesz to musisz czekać xx czasu żeby użyć inną.
local czas = 10 # w sekundach

               if exhaustion.get(cid, storage) == FALSE then
               exhaustion.set(cid, storage, czas)
               else
               doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Musisz czekac " .. exhaustion.get(cid, storage) .. " sekund.") 
        return true
end

Np. coś takiego.
 
Last edited:
Albo zrobić to odgórnie w c++, chociaż lepiej chyba było by dodać exhausted do tych najbardziej zasobożernych komend typu !deathlist która za każdym razem pobiera dane z bazy, i tym sposobem też można obciążyć bazę, chociaż w ten sam sposób można się ciągle relogować i wyjdzie na to samo więc właściwie ten exhausted nie wiele da jak ktoś będzie na prawdę chciał uziemić serwer, ale lepsza jakakolwiek próba ochrony niż jej brak. Zatem do dzieła.

Skracając trochę wersję zapostowaną przez @Sammi'ego, sugeruję dodać taką funkcje w talkactions/lib/talkactions.lua aby zaoszczędzić trochę miejsca na dysku (to nie główny powód przyświecający tej idei, ale po co kopiować więcej tekstu jeśli można mniej? (to też nie powód ale za to jest ładniej i przejrzyściej!))
Code:
function checkExhausted(cid, storage, seconds)
	local v = exhaustion.get(cid, storage)
	if(not v) then
		exhaustion.set(cid, storage, seconds)
	else
		doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Please wait " .. v .. " seconds before trying this command again.")
		return false
	end

	return true
end

A potem tylko w komendach na które chcesz ustawić exhausted: (na samym początku zaraz pod funkcją onSay)
Code:
if(not checkExhausted(cid, 666, 10)) then
	return false
end

666 to storage id, dla każdej komendy musi być unikalne, chyba że chcesz żeby dwie komendy na wzajem blokowały użycie samych siebie w danym przedziale czasowym.
Można by nawet zamiast kombinowania storage id (w tym przypadku 666) użyć po prostu nazwy komendy, np. "online" ale działa to tylko w nowszych TFS gdzie została dodana możliwość ustawiania storage key jako ciągu tekstowego.
 
Back
Top