Wazzap
Killing Elite
After pocketing the appropriate level we go to bp (protection zone).
After typing !reset automatically logs out of our character.
After logging into the form we have reset lvl, exp, and will appear in the same place where you were.
When you click the "Look" is displayed on the player resets the amount taken.
MySQL:
adding sources
player.h
search for:
search for:
Search for:
Search for:
TFS 0.3.6
luascript.cpp
Search for:
TFS 0.4_SVN
serch for
luascript.h
Search for :
talkactions.xml
ranks.lua
reset.lua
After typing !reset automatically logs out of our character.
After logging into the form we have reset lvl, exp, and will appear in the same place where you were.
When you click the "Look" is displayed on the player resets the amount taken.
MySQL:
SQLite:ALTER TABLE `players` ADD `resets` INT(11) NOT NULL DEFAULT "0";
ALTER TABLE players ADD resets INTEGER not null default 0
adding sources
player.h
search for:
below, add:uint32_t level;
Go to iologindata.cppuint32_t resets;
search for:
Change that:query << "SELECT `id`, `account_id`, `group_id`, `world_id`, `sex`, `vocation`, `experience`, `level`,"
Search for:query << "SELECT `id`, `account_id`, `group_id`, `world_id`, `sex`, `vocation`, `experience`, `level`, `resets`, "
below add:player->level = std::max((uint32_t)1, (uint32_t)result->getDataInt("level"));
Search for:player->resets = (uint32_t)result->getDataInt("resets");
Add belowquery << "`maglevel` = " << player->magLevel << ", ";
players.cppquery << "`resets` = " << player->resets << ", ";
Search for:
Change that:s << " (Level " << level << ")";
players.hs << " (Level " << level << ") [Reset " << resets << "]";
Search for:
Add below:void setPromotionLevel(uint32_t pLevel);
uint32_t getResets() { return resets;}
void setResets(int32_t amount) { resets += amount; if (resets < 0) {resets = 0;} }
TFS 0.3.6
luascript.cpp
Search for:
Add below:int32_t LuaScriptInterface::luaDoPlayerSetIdleTime(lua_State* L)
{
//doPlayerSetIdleTime(cid, amount)
int64_t amount = popNumber(L);
ScriptEnviroment* env = getEnv();
if(Player* player = env->getPlayerByUID(popNumber(L)))
{
player->setIdleTime(amount);
lua_pushboolean(L, true);
}
else
{
errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND));
lua_pushboolean(L, false);
}
return 1;
}
Search for:int32_t LuaScriptInterface::luaGetResets(lua_State* L)
{
//getResets(cid)
ScriptEnviroment* env = getEnv();
if(Player* player = env->getPlayerByUID(popNumber(L)))
lua_pushnumber(L, player->getResets());
else
{
errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND));
lua_pushboolean(L, false);
}
return 1;
}
int32_t LuaScriptInterface::luaSetResets(lua_State* L)
{
//setResets(cid, amount)
int32_t amount = popNumber(L);
ScriptEnviroment* env = getEnv();
if(Player* player = env->getPlayerByUID(popNumber(L)))
{
player->setResets(amount);
lua_pushboolean(L, true);
}
else
{
errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND));
lua_pushboolean(L, false);
}
return 1;
}
add below//doPlayerSetIdleTime(cid, amount)
lua_register(m_luaState, "doPlayerSetIdleTime", LuaInterface::luaDoPlayerSetIdleTime);
//getResets(cid)
lua_register(m_luaState, "getResets", LuaScriptInterface::luaGetResets);
//setResets(cid, amount)
lua_register(m_luaState, "setResets", LuaScriptInterface::luaSetResets);
TFS 0.4_SVN
serch for
Add below:int32_t LuaInterface::luaDoPlayerSetIdleTime(lua_State* L)
{
//doPlayerSetIdleTime(cid, amount)
int64_t amount = popNumber(L);
ScriptEnviroment* env = getEnv();
if(Player* player = env->getPlayerByUID(popNumber(L)))
{
player->setIdleTime(amount);
lua_pushboolean(L, true);
}
else
{
errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND));
lua_pushboolean(L, false);
}
return 1;
}
Search for:int32_t LuaInterface::luaGetResets(lua_State* L)
{
//getResets(cid)
ScriptEnviroment* env = getEnv();
if(Player* player = env->getPlayerByUID(popNumber(L)))
lua_pushnumber(L, player->getResets());
else
{
errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND));
lua_pushboolean(L, false);
}
return 1;
}
int32_t LuaInterface::luaSetResets(lua_State* L)
{
//setResets(cid, amount)
int32_t amount = popNumber(L);
ScriptEnviroment* env = getEnv();
if(Player* player = env->getPlayerByUID(popNumber(L)))
{
player->setResets(amount);
lua_pushboolean(L, true);
}
else
{
errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND));
lua_pushboolean(L, false);
}
return 1;
}
Add below://doPlayerSetIdleTime(cid, amount)
lua_register(m_luaState, "doPlayerSetIdleTime", LuaInterface::luaDoPlayerSetIdleTime);
//getResets(cid)
lua_register(m_luaState, "getResets", LuaInterface::luaGetResets);
//setResets(cid, amount)
lua_register(m_luaState, "setResets", LuaInterface::luaSetResets);
luascript.h
Search for :
Add below:static int32_t luaDoPlayerSetIdleTime(lua_State* L);
static int32_t luaGetResets(lua_State* L);
static int32_t luaSetResets(lua_State* L);
talkactions.xml
<talkaction words="!rank;/rank" event="script" value="ranks.lua"/>
<talkaction words="!reset;/reset" script="reset.lua"/>
ranks.lua
function getPlayerNameByGUID2(n)
local c = db.getResult("SELECT `name` FROM `players` WHERE `id` = "..n..";")
if c:getID() == -1 then
return "SQL_ERROR["..n.."]"
end
return c:getDataString("name")
end
function onSay(cid, words, param)
local max = 10
local letters_to_next = 20
local skills = {
['fist'] = 0,
['club'] = 1,
['sword'] = 2,
['axe'] = 3,
['distance'] = 4,
['shielding'] = 5,
['fishing'] = 6,
['dist'] = 4,
['shield'] = 5,
['fish'] = 6,
}
local name_now
local name = "Highscore for level\n"
local rkn = 0
local no_break = 0
param = string.lower(param)
dofile('config.lua')
if param == "" or param == "level" and ( param ~= "magic" and param == "ml") and skills[param] == nil then
name = name.."\n"
name = name.."Rank Level - Nome do Jogador\n"
local v = db.getResult("SELECT `name`, `level`, `experience` FROM `players` WHERE `group_id` <= 2 ORDER BY `experience` DESC LIMIT 0,"..(max)..";")
repeat
no_break = no_break +1
if v:getID() == -1 then
break
end
rkn = rkn+1
name_now, l = v:getDataString("name"), string.len(v:getDataString("name"))
space = ""
for i=1, letters_to_next-l do
space = space.." "
end
name = name..rkn..". "..v:getDataInt("level") .." - "..name_now..space.." ".."\n"
if no_break >= 20 then
break
end
until v:next() == false
elseif param == "magic" or param == "ml" then
name = name.."\n"
name = name.."Rank Magic - Nome do Jogador\n"
local v = db.getResult("SELECT `name`, `level`, `maglevel` FROM `players` WHERE `group_id` <= 2 ORDER BY `maglevel` DESC LIMIT 0,"..(max)..";")
repeat
if v:getID() == -1 then
break
end
rkn = rkn+1
name_now, l = v:getDataString("name"), string.len(v:getDataString("name"))
space = ""
for i=1, letters_to_next-l do
space = space.." "
end
name = name..rkn..". "..v:getDataInt("maglevel").." - "..name_now..space.." ".." ".."".."\n"
until v:next() == false
elseif param == "reset" or param == "resets" then
name = name.."Rank Reset - Nome do Jogador\n"
local v = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = 1020 ORDER BY cast(value as INTEGER) DESC;")
local kk = 0
repeat
if kk == max or v:getID() == -1 then
break
end
kk = kk+1
name_now, l = getPlayerNameByGUID2(v:getDataInt("player_id")), string.len(getPlayerNameByGUID2(v:getDataInt("player_id")))
space = ""
for i=1, letters_to_next-l do
space = space.." "
end
if name_now == nil then
name_now = 'sql error['..v:getDataInt("player_id")..']'
end
name = name..kk..". "..v:getDataInt("value").." - "..name_now..space.." ".." ".."".."\n"
until v:next() == false
elseif skills[param] ~= nil then
name = name.."\n"
name = name.."Rank "..param.." fighting - Nome do Jogador\n"
local v = db.getResult("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = "..skills[param].." ORDER BY `value` DESC;")
local kk = 0
repeat
if kk == max or v:getID() == -1 then
break
end
kk = kk+1
name_now, l = getPlayerNameByGUID2(v:getDataInt("player_id")), string.len(getPlayerNameByGUID2(v:getDataInt("player_id")))
space = ""
for i=1, letters_to_next-l do
space = space.." "
end
if name_now == nil then
name_now = 'sql error['..v:getDataInt("player_id")..']'
end
name = name..kk..". "..v:getDataInt("value").." - "..name_now..space.." \n"
until v:next() == false
end
if name ~= "Highscore\n" then
doPlayerPopupFYI(cid, name)
end
return true
end
reset.lua
config = {
RemainingLvl = 8,
exp = 4200,
redskull = true,
battle = true,
pz = true
}
stages = {
{resets = 299, level =100}
}
function onSay(cid, words, param)
local pid = getPlayerGUID(cid)
if(config.redskull) and (getCreatureSkullType(cid) == 4) then
return doPlayerSendTextMessage(cid, 22, "Tylko gracz bez czaszki moze zresetowac.")
end
if(config.pz) and (not getTilePzInfo(getCreaturePosition(cid))) then
return doPlayerSendTextMessage(cid, 22, "Musisz byc w strefie ochrony aby sie zresetowac .")
end
if(config.battle) and (getCreatureCondition(cid, CONDITION_INFIGHT)) then
return doPlayerSendTextMessage(cid, 22, "nie mozesz walczyc by siezresetowac .")
end
for _, stage in ipairs(stages) do
if getResets(cid) <= stage.resets then
if getPlayerLevel(cid) >= stage.level then
setResets(cid, 1)
doRemoveCreature(cid, true)
db.executeQuery("UPDATE `players` SET `level` = "..config.RemainingLvl..", `experience` = "..config.exp.." WHERE `id` = "..pid)
else
doPlayerSendCancel(cid, "musisz miec poziom "..stage.level.." by sie zresetowac.")
doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
end
end
end
return true
end