Autor: darkhaos klik

Licencja: brak

Skrypt do serwerów war lub pvp enfo. Gdy gracz o daje się zabijać graczowi l (gdy gracz o zabije go x razy wciagu x sekund zostaje on zabity przez skrypt.

Część SQL

Dodajemy do naszej bazy :

ALTER TABLE players ADD lastKill int(11) NOT NULL DEFAULT 0;
ALTER TABLE players ADD lastKillTime int(11) NOT NULL DEFAULT 0;  

Część LUA

Wchodzimy do /data/creaturescripts/scripts/ tworzymy tam plik anticheat.lua a jego zawartość to:

anticheat.lua
     function onKill(cid, target, lastHit)
 
local timeWithinKill = 300 --in seconds
local killsLimit = 3 --limit to die
local lastKill, lastKillTime = nil, nil
local storage = 65535 --storage to check if player has killed another player 'killsLimit' times
 
        if(isPlayer(target) == false) or (isMonster(cid) == true) then
                return true
        end
 
        query = db.getResult("select lastKill, lastKillTime from players where id = " .. getPlayerGUID(cid) .. ";")
        if(query:getID() ~= -1) then
                lastKill, lastKillTime = query:getDataInt("lastKill"), query:getDataInt("lastKillTime")
                if(lastKill == getPlayerGUID(target)) then
                        if(os.clock() - lastKillTime) < timeWithinKill then
                                if(getPlayerStorageValue(cid, storage) < 0) then
                                        doPlayerSetStorageValue(cid, storage, 0)
                                end
                                doPlayerSetStorageValue(cid, storage, getPlayerStorageValue(cid, storage) + 1)
                                if(getPlayerStorageValue(cid, storage) >= killsLimit) then
                                        doCreatureAddHealth(cid, -getCreatureHealth(cid))
                                end
                        else
                                doPlayerSetStorageValue(cid, storage, 0)
                        end
                end
                db.executeQuery("update players set lastKill = " .. getPlayerGUID(target) .. ", lastKillTime = " .. os.clock() .. " where id = " .. getPlayerGUID(cid) .. ";")
        else
                return LUA_ERROR
        end
        return true
end 

Następnie dodajemy do login.lua linijkę:

registerCreatureEvent(cid, "AntiCheat")

Oraz do /data/creaturescripts/creaturescripts.xml wklejamy linijkę:

    <event type="kill" name="AntiCheat" event="script" value="anticheat.lua"/>  

Gotowe!

otspub/pvp_enfo_skrypt_by_darkhaos.txt · Last modified: 2010/04/28 19:29 by kielb
 
Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki
 otosowy pasek