Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Boa noite amigos, queria um script pra mostrar o número de resets quando o player da o look.
Segue meu script de reset, utilizo mysql para gerencia o db.
Versão do ot: 8.6 forgotten server.
 

--[[Script made 100% by Nogard and Night Wolf.
   You can feel free to edit anything you want, but don't remove the credits]] 


local config = {
minlevel = 350, --- level inical para resetar
price = 100000, --- preço inicial para resetar
newlevel = 8, --- level após reset
priceByReset = 100000, --- preço acrescentado por reset
percent = 100, ---- porcentagem da vida/mana que você terá ao resetar (em relação à sua antiga vida total)
maxresets = 1000,
levelbyreset = 5 --- quanto de level vai precisar a mais no próximo reset
}
--- end config

function getResets(uid)
resets = getPlayerStorageValue(uid, 378378)
  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


 function addReset(cid)
	if(npcHandler:isFocused(cid)) then
		npcHandler:releaseFocus(cid)
	end		
	talkState[talkUser] = 0
	resets = getResets(cid)
	setPlayerStorageValue(cid, 378378, resets+1) 
	doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
	local hp = getCreatureMaxHealth(cid)
	local resethp = hp*(config.percent/100)
	setCreatureMaxHealth(cid, resethp)
	local differencehp = (hp - resethp)
	doCreatureAddHealth(cid, -differencehp)
	local mana = getCreatureMaxMana(cid)
	local resetmana = mana*(config.percent/100)
	setCreatureMaxMana(cid, resetmana)
	local differencemana = (mana - resetmana)
	doCreatureAddMana(cid, -differencemana)
    doRemoveCreature(cid)		
	local description = resets+1
    db.query("UPDATE `players` SET `description` = ' [Reset: "..description.."] ' WHERE `players`.`id`= ".. playerid .."")
	db.query("UPDATE `players` SET `level`="..config.newlevel..",`experience`= 0 WHERE `players`.`id`= ".. playerid .."")
    return true
end


local newPrice = config.price + (getResets(cid) * config.priceByReset)
local newminlevel = config.minlevel + (getResets(cid) * config.levelbyreset)

if msgcontains(msg, 'reset') then
	if getResets(cid) < config.maxresets then
		selfSay('Voce quer resetar ? vai custar '..newPrice..' gp\'s!', cid)
		talkState[talkUser] = 1
	else
		selfSay('You already reached the maximum reset level!', cid)
	end
elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
	if getPlayerMoney(cid) < newPrice then
		selfSay('É necessário ter no mínimo'..newPrice..' gp\'s pra resetar!', cid)
	elseif getPlayerLevel(cid) < newminlevel then
		selfSay('O level minimo pra resetar é '..newminlevel..'!', cid)
	else
		doPlayerRemoveMoney(cid,newPrice)
		playerid = getPlayerGUID(cid)
		addEvent(function()
			if isPlayer(cid) then
				addReset(cid)
			end
		end, 3000)
		local number = getResets(cid)+1
		local msg ="---[Reset: "..number.."]-- Voce resetou e será desconectado em 3 segundos."
		doPlayerPopupFYI(cid, msg) 
		talkState[talkUser] = 0
		npcHandler:releaseFocus(cid)
	end
talkState[talkUser] = 0
elseif(msgcontains(msg, 'no')) and isInArray({1}, talkState[talkUser]) == TRUE then
	talkState[talkUser] = 0
	npcHandler:releaseFocus(cid)
	selfSay('Ok.', cid)
elseif msgcontains(msg, 'quantidade') then
	selfSay('Voce tem um total de '..getResets(cid)..' reset(s).', cid)
	talkState[talkUser] = 0
end

return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Editado por Hunterii (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

@Hunterii o sistema já vem com uma função que retorna a quantidade de resets que o player tem, basta aplicar a função no look.

 

Você tem algum script de look em seu server ? Posta em spolier aqui para que eu faça a alteração! 

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites
6 horas atrás, KotZletY disse:

@Hunterii o sistema já vem com uma função que retorna a quantidade de resets que o player tem, basta aplicar a função no look.

 

Você tem algum script de look em seu server ? Posta em spolier aqui para que eu faça a alteração! 

Tenho sim @KotZletY, esse é o sistema de look do ot, nele tem o sistema de frags que quando você da o look no player, mostra o número de frags.
 

function getPlayerFrags(cid)
	local time = os.time()
	local times = {today = (time - 86400), week = (time - (7 * 86400))}

	local contents, result = {day = {}, week = {}, month = {}}, db.getResult("SELECT `pd`.`date`, `pd`.`level`, `p`.`name` FROM `player_killers` pk LEFT JOIN `killers` k ON `pk`.`kill_id` = `k`.`id` LEFT JOIN `player_deaths` pd ON `k`.`death_id` = `pd`.`id` LEFT JOIN `players` p ON `pd`.`player_id` = `p`.`id` WHERE `pk`.`player_id` = " .. getPlayerGUID(cid) .. " AND `k`.`unjustified` = 1 AND `pd`.`date` >= " .. (time - (30 * 86400)) .. " ORDER BY `pd`.`date` DESC")
	if(result:getID() ~= -1) then
		repeat
			local content = {date = result:getDataInt("date")}
			if(content.date > times.today) then
				table.insert(contents.day, content)
			elseif(content.date > times.week) then
				table.insert(contents.week, content)
			else
				table.insert(contents.month, content)
			end
		until not result:next()
		result:free()
	end

	local size = {
		day = table.maxn(contents.day),
		week = table.maxn(contents.week),
		month = table.maxn(contents.month)
	}
	return size.day + size.week + size.month
end

function onLogin(cid)
	registerCreatureEvent(cid, "fraglook")
	return true
end

function onLook(cid, thing, position, lookDistance)
	if isPlayer(thing.uid) and thing.uid ~= cid then
		doPlayerSetSpecialDescription(thing.uid,' [Frags: '..getPlayerFrags(thing.uid)..']')
		return true
	elseif thing.uid == cid then
		doPlayerSetSpecialDescription(cid,'\n[Frags: '..getPlayerFrags(cid)..']')
		local string = 'You see yourself. \nHealth: ['.. getCreatureHealth(cid) ..' / '.. getCreatureMaxHealth(cid) ..']\n Mana: ['.. getCreatureMana(cid) ..' / '.. getCreatureMaxMana(cid) ..'].\n'
		if getPlayerFlagValue(cid, PLAYERFLAG_SHOWGROUPINSTEADOFVOCATION) then
			string = string..' You are '.. getPlayerGroupName(cid) ..'.'
		elseif getPlayerVocation(cid) ~= 0 then
			string = string..' You are '.. getPlayerVocationName(cid) ..'.'
		else
			string = string..' You have no vocation.'
		end
		string = string..getPlayerSpecialDescription(cid)..''

		if getPlayerNameByGUID(getPlayerPartner(cid), false, false) ~= nil then
			string = string..' You are '.. (getPlayerSex(cid) == 0 and 'wife' or 'husband') ..' of '.. getPlayerNameByGUID(getPlayerPartner(cid)) ..'.'
		end

		if getPlayerGuildId(cid) > 0 then
			string = string..' You are ' .. (getPlayerGuildRank(cid) == '' and 'a member' or getPlayerGuildRank(cid)) ..' of the '.. getPlayerGuildName(cid)
			string = getPlayerGuildNick(cid) ~= '' and string..' ('.. getPlayerGuildNick(cid) ..').' or string..'.'
		end

		if getPlayerFlagValue(cid, PLAYERCUSTOMFLAG_CANSEECREATUREDETAILS) then
			string = string..'\nHealth: ['.. getCreatureHealth(cid) ..' / '.. getCreatureMaxHealth(cid) ..']\n Mana: ['.. getCreatureMana(cid) ..' / '.. getCreatureMaxMana(cid) ..'].'
			string = string..'\nIP: '.. doConvertIntegerToIp(getPlayerIp(cid)) ..'.'
		end

		if getPlayerFlagValue(cid, PLAYERCUSTOMFLAG_CANSEEPOSITION) then
			string = string..'\nPosition: [X:'.. position.x..'] [Y:'.. position.y..'] [Z:'.. position.z..'].'
		end
		doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, string)  
		return false
	end
	return true
end

 

Link para o post
Compartilhar em outros sites

Olá bom dia!

Eu sou completamente novo nesse mundo dos OTserv, sou Webmaster e tenho experiência com MySQL e PHP, CSS e um pouco de tudo de Web, nesse caso creio que não terei grandes dificuldades em geral, porém tenho algumas dúvidas.

 

Coloquei ontem um OTServ 8.60 rodar no meu localhost, estou fazendo o mapa no RME e vi essa postagem referente a script de Reset com Look funcional e me interessei em implementar isto no OTServ Baiak a qual fiz o Download.

 

Vou citar algumas dúvidas minhas e se possível responder ficaria muito grato!

 

  1. Onde colocar novos scripts? não tenho conhecimento se OTServ's seguem padrões de pastas, o meu é o BestBaiak, eu creio que seja a pasta "BestBaiak\mods\scripts", é esta pasta mesmo? 
  2. O Script acima (----[[Script made 100% by Nogard and Night Wolf...) teria que ser adicionado dentro de um arquivo .lua com algum nome específico ou qualquer nome de arquivo executará o script normalmente?
  3. Onde encontro o arquivo de script de Look do meu OTServer? creio que já existe um também pois no OT também mostra os Frags dos Players quando dá look.

Obrigado pela atenção!

 

Link para o post
Compartilhar em outros sites

Bom dia @bandzenho, sobre as suas dúvidas, vou tentar responde-lo de forma mais exata possível.
1 - seuot/data é onde estão todos os scripts do seu OT, existem vários tipos e cada um você vai colocar na pasta correspondente. O nome do script vai variar de como o seu .lua vai chamar ele.
2 - Sim, ele tem que ser adicionando em um script .lua e funciona em conjunto com um script de NPC que executa a ação de dar o reset no player.
3 - Provavelmente vai estar na pasta seuot/data/creaturescipts/scripts ai é só procurar.

Editado por Hunterii (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Muito obrigado @Hunterii!!!

Pesquisando mais afundo no fórum encontrei o sistema de Reset detalhado do xWhite e fiz a inserção dos arquivos reseter.lua e reseter.xml nas pastas corretas, o meu arquivo de look(fraglook.lua) é idêntico a sua versão, desta forma, irei aproveitar e ficar no aguardo da alteração do @KotZletY ao código do arquivo para que eu aplique a alteração ao meu fraglook.lua também.

Obrigado novamente!

Link para o post
Compartilhar em outros sites

@bandzenho não use o tópico dos outros para pedi ajuda, crie um tópico na área de suporte geral caso tenha mais duvidas como essa, mas não peça ajuda em outros tópicos em assuntos não relacionado com o tópico, é contra as regras. 

 

Seja bem vindo ao fórum! xD

 

@Tópico: Tenho compromisso agora, ao retorna faço a alteração!!

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites

Faça um backup do seu arquivo, troque a tag "doplayersetspecialdescription" por essa e teste!

 

doPlayerSetSpecialDescription(cid,'\n[Frags: '..getPlayerFrags(cid)..'],\n[Resets: '..math.max(0,(tonumber(getCreatureStorage(thing.uid,378378)) or 0))..']')

 

 

Editado por XandimH
Desculpa, fiz uma confusão maneira aqui =/ (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por Jaurez
      .
    • Por Cat
      Em alguns casos, o tibia 8.60 comum não abre de jeito nenhum no map editor, mesmo desmarcando check file signatures e configurando o path corretamente.
       
      Este é o client 8.60 adaptado para o Remere's Map Editor. Resolvi postar já que ele foi removido do site oficial do RME. (ficou apenas a versão para linux lá)
      Se estiver tendo problemas para abrir a versão 8.60, tente utilizar este.
                                                                                                                     
      Baixar o Tibia Client 8.60 que funciona no Remere’s Map Editor
      Essa versão do Tibia 8.60 client resolve o erro unsupported client version ou Could not locate tibia.dat and/or tibia.spr, please navigate to your tibia 8.60 installation folder.
       
      Downloads
      https://tibiaking.com/applications/core/interface/file/attachment.php?id=47333

      Scan: https://www.virustotal.com/gui/file/333e172ac49ba2028db9eb5889994509e7d2de28ebccfa428c04e86defbe15cc
       
    • Por danilo belato
      Fala Galera To Com um problema aki 
       
      quero exporta umas sprites de um server para colocar em outro 
       
      eu clico na sprites ai aparece tds a forma delas do lado de la >>
       
      ai eu clico nela e ponho a opiçao de export mais quando salvo a sprite ela n abri 
       
      aparece isso quando tento vê-la 
       
      visualização não disponível ( no formatos png e bitmap)
       
      Agora no formato idc fala que o paint n pode ler 
       
      me ajudem ae...
    • Por Vitor Bicaleto
      Galera to com o script do addon doll aqui, quando eu digito apenas "!addon" ele aparece assim: Digite novamente, algo está errado!"
      quando digito por exemplo: "!addon citizen" ele não funciona e não da nenhum erro
       
      mesma coisa acontece com o mount doll.. 
    • Por Ayron5
      Substitui uma stone no serve, deu tudo certo fora  esse  erro ajudem  Valendo  Rep+  Grato  

      Erro: data/actions/scripts/boost.lua:557: table index is nil
       [Warning - Event::loadScript] Cannot load script (data/actions/scripts/boost.lua)

      Script:
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo