Jump to content

Recommended Posts

  • Replies 44
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

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 en

Sensacional @WooX, em nome de toda comunidade e equipe agradeço imensamente pelo conteúdo exclusivo disponibilizado em primeira mão em nosso fórum! Sensacional. Lenda!

minha nossa senhora, se não é o deus  grego bob lindão! já te disse que teus contéudos são incriveis né, tirando a formatação, explicação, e tudo perfeito. um dia vou ser igual tu 

Posted Images

1 hora atrás, WooX disse:

Trade Offline V2.0

VlVKQKC.png&key=d5c17620ae9567a1f898dd7a

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? :blink:

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

Oj5H4Xi.png

 

O sistema foi testado apenas em OTX2, mas provavelmente também funcione em TFS 0.4

 

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

  Mostrar conteúdo oculto

p6aJ7ld.png2OqwCFz.pngNczFggd.png

UGUwM5J.pngcBXOiUS.pngounrm7x.pngIWt7FFZ.png

 

 

Instalação

Oj5H4Xi.png

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 doItemSetDurationgetItemDurationTime na source do servidor, ambos os links se encontram abaixo.

  Mostrar conteúdo oculto

 

 

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

Oj5H4Xi.png

 

  • 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
  • Foram quase 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

Oj5H4Xi.png

@MatheusDuarte pela página do Gesior AAC.

schema.sql 1 kB · 0 downloads tradeoff.lua 26 kB · 1 download tradeoff.php 45 kB · 0 downloads mysql_db.php 1 kB · 0 downloads paginationClass.php 1 kB · 0 downloads

funciona no modern aac?

Link to post
Share on other sites

13 horas atrás, Lurk disse:

teria as paginas p znote? 

13 horas atrás, leozincorsair disse:

funciona no modern aac?

Não.

 

12 horas atrás, Faysal disse:

Não consigo colocar os itens no slot de munições, onde mudo isso

 

Busque por:

local item = getPlayerSlotItem(cid, CONST_SLOT_AMMO)

Altere onde estiver CONST_SLOT_AMMO troque para o slot que preferir conforme estivar na sua lib 000-constant.lua.

Edited by WooX (see edit history)

 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

Link to post
Share on other sites

55 minutos atrás, esnio12 disse:

Aconteceu esses erros comigo quando tentei instalar

TFS 0.4

 

Parse error: syntax error, unexpected '{' in C:\xampp\htdocs\pages\tradeoff.php on line 331

image.png.576c1bed2b90938f0492d40d9ed16ba9.png

TFS 0.4 não reconhece item.id somente item.itemid, substitua todas as ocorrências no script, exemplo da linha 50,

de:

			if getItemInfo(item.id).charges > 0 then

para:

			if getItemInfo(item.itemid).charges > 0 then

 

 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

Link to post
Share on other sites

3 horas atrás, Damatio disse:

funciona para tfs 1.2 ?

Não.

 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

Link to post
Share on other sites

11 horas atrás, WooX disse:

Não.

 

Busque por:


local item = getPlayerSlotItem(cid, CONST_SLOT_AMMO)

Altere onde estiver CONST_SLOT_AMMO troque para o slot que preferir conforme estivar na sua lib 000-constant.lua.

Eu sei alterar o slot que o player usa porém eu vou entrar no mesmo problema do Ammo slot, tem itens que nao podem ser usados em outros slots, seria mais facil eu alterar o slot de ammo e permitir ser colocado todos os itens lá, a questão é, não sei onde alterar isso

 

Link to post
Share on other sites

12 minutos atrás, Faysal disse:

Eu sei alterar o slot que o player usa porém eu vou entrar no mesmo problema do Ammo slot, tem itens que nao podem ser usados em outros slots, seria mais facil eu alterar o slot de ammo e permitir ser colocado todos os itens lá, a questão é, não sei onde alterar isso

 

Qual sua source?

 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

Link to post
Share on other sites

4 minutos atrás, Faysal disse:

to usando otx2, peguei do proprio git

 

config.lua

classicEquipmentSlots = true

 

Edited by WooX (see edit history)

 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

Link to post
Share on other sites

13 horas atrás, esnio12 disse:

Boa noite, como é entregue a grana para o vendedor?, não encontrei essa parte

 

e também está acontecendo este erro (tfs 0.4 860)

O valor é inserido no do banco do vendedor. Altera a função getItemDefaultDuration por essa:

function getItemDefaultDuration(itemID)
	if getItemInfo(itemID).decayTime <= 0 then
		if getItemInfo(itemID).transformUseTo then
			if getItemInfo(itemID).transformUseTo.male > 0 then
				return getItemInfo(getItemInfo(itemID).transformUseTo.male).decayTime
			elseif getItemInfo(itemID).transformUseTo.female > 0 then
				return getItemInfo(getItemInfo(itemID).transformUseTo.female).decayTime
			end
		elseif getItemInfo(itemID).transformEquipTo > 0 then
			return getItemInfo(getItemInfo(itemID).transformEquipTo).decayTime
		end
	else
		return getItemInfo(itemID).decayTime
	end
	return 0
end

 

 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

Link to post
Share on other sites

Um bug que aconteceu, quando tento adicionar container que possui mais bps, ele bloqueia de adicionar, porém ele adiciona na db a query e fica exibindo no site a bp a venda, só que sem nada

 

image.thumb.png.edcdbcacd81488b52694cf4d35298e82.png

 

Obs: não da erro no console e nem remove o item nem nada

E fica constando como oferta ativa do vendedor

Edited by esnio12 (see edit history)
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 ITALOx
      Olá rapaziada.
      Hoje tô trazendo sistema de skin por comando.
      Já vi muita gente pedindo por aqui e nunca teve resultado.
       
      Então vamos lá!
       
       
      Lib:
      Crie um arquivo lua com o nome
      210-skins
       
      Actions.xml
       
      <action itemid="11225" event="script" value="skin.lua"/>  
      Actions/scripts
      Crie um arquivo com o nome skin.lua e coloque isso aqui dentro:
      local skin = { [11204] = 1, -- [itemid] = skinid, } function onUse(cid, item, frompos, item2, topos) if not skin[item.itemid] then return false end if doPlayerAddSkin(cid, skin[item.itemid]) then doRemoveItem(item.uid,1) end return true end  
      Agora vá em talkactions.xml e coloque isso aqui lá:
      <talkaction words="!skin" event="script" value="skin.lua"/>  
      Em talkactions/scripts crie um arquivo com o nome skin.lua
      e coloquei isso aqui:
      function onSay(cid, words, param, channel) if param ~= "remover" or param ~= "remove" then doPlayerUseSkin(cid, tonumber(param)) elseif param == "remover" or param == "remove" then doPlayerRemoveSkin(cid) end return true end  
    • By Tottin
      Explicação do Sistema
       
      Recentemente foi levantada uma ideia de Sistema no Discord da Academia de Programação: 
      O sistema consiste em dar maior liberdade pro mercado e tirar a parte monótona dos NPCS que basicamente sempre vendem/compram tudo ao mesmo preço, assim ficando muito longe da realidade de 1 verdadeiro vendedor.
      A ideia é que o NPC venda produtos com base no que ele tenha em estoque, logo para ele vender 1 Blusa ele 1° irá precisar comprá-la de alguém.
      Exemplificando:
      O NPC só irá vender aquilo que comprar, se ele comprar 1 Blusa ele irá disponibilizar para vender 1 Blusa, se ele comprar 7 Blusas, ele irá disponibilizar pra vender 7 Blusas, ao acabar elas, o seu estoque fica vazio e ele deixa de vender até comprar mais.
      O preço que o NPC paga pelo seus produtos é baseado na quantidade de seu estoque, e o valor que ele cobra ao vender os produtos é definido previamente em 1 configuração.
      Exemplo: Quanto + item do mesmo produto o NPC tiver, + barato ele irá pagar nos mesmos, visto que ele já possui 1 estoque grande e na teoria esse produto não é um produto que possui 1 saída muito fácil. Ao mesmo tempo, quanto menor a quantidade de 1 mesmo produto em seu estoque, mais caro ele irá pagar, já que seu estoque sobre aquele produto é pequeno, o que indica que: Ou ele é muito raro, ou ele vende muito fácil, por isso o NPC irá demonstrar + interesse por ele.
      O preço que o NPC cobra é definido previamente e pode ser alterado sempre que desejar.

      Abaixo, o preço de 1 Pearl Shield que o NPC não possui em estoque:
       

      E agora, após o NPC ter comprado 10 Shields do mesmo:


      Enfim, agora que o sistema já foi previamente explicado, vamos a instalação:

      1º Vá para data/lib/ e crie 1 arquivo chamado npc_system.lua, nele você irá adicionar o seguinte código:
       

      2º Agora vá para  data/npcs, crie 1 arquivo chamado: negociante.xml, nele você irá adicionar o seguinte código:
       
      3º Agora vá para data/npcs/scripts, crie 1 arquivo chamado: negociante.lua, nele você irá adicionar o seguinte código:
       
      Instalação finalizada, as áreas configuráveis do sistema estão informadas na lib.
                              Créditos:
      Academia de Programação: Por ter levantado a ideia do sistema.
      @Endless: Por ter ajudado em uma questão de lógica.
      E a mim por ter feito. (Eu acho).

                     Informações adicionais:
      -> O sistema foi testado e não apresentou problemas, porém se vierem a encontrar falhas, favor reportar para que eu possa manter o tópico atualizado/corrigido.
      -> Eu faço correções no sistema caso esteja errado, mas não faço adaptações pro seu servidor. Caso queira variações do sistema, favor enviar seu pedido no discord da Academia de Programação, ou em meu privado: Admin#9865.
    • By thiagobji
      Olá galerinha do TK, hoje venho trazer aqui para vocês um dos melhores e mais famoso evento da atualidade, é o famoso: War of Emperium (WOE), estou disponibilizando ele aqui de graça para vocês, bom aproveito!
      #Descrição: Este evento consiste em dominar o castelo através da destruição de alguns geradores.
      #O que possui?
      - Totalmente automatizado (Script: Abertura, Entrega do prêmio, Designação do vencedor e Encerramento).
      - Página interativa (PHP: Possui explicação do evento e os 5 últimos vencedores do castle).
      - Talkactions (Script: Comandos que informam quanto tempo falta para fechar e puxam membros para dentro do castelo).
      - Tutorial (Arquivo: Explicando passo a passo a instalação).
      - Castelo com 4 andares (Mapa).
      - Entre outras coisas….
      *OBS: Este evento só funciona em TFS 0.4.
       
      DOWNLOAD: CLICK AQUI
       
      Download Direto:
      war_of_emperium__completo.zip
      Scan: https://www.virustotal.com/gui/file/c7883cad9208371272d3609c007c2e53a669f86b64e556f90e625b10b7c6f91e/detection
       
      Créditos:
      ChaitoSoft
      Jhon
      Thiagobji
    • By Vodkart
      08/01/2017
      SISTEMA ATUALIZADO PARA 4.0:
       
       
       
       
      Mods:
    • By luanluciano93
      Olá pessoal, tudo bom? Então, estou trazendo um evento que criei: o Duca Evento. A uns 10 anos atrás joguei um ot pvp enforced que funcionava quase da mesma forma desse evento e recentemente resolvi criar um evento dessa forma ...

      Como funciona:
      • Primeiramente abre um teleport onde os jogadores que estão acima do level estipulado podem entrar (lembrando que o teleport fica aberto até o final do evento, ou seja, você pode morrer dentro do evento e entrar novamente quantas vezes quiser).
      • Ao entrar no teleport você será enviado para uma equipe: azul ou rosa (lembrando que o objetivo é você matar jogadores da outra equipe e não poderá atacar os da mesma equipe).
      • Existe uma pontuação dentro do evento, ou seja, a cada jogador que matar da outra equipe você ganha 1 duca ponto (lembrando que se você morrer você é teleportado para fora do evento e seus duca pontos zeram.)
      • A cada morte dentro do evento é atualizada uma LISTA RANK, onde é gerado um rank de acordo com a pontuação dentro do evento.
      • O evento começa ficar bom quando existem mais de 11 jogadores dentro dele, pois é quando o sistema verifica os jogadores da "lista rank" que estão nas posições de segundo a décimo primeiro (2º a 11º) e coloca eles em uma equipe diferente: a vermelha, e é ai que o "bicho pega", pois fora os outros jogadores das outras equipes, existem 10 jogadores dessa equipe, e o melhor, quem mata-los recebe 10 duca pontos.
      • Como dito acima, ao ter mais de 11 jogadores dentro do evento é criado automaticamente a equipe vermelha (2º a 11º do rank), pois bem, para quem leu certinho viu que pulamos o 1º do rank: é ai que entra a equipe verde, sim, esta equipe será composta apenas por 1 jogador, sempre o que tiver mais pontos no evento (lembrando que essa função do sistema atualiza a cada morte dentro do evento), e é claro quem mata-lo ganhará 30 pontos dentro do evento.
      • Aconselho a colocar sempre o tempo do evento superior a 30 minutos para melhor jogabilidade e rivalidade.
      • O objetivo do evento é ser do time verde ao terminar o evento e ganhar o premio (configurei para os do time vermelho tbem ganhar premio, mas inferior ao do verde).

      Observações:
      • As cores das equipes que citei são represetativas, lá você pode editar as que quiserem.
      • Um mapa opcional esta disponivel para download no tópico.
      • Não ensinarei detalhes minimos de instalação no servidor porque você deve ao menos ter uma noção básica de otserv.

      Como instalar: 

      • Primeiramente o arquivo que ficará na lib, ele é o coração do evento, tudo que você precisar configurar é nele. Nomeie de DUCA.lua: 

      • Depois na pasta creaturescripts/scripts/ crie o arquivo DUCA_creaturescripts.lua: (lembrando que as tags para colocar no creaturescripts.xml esta como comentário no começo do código)

      • Depois na pasta globalevents/scripts/ crie o arquivo DUCA_globalevents.lua: (lembrando que as tags para colocar no globalevents.xml esta como comentário no começo do código)

      • Depois na pasta movements/scripts/ crie o arquivo DUCA_movements.lua: (lembrando que as tags para colocar no movements.xml esta como comentário no começo do código)


      Espero que gostem! D  U   C  A
      ducaMap.otbm
  • Recently Browsing   0 members

    No registered users viewing this page.



×
×
  • Create New...

Important Information

Confirmação de Termo