Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Oi olha eu novamente, bom sou um pouco velho com essas coisas mas estou 5 anos sem mexer, então vou direto ao ponto.
 

Servidor: Constant Server v0.1

Constant Server, foi criado a partir de outro Servidor e foi totalmente modificado para Constant Server. Retirado o Console somente! do Servidor 4fun! Scripts, e Funções foram trocadas, e feitas para a funcionalidade do Constant Server.

Cliente: Tibia 8.6
RME: v2.2
Mapa: Próprio, Criado por mim. Não haverá Divulgação até que saia da versão 0.1

 

Criei algumas quests, em meu servidor, Anihi eu consegui resolver mas essas quests simples que é só clicar e receber o baú no final do caminho ta difícil, bom vou ilustrar todo o meu problema.

Imagem do Erro.

Captura_de_tela_2015-10-18_13.51.16.thum
Imagem do Console sem o Erro das Unique.

Captura_de_tela_2015-10-18_13.54.55.thum

Console Todo conteúdo, alguns erros irei remover após o Servidor ficar pronto!

[13:36:26.478] The Forgotten Server, version 0.4_SVN ()
[13:36:26.479] Compiled with GNU C++ version 4.4.0 at Mar  8 2011, 00:36:40.
[13:36:26.480] A server developed by Elf, Stian, Slawkens and KaczooH, .
[13:36:26.482] Visit our forum for updates, support and resources: "REMOVIDO POR MANDAR A OUTRO FÓRUM." pelos Termos do Fórum removi o Link....

[13:36:26.482] >> Loading config (config.lua)
[13:36:26.485] > Opening logs
[13:36:26.487] > Using SHA1 encryption
I/O warning : failed to load external entity ""
[13:36:26.489] >> Checking software version...failed - could not parse remote file (are you connected to any network?)
[13:36:26.490] >> Loading RSA key
[13:36:26.808] >> Starting SQL connection
[13:36:26.810] >> Running Database Manager
[13:36:26.995] > Optimized database.
[13:36:26.997] >> Loading items (OTB)
[13:36:27.269] >> Loading items (XML)
[13:36:27.497] >> Loading groups
[13:36:27.500] >> Loading vocations
[13:36:27.505] >> Loading outfits
[13:36:27.513] >> Loading chat channels
[13:36:27.519] >> Loading script systems
Loading items[done 0.39]
[13:36:28.617] >> Loading mods...
[13:36:28.620] > Loading buypremium_command.xml... done.
[13:36:28.623] > Loading changender_command.xml... done.
[13:36:28.632] > Loading custommonsters.xml... done.
[13:36:28.642] > Loading customspells.xml... done.
[13:36:28.645] > Loading firstitems.xml... done.
[13:36:28.648] > Loading highscorebook.xml... done.
[13:36:28.649] > 6 mods were loaded.
[13:36:28.650] >> Loading experience stages
[13:36:28.654] >> Loading monsters
[13:36:29.589] >> Loading map and spawns...
[13:36:30.003] > Map size: 3000x3000.
[13:36:30.004] > Map descriptions:
[13:36:30.007] "Saved with Remere's Map Editor 2.2"
[13:36:30.010] "Tibia Constant Server Brasil"
[13:36:31.969] [Warning - IOMap::loadMap] Movable item in house: 9, item type: 1748, pos 2866/1635/5
[13:36:32.926] > Map loading time: 3.334 seconds.
[13:36:32.945] [Spawn::addMonster] Cannot find "Poisonthrower"
[13:36:32.966] > Data parsing time: 0.039 seconds.
[13:36:39.363] > Houses synchronization time: 6.396 seconds.
[13:36:39.397] > Content unserialization time: 0.033 seconds.
[13:36:39.398] >> Checking world type... Open PvP
[13:36:39.400] >> Initializing game state and binding services...
[13:36:39.499] > Global IP address: 25.7.227.250
[13:36:39.524] > Local IP address(es): 192.168.0.186
[13:36:39.530] > Bound ports: 7171      7172
[13:36:39.531] >> Everything smells good, server is starting up...
[13:36:49.532] >> ConstantServer server Online!

Aqui está o Script que uso para minhas Quest Chest, ChestQuest.lua

function onUse(cid, item)  

local chest = {1746,1747,1748,1749} -- IDs dos chests

      if isInArray(chests, item.itemid) then
         for i = 1, 10 do 
             doPlayerAddItem(cid, getContainerItem(item.uid, i))
         end
       else 
         doPlayerSendCancel(cid, "The chest it's empty")
      end
return true
end

 
Eu criei as quests a partir do Unique ID 1001 ...

do 1001 até 1008 pois deu erro e não continuei as quests.

actions.xml - estão todas as UID 1001 até 1008...

    <!-- Quests Criadas apenas com Chests -->
    <action uniqueid="1001" script="constantquest/chestquest/chestquest.lua"/>
    <action uniqueid="1002" script="constantquest/chestquest/chestquest.lua"/>
    <action uniqueid="1003" script="constantquest/chestquest/chestquest.lua"/>
    <action uniqueid="1004" script="constantquest/chestquest/chestquest.lua"/>
    <action uniqueid="1005" script="constantquest/chestquest/chestquest.lua"/>
    <action uniqueid="1006" script="constantquest/chestquest/chestquest.lua"/>
    <action uniqueid="1007" script="constantquest/chestquest/chestquest.lua"/>
    <action uniqueid="1008" script="constantquest/chestquest/chestquest.lua"/>


a Pergunta é qual é o problema que está acontecendo, se não aparece nemhum erro no Console? se devo utilizar para cada script um novo arquivo.lua?

Para mais Informações estou utilizando o Tutorial de um Membro deste mesmo Fórum TibiaKing, Como Criar Quest Pelo RME Link

Editado por Andre Felipe de Azev
Para colocar o Console, todo para mostrar todo ele, e não só a screenshot, e remover um link que apareceu no console e nem vai ser postado para não ocorrer problemas futuros com o fórum tibiaking! E editado novamente para colocar algumas informações! (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
http://www.tibiaking.com/forum/topic/13481-criando-quest-pelo-rme-21/

Caso não tenha o system:

TAG:
<action actionid="2000" script="quests/system.lua"/>
<action actionid="2001" script="quests/system.lua"/>
local specialQuests = {
    [2001] = 30015
}

local questsExperience = {
    [30015] = 10000
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
    if(getPlayerCustomFlagValue(cid, PlayerCustomFlag_GamemasterPrivileges)) then
        doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF, cid)
        return true
    end

    local storage = specialQuests[item.actionid]
    if(not storage) then
        storage = item.uid
        if(storage > 65535) then
            return false
        end
    end

    if(getPlayerStorageValue(cid, storage) > 0) then
        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "It is empty.")
        return true
    end

    local items = {}
    local reward = 0

    local size = isContainer(item.uid) and getContainerSize(item.uid) or 0
    if(size == 0) then
        reward = doCopyItem(item, false)
    else
        for i = 0, size do
            local tmp = getContainerItem(item.uid, i)
            if(tmp.itemid > 0) then
                table.insert(items, tmp)
            end
        end
    end

    size = table.maxn(items)
    if(size == 1) then
        reward = doCopyItem(items[1], true)
    end

    local result = ""
    if(reward ~= 0) then
        local ret = getItemDescriptions(reward.uid)
        if(reward.type > 0 and isItemRune(reward.itemid)) then
            result = reward.type .. " charges " .. ret.name
        elseif(reward.type > 0 and isItemStackable(reward.itemid)) then
            result = reward.type .. " " .. ret.plural
        else
            result = ret.article .. " " .. ret.name
        end
    else
        if(size > 20) then
            reward = doCopyItem(item, false)
        elseif(size > 8) then
            reward = getThing(doCreateItemEx(1988, 1))
        else
            reward = getThing(doCreateItemEx(1987, 1))
        end

        for i = 1, size do
            local tmp = doCopyItem(items[i], true)
            if(doAddContainerItemEx(reward.uid, tmp.uid) ~= RETURNVALUE_NOERROR) then
                print("[Warning] QuestSystem:", "Could not add quest reward")
            else
                local ret = ", "
                if(i == 2) then
                    ret = " and "
                elseif(i == 1) then
                    ret = ""
                end

                result = result .. ret
                ret = getItemDescriptions(tmp.uid)
                if(tmp.type > 0 and isItemRune(tmp.itemid)) then
                    result = result .. tmp.type .. " charges " .. ret.name
                elseif(tmp.type > 0 and isItemStackable(tmp.itemid)) then
                    result = result .. tmp.type .. " " .. ret.plural
                else
                    result = result .. ret.article .. " " .. ret.name
                end
            end
        end
    end

    if(doPlayerAddItemEx(cid, reward.uid, false) ~= RETURNVALUE_NOERROR) then
        result = "You have found a reward weighing " .. getItemWeight(reward.uid) .. " oz. It is too heavy or you have not enough space."
    else
        result = "You have found " .. result .. "."
        setPlayerStorageValue(cid, storage, 1)
        if(questsExperience[storage] ~= nil) then
            doPlayerAddExp(cid, questsExperience[storage])
            doSendAnimatedText(getCreaturePosition(cid), questsExperience[storage], TEXTCOLOR_WHITE)
        end
    end

    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, result)
    return true
end
Link para o post
Compartilhar em outros sites

Wakon preciso dessa action, System para estar funcionando ? Obrigado! REp+

 

é REALMENTE EU não tinha. HAUHAUHAUHAUH Obrigado Pela ajuda!! Mt Obrigado mesmo, vai agilizar a criação do meu OT, MUITO Obrigado Wakon! se desse dava 2 rep proce a mais até! 

 

Pior que tinha, exemplo tenho que colocar o id junto lá no topo? exemplo ...

local specialQuests = {
    [2001] = 30015, 1008, 1009, 1010
}

local questsExperience = {
    [30015] = 10000
    [2000] = 0   
}

E se eu quizer, exemplo, adicionar mais quests, com o mesmo action id, eu posso né, tipo 30 quests com action id 2000 e só adicionar o UID diferente, eu faço só uma parada na lista de action como exemplo...

    <action actionid="2000" event="script" value="constantquest/cidades/itajai/templo/chestquest.lua" <!-- BAU 2 e 3 -->

ai ficando com UID diferentes eu posso pegar itens dos dois baus, e se eu fizer UID iguais eu só posso pegar de um? :D é isso né? eu vou testar mas não custa nada perguntar! HUAHAUHA se for e der certo quero fazer um tutorial especifico, para tudo isso, acoplando mais explicações e adicionando os links do pessoal que fez algo já parecido no fórum para ficar ainda mais explicativo! 


Fiz assim ...

local specialQuests = {
    [2001] = 30015, 2000 <!-- 2000 foi a action id que fiz para todos os baus, só mudei a unique id, e adicionei lá em cima na system que eu já tinha! e irei testar e comentar aqui o que que deu! -->
}

local questsExperience = {
    [30015] = 10000, <!-- eu tinha posto sem por a virgula depois do 10k ali da quest anihi e não tinha funfado! -->
    [2000] = 0

}

Cara Obrigado tudo certo e resolvido, bem relembrando pra quem tiver aqui para procurar sobre o Erro está resolvido. tem que adicionar a action que você criou em SYStem ... que foi passada pelo WAKON! com exp e tudo mais caso queira exp na action criada....

 

E Wakon vai um ANEXO mostrando que deu CERTO! Obrigado mano!! Vlw mesmo! se não falace nada em System eu nem imaginaria sobre isso! Obrigado!

Captura de tela 2015-10-21 08.52.06.png

Editado por Andre Felipe de Azev
aumentar o comentário, falar mais e não fazer spam, com vários outros comentários! (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
 

 

é Wakon, tenho é mais e mais idéias, olha só, existem posts com vários meios de criar Quest? exemplo eu fiz assim olha a foto!

Explicando um pouco o servidor. 100gold coin = 1platinum 100plat = 1 crystal 100crystal = 1 golden ore 100 go = 1 Gold Ingot ...

Assim, olhe a foto ..

Captura_de_tela_2015-10-22_19.44.59.thum
Existem 2 coal basin vazias, bom sem alavanca de action, tipo qualquer coisa que foce jogado nele e ele automaticamente consumisse, e se for a coisa certa ele destroi as pedras que abrindo espaço para poder chegar ao bau. Se for errado ele destroy tbm, mas não abre espaço.

Idéia é  Player joga na Direita 3 Gold Ingot, consome a remove as 3 pedras Azuis. Joga na esquerda Consome o item e destroi as 3 pedras rosas. Um dos baus é o certo, um da um premio bom e outro da uma chave para abrir a sala do premio.

é uma quest, para que os jogadores, façam em até 3 pessoas. para economizar, hauhauahu. Ela faz parte de uma quest, que criei que tem muitas funções para chegar até o final de quest, é a quest do Aventureiro. Já fiz até aqui, que ainda praticamente é o começo.

Eu tentei fazer um script usando o esquema do lixeiro mas não sei atribuir, eu fiz um curso uma vez em um forum faz uns 5 a 6anos já, ai lembro pouca coisa e nem lembro como fazer HI WORLD! huahuah

HAAAA quase me esqueci eu gostaria de um Script top e BALANCEADO tanto em regeneration quanto atack e tals, eu consegui fazer legal é normal atack e exaust esses ficaram bons mas regeneration fui mexer mas voltei como estava, pois ficou estranho de mais!

<?xml version="1.0" encoding="UTF-8"?>
<vocations>
    <vocation id="0" name="None" description="none" needpremium="0" gaincap="5" gainhp="5" gainmana="5" gainhpticks="2" gainhpamount="5" gainmanaticks="2" gainmanaamount="50" manamultiplier="4.0" attackspeed="1600" soulmax="100" gainsoulticks="120" fromvoc="0" attackable="no">
        <formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/>
        <skill fist="1.5" club="2.0" sword="2.0" axe="2.0" distance="2.0" shielding="1.5" fishing="1.1" experience="1.0"/>
    </vocation>
    <vocation id="1" name="Sorcerer" description="a sorcerer" needpremium="0" gaincap="10" gainhp="5" gainmana="30" gainhpticks="2" gainhpamount="5" gainmanaticks="2" gainmanaamount="100" manamultiplier="1.1" attackspeed="700" soulmax="100" gainsoulticks="120" fromvoc="1">
        <formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/>
        <skill fist="1.5" club="2.0" sword="2.0" axe="2.0" distance="2.0" shielding="1.5" fishing="1.1" experience="1.0"/>
    </vocation>
    <vocation id="2" name="Druid" description="a druid" needpremium="0" gaincap="10" gainhp="5" gainmana="30" gainhpticks="2" gainhpamount="5" gainmanaticks="2" gainmanaamount="100" manamultiplier="1.1" attackspeed="700" soulmax="100" gainsoulticks="120" fromvoc="2">
        <formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/>
        <skill fist="1.5" club="1.8" sword="1.8" axe="1.8" distance="1.8" shielding="1.5" fishing="1.1" experience="1.0"/>
    </vocation>
    <vocation id="3" name="Paladin" description="a paladin" needpremium="0" gaincap="20" gainhp="10" gainmana="15" gainhpticks="2" gainhpamount="5" gainmanaticks="2" gainmanaamount="100" manamultiplier="1.4" attackspeed="700" soulmax="100" gainsoulticks="120" fromvoc="3">
        <formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/>
        <skill fist="1.2" club="1.2" sword="1.2" axe="1.2" distance="1.1" shielding="1.1" fishing="1.1" experience="1.0"/>
    </vocation>
    <vocation id="4" name="Knight" description="a knight" needpremium="0" gaincap="25" gainhp="15" gainmana="5" gainhpticks="2" gainhpamount="5" gainmanaticks="2" gainmanaamount="100" manamultiplier="3.0" attackspeed="700" soulmax="100" gainsoulticks="120" fromvoc="4">
        <formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/>
        <skill fist="1.1" club="1.1" sword="1.1" axe="1.1" distance="1.4" shielding="1.1" fishing="1.1" experience="1.0"/>
    </vocation>
    <vocation id="5" name="Master Sorcerer" description="a master sorcerer" needpremium="1" gaincap="10" gainhp="5" gainmana="30" gainhpticks="2" gainhpamount="50" gainmanaticks="250" gainmanaamount="250" manamultiplier="1.1" attackspeed="500" soulmax="200" gainsoulticks="15" fromvoc="1" lessloss="30">
        <formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/>
        <skill fist="1.5" club="2.0" sword="2.0" axe="2.0" distance="2.0" shielding="1.5" fishing="1.1" experience="1.0"/>
    </vocation>
    <vocation id="6" name="Elder Druid" description="an elder druid" needpremium="1" gaincap="10" gainhp="5" gainmana="30" gainhpticks="2" gainhpamount="50" gainmanaticks="2" gainmanaamount="250" manamultiplier="1.1" attackspeed="500" soulmax="200" gainsoulticks="15" fromvoc="2" lessloss="30">
        <formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/>
        <skill fist="1.5" club="1.8" sword="1.8" axe="1.8" distance="1.8" shielding="1.5" fishing="1.1" experience="1.0"/>
    </vocation>
    <vocation id="7" name="Royal Paladin" description="a royal paladin" needpremium="1" gaincap="20" gainhp="10" gainmana="15" gainhpticks="2" gainhpamount="50" gainmanaticks="2" gainmanaamount="250" manamultiplier="1.4" attackspeed="500" soulmax="200" gainsoulticks="15" fromvoc="3" lessloss="30">
        <formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/>
        <skill fist="1.2" club="1.2" sword="1.2" axe="1.2" distance="1.1" shielding="1.1" fishing="1.1" experience="1.0"/>
    </vocation>
    <vocation id="8" name="Elite Knight" description="an elite knight" needpremium="1" gaincap="25" gainhp="15" gainmana="5" gainhpticks="2" gainhpamount="50" gainmanaticks="2" gainmanaamount="250" manamultiplier="3.0" attackspeed="500" soulmax="200" gainsoulticks="15" fromvoc="4" lessloss="30">
        <formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/>
        <skill fist="1.1" club="1.1" sword="1.1" axe="1.1" distance="1.4" shielding="1.1" fishing="1.1" experience="1.0"/>
    </vocation>
 
</vocations>

Editado por Andre Felipe de Azev
Editado por esquecer outra duvida! hehe! (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 Mathwsz
      Bom galera, estou trazendo um script de fusão que funciona assim:
      Explicação: É necessário de 7 itens, na qual você coloca em tal coordenada e aperte a alavanca, sendo assim formando um item na qual você deseja em tal lugar configurado.
      Exemplo: Você pode fazer 7 bosses na qual dropa tals itens "Parecidos" e formando um item raro de sua escolha, ou como preferir.. Vamos ao script!
       
      Em Data/Actions/Scripts crie um arquivo chamado fusaoitens.lua e adicione isto dentro:
       
       
      Agora, em Data/Actions.xml adicione o seguinte:
       
      <action uniqueid="9900" script="fusaoitens.lua" /> E no seu RemeresMapEditor , pegue sua alavanca, vai em Propriedades e adicione o UniqueID 9900 nele! 
      PRONTO! Agora configure e divirta-se! Obs: Caso lhe ajudei, da um REP+ Aí !
    • Por MySticaL
      Script Quest:
      --[[ Script: Exemplo de Quest Autor: MySticaL Email: [email protected] ]] function onUse(cid, item, frompos, item2, topos) -- Não mecha. storage = 938312 -- Storage a cada quest que for criada aumente um numero da storage pra qnd vc pegar o baú de outra quest ñ aparecer que vc já fez. item = 2160 -- Id do item ira ganhar. quantidade = 1 -- Quantidade ira ganhar. level = 5 -- Level que precisa pra fazer. if getPlayerLevel(cid) >= level and getPlayerStorageValue(cid,storage) == -1 then -- Não mecha. doPlayerSendTextMessage(cid,25,"Você ganhou um pouco de dinheiro") -- Mensagem que aparecera quando ganhar o item. doPlayerAddItem(cid, item, quantidade) -- Não mecha. setPlayerStorageValue(cid,storage,1) -- Não mecha. elseif getPlayerLevel(cid) <= level then -- Não mecha doPlayerSendTextMessage(cid,25,"Você precisa ser level 5 ou mais.") -- Mensagem que ira aparecer se o player tiver menos level que o necessario. elseif getPlayerStorageValue(cid,storage) >= 1 then -- Não mecha. doPlayerSendTextMessage(cid,25,"Você já fez está quest") -- Quando tentar pegar mais de uma vez o baú. end return true end Actions.xml
      <action actionid="3123" event="script" value="script.lua"/> Obs: O actionid="3123" é o que você deve botar no item no Remeres Map Editor
      Caso você queria criar outra quest aumente a storage no script e o id no actions.xml !
      Como configurar ?
      R- \/
      ================================================================================================================================
      storage = 938312 -- Storage a cada quest que for criada aumente um numero da storage pra quando você for pegar o baú de outra quest não aparecer  que você já fez.
      ================================================================================================================================
      item = 2160 -- Id do item ira ganhar.
      ======================================================
      quantidade = 1 -- Quantidade ira ganhar.
      ======================================================
      level = 5 -- Level que precisa pra fazer.
      ======================================================
      Script bem simples mais irá ajudar alguns membros.
      Rep não cai o dedo
      Não sei muito sobre script.
       
      100% Créditos meu caso for postar em outro lugar deixe os créditos para min !
      Desculpem o tópico mal arrumado
       
    • Por Nazo
      Buenas, TK!
      Um usuário pediu ajuda em um script, onde queria limitar para a quest ser feita apenas uma vez por IP, mesmo que ainda seja possível mudá-lo, resolvi postar aqui xd
       
      Execute esse código SQL no seu banco de dados MySQL, para a criação da tabela onde ficarão as storages e o IP armazenado do player:
      CREATE TABLE player_ip_storage( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, player_id INT NOT NULL, ip CHAR(15) NOT NULL, storage INT NOT NULL ); ALTER TABLE player_ip_storage ADD CONSTRAINT FK_PLAYER_ID FOREIGN KEY (player_id) REFERENCES players(id);  
      Ou caso seja SQLITE, utilize esse código:
      CREATE TABLE player_ip_storage( player_id INT NOT NULL, ip CHAR(15) NOT NULL, storage INT NOT NULL ); ALTER TABLE player_ip_storage ADD CONSTRAINT FK_PLAYER_ID FOREIGN KEY (player_id) REFERENCES players(id);  
      Crie um arquivo chamado nazo-functions.lua em data/lib e adicione o seguinte conteúdo:
      -- by Nazo (tibiaking.com) -- IP Storage System function getIpQuestStatus(cid, storage) storages = db.getResult("SELECT * FROM `player_ip_storage` WHERE `ip` = \"" .. doConvertIntegerToIp(getPlayerIp(cid)) .. "\" and `storage` = "..storage..";") if(storages:getID() ~= -1) then return false end return true end function setIpQuestStatus(cid, storage) db.executeQuery("INSERT INTO player_ip_storage(player_id, ip, storage) VALUES("..getPlayerGUID(cid)..",\""..doConvertIntegerToIp(getPlayerIp(cid)).."\","..storage..")") return true end  
      Agora, quando você tiver uma quest, adicione na verificação a função getIpQuestStatus na checagem junto, e quando finalizar a quest utilize o setIpQuestStatus, com os parâmetros cid e número da storage, porém a função só armazena que essa storage tem algo no banco de dados, ou seja, a quest já foi feita, você não armazena o valor da storage junto (como a função normal que geralmente adiciona "1" na storage).
       
      Exemplo de quest abaixo:
      -- by Nazo (tibiaking.com) config = { storage = 123123, -- storage da quest premio = {2160, 1} -- {itemid, quantia} } function onUse(cid, item, frompos, item2, toPosition) queststatus = getPlayerStorageValue(cid,config.storage) if(queststatus == -1 and getIpQuestStatus(cid, config.storage)) then -- note que eu só adicionei a função, nenhuma comparação, explicarei abaixo do código doPlayerSendTextMessage(cid,22,"Tome seu prêmio.") doPlayerAddItem(cid,config.premio[1],config.premio[2]) setPlayerStorageValue(cid,config.storage,1) setIpQuestStatus(cid,config.storage) -- função que adiciona a storage no banco de dados else doPlayerSendTextMessage(cid,22,"Você já fez esta quest.") end end  
      Explicação básica do motivo da função não possuir comparação na verificação e ficar como a seguir:
       
      if(getIpQuestStatus(cid, config.storage)) then Quando você faz um if, com uma função dentro sem comparações, ela continuará o bloco de comando apenas se o retorno da mesma for verdadeiro, assim quando você fizer a quest, e tentar novamente, o get retorna falso, e isso cancela a condição e vai para o bloco de comando do "else".
    • Por tataboy67
      Opa galera beleza?
      Meu amigo esses dias pediu um sistema basicamente assim:
      sistema:
      !quests charizard (você é teleportado para hunt ou quest por "x" tempo, e após esse tempo, você é teleportado para 1 posição "y" (cp/templo)) !quest time (o jogador recebe uma msg de quanto tempo ainda resta para ele ficar nessa hunt/quest) !quest (abre uma janela aonde fala as informações dessa hunt/quest)
      bom eu tentei usar o "for" para fazer com que tenha varios tipos de hunts dentro (criando uma tabela), mas como ainda estou estudando lua e esse é meu 1º script, eu não consegui fazer, então eu to usando o "param" E eu fui pesquisar aqui no forum e em outro forums tbm esse sistema, e vi que ninguem nunca postou  
      então resolvi cria-lo.
       
      Em Talkactions.xml, adicione a linha:

      Em Talkactions, crie um arquivo com o nome de quest_time.lua, e adicione:

      Creditos:
      Eu: Pelo script

      Desculpa se o script ficou ruim, é que é meu primeiro script, tenham pena de mim.  
      Eu farei melhoras nesse script mais pra frente.
    • Por IagoNp
      Alguém sabe como criar uma Quest com tempo?
       
      Exemplo: 4 player entra numa sala e 1 clica em uma alavanca.. Um tempo começa a contar e ao terminar o tempo irá aparecer algo no meio da sala..
       
      E como fazer para verificar o tempo de uma storage ao chegar ao fim.. os.time().
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo