Ir para conteúdo
  • 0

Rank De Reset E Look Com Reset E Vip


bobmateus1

Pergunta

Olá,

Gostaria de pedir um rank com reset e um look com reset

System:

 

-- config

minlevel = 500000 -- level para resetar

price = 500000 -- dinheiro para pagar ao resetar

newlevel = 30 -- level após reset

newexp = 368300 -- nova experiencia após reset

-- end config

 

function addReset(cid)

resets = getResets(cid)

setPlayerStorageValue(cid,36874,resets+1)

return true

end

 

function getResets(cid)

resets = getPlayerStorageValue(cid,36874)

if resets < 0 then

resets = 0

end

return resets

end

 

 

local keywordHandler = KeywordHandler:new()

local npcHandler = NpcHandler:new(keywordHandler)

NpcSystem.parseParameters(npcHandler)

local talkState = {}

 

function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end

function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end

function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end

function onThink() npcHandler:onThink() end

 

function creatureSayCallback(cid, type, msg)

if(not npcHandler:isFocused(cid)) then

return false

end

local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid

 

if msgcontains(msg, 'reset') then

selfSay('Do you want to reset your character level? Your character will be logged off if you confirm. You must pay '..price..' gold coins to reset.', cid)

talkState[talkUser] = 1

elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then

if getPlayerMoney(cid) < price then

selfSay('You must pay '..price..' gold coins to reset.', cid)

elseif getPlayerLevel(cid) < minlevel then

selfSay('You must be at least level '.. minlevel ..' to reset.', cid)

else

doPlayerRemoveMoney(cid,price)

addReset(cid)

playerid = getPlayerGUID(cid)

doRemoveCreature(cid)

db.executeQuery("UPDATE `players` SET `level`="..newlevel..",`experience`="..newexp.." WHERE `players`.`id`= ".. playerid .."")

end

talkState[talkUser] = 0

elseif(msgcontains(msg, 'no') and isInArray({1}, talkState[talkUser]) == TRUE) then

talkState[talkUser] = 0

selfSay('Ok.', cid)

elseif msgcontains(msg, 'resets') then

selfSay('You have '..getResets(cid)..' reset(s).', cid)

end

 

return true

end

 

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new()

 

Uso sqlite, versão 8.5.

Ps: Se for necessario coloco outro sistema :)

 

 

PEDIDO 2

Gostaria de por um vip que a pessoa so por ir na area vip se ela tiver x item, ou se ela estiver invitada na casa.

Quem conseguir fazer qualquer um desses 2 vip, agradeceria muito, pois o povo do meu ot torra a paciencia toda agora querendo vip.

 

 

Obrigado ;)

Editado por Mateussss
Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Sobre o rank, da uma olhada nesse tópico:

http://www.xtibia.com/forum/topic/130791-rank-reset/

 

Sobre o look:

local resets = getResets(cid)

doRemoveCreature(cid)

db.executeQuery("UPDATE `players` SET `level`="..newlevel..",`experience`="..newexp.." WHERE `players`.`id`= ".. playerid .."")

db.executeQuery("UPDATE `players` SET `description` = ' [Resets: "..resets.."]' WHERE `players`.`id` = "..playerid)

O que está em negrito é oq ja tem no seu script.

 

Já o de vip, tem varios sistemas ai, mas pelo que você disse nem parece uma vip, e sim um item que tem que estar equipado.

Link para o comentário
Compartilhar em outros sites

  • 0

Kydrai

tentei colocar isso, mas não funcionou, ele não aparece nenhum erro, simplesmente nao funciona.

E eu ja tinha tentado colocar esse rank, mas o rank não aparece nada na parte de RESET.

PS: Ja tentei colocar aquilo que vc pois no topico e trocar o INTEGER pelo SIGN

 

 

Eu ja tinha achado outro sistema vip, mas o comando /addvip não funciona, se vc tiver um que funciona ae, ficaria agradecido se postasse.

Vlw pela ajuda ae, abraço.

Link para o comentário
Compartilhar em outros sites

  • 0

Mateusss Tenta Trocar Teu Script Por Esse ja Vem com o Look Reset!

 

-- script by Marcryzius Devil. --

function onSay(cid, words, param)

config = {

RemainingLvl=8, -- level que ficará depois de ser resetado.

exper=4200, -- experiencia que ficará depois de ser resetado.

pid=getPlayerGUID(cid), -- não mecha

skull="yes", -- players com white skull podem resetar? ("yes" or "no").

redskull="yes", -- players com red skull podem resetar? ("yes" or "no").

prot="yes", -- players precisam estar em protection zone pra resetar? ("yes" or "no").

bat="yes" --players precisam estar sem fight pra resetarem? ("yes" or "no").

}

 

function getResets(cid)

reset = getPlayerStorageValue(cid,1020)

if reset < 0 then

reset = 0

end

return reset

end

if(config.skull == "no") and (getCreatureSkullType(cid) == 3) then

doPlayerSendTextMessage(cid,22,"Apenas players sem white skull podem resetar.")

return TRUE

end

if(config.redskull == "no") and (getCreatureSkullType(cid) == 4) then

doPlayerSendTextMessage(cid,22,"Apenas player sem red skull podem resetar.")

return TRUE

end

if(config.prot == "yes") and (getTilePzInfo(getCreaturePosition(cid)) == FALSE) then

doPlayerSendTextMessage(cid,22,"Você precisa estar em protection zone pra poder resetar.")

return TRUE

end

if(config.bat == "no") and (getCreatureCondition(cid, CONDITION_INFIGHT) == FALSE) then

doPlayerSendTextMessage(cid,22,"Você precisa estar sem battle pra poder resetar.")

return TRUE

end

if getPlayerStorageValue(cid,1020) > 5 then

if getPlayerLevel(cid) >= 380 then

setPlayerStorageValue(cid,1020,getResets(cid)+1)

doPlayerSetNameDescription(cid, " [Reset "..getResets(cid)+(1).."]")

doPlayerPopupFYI(cid,"You now was reset, you have "..getResets(cid)+(1).." reset\'s.")

doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))

doRemoveCreature(cid)

db.executeQuery("UPDATE `players` SET `level` = "..config.RemainingLvl..", `experience` = "..config.exper.." WHERE `id` = "..config.pid)

db.executeQuery("UPDATE `players` SET `reset` = `reset` + 1 WHERE `id` = "..config.pid)

else

doPlayerSendCancel(cid, "Apos o quinto reset é necessario level 380 para resetar.")

doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)

end

elseif getPlayerLevel(cid) >= 350 then

setPlayerStorageValue(cid,1020,getResets(cid)+1)

doPlayerSetNameDescription(cid, " Have a "..getResets(cid)+(1).." reset\'s.")

doPlayerPopupFYI(cid,"You now was reset, you have "..getResets(cid)+(1).." reset\'s.")

doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))

doRemoveCreature(cid)

db.executeQuery("UPDATE `players` SET `level` = "..config.RemainingLvl..", `experience` = "..config.exper.." WHERE `id` = "..config.pid)

db.executeQuery("UPDATE `players` SET `reset` = `reset` + 1 WHERE `id` = "..config.pid)

else

doPlayerSendCancel(cid, "You need to have level 350 or more you may be reset.")

doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)

end

return TRUE

end

 

Agora vai Em Talkactions né tem duas pasta Ranks ou Rank e Ranking bota isso dentro delas

 

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.."\n"

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

 

Agora Salva e Testa se Der Algo de Errado Reporta!

Link para o comentário
Compartilhar em outros sites

  • 0
Gostaria de por um vip que a pessoa so por ir na area vip se ela tiver x item,

 

faz uma door que só passe se ele tiver esse item.

 

itemdoor.lua

function onUse(cid, item, frompos, item2, topos)

item = getPlayerItemCount(cid,1954)

if item == 1 or item > 1 then

 

playerpos = getPlayerPosition(cid)

 

doorpos = {x = frompos.x, y = frompos.y, z = frompos.z, stackpos = 253}

 

if playerpos.y == doorpos.y + 1 and playerpos.x == doorpos.x then

 

doMoveCreature(cid, 0)

 

elseif playerpos.x == doorpos.x - 1 and playerpos.y == doorpos.y then

 

doMoveCreature(cid, 1)

 

elseif playerpos.y == doorpos.y - 1 and playerpos.x == doorpos.x then

 

doMoveCreature(cid, 2)

 

elseif playerpos.y == doorpos.y and playerpos.x == doorpos.x + 1 then

 

doMoveCreature(cid, 3)

 

elseif playerpos.x == doorpos.x + 1 and playerpos.y == doorpos.y - 1 then

 

doMoveCreature(cid, 4)

 

elseif playerpos.x == doorpos.x - 1 and playerpos.y == doorpos.y - 1 then

 

doMoveCreature(cid, 5)

 

elseif playerpos.x == doorpos.x + 1 and playerpos.y == doorpos.y + 1 then

 

doMoveCreature(cid, 6)

 

elseif playerpos.x == doorpos.x - 1 and playerpos.y == doorpos.y + 1 then

 

doMoveCreature(cid, 7)

 

end

 

doPlayerSendTextMessage(cid,22,"Bem vindo a area vip.")

 

else

doPlayerSendTextMessage(cid,22,"você nao tem o item vip para passar.")

end

 

return 1

 

end

 

vermelho: ID do item

 

actions.xml

<action actionid="1324" script="itemdoor.lua"/>

Editado por Vodkart
Link para o comentário
Compartilhar em outros sites

  • 0

Vodkart

Vlwww :D

Funcionou, você não sabe como facilitou minha vida agoraa, vlww :)

 

DevilMoon

Vlww, ambos funcionaram :)

Muito obrigado.

Editado por Mateussss
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...