Jump to content

Recommended Posts

Eu usava um sistema parecido com esse no 7.6...

Ta muito foda! Parabéns!


# Regras Gerais - TibiaKing.com #
Contato: augusto@tibiaking.com
Não respondo dúvidas via MP.


1C2tu.png4Tlqo.png1C2tu.png


 

Share this post


Link to post
Share on other sites

Fiz essa talk pro sistema a um tempo, não sabia como funcionava o getPlayerGUID, arrumei o script:


function onSay(cid, words, param)

	local pid = getPlayerGUID(cid)

	config = {

		RemainingLvl = 8,

		exp = 4200,

		level = 350,

		redskull = true,

		battle = true,

		pz = true

	}

	if(t.redskull == true) and (getCreatureSkullType(cid) == 4) then

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

	end


	if(t.pz == true) and (getTilePzInfo(getCreaturePosition(cid)) == false) then

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

	end


	if(t.battle == true) and (getCreatureCondition(cid, CONDITION_INFIGHT) == true) then

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

	end


	if getPlayerLevel(cid) >= t.level then

		setResets(cid, 1)

		doRemoveCreature(cid, true)

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

	else

		doPlayerSendCancel(cid, "Você precisa do level "..t.level.." ou mais para resetar.")

		doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)

	end

	return true

end

Fiz um por stages também
^^


config = {

	RemainingLvl = 8,

	exp = 4200,

	redskull = true,

	battle = true,

	pz = true

}


stages = {

	{resets = 4, level = 350},

	{resets = 9, level = 400}

}

function onSay(cid, words, param)

	local pid = getPlayerGUID(cid)

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

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

	end


	if(config.pz) and (not getTilePzInfo(getCreaturePosition(cid))) then

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

	end


	if(config.battle) and (getCreatureCondition(cid, CONDITION_INFIGHT)) then

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

	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, "Você precisa do level "..stage.level.." ou mais para resetar.")

				doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)

			end

		end

	end

	return true

end

Edited by fireelement (see edit history)

Share this post


Link to post
Share on other sites

Tem algum problema si eu pular a parte do Luascript.cpp e colocar as functions direto na lib do servidor porque aqui deu erro na hora de compila.

Eu coloquei essas aqui ó.


function getResets(cid)

    local pid = getPlayerGUID(cid)

    local qr = db.getResult("SELECT `resets` FROM `players` WHERE `id`= "..pid..";")

        rss = qr:getDataInt("resets", pid)

    if rss < 0 then

        rss = 0

    end

        return rss

end

function setResets(cid, amount)


local acc = getPlayerAccountId(cid)

local resets = getResets(cid)


if isCreature(cid) then

doRemoveCreature(cid)

end


db.executeQuery("UPDATE `players` SET `resets` = ".. resets + amount .." WHERE `id` = " .. acc .. ";")

end

2174 D:\Users\Desktop\Entw\Ot Entwickeln\Sources\luascript.cpp 'luaGetResets' is not a member of 'LuaInterface'

2177 D:\Users\Desktop\Entw\Ot Entwickeln\Sources\luascript.cpp 'luaSetResets' is not a member of 'LuaInterface'

2177 D:\Users\Desktop\Entw\Ot Entwickeln\Sources\luascript.cpp At global scope:

9035 D:\Users\Desktop\Entw\Ot Entwickeln\Sources\luascript.cpp no 'int32_t LuaInterface::luaGetResets(lua_State*)' member function declared in class 'LuaInterface'

9049 D:\Users\Desktop\Entw\Ot Entwickeln\Sources\luascript.cpp no 'int32_t LuaInterface::luaSetResets(lua_State*)' member function declared in class 'LuaInterface'

9049 D:\Users\Desktop\Entw\Ot Entwickeln\Sources\luascript.cpp *** [obj//luascript.o] Error 1

Edited by Beyond Sky
Functios (see edit history)


Medalhas:
1, 2

Qo5DnNn.png

stonedshowoff2_zpsf5409854.png

Share this post


Link to post
Share on other sites

Funciona??


MSN: Daniel_devotti@live.com

Skype: Daniel-041

logo.png

Share this post


Link to post
Share on other sites

Desculpa reviver o tópico, mas como funciona? ele reseta os chares, mas deixa os itens e a conta?

Volta o player pro level 8, o resto mantém.

Edited by fireelement (see edit history)

Share this post


Link to post
Share on other sites

boa noite pessoal, não sei se ainda tem suporte esse sistema só que comigo deu o seguinte erro, na hora de compilar o servidor tudo 100%

tabela criada no mysql tudo certo, só que quando alguem entra no servidor aparece isso 

error during getDataint<resets>

o player reseto volto no lvl 8 mas nao adicionou um novo reset no look

 

olhem na imagem 

 

 

post-88794-0-80091600-1424308663_thumb.p

Share this post


Link to post
Share on other sites

boa noite pessoal, não sei se ainda tem suporte esse sistema só que comigo deu o seguinte erro, na hora de compilar o servidor tudo 100%

tabela criada no mysql tudo certo, só que quando alguem entra no servidor aparece isso 

error during getDataint<resets>

o player reseto volto no lvl 8 mas nao adicionou um novo reset no look

 

olhem na imagem 

MySQL

ALTER TABLE `players` ADD `resets` INT(11) NOT NULL DEFAULT "0";

SQLite

ALTER TABLE players ADD resets INTEGER not null default 0

Share this post


Link to post
Share on other sites

ja tinha feito e fiz novamento a alteração na db, mas continua o mesmo erro, quando alguem loga

error during getDataint<resets>

minha tfs 

trunk.r3884 SVN 0.4

 

Share this post


Link to post
Share on other sites

ja tinha feito e fiz novamento a alteração na db, mas continua o mesmo erro, quando alguem loga

error during getDataint<resets>

minha tfs 

Amigo, você provavelmente errou em algo na hora da alteração das sources,

Siga os procedimentos do tfs 0.3.6, pois a versão 0.4 está acima da sua...

Teste recompilar e seguir passa por passo, garanto que irá dar certo.

 

Abraço!


Atenciosamente,

Bruno Minervino

 

Tibia Clients - Downloads Windows & Linux

Share this post


Link to post
Share on other sites

bom pessoal, se alguém ainda estiver usando o sistema ou forem querer usar, vou deixar aqui que quando voce da look em voce mesmo nao aparece os reset nem o level, so quando da look em outra pessoa aparece, bom estudando o arquivo abaixa vai ter como aparecer o reset voce dando look em si proprio

 

Adicione nas source

 

player.cpp
procure por: 

s << "yourself.";

substitua por:

s << "yourself (Level " << level << ") [Reset " << resets << "]";

Compile e funcionando 


15:36 You see yourself (Level 350) [Reset 1] You are a druid.
Edited by markmv (see edit history)

Share this post


Link to post
Share on other sites

Pra quem quiser o sistema com stages:

local config = {
    backToLevel = 8,
    redskull = false,
    battle = true,
    pz = false,
    stages = {
        {resets = 4, level = 350},
        {resets = 9, level = 355},
        {resets = 14, level = 360},
        {resets = 19, level = 365},
        {resets = 24, level = 380},
        {resets = 29, level = 390},
        {resets = 34, level = 410},
        {resets = 39, level = 430},
        {resets = 44, level = 450}
    }
}

function onSay(cid, words, param)
    if config.redskull and getCreatureSkullType(cid) == 4 then
        return doPlayerSendCancel(cid, "Voce precisa estar sem red skull para resetar.")
    elseif config.pz and not getTilePzInfo(getCreaturePosition(cid)) then
        return doPlayerSendCancel(cid, "Voce precisa estar em protection zone para resetar.")
    elseif config.battle and getCreatureCondition(cid, CONDITION_INFIGHT) then
        return doPlayerSendCancel(cid, "Voce precisa estar sem battle para resetar.")
    end

    local resetLevel = 0
    for x, y in ipairs(config.stages) do
        if getResets(cid) <= y.resets then
            resetLevel = y.level
            break
        end
    end

    if getPlayerLevel(cid) < resetLevel then
        return doPlayerSendCancel(cid, "Voce precisa do level " .. resetLevel .. " ou mais para resetar.")
    end

    setResets(cid, 1)
    local guid = getPlayerGUID(cid)
    doRemoveCreature(cid, true)
    db.executeQuery("UPDATE `players` SET `level` = " .. config.backToLevel .. ", `experience` = " .. getExperienceForLevel(config.backToLevel) .. " WHERE `id` = " .. guid)
    return true
end
Edited by fireelement (see edit history)

Share this post


Link to post
Share on other sites

Fala Fire, testei aqui e ta funcionando esse talk seu, só os stages não ta indo em. Compilei o sistema de reset em um 0.3.7 protocolo 10.10 funcionando 100%

so o stages nao ta pegando e quando o char reset da esse ero na distro, mas acho que nao altera em nada

 

http://prntscr.com/6hvv3b

Share this post


Link to post
Share on other sites

Fala Fire, testei aqui e ta funcionando esse talk seu, só os stages não ta indo em. Compilei o sistema de reset em um 0.3.7 protocolo 10.10 funcionando 100%

so o stages nao ta pegando e quando o char reset da esse ero na distro, mas acho que nao altera em nada

 

http://prntscr.com/6hvv3b

cara já tentei 3 tipos de loop e até hj n entendi pq dá esse erro aehueahu

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Similar Content

    • By TheNorth
      Salve galera, 
       
      Esse é meu primeiro post aqui no fórum então me desculpe caso esteja postando no lugar errado.
      Estou com 2 problemas na minha anti-entrosa: 
       
      O primeiro é que não consigo selecionar o número de players de cada guild, ela está configurando o número de frags total para cada guild, por exemplo se colocarmos 50 frags e cada time tem 10 players quando tiver acontecido 40 mortes de 1 lado quem morrer não consegue mais voltar para citywar e a guerra acaba quando o ultimo é morto totalizando os 50 frags. (Pode entrar quantos players a guild tiver, queria que desse pra estipular o número de players de cada guild que podem entrar).
       
      O segundo é que não está bloqueando equipar SSA e Might ring, e também não bloqueia os summons.
       
      Vou colocar abaixo meus scripts.
       
      LIB 
      Talk Actions
       
      Desde já obrigado pela atenção.
       
      Att,
    • By chainsmoker
      Olá a todos, sou Game Master de um servidor de Narutibia, estamos com um problema na quantidade de Magic Level mostrada no cliente, chegado a um certo nível treinado ou com +stats dado por Set's e Buff's a quantidade de ML mostrada no Client reseta, como no print.
      Gostaria de saber se algum dono/aux de um Ot já passou por esse problema e como resolveram.
      Desde já, agradeço.
      >
    • By Viny 13
      SISTEMA PVP PARECIDO COM O DO GLA + TELA DE BAN & PICKS (INSPIRADO NO LOL)
      Basicamente o sistema funciona assim:
      Você clica em uma aba no Cliente e abre a module onde aparece Player vs Player & Torneio.
      Eu por enquanto só quero a parte Player vs Player.

      Na parte de player vs player aparece um ranking ordenado por quem tem mais vitórias, e aparece suas derrotas e seu winrate. Para buscar partida precisaria clicar em "Buscar por grupo/partida" onde iniciaria um Matchmaking com outras pessoas que estavam na fila. Ao encontrar outro jogador os 2 players seriam levado para uma arena livre e iria aparecer a interface de Picks & Ban.   <--------  ALGO COMO ISSO         Pra quem já jogou League of Legends, sabe como funciona essa parte, mas vou explicar como quero.
       
      O jogo vai verificar quais pokémons você possui, fazendo uma verificação no DEPOT ou em alguma espécie de cofre. Após verificação iria aparecer uma tela com todas fotinhas dos pokémons dos 2 jogadores e começaria a parte dos BANS Parte dos bans: Cada jogador teria 30 segundos para banir 3 pokémons do oponente. Após isso entra a parte das ESCOLHAS. Parte das escolhas: Cada jogador têm 1 minuto para escolher 6 pokémons, exceto os que estão banidos. Após a escolha os jogadores iam pra arena com os pokémons que eles escolheram na mochila ou pra outro lugar. (Por meio de um /cb automático) talvez? O Duelo então iria começar, e no fim o oponente que sobreviveu na Arena aparecia uma tela de "Victory" e os status do Ranking dele seria atualizado.  
              
       
             E também iria aparecer uma Kill/Death LOG para todos do jogo assim: PlayerX defeated PlayerY
             
      ------------------------------------------------------
       
      Eu já tenho Server+Source+OTC+SourceOTC para utilizar (Não fiz nenhuma mudança)
      Se tiverem um servidor de preferência para utilizarem podem utilizar, portanto que me avisem antes para eu ver se concordo...
       
       
      Meu discord é Vinny13#8666
    • By luanluciano93
      Olá, em data/events/scripts/creature.lua (implemente o código substituindo a função onChangeOufit, e verifique se ela esta definida como 1 em events.xml) 
      function createBonusCondition(id, params) local condition = Condition(CONDITION_ATTRIBUTES, CONDITIONID_DEFAULT) condition:setParameter(CONDITION_PARAM_TICKS, -1) condition:setParameter(CONDITION_PARAM_SUBID, id) for i = 1, #params do local param = params[i].param local value = params[i].value condition:setParameter(param, value) end return condition end outfitBonus = { -- [{male outfit id, female outfit id}] = createBonusCondition(ID, parameters & values) [{128, 136}] = createBonusCondition(1, { {param = CONDITION_PARAM_STAT_MAGICPOINTS, value = 10}, {param = CONDITION_PARAM_STAT_MAXHITPOINTSPERCENT, value = 110} } ), [{129, 137}] = createBonusCondition(2, { {param = CONDITION_PARAM_STAT_MAXMANAPOINTSPERCENT, value = 200} } ) } function getBonusCondition(outfit) for outfits, bonus in pairs(outfitBonus) do if table.contains(outfits, outfit) then return bonus end end return nil end function Creature:onChangeOutfit(outfit) if not self:isPlayer() then return true end local previousBonusCondition = getBonusCondition(self:getOutfit().lookType) local newBonusCondition = getBonusCondition(outfit.lookType) if previousBonusCondition then self:removeCondition(CONDITION_ATTRIBUTES, CONDITIONID_DEFAULT, previousBonusCondition:getSubId()) end if newBonusCondition then self:addCondition(newBonusCondition) end return true end Em data/creaturescript/scripts/login.lua (dentro da função onLogin implemente o código a seguir) 
      -- Outfit bonus local bonusCondition = getBonusCondition(player:getOutfit().lookType) if bonusCondition then player:addCondition(bonusCondition) end Para configurar usa o exemplo a seguir: 
      outfitBonuses = { [{male outfit id, female outfit id}] = createBonusCondition(ID, parameters & values) } O ID deve ser diferente para cada bônus, de modo que o script pode identificar entre as condições.
      Os parâmetros devem estar dentro de uma tabela: {param = alguma_condição_parâmetro, value = valor_para_mudar}
       
      Aqui estão os parâmetro disponíveis no TFS 1.3: 
      CONDITION_PARAM_OWNER CONDITION_PARAM_TICKS CONDITION_PARAM_HEALTHGAIN CONDITION_PARAM_HEALTHTICKS CONDITION_PARAM_MANAGAIN CONDITION_PARAM_MANATICKS CONDITION_PARAM_DELAYED CONDITION_PARAM_SPEED CONDITION_PARAM_LIGHT_LEVEL CONDITION_PARAM_LIGHT_COLOR CONDITION_PARAM_SOULGAIN CONDITION_PARAM_SOULTICKS CONDITION_PARAM_MINVALUE CONDITION_PARAM_MAXVALUE CONDITION_PARAM_STARTVALUE CONDITION_PARAM_TICKINTERVAL CONDITION_PARAM_FORCEUPDATE CONDITION_PARAM_SKILL_MELEE CONDITION_PARAM_SKILL_FIST CONDITION_PARAM_SKILL_CLUB CONDITION_PARAM_SKILL_SWORD CONDITION_PARAM_SKILL_AXE CONDITION_PARAM_SKILL_DISTANCE CONDITION_PARAM_SKILL_SHIELD CONDITION_PARAM_SKILL_FISHING CONDITION_PARAM_STAT_MAXHITPOINTS CONDITION_PARAM_STAT_MAXMANAPOINTS CONDITION_PARAM_STAT_SOULPOINTS CONDITION_PARAM_STAT_MAGICPOINTS CONDITION_PARAM_STAT_MAXHITPOINTSPERCENT CONDITION_PARAM_STAT_MAXMANAPOINTSPERCENT CONDITION_PARAM_STAT_SOULPOINTSPERCENT CONDITION_PARAM_STAT_MAGICPOINTSPERCENT CONDITION_PARAM_PERIODICDAMAGE CONDITION_PARAM_SKILL_MELEEPERCENT CONDITION_PARAM_SKILL_FISTPERCENT CONDITION_PARAM_SKILL_CLUBPERCENT CONDITION_PARAM_SKILL_SWORDPERCENT CONDITION_PARAM_SKILL_AXEPERCENT CONDITION_PARAM_SKILL_DISTANCEPERCENT CONDITION_PARAM_SKILL_SHIELDPERCENT CONDITION_PARAM_SKILL_FISHINGPERCENT CONDITION_PARAM_BUFF_SPELL CONDITION_PARAM_SUBID CONDITION_PARAM_FIELD CONDITION_PARAM_DISABLE_DEFENSE CONDITION_PARAM_SPECIALSKILL_CRITICALHITCHANCE CONDITION_PARAM_SPECIALSKILL_CRITICALHITAMOUNT CONDITION_PARAM_SPECIALSKILL_LIFELEECHCHANCE CONDITION_PARAM_SPECIALSKILL_LIFELEECHAMOUNT CONDITION_PARAM_SPECIALSKILL_MANALEECHCHANCE CONDITION_PARAM_SPECIALSKILL_MANALEECHAMOUNT CONDITION_PARAM_AGGRESSIVE Créditos: INFERNUM (OTLAND)
    • By Yan Liima
      #Introdução
      Reparei que muitas pessoas estão atrás desse sistema que o DBOBR e NTOBR usa, e atualmente o VitorSubhi postou um, porém é necessário modificar as sources. Apesar de achar o dele bem melhor, estarei deixando este meu sistema(não é necessário mexer nas sources).
       
      #Funcionamente
      O jogador vai até um NPC e compra um papel, após ter comprado ele pode estar dando trade nesse papel e negociando com algum jogador em troca de qualquer item. Ao finalizar a negociação, os points são transferidos/removidos(caso houver points na conta). Também é possivel comprar o papel por comando, estarei disponibilizando ambos para vocês.
       
      #Alguns prints:
       
      Estarei deixando o script para vocês em inglês, modifique como quiser
      Então vamos lá...
      #Instalação
      Em data/lib crie um arquivo chamado tradepoints.lua cole isto dentro:
       
      Em data/creaturescripts/tradepoints.lua:
       
      TAG:
      <event type="tradeaccept" name="Trade_Points" event="script" value="tradepoints.lua"/> <event type="traderequest" name="Trade_Points_Request" event="script" value="tradepoints.lua"/> login.lua
      registerCreatureEvent(cid, "Trade_Points") registerCreatureEvent(cid, "Trade_Points_Request") NPC XML:
      <?xml version="1.0" encoding="UTF-8"?> <npc name="Frodo" script="data/npc/scripts/trade_points.lua" walkinterval="2000" floorchange="0" access="5" level="1" maglevel="1"> <health now="150" max="150"/> <look type="275" head="114" body="113" legs="113" feet="113" corpse="2212"/> <parameters> <parameter key="module_shop" value="1" /> <parameter key="message_greet" value="Hello |PLAYERNAME|. I sell some utensils and Premium Points Transfer for you to transfer points to other players, remember to buy use '10' to 10 points." /> </parameters> </npc> Data/npc/scripts/trade_points.lua:
       
      Caso queira que a compra do papel seja feita por talkactions, aqui está:
       
      Prontinho xD
      Agradecimentos ao @lordzetros por ajudar na função scanContainer.
      obs: testado em TFS 0.4
  • Recently Browsing   0 members

    No registered users viewing this page.


Open Tibia Server

Quer aprender a criar seu próprio servidor de Tibia? Então está no lugar certo, aqui você encontrará milhares de tutorias, scripts, códigos, mapas e utilitários para que você possa fazer o seu próprio servidor de Tibia começando do zero.

Redes Sociais

Anuncie no Tibia King

Precisa de mais visibilidade em seus projetos? Quer fazer um plano publicitário para o seu servidor? Anuncie no Tibia King e faça sua divulgação, possuímos centenas de acessos simultâneos e milhares diários, com certeza será a sua solução!

×
×
  • Create New...