Ir para conteúdo
  • Cadastre-se

Posts Recomendados

.Qual servidor ou website você utiliza como base? 

tfs 1.0 versao 12.00

Qual o motivo deste tópico? 

Preciso de ajuda na parte de travar a 3° prey quando o player cria o char. 

Quando cria accout o char ja vem com a 3° prey liberada, queria deixar pra liberar so comprando na store...

Obrigado REP++ pra quem ajudar ai valeu

precisar de algum arquivo é só falar

 

gostaria que ficasse igual o da imagem

Está surgindo algum erro? Se sim coloque-o aqui. 

Citar

 

 

Você tem o código disponível? Se tiver publique-o aqui: 

 

 

Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 

 

2.png.5e14e2d2763e741e3c085051a2c2903b.png

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

Eu consegui resolver por conta própria, porém acredito de fato que não seja o melhor jeito para resolver essa situação, mas foi da única forma que consegui.

 

1 - No arquivo "src/iologindata.cpp", altere o seguinte trecho:

 

De:

DBInsert preyDataQuery("INSERT INTO `prey_slots` (`player_id`, `num`, `state`, `unlocked`, `current`, `monster_list`, `free_reroll_in`, `time_left`, `next_use`, `bonus_type`, `bonus_value`, `bonus_grade`) VALUES ");
		for (size_t num = 0; num < PREY_SLOTNUM_THIRD + 1; num++) {
			query << player->getGUID() << ',' << num << ',' << 3 << ',' << 1 << ',' << db.escapeString("") << ',' << db.escapeString("") << ',' << 0 << ',' << 0 << ',' << 0 << ',' << 0 << ',' << 0 << ',' << 0;
			if (!preyDataQuery.addRow(query)) {
				return false;
			}
		}

 

Para:

DBInsert preyDataQuery("INSERT INTO `prey_slots` (`player_id`, `num`, `state`, `unlocked`, `current`, `monster_list`, `free_reroll_in`, `time_left`, `next_use`, `bonus_type`, `bonus_value`, `bonus_grade`) VALUES ");
		for (size_t num = 0; num < PREY_SLOTNUM_THIRD + 1; num++) {
			query << player->getGUID() << ',' << num << ',' << "CASE WHEN `num` = 2 AND `player_id` NOT IN(SELECT `player_id` FROM `player_storage` WHERE `key` = 63253 AND `value` = 1) THEN 1 ELSE 3 END" << ',' << "CASE WHEN `num` = 2 AND `player_id` NOT IN(SELECT `player_id` FROM `player_storage` WHERE `key` = 63253 AND `value` = 1) THEN 0 ELSE 1 END" << ',' << db.escapeString("") << ',' << db.escapeString("") << ',' << 0 << ',' << 0 << ',' << 0 << ',' << 0 << ',' << 0 << ',' << 0;
			if (!preyDataQuery.addRow(query)) {
				return false;
			}
		}

 

2 - No arquivo "data/modules/scripts/gamestore/gamestore.luadefina o preço da compra do slot prey e guarde esse valor pois será utilizado no próximo arquivo.

 

3 - No arquivo "data/modules/scripts/gamestore/init.lua" altere o seguinte trecho:

 

De:

function GameStore.processPreySlotPurchase(player)

  if player:getStorageValue(63253) < 1 then
  player:setStorageValue(63253, 1)
  end

  player:setStorageValue(63253, 1)
end

 

Para:

function GameStore.processPreySlotPurchase(player)
    local playerId = player:getId()
    local playerGuid = player:getGuid()
    local accountId = player:getAccountId()

    if player:getStorageValue(63253) < 1 then
        local tile = Tile(player:getPosition())
        if (tile) then
            if (not tile:hasFlag(TILESTATE_PROTECTIONZONE)) then
                return error({code = 1, message = "You can unlock your third prey slot only in Protection Zone."})
            end
        end

        player:setStorageValue(63253, 1)
        message = "You have successfully unlocked your third prey slot permanently, relogin!"
        player:remove()
        db.query("UPDATE `prey_slots` SET `state` = 3, `unlocked` = 1 WHERE `player_id` = " .. playerGuid .. " AND `num` = 2")
        db.query("UPDATE `accounts` SET `coins` = `coins` -30 WHERE `id` = " .. accountId)
        GameStore.insertHistory(accountId, GameStore.HistoryTypes.HISTORY_TYPE_NONE, "Permanent Prey Slot", -30)

        addEvent(function()
            local player = Player(playerId)

            if not player then
                return false
            end
        end, 500)
    end
end

 

Na parte 3, você precisará alterar o valor da prey slot definida na gamestore. Altere nesses dois trechos em vermelho:

 

1:

db.query("UPDATE `accounts` SET `coins` = `coins` -30 WHERE `id` = " .. accountId)

 

2:

GameStore.insertHistory(accountId, GameStore.HistoryTypes.HISTORY_TYPE_NONE, "Permanent Prey Slot", -30)

 

Feito isso, basta compilar novamente o tfs e testar. Aqui funcionou direito. Caso tenha algum problema, pode me perguntar que eu tento ajudar.

 

Vale ressaltar novamente: o método que eu utilizei não é o mais adequado por causa dos CASES no iologindata.cpp e também por dar muita volta atoa, mas foi o único jeito que consegui pois me falta muito conhecimento em C++ e LUA para poder desenvolver melhor esse código.

 

[]s

nbeTETb.png?1

 

Link para o post
Compartilhar em outros sites
2 horas atrás, VitorNM disse:

Eu consegui resolver por conta própria, porém acredito de fato que não seja o melhor jeito para resolver essa situação, mas foi da única forma que consegui.

 

1 - No arquivo "src/iologindata.cpp", altere o seguinte trecho:

 

De:


DBInsert preyDataQuery("INSERT INTO `prey_slots` (`player_id`, `num`, `state`, `unlocked`, `current`, `monster_list`, `free_reroll_in`, `time_left`, `next_use`, `bonus_type`, `bonus_value`, `bonus_grade`) VALUES ");
		for (size_t num = 0; num < PREY_SLOTNUM_THIRD + 1; num++) {
			query << player->getGUID() << ',' << num << ',' << 3 << ',' << 1 << ',' << db.escapeString("") << ',' << db.escapeString("") << ',' << 0 << ',' << 0 << ',' << 0 << ',' << 0 << ',' << 0 << ',' << 0;
			if (!preyDataQuery.addRow(query)) {
				return false;
			}
		}

 

Para:


DBInsert preyDataQuery("INSERT INTO `prey_slots` (`player_id`, `num`, `state`, `unlocked`, `current`, `monster_list`, `free_reroll_in`, `time_left`, `next_use`, `bonus_type`, `bonus_value`, `bonus_grade`) VALUES ");
		for (size_t num = 0; num < PREY_SLOTNUM_THIRD + 1; num++) {
			query << player->getGUID() << ',' << num << ',' << "CASE WHEN `num` = 2 AND `player_id` NOT IN(SELECT `player_id` FROM `player_storage` WHERE `key` = 63253 AND `value` = 1) THEN 1 ELSE 3 END" << ',' << "CASE WHEN `num` = 2 AND `player_id` NOT IN(SELECT `player_id` FROM `player_storage` WHERE `key` = 63253 AND `value` = 1) THEN 0 ELSE 1 END" << ',' << db.escapeString("") << ',' << db.escapeString("") << ',' << 0 << ',' << 0 << ',' << 0 << ',' << 0 << ',' << 0 << ',' << 0;
			if (!preyDataQuery.addRow(query)) {
				return false;
			}
		}

 

2 - No arquivo "data/modules/scripts/gamestore/gamestore.luadefina o preço da compra do slot prey e guarde esse valor pois será utilizado no próximo arquivo.

 

3 - No arquivo "data/modules/scripts/gamestore/init.lua" altere o seguinte trecho:

 

De:


function GameStore.processPreySlotPurchase(player)

  if player:getStorageValue(63253) < 1 then
  player:setStorageValue(63253, 1)
  end

  player:setStorageValue(63253, 1)
end

 

Para:


function GameStore.processPreySlotPurchase(player)
    local playerId = player:getId()
    local playerGuid = player:getGuid()
    local accountId = player:getAccountId()

    if player:getStorageValue(63253) < 1 then
        local tile = Tile(player:getPosition())
        if (tile) then
            if (not tile:hasFlag(TILESTATE_PROTECTIONZONE)) then
                return error({code = 1, message = "You can unlock your third prey slot only in Protection Zone."})
            end
        end

        player:setStorageValue(63253, 1)
        message = "You have successfully unlocked your third prey slot permanently, relogin!"
        player:remove()
        db.query("UPDATE `prey_slots` SET `state` = 3, `unlocked` = 1 WHERE `player_id` = " .. playerGuid .. " AND `num` = 2")
        db.query("UPDATE `accounts` SET `coins` = `coins` -30 WHERE `id` = " .. accountId)
        GameStore.insertHistory(accountId, GameStore.HistoryTypes.HISTORY_TYPE_NONE, "Permanent Prey Slot", -30)

        addEvent(function()
            local player = Player(playerId)

            if not player then
                return false
            end
        end, 500)
    end
end

 

Na parte 3, você precisará alterar o valor da prey slot definida na gamestore. Altere nesses dois trechos em vermelho:

 

1:

db.query("UPDATE `accounts` SET `coins` = `coins` -30 WHERE `id` = " .. accountId)

 

2:

GameStore.insertHistory(accountId, GameStore.HistoryTypes.HISTORY_TYPE_NONE, "Permanent Prey Slot", -30)

 

Feito isso, basta compilar novamente o tfs e testar. Aqui funcionou direito. Caso tenha algum problema, pode me perguntar que eu tento ajudar.

 

Vale ressaltar novamente: o método que eu utilizei não é o mais adequado por causa dos CASES no iologindata.cpp e também por dar muita volta atoa, mas foi o único jeito que consegui pois me falta muito conhecimento em C++ e LUA para poder desenvolver melhor esse código.

 

[]s

 

fiz tudo isso, rodou o game certinho, porem apresentou erro na gamestore.lua e init.lua:

Lua Script Error: [Test Interface] 
data/modules/scripts/gamestore/gamestore.lua
data/modules/scripts/gamestore/init.lua:1268: '=' expected near 'playerId'
stack traceback:
        [C]: at 0x004f1d20
        [C]: in function 'dofile'
        data/modules/scripts/gamestore/gamestore.lua:9: in main chunk
[Warning - Event::checkScript] Can not load script: scripts/gamestore/gamestore.lua


Lua Script Error: [Test Interface] 
data/modules/scripts/gamestore/gamestore.lua
data/modules/scripts/gamestore/init.lua:1268: '=' expected near 'playerId'
stack traceback:
        [C]: at 0x004f1d20
        [C]: in function 'dofile'
        data/modules/scripts/gamestore/gamestore.lua:9: in main chunk
[Warning - Event::checkScript] Can not load script: scripts/gamestore/gamestore.lua


Lua Script Error: [Test Interface] 
data/modules/scripts/gamestore/gamestore.lua
data/modules/scripts/gamestore/init.lua:1268: '=' expected near 'playerId'
stack traceback:
        [C]: at 0x004f1d20
        [C]: in function 'dofile'
        data/modules/scripts/gamestore/gamestore.lua:9: in main chunk
[Warning - Event::checkScript] Can not load script: scripts/gamestore/gamestore.lua


Lua Script Error: [Test Interface] 
data/modules/scripts/gamestore/gamestore.lua
data/modules/scripts/gamestore/init.lua:1268: '=' expected near 'playerId'
stack traceback:
        [C]: at 0x004f1d20
        [C]: in function 'dofile'
        data/modules/scripts/gamestore/gamestore.lua:9: in main chunk
[Warning - Event::checkScript] Can not load script: scripts/gamestore/gamestore.lua


Lua Script Error: [Test Interface] 
data/modules/scripts/gamestore/gamestore.lua
data/modules/scripts/gamestore/init.lua:1268: '=' expected near 'playerId'
stack traceback:
        [C]: at 0x004f1d20
        [C]: in function 'dofile'
        data/modules/scripts/gamestore/gamestore.lua:9: in main chunk
[Warning - Event::checkScript] Can not load script: scripts/gamestore/gamestore.lua


Lua Script Error: [Test Interface] 
data/modules/scripts/gamestore/gamestore.lua
data/modules/scripts/gamestore/init.lua:1268: '=' expected near 'playerId'
stack traceback:
        [C]: at 0x004f1d20
        [C]: in function 'dofile'
        data/modules/scripts/gamestore/gamestore.lua:9: in main chunk
[Warning - Event::checkScript] Can not load script: scripts/gamestore/gamestore.lua


Lua Script Error: [Test Interface] 
data/modules/scripts/gamestore/gamestore.lua
data/modules/scripts/gamestore/init.lua:1268: '=' expected near 'playerId'
stack traceback:
        [C]: at 0x004f1d20
        [C]: in function 'dofile'
        data/modules/scripts/gamestore/gamestore.lua:9: in main chunk
[Warning - Event::checkScript] Can not load script: scripts/gamestore/gamestore.lua


Lua Script Error: [Test Interface] 
data/modules/scripts/gamestore/gamestore.lua
data/modules/scripts/gamestore/init.lua:1268: '=' expected near 'playerId'
stack traceback:
        [C]: at 0x004f1d20
        [C]: in function 'dofile'
        data/modules/scripts/gamestore/gamestore.lua:9: in main chunk
[Warning - Event::checkScript] Can not load script: scripts/gamestore/gamestore.lua

Reparei que nessa parte:

local playerId = player:getId()
local playerGuid = player:getGuid()
local accountId = player:getAccountId(

O local, ficaram com a cor azul no seu código, mas aqui no meu arquivo.lua só ficou 2 em azul.

Tem algo a ver? 

*OBS: foi bem a linha que marcou error 

local playerId = player:getId()
Editado por dougotserv (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Qual a versão do TFS e qual a versão do tibia você está rodando?

 

Se tiver algum link de referência de qual ot você baixou como base também seria interessante, para eu entender direito o que está rolando

 

--EDIT

Esquece quanto a versão do TFS e do tibia, não reparei no post original, mas você ja informou isso

Editado por VitorNM (veja o histórico de edições)

nbeTETb.png?1

 

Link para o post
Compartilhar em outros sites
17 minutos atrás, VitorNM disse:

Qual a versão do TFS e qual a versão do tibia você está rodando?

 

Se tiver algum link de referência de qual ot você baixou como base também seria interessante, para eu entender direito o que está rolando

 

--EDIT

Esquece quanto a versão do TFS e do tibia, não reparei no post original, mas você ja informou isso

 

mandei os arquivos ali, tinha mandado errado foi mal.

 

fiz o seguinte, deixei o gamestore.lua e init.lua original sem alterar. Ficou da seguinte forma:513519235_preybugada.thumb.png.0c8c9b1aaa54b063ad34cc0de9ddd6f1.png

 

Mesmo comprando na store, não consigo usar.

Fiz algumas alteraçoes, agora segue esse error:

Gamestore: Purchase failed due to an unhandled script error.
Stacktrace: data/modules/scripts/gamestore/init.lua:1269: attempt to call method 'getGuid' (a nil value)

 

 

Editado por dougotserv (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 Muvuka
      Alguem tem anti-nuker igual a esse 
       

       
    • Por Muvuka
      [SQLite] -=[TFS]=- 0.4 8.60 Alguem faz apk mobile pra mim ip: dexsoft.ddns.net
       
      pra mim
       
      https://www.mediafire.com/file/5klqnyy6k7jda0u/OTClientV8.rar/file
       
      TA TUDO AI
    • Por yuriowns
      Salve rapazes, estou precisando de um client próprio para o meu servidor 7.4, preciso que algum programador experiente e com referências faça um client do jeito que eu procuro. Responda aqui para fazermos um orçamento, obrigado!

      Não sei se estou no lugar certo, se não me desculpem e peço que movam por gentileza!
    • Por paulo thush
      Pessoal to com um grande problema, estou com um servidor TFS 1.4x 10.98, recentemente começou dar um problema, sempre quando falava "trade" com o npc dava um erros, com qual quer npc, o erro e o seguinte.
       
       
      me falaram que o problema e nas sourcer que precisava mudar umas coisas me passaram um link no github esse aqui 
      https://github.com/otland/forgottenserver/pull/3996/files
       
      porem eu vi vídeos no youtube ensinando a compilar, já vi muitos tópicos como compilar a sourcer, ai quando vou compilar da esse erro
      já tentei instalar, desinstala muitas coisas, alterar também não vai, minha sourcer e essa 
      https://github.com/otland/forgottenserver
       
       
      Alguém poderia me ajuda com esse erro, ou ate compilar 100% as sourcer. os Tópicos que eu tentei para compilar e esse daqui, se não poder o link me desculpe.
      https://forums.otserv.com.br/index.php?/forums/topic/169234-windowsvc2019-compilando-sources-tfs-14-vcpkg/
       
      alguém me da uma luz por favor kkk
    • Por Ryzek
      Uso tfs 0.4 trunk3884 bem simples.
      Queria acrescentar magic effects para 255 pois o meu só vai até 69. Encontrei um tópico que falava sobre porém parece ter sido removido, não consigo acessar!
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo