Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Wolf, eu utilizo esse sistema no meu server pra evitar lag pela quantia de players/trainers.
Vejo como uma boa ideia para os que tiverem o mesmo problema

giphy.gif

 

 

                                                                                                230x230.jpg

 

Link para o post
Compartilhar em outros sites
  • Respostas 65
  • Created
  • Última resposta

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

Olá meus caros do Tibia King, hoje vim trazer pra vocês um sistema que bolei pra um concurso em outro fórum mas acabei ficando descontente e nunca cheguei a disponibilizar. Eu gostaria de agradecer

isso que vc quer é exatamente o que é o sistema. Se você separar bem as salas os players sempre vão achar que estão na mesma sala isolados dos outros. A diferença é que nesse aqui vc ainda precisa faz

1- Não, a menos que vc edite a função isWalkable 2- a distancia é a partir da posição que o player irá ficar até a outra posição que o player irá ficar. Pensa assim: se não houvessem obstáculos, qn

Posted Images

29 minutes ago, eviltox said:

Wolf, eu utilizo esse sistema no meu server pra evitar lag pela quantia de players/trainers.
Vejo como uma boa ideia para os que tiverem o mesmo problema

giphy.gif

 

 

o problema desse sistema é que se vc tem um servidor com mil players fica osso fazer mil salas e principalmente pra achar uma sala livre

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

Mas tipo, utilizar um getThingfromPos e criar o monk baseado no espaço vago, com uma checagem de espaço.
Algo como:

local monk = {x = pos.x - 1, y = pos.y + 1, z = pos.z, stackpos=253} 
local monk2 = {x = pos.x - 1, y = pos.y - 1, z = pos.z, stackpos=253} 
local monkpos = getThingfromPos(monk)
local monk2pos = getThingfromPos(monk2)


if(item.actionid == 34331) then
if isPlayer(cid) == 1 then
doSummonCreature("Training Monk", monk)
doSummonCreature("Training Monk", monk2)

Só que mais elaborado AUSHUAHSUAUSHUAS

                                                                                                230x230.jpg

 

Link para o post
Compartilhar em outros sites

A ideia é genial @xWhiteWolf, parabéns pela criatividade.

Com esse sistema os jogadores serão poupados de ter que andar de forma arcaica procurando por "salas" vazias, no qual é algo repetitivo demais, e evidentemente desagradável.

 

Há um tempo atrás eu tive uma ideia bacana também, e que talvez outras pessoas também tiveram. No qual, se trata de um local de treino contendo uma só sala de treino para o servidor inteiro. E esse local seria o mesmo para todos os jogadores que o acessarem, porem um jogador não vê o outro que também estiver lá, e os dois Monk aparecem meio que individualmente para cada jogador que estiver nesse mesmo local.

 

É algo meio confuso de se entender, eu sei kkk..

Um dos benefícios desse sistema seria de poupar o mapper de ter que fazer 500, 1000, 2000 salas de treino, no qual é algo muito chato e cansativo, mesmo pra quem manja. =D

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

Dark Souls Bonfire GIF - Dark Souls Bonfire Rest - Discover & Share GIFs

Link para o post
Compartilhar em outros sites

@xWhiteWolf eu consegui resolver o problema.  

Não sei dizer o porque acontece isso, mas no map editor quando você está muito pra cima no mapa, ou muito pra baixo, ele buga e da problema, em tudo, não só em scripts. Então eu recomendo um espaço de pelo menos uns 50 sqm para todas as direções quando for fazer qualquer coisa em um mapa, pois fica mais centralizado e funciona tudo.

 

Sobre o sistema

Pela OTland eu vi alguns scripts parecidos. Mas nesses scripts você precisa ficar limitando quantos slots de trainers vão ter, e cada tile no mapa editor vai com uma UniqId diferente e em sequencia. No seu script não, você cria apenas uma sala de trainer e vai dando ctrl+c e ctrl+v e vai colocando a quantidade de salas conforme a sua necessidade. Depois disso só informa no script as distancias e quantidades. Isso torna o script mais simples e rápido para quem configura e o torna o melhor sistema de trainers da atualidade

Sem contar que você faz um trainer room pequeno e fácil e tem uma área eficiente e bonita sem ficar se preocupando em mapear uma sala de trainer toda bonitona..

 

De qualquer forma, obrigado pela contribuição disponibilizando o sistema e pelo suporte em que tentou me ajudar.  Rep+

 

 

 

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

Estou com duvida nesta parte do script

Spoiler

local config = {
eff = 12, -- efeito que sai
food = 100, -- quanto de food vai dar (use 100 no maximo)
timespin = 10 -- tempo pra dar uma volta (quanto menor mais checagens a função vai fazer e mais pesado vai ficar o sistema)
}

function helpTrainer(uid, pos)
    if not isPlayer(uid) then return false end
    look = getCreatureLookDirection(uid)
    look = look < 3 and look + 1 or 0
    doCreatureSetLookDirection(uid, look)
    doSendMagicEffect(pos, config.eff)
    
    if getPlayerFood(uid) < config.food then
        doPlayerFeed(uid, config.food)
        doCreatureSay(uid, "+ Food", TALKTYPE_MONSTER)
    end
    
    addEvent(function()
        if isPlayer(uid) and getCreaturePosition(uid).x == pos.x and getCreaturePosition(uid).y == pos.y and getCreaturePosition(uid).z == pos.z then
            helpTrainer(uid, pos)
        end
    end, config.timespin * 1000)
return true
end    

function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
    helpTrainer(cid, position)
return true
end

 

+Food, ele da food ao player ou ele da efeito ao player como se tivesse comido 100 food?...Não entendi direito!

 

O Sistema está funcionando perfeitamente, obrigado por compartilhar, recomendo!   REP+

 

                                                           

55f6tc.gif                     

Link para o post
Compartilhar em outros sites
On 6/3/2017 at 0:24 AM, Heyron said:

A ideia é genial @xWhiteWolf, parabéns pela criatividade.

Com esse sistema os jogadores serão poupados de ter que andar de forma arcaica procurando por "salas" vazias, no qual é algo repetitivo demais, e evidentemente desagradável.

 

Há um tempo atrás eu tive uma ideia bacana também, e que talvez outras pessoas também tiveram. No qual, se trata de um local de treino contendo uma só sala de treino para o servidor inteiro. E esse local seria o mesmo para todos os jogadores que o acessarem, porem um jogador não vê o outro que também estiver lá, e os dois Monk aparecem meio que individualmente para cada jogador que estiver nesse mesmo local.

 

É algo meio confuso de se entender, eu sei kkk..

Um dos benefícios desse sistema seria de poupar o mapper de ter que fazer 500, 1000, 2000 salas de treino, no qual é algo muito chato e cansativo, mesmo pra quem manja. =D

 

isso que vc quer é exatamente o que é o sistema. Se você separar bem as salas os players sempre vão achar que estão na mesma sala isolados dos outros. A diferença é que nesse aqui vc ainda precisa fazer as salas manualmente, porém é só fazer uma e dar ctrl c e ctrl v até formar uma linha e depois dar ctrl c e ctrl v na linha inteira de salas e fazer as colunas.

Se fosse pra criar a sala via script vc tornaria o sistema muito pesado :~

On 6/3/2017 at 0:51 AM, Radamanthys Wov said:

Não funciona em 1.0 ?

o algoritmo é o mesmo, o que vc vai ter que mudar é as funções do TFS. A lógica é universal, as funções que mudam com as versões. Pega as versões correspondentes e substitui que vai funcionar.

On 6/3/2017 at 0:59 AM, DiegoRulez said:

@xWhiteWolf eu consegui resolver o problema.  

Não sei dizer o porque acontece isso, mas no map editor quando você está muito pra cima no mapa, ou muito pra baixo, ele buga e da problema, em tudo, não só em scripts. Então eu recomendo um espaço de pelo menos uns 50 sqm para todas as direções quando for fazer qualquer coisa em um mapa, pois fica mais centralizado e funciona tudo.

 

Sobre o sistema

Pela OTland eu vi alguns scripts parecidos. Mas nesses scripts você precisa ficar limitando quantos slots de trainers vão ter, e cada tile no mapa editor vai com uma UniqId diferente e em sequencia. No seu script não, você cria apenas uma sala de trainer e vai dando ctrl+c e ctrl+v e vai colocando a quantidade de salas conforme a sua necessidade. Depois disso só informa no script as distancias e quantidades. Isso torna o script mais simples e rápido para quem configura e o torna o melhor sistema de trainers da atualidade

Sem contar que você faz um trainer room pequeno e fácil e tem uma área eficiente e bonita sem ficar se preocupando em mapear uma sala de trainer toda bonitona..

 

De qualquer forma, obrigado pela contribuição disponibilizando o sistema e pelo suporte em que tentou me ajudar.  Rep+

 

 

 

não sabia desse bug, eu dificilmente mapeio pros meus scripts então nem imaginava que poderia dar algo assim. Mas agradeço por ter me explicado como resolveu, se outros tiverem esse problema eu já sei que isso pode ser uma sugestão de resolução eficaz. No mais, fico feliz que você tenha gostado do script porém devo avisar que ao criar novas salas você deve sempre manter a proporção entre linhas e entre colunas.

Exemplos válidos:
x = 3, y = 4
o o o
o o o
o o o
o o o

x = 2, y = 6
o o
o o
o o
o o
o o
o o

x = 4, y = 1
o o o o

Exemplos inválidos:
x = 3, y = 4
o o o
o o u
o o o
u o o

Considera o = sala e u = sem sala
Se você tentar deixar alguns lugares sem sala e aumentar apenas uma ao invés da linha/coluna inteira ele vai considerar os lugares u como salas válidas e então vai transportar players pra lá e bugar o player
 

On 6/3/2017 at 9:17 PM, Digoshow said:

Estou com duvida nesta parte do script

  Hide contents

local config = {
eff = 12, -- efeito que sai
food = 100, -- quanto de food vai dar (use 100 no maximo)
timespin = 10 -- tempo pra dar uma volta (quanto menor mais checagens a função vai fazer e mais pesado vai ficar o sistema)
}

function helpTrainer(uid, pos)
    if not isPlayer(uid) then return false end
    look = getCreatureLookDirection(uid)
    look = look < 3 and look + 1 or 0
    doCreatureSetLookDirection(uid, look)
    doSendMagicEffect(pos, config.eff)
    
    if getPlayerFood(uid) < config.food then
        doPlayerFeed(uid, config.food)
        doCreatureSay(uid, "+ Food", TALKTYPE_MONSTER)
    end
    
    addEvent(function()
        if isPlayer(uid) and getCreaturePosition(uid).x == pos.x and getCreaturePosition(uid).y == pos.y and getCreaturePosition(uid).z == pos.z then
            helpTrainer(uid, pos)
        end
    end, config.timespin * 1000)
return true
end    

function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
    helpTrainer(cid, position)
return true
end

 

+Food, ele da food ao player ou ele da efeito ao player como se tivesse comido 100 food?...Não entendi direito!

 

O Sistema está funcionando perfeitamente, obrigado por compartilhar, recomendo!   REP+

ele dá o efeito de ter comido 100 food. Se só adicionasse vc teria que usar bot pra comer as foods e a idéia é fazer algo livre de bot pro povo só ir e largar lá no trainer. Bots spamam ações no jogo e acabam deixando ele lento. Tudo que você puder fazer no seu servidor pra evitar o uso de bots dos players você deve fazer.

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

Muito boom, gostei do Anti Idle também que simula o bot, assim é mais facil para ao player, e da um desempenho melhor para todos!

 

Parabéns e obrigado pelo script novamente! ehehe ;)

 

                                                           

55f6tc.gif                     

Link para o post
Compartilhar em outros sites
16 horas atrás, xWhiteWolf disse:

 

isso que vc quer é exatamente o que é o sistema. Se você separar bem as salas os players sempre vão achar que estão na mesma sala isolados dos outros. A diferença é que nesse aqui vc ainda precisa fazer as salas manualmente, porém é só fazer uma e dar ctrl c e ctrl v até formar uma linha e depois dar ctrl c e ctrl v na linha inteira de salas e fazer as colunas.

Se fosse pra criar a sala via script vc tornaria o sistema muito pesado :~

o algoritmo é o mesmo, o que vc vai ter que mudar é as funções do TFS. A lógica é universal, as funções que mudam com as versões. Pega as versões correspondentes e substitui que vai funcionar.

não sabia desse bug, eu dificilmente mapeio pros meus scripts então nem imaginava que poderia dar algo assim. Mas agradeço por ter me explicado como resolveu, se outros tiverem esse problema eu já sei que isso pode ser uma sugestão de resolução eficaz. No mais, fico feliz que você tenha gostado do script porém devo avisar que ao criar novas salas você deve sempre manter a proporção entre linhas e entre colunas.

Exemplos válidos:
x = 3, y = 4
o o o
o o o
o o o
o o o

x = 2, y = 6
o o
o o
o o
o o
o o
o o

x = 4, y = 1
o o o o

Exemplos inválidos:
x = 3, y = 4
o o o
o o u
o o o
u o o

Considera o = sala e u = sem sala
Se você tentar deixar alguns lugares sem sala e aumentar apenas uma ao invés da linha/coluna inteira ele vai considerar os lugares u como salas válidas e então vai transportar players pra lá e bugar o player
 

ele dá o efeito de ter comido 100 food. Se só adicionasse vc teria que usar bot pra comer as foods e a idéia é fazer algo livre de bot pro povo só ir e largar lá no trainer. Bots spamam ações no jogo e acabam deixando ele lento. Tudo que você puder fazer no seu servidor pra evitar o uso de bots dos players você deve fazer.

Realmente,  parece está funcinal agora aqui.

Link para o post
Compartilhar em outros sites

@xWhiteWolf

Vou estar postando duas screen shot, pra você entender melhor e poder ajudar a galera.

 

Correto
correto.png

 

Incorreto

incorreto.jpg

 

No modelo numero 2 (Incorreto), o trainer invocado pelo sistema não ataca o player que utiliza os trainers..  Caso você sumone o trainer com o GM, ou qualquer outro monster, também não vai funcionar e se você andar extremamente para cima com os monsters na tela, você toma debug.  (Isso corre em TFS 0.4, OTX2 e qualquer um baseado em TFS 0.4, nas outras não sei dizer).

 

 

Editado por DiegoRulez (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • 2 weeks later...

muda aqui a posição de posi.y + 1 pra posiy. - 1 tanto na pos1 quanto na pos2
countdown(posi, {{x = posi.x - 1, y = posi.y + 1, z = posi.z}, {x = posi.x + 1 , y = posi.y + 1, z = posi.z}})

mesma coisa aqui:
ArrayPos = {{x = fromPos.x - 1, y = fromPos.y + 1, z = fromPos.z}, {x = fromPos.x + 1 , y = fromPos.y + 1, z = fromPos.z}}

onde tá .y +1 deixa .y -1, apenas isso (e alterar as salas no map editor)

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

Quando Adiciono a Action Id nos teleportes, fala que a localização está incorreta ? Alguém pode ajudar ? 

 

Minha dificuldade é em criar os Tps ... Sou iniciante. (Coloco a Action e o rme manda uma msg dizendo que a localização está incorreta.

 

Desde já, agradeço.

Editado por Leandro6434 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
On 6/26/2017 at 1:48 PM, Leandro6434 said:

Quando Adiciono a Action Id nos teleportes, fala que a localização está incorreta ? Alguém pode ajudar ? 

 

Minha dificuldade é em criar os Tps ... Sou iniciante. (Coloco a Action e o rme manda uma msg dizendo que a localização está incorreta.

 

Desde já, agradeço.

poderia me enviar um print dessa mensagem? ela aparece no rme ou no console do servidor?

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites
20 horas atrás, xWhiteWolf disse:

poderia me enviar um print dessa mensagem? ela aparece no rme ou no console do servidor?

Valeu White, eu já resolvi, foi erro meu, mais muito obrigado por me responder !

Link para o post
Compartilhar em outros sites
  • 6 months later...

ola, desculps reviver tópico, mas o treiner não nasceu onde devia, e não ocorreu nenhum erro na distro

 

Link para o post
Compartilhar em outros sites

@Fabio Leandro você configurou tudo certinho? as salas estão igual na imagem?

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites
  • 7 months later...

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 danielzin021
      alguém sabe como implementa isso no serv e se tem como?
    • Por Maniaco
      Salve TibiaKing!!! TFS 0.4 . 8.60
       
      Estou implementando o Sistema do @WooX de Cave Exlusiva

      Link:
       
      Porem estou com um problema seguindo o tutorial completo dele acabo tendo um retorno de erro na Distro! E ja que o mesmo nao entra no forum deis de 14/01! Venho solicitar ajuda de vocês!
      Caso alguem tenha o Discord Dele Favor me Passe  
      Vamos lá!
      Erro:
       
      Script :
       
      Lib
       
       
      Print Rme:
       
       
      Lembrando que nao esta funcionando em geral, Acrédito que eu tenha pulado algo ou deixado passar despercebido!
      Espero que alguem consiga me ajudar vlw!
    • Por sannn
      --[[ /////////////////////////////////////////////////////////////////////////////////////////////////////// Discord: San#7791 -- Loja System 2.0 -- TFS 0.3.6 -- para adicionar qualquer item na loja: basta adicionar na tabelinha, seguindo o exemplo do vip! valor = quantidade de DIAMOND a ser cobrada; itemID = item a ser recebido; quantidade = quantidade de itens a ser recebidos; msg = mensagem que o player vai receber após comprar! Feito por San Discord: San#7791 exemplo de como comprar: !loja vip podendo ser adicionado a modules também. tag talkactions.xml // <talkaction words="!loja" case-sensitive="no" event="script" value="Loja System 2.0.lua"/> ////////////////////////////////////////////////////////////////////////////////////////////////////// depois de tantos sistemas com mil elseifs, vim trazer esta contribuição simples, para facilitar a vida de muitos adms! Contribuição pra comunidade =D ]]-- LOJA_CANCEL = "Você não possui diamantes o suficiente." LOJA_INVALID = "Não temos este item a venda na loja!" INVALID = "Comando incorreto" DIAMOND = 2145 -- item que será cobrado; tabelinha = { ["vip"] = {valor = 5, itemID = 2160, quantidade = 1, msg = "Obrigado por comprar um VIP em nossa loja!"}, -- coloque sempre minusculo o nome ! ["vip"]... etc } function onSay(cid, words, param, channel) local msg = string.lower(param) -- Não mexa! if msg == "" then doPlayerSendTextMessage(cid, 22, INVALID) return true end -- verificação if tabelinha[msg] == nil then doPlayerSendTextMessage(cid, 22, INVALID) return true end -- verificação if tabelinha[msg].valor then if getPlayerItemCount(cid, DIAMOND) >= tabelinha[msg].valor then doPlayerRemoveItem(cid, DIAMOND, tabelinha[msg].valor) doPlayerAddItem(cid, tabelinha[msg].itemID, tabelinha[msg].quantidade) doPlayerSendTextMessage(cid, 20, tabelinha[msg].msg) else doPlayerSendTextMessage(cid, 22, LOJA_CANCEL) return true end else doPlayerSendTextMessage(cid, 22, LOJA_INVALID) end return true end  
    • Por WooX
      Trade Offline V2.0

      Esse sistema me foi pedido a alguns meses atrás e hoje tirei um tempinho pra trazer aqui.
      O sistema consiste em permitir que jogadores negociem sem contato direto entre comprador e vendedor.
      Mas como assim?
      O vendedor pode criar um anuncio de venda informando item, valores ou até mesmo items que ele queira em troca, após feito o anuncio todas essas informações ficam armazenadas no banco de dados do servidor, permitindo assim serem exibidas em uma página no site para interessados, junto de todas informações fornecidas pelo vendedor é exibido um comando para que os interessados possam adquirir a oferta exibida na página.
       
      Sobre o sistema

       
      O sistema foi testado apenas em OTX2, mas provavelmente também funcione em TFS 0.4
       
      Versão para TFS 1.x adaptada pelo @luanluciano93
       
      Como mencionado acima, o sistema funciona de forma semelhante ao Market System das versões atuais porem sem exibição gráfica das ofertas in-game, para isso o sistema vai acompanhado de uma página para o Gesior AAC. Este sistema existe no fórum há um bom tempo e já é familiar pra muitos jogadores, essa versão trás consigo algumas melhorias e diferenças que irei listar abaixo.
       
      Sistema
      Agora é possivel vender um item exigindo outro item em troca ao invés de dinheiro. Containers com um conjunto de items dentro agora podem ser anunciados. Agora o sistema verifica as cargas e durações dos items antes de criar uma oferta. Novo parâmetro adicionado para verificar informações de ofertas in-game. Agora todo valor recebido vai diretamente para o banco do vendedor. Página
      A depender da quantidade de ofertas existentes no servidor, a página agora irá separa-las por páginas. Agora além do valor é exibido também imagem da moeda a depender do valor da oferta. Agora é possivel ver as características tanto dos items ofertados como dos items exigidos pelo vendedor. Adicionado filtros para exibir somente ofertas de items vip, containers ou trocas. Adicionado barras de pesquisas para filtrar as ofertas por items ou nome do jogador.  
      Algumas imagens
       
      Instalação

      Antes de mais nada é necessário citar os requisitos necessários para o funcionamento correto do sistema, ele utiliza de algumas funções que não estão no script principal e portanto é necessário a instalação de uma lib extra, também é necessário instalar as funções doItemSetDuration e getItemDurationTime na source do servidor, ambos os links se encontram abaixo.
       
      Todos os arquivos necessários para a instalação estão anexados no tópico, irei apenas dizer onde instalar e como deve ser configurado.
       
      Primeiramente importe o arquivo schema.sql no banco de dados, ou se preferir pode executar as queries a seguir.
      CREATE TABLE IF NOT EXISTS `trade_off_offers` ( `id` int(11) NOT NULL auto_increment, `player_id` int(11) NOT NULL, `type` int(1) NOT NULL DEFAULT '0', `item_id` int(11), `item_count` int(11) NOT NULL DEFAULT '1', `item_charges` int(11) NULL, `item_duration` int(11) NULL, `item_name` varchar(255), `item_trade` tinyint(1) NOT NULL DEFAULT '0', `cost` bigint(20) UNSIGNED NOT NULL, `cost_count` int(11) NOT NULL DEFAULT '1', `date` bigint(20), PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1; CREATE TABLE IF NOT EXISTS `trade_off_container_items` ( `offer_id` int(11) NOT NULL, `item_id` int(11), `item_charges` int(11) NULL, `item_duration` int(11) NULL, `count` int(11) DEFAULT '1' ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1; ALTER TABLE `trade_off_container_items` ADD KEY `offer_id` (`offer_id`); ALTER TABLE `trade_off_container_items` ADD CONSTRAINT `offer_id_fk` FOREIGN KEY (`offer_id`) REFERENCES `trade_off_offers`(`id`) ON DELETE CASCADE;  
      Configuração no arquivo tradeoff.lua: 
      -- Trade Offline 2.0 by WooX -- local config = { priceLimit = 2000000000, -- 2kkk offerLimit = 3, offerLimitStor = 86420, infoOnPopUp = true, infoMsgType = MESSAGE_STATUS_CONSOLE_BLUE, errorMsgType = MESSAGE_STATUS_CONSOLE_RED, successMsgType = MESSAGE_INFO_DESCR, helpMsg = "Enter the parameters (add, remove, active, buy, info).", goldItems = {2148, 2152, 2160}, itemsVIP = {4540, 4545, 4560}, } priceLimit: define o valor máximo de uma oferta. offerLimit: define o valor máximo de ofertas que um jogador pode adicionar. offerLimitStor: storage que irá armazenar quantas ofertas ativas o jogador possui. infoOnPopUp: pode ser definido como true ou false, se definido como falso irá enviar os detalhes da oferta no default ao invés de como é mostrado nas imagens acima. infoMsgType: define como será exibido uma mensagem de informação ao jogador (não recomendo mexer a menos que saiba o que está fazendo). errorMsgType: define como será exibido uma mensagem de erro ao jogador (não recomendo mexer a menos que saiba o que está fazendo). successMsgType: define como será exibido uma mensagem de ação sucedida ao jogador (não recomendo mexer a menos que saiba o que está fazendo). helpMsg: mensagem que será enviada para o jogador caso ele erre os parâmetros do comando. goldItems: nesta tabela deve ser preenchido todos os IDs de moedas no servidor como gold coins, platinum coins, etc. itemsVIP: nesta tabela deve ser preenchido os IDs dos items vips existentes no servidor.  
      Agora para a instalação da página, no arquivo mysql_db.php deve ser preenchido os dados para conexão no banco de dados do servidor.
      /** * Host do banco de dados * @var string */ private static $DB_HOST = 'localhost'; /** * Usuario de conexao ao banco de dados * @var string */ private static $DB_USER = 'root'; /** * Senha de conexao ao banco de dados * @var string */ private static $DB_PASS = 'SUA_SENHA'; /** * Nome do banco de dados * @var string */ private static $DB_NAME = 'NOME_BANCO'; Após feito isso, o arquivo paginationClass.php em conjunto do arquivo mysql_db.php devem ser adicionados no seguinte diretório do Gesior AAC.
      classes/
      Finalizado isto, basta jogar o arquivo tradeoff.php dentro do diretório informado abaixo e o sistema estará pronto para uso.
      pages/
       
      Avisos

       
      Eu escrevi somente o sistema, não sou o autor da página para o Gesior AAC portanto não estarei dando suporte em relação a página que não seja sobre a instalação da mesma no Gesior AAC 2012, e embora esteja funcional, eu não recomendo o uso da página devido a falta do uso de cache para leitura do items.xml. Foram mais de 600 linhas de código sem contar funções extras e alterações na source, além de muitas horas de testes para garantir que tudo estava funcionando corretamente, tudo que peço em troca é que não removam os créditos no arquivo quando forem usar.  
      Créditos

      @MatheusDuarte pela página do Gesior AAC.
      schema.sql tradeoff.lua tradeoff.php mysql_db.php paginationClass.php
    • Por Denker
      O Player será teletransportado para o TC, após sair do TradeCenter o player retornará á cidade de origem, ex:

      Saffon > TC , o player retornará a saffron.

      ---------------------------------------------------------------------------------------------------------------------

      Em Data/Movements/Scripts, crie um arquivo.lua e coloque dentro:

       
      -- Developed by: Denker local configs = { tps = { -- Teleport para o TC através de um TP (Item) especifico no chão [ItemID] = {pos = {x = 0, y = 0, z = 0}, storage = 50000}, -- Pallet [ItemID] = {pos = {x = 0, y = 0, z = 0}, storage = 50001}, -- Viridian [ItemID] = {pos = {x = 0, y = 0, z = 0}, storage = 50002}, -- Pewter [ItemID] = {pos = {x = 0, y = 0, z = 0}, storage = 50003}, -- Cerulean [ItemID] = {pos = {x = 0, y = 0, z = 0}, storage = 50004}, -- Saffron [ItemID] = {pos = {x = 0, y = 0, z = 0}, storage = 50005}, -- Celadon [ItemID] = {pos = {x = 0, y = 0, z = 0}, storage = 50006}, -- Vermilion [ItemID] = {pos = {x = 0, y = 0, z = 0}, storage = 50007}, -- Fuchsia [ItemID] = {pos = {x = 0, y = 0, z = 0}, storage = 50008}, -- Cinnabar }, -- LOCALIZAÇÕES localizacaoPallet = {x= 0, y= 0, z= 0}, localizacaoViridian = {x= 0, y= 0, z= 0}, localizacaoPewter = {x= 0, y= 0, z= 0}, localizacaoCerulean = {x= 0, y= 0, z= 0}, localizacaoSaffron = {x= 0, y= 0, z= 0}, localizacaoCeladon = {x= 0, y= 0, z= 0}, localizacaoVermilion = {x= 0, y= 0, z= 0}, localizacaoFuchsia = {x= 0, y= 0, z= 0}, localizacaoCinnabar = {x= 0, y= 0, z= 0} } function onStepIn(cid, item, position, fromPosition) local tp = configs.tps[item.itemid] if tp then doTeleportThing(cid, tp.pos) setPlayerStorageValue(cid, tp.storage, 1) return true end -- Verificação que irá teletransportar o player de acordo com a city que ele estava antes if (item.itemid == ItemID ) and getPlayerStorageValue(cid, 50000) == 1 then doTeleportThing(cid, configs.localizacaoPallet) setPlayerStorageValue(cid, 50000, 0) doPlayerSendTextMessage(cid, COLOR_MESSAGE_GREEN, "Você foi Teletransportado para Pallet") return true end if (item.itemid == ItemID ) and getPlayerStorageValue(cid, 50001) == 1 then doTeleportThing(cid, configs.localizacaoViridian) setPlayerStorageValue(cid, 50001, 0) doPlayerSendTextMessage(cid, COLOR_MESSAGE_GREEN, "Você foi Teletransportado para Viridian") return true end if (item.itemid == ItemID ) and getPlayerStorageValue(cid, 50002) == 1 then doTeleportThing(cid, configs.localizacaoPewter) setPlayerStorageValue(cid, 50002, 0) doPlayerSendTextMessage(cid, COLOR_MESSAGE_GREEN, "Você foi Teletransportado para Pewter") return true end if (item.itemid == ItemID ) and getPlayerStorageValue(cid, 50003) == 1 then doTeleportThing(cid, configs.localizacaoCerulean) setPlayerStorageValue(cid, 50003, 0) doPlayerSendTextMessage(cid, COLOR_MESSAGE_GREEN, "Você foi Teletransportado para Cerulean") return true end if (item.itemid == ItemID ) and getPlayerStorageValue(cid, 50004) == 1 then doTeleportThing(cid, configs.localizacaoSaffron) setPlayerStorageValue(cid, 50004, 0) doPlayerSendTextMessage(cid, COLOR_MESSAGE_GREEN, "Você foi Teletransportado para Saffron") return true end if (item.itemid == ItemID ) and getPlayerStorageValue(cid, 50005) == 1 then doTeleportThing(cid, configs.localizacaoCeladon) setPlayerStorageValue(cid, 50005, 0) doPlayerSendTextMessage(cid, COLOR_MESSAGE_GREEN, "Você foi Teletransportado para Celadon") return true end if (item.itemid == ItemID ) and getPlayerStorageValue(cid, 50006) == 1 then doTeleportThing(cid, configs.localizacaoVermilion) setPlayerStorageValue(cid, 50006, 0) doPlayerSendTextMessage(cid, COLOR_MESSAGE_GREEN, "Você foi Teletransportado para Vermilion") return true end if (item.itemid == ItemID ) and getPlayerStorageValue(cid, 50007) == 1 then doTeleportThing(cid, configs.localizacaoFuchsia) setPlayerStorageValue(cid, 50007, 0) doPlayerSendTextMessage(cid, COLOR_MESSAGE_GREEN, "Você foi Teletransportado para Fuchsia") return true end if (item.itemid == ItemID ) and getPlayerStorageValue(cid, 50008) == 1 then doTeleportThing(cid, configs.localizacaoCinnabar) setPlayerStorageValue(cid, 50008, 0) doPlayerSendTextMessage(cid, COLOR_MESSAGE_GREEN, "Você foi Teletransportado para Cinnabar") return true end end OBS: O item ID da verificação de volta, será igual para todas as verificações.

      Em Data/Movements/Movements.xml, coloque dentro:

       
      <movevent type="StepIn" itemid="ID" event="script" value="arquivo.lua"/>  




×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo