Os Melhores
Conteúdo popular
Mostrando conteúdo com a maior reputação em 04/04/24 in todas as áreas
-
17 pontos
-
Baixei pra dar uma olhada e sinceramente tem bastante coisa errada. Primeiro: não está enviando gold, está só gerando log Segundo: $OnlineGM ao invés de retornar apenas o ID do personagem, está retornando também o “chl”. Terceiro: mesmo que a função de enviar gold estivesse correta, não funcionaria pois precisa do ID da conta, e não do personagem.. Quarto: Mesmo que a pessoa configure a quantidade de gold enviada na config.php, o arquivo pw_chatbonus.php não está puxando da config.php, então tem que alterar lá também. Correções básicas, mas que faz com que o script não funcione. Tirando os erros básicos, parabéns por disponibilizar o script. Dá pra fazer bastante coisa, inclusive adicionar envio de correio, deixar pra usar apenas 1x por conta, etc. Segue o arquivo pw_chatbonus.php corrigido: pw_chatbonus.php11 pontos
-
4 pontos
-
Créditos @xDarK 1. **Acesso ao Servidor:** - Use um cliente SSH ou FTP para se conectar ao servidor. 2. **Localize o Arquivo:** - Navegue até o diretório `/home/gamed`. 3. **Abra o Arquivo `script.lua`:** - Use um editor de texto, como Nano ou Vim: ``` nano /home/gamed/script.lua ``` 4. **Adicione o Código:** - Cole o seguinte código acima da linha `mylogfunc("LUA_OTHER_EDITOR: --OK-- ")`: --Refino Máximo local refino_max = 12 --Refino 1 Click basta colocar o mesmo valor do refino_max no refino por_click local refino_por_click = 1 -- Valor permitido 1 á 12 --Não editar abaixo disso if refino_max < refino_por_click then refino_por_click = refino_max end CharTable(0x08292348, refino_max -1) IntTable(0x0829259A, refino_por_click) IntTable(0x082925CC, refino_por_click) 5. **Salve e Feche o Arquivo:** - No Nano, pressione `Ctrl + O` para salvar e `Ctrl + X` para sair. ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬ Tempo de duração itens no chão IntTable(0x811A32E,300) -- Tempo de duração do drop em segundos ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬ Hiper Exaustão de Exp IntTable(0x08208DBD,3686400) --Tempo em segundos IntTable(0x08208DC9,3686400) --Tempo em segundos ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬ Hyper ativação CharTable(0x08209358,10)--Valor 10 e Padrão ativação do hyper so muda valor CharTable(0x08208C05,9)--Valor 9 e Padrão ativação do hyper so muda valor sempre -1 ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬ soltar a daimon -- Tempo para soltar a daimon IntTable(0x82DFE97,86400) -- Editar esse valor de 86400 para o tempo desejado ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬ Adicionado para enviar mensagem de sistema atualizado colar diretamente acima da linha mylogfunc("EventOnReloadScript: --OK-- ") no arquivo script.lua: game__BroadcastChat(-1, string.char(9), 'Sistema Atualizado')3 pontos
-
@chrisffs valeu por compartilhar com a comunidade! Outro ponto > Para melhor otimizar, não precisa verifica se o servidor está online a cada mensagem enviada, pós se está sendo enviado alguma linha para o .php é pq o servidor já está online de fato, a verificação com o strpos já é o suficiente para continuar com o script3 pontos
-
2 pontos
-
2 pontos
-
2 pontos
-
É que você já tinha baixado a versão que postei errado, logo depois a mesma foi atualizada com os erros citados já corrigidos. Obrigado por coloborar, abraço2 pontos
-
Fala devs de Perfect World. Hoje eu estou aqui pra apresentar a minha mais nova api de prêmios para Perfect World. Api feita em Node com Type Script Features: - Sorteio de Itens ou Gold - Logado Premiado Por Hora - Logado Premiado Diário - Logado Premiado Semanal - Logado Premiado Mensal - Sorteios dinâmicos por gm via chat (requer participação dos jogadores também via chat) - Registro de Prêmios no discord - Comandos de consultas de prêmios por nick - Comando dos últimos prêmios dividido por categoria Meu discord: kaiquebsl || outros contatos nos links ⬇ Meu site de skins personalizadas pra PW ou Saint Seiya Online: [Conteúdo Oculto] Marketing e desenvolvimento para servidores? [Conteúdo Oculto]2 pontos
-
2 pontos
-
PWSERVER 1.5.5 COM ESTIO, ATALHOS, SCRIPT.LUA E AFINS. LINK QUEBRADO!1 ponto
-
1 ponto
-
INTERFACE ESMERALDA 1.5.5 EDITADA, CONTEM SOMENTE 3 RAÇAS NA CRIAÇÃO . INTERFACE ESMERALDA SEM CLASSES.zip1 ponto
-
Bom, como devem saber, esses arquivos ai já vazaram tem um bom tempo e até hoje eu vejo gente querendo tirar vantagem e cobrar por esses arquivos ou para alterar algo neles. Tudo que você vai precisar substituir dos arquivos da Server Side: GS e GLINKD. Tudo que você vai precisar substituir dos arquivos do Client Side: elementclient.exe e adicionar o arquivo 155.dll na pasta element. Detalhes importantes ! Para funcionamento dos atalhos no inventário é necessário que você puxe os ícones e chame as funções na sua interfaces.pck ou se preferir pode usar uma interfaces que já tenha isso, todas são a mesma coisa só tem alterações visuais em algumas. Para funcionamento da lojinha OFF, é necessário adicionar o botão também na interfaces.pck com a função e um item no inventário com o ID: 65532. Possui mais algumas funções também como: Ganhar chi ao meditar, reset de DG pelo botão, nick colorido entre outros ai, faz tempo que não uso esses arquivos então não me recordo bem de todas as funções que tem. No mais é isso, caso tenha alguma dúvida ou eu tenha esquecido de algo, me corrige ai ou me chama ai no pv ou no discord: ScroL#6530 FILES 155 COM ATALHOS E MAIS.rar1 ponto
-
Se seu RAE Editor de Elements não abre por nada, utilize este link: RAE_2023.zip1 ponto
-
Primeira versão do nick colorido 1.5.5 que usei no pw tiger 2018~2019 disponibilizo sem edições, confira a data .data 155nick.rar1 ponto
-
1 ponto
-
import Foundation import Security // 生成RSA密钥对 func generateRSAKeyPair() throws -> SecKey { let parameters: [String: Any] = [ kSecAttrKeyType as String: kSecAttrKeyTypeRSA, kSecAttrKeySizeInBits as String: 2048 ] var error: Unmanaged<CFError>? guard let privateKey = SecKeyCreateRandomKey(parameters as CFDictionary, &error) else { throw error!.takeRetainedValue() as Error } return privateKey } // 使用公钥RSA加密文件 func encryptFile(withPublicKey publicKey: SecKey, inputFile: URL, outputFile: URL) throws { let inputData = try Data(contentsOf: inputFile) let encryptedData = SecKeyCreateEncryptedData(publicKey, .rsaEncryptionOAEPSHA512, inputData as CFData, nil)! try encryptedData.write(to: outputFile) } // 使用私钥RSA解密文件 func decryptFile(withPrivateKey privateKey: SecKey, inputFile: URL, outputFile: URL) throws { let encryptedData = try Data(contentsOf: inputFile) let decryptedData = SecKeyCreateDecryptedData(privateKey, .rsaEncryptionOAEPSHA512, encryptedData as CFData, nil)! try decryptedData.write(to: outputFile) } // 生成RSA密钥对 let privateKey = try generateRSAKeyPair() let publicKey = SecKeyCopyPublicKey(privateKey)! // 指定输入和输出文件路径 let inputURL = URL(fileURLWithPath: "elements.data") let encryptedOutputURL = URL(fileURLWithPath: "encrypted_elements.data") let decryptedOutputURL = URL(fileURLWithPath: "decrypted_elements.data") // 使用公钥RSA加密文件 do { try encryptFile(withPublicKey: publicKey, inputFile: inputURL, outputFile: encryptedOutputURL) print("文件已成功加密!") } catch { print("加密文件时发生错误:\(error.localizedDescription)") } // 使用私钥RSA解密文件 do { try decryptFile(withPrivateKey: privateKey, inputFile: encryptedOutputURL, outputFile: decryptedOutputURL) print("文件已成功解密!") } catch { print("解密文件时发生错误:\(error.localizedDescription)") }1 ponto
-
1 ponto
-
1 ponto
-
Boa tarde, estou trazendo hoje aqui um pacote contendo 50 mapas. para você usar como você quiser, use a sua imaginação… todos os mapas contém as duas partes. tanto cliente-side/server-side. não postei fotos por conta de ser 50 mapas. mas há tempos ele roda na mão de um pessoal, porém ate hoje não disponibilizaram então resolvi trazer para vocês! Link de Download: [Conteúdo Oculto] Link de Download opção 2 : [Conteúdo Oculto] Quem for testando o mapa e quiser postar fotos no comentário será otimo.1 ponto
-
1 ponto
-
Para isso, precisamos de um IDA e de qualquer editor hexadecimal (010 editor, por exemplo). Importante: O valor da variável responsável pelo número de moedas está definido como int32 (o número máximo é 2.147.483.647). Nas capturas de tela, os valores já foram alterados para o número máximo de moedas de 2.100.000.000. Comece alterando os valores no GS. Procure (usando o IDA) valores semelhantes nas seguintes funções (nas capturas de tela, eles já foram alterados para os novos valores): A pesquisa encontrará 2 funções gplayer_imp::gplayer_imp(void). Você precisará alterá-las exatamente na ordem em que estão no IDA. 1. Primeiro, alteramos o valor na primeira função gplayer_imp::gplayer_imp(void). Usando o editor hexadecimal, percorra o endereço desse valor e altere-o em int32 de 200.000.000 (C2 EB 0B em hexadecimal) para o valor desejado. [Conteúdo Oculto] Algo assim (novamente, na captura de tela, já foi alterado para 2100000000): [Conteúdo Oculto] 2. Em seguida, encontre e altere o valor na segunda função de forma semelhante gplayer_imp::gplayer_imp(void) [Conteúdo Oculto] 3. Em seguida, localize a função team_control_member::PickupTeamMoney. Haverá dois valores. Altere ambos. [Conteúdo Oculto] 4. Em seguida, vem a função team_control_leader::PickupTeamMoney. Ela é semelhante à função anterior. 2 valores - altere ambos. [Conteúdo Oculto] 5. Por fim, localize a função GNET::Handle_AuctionOpen. Encontre o valor como na captura de tela. Altere-o no hexadecimal. [Conteúdo Oculto] Depois disso, você precisará alterar os valores em elementclient.exe, gamedbd e gdeliveryd. Nesses arquivos, basta usar o editor hexadecimal para localizar todos os valores int32 == 200000000 e substituí-los pelo valor necessário (no 010, isso pode ser feito, por exemplo, por meio do Replace All ou manualmente). creditos: [Conteúdo Oculto]1 ponto
-
1 ponto
-
1 ponto
-
Preço - Mensalidade: R$ 100 - Venda: a negociar Algumas funções interessantes que o painel possui: - Visualizador de inventário dos personagens e informações dos itens. - Envio de emblema de clã com update 100% automático para launcher do alex ou cpw. - Sistema de metas de donate, com recompensa em itens/cash, podendo ser de resgate único ou diário. - Missão diária (compartilhe e ganhe) - Full meridiano - Full títulos - Gerenciador para controlar os parâmetros do servidor (sutra, proibir correio e etc.) - Enviar item em massa - Enviar cash em massa - Rastrear item em todos os personagens do jogo (mochila, banqueiro e equipamentos) de forma otimizada - Ver personagens online - Ativar/Desativar trigger em qualquer mapa - Listar/ver todos os personagens do servidor - Listar/ver todas as guilds do servidor com contagem de ips únicos - Resgate do item de lance para TW apenas para guilds predefinidas - Resgate de Contato Imediato e Chamado Urgente para Marechais de clã, semanalmente - Remover senha do banqueiro com confirmação de email - Teletransportar personagem (várias cidades disponíveis) - Proibir criação de contas com alias ([email protected]) - Limitar provedores de email permitidos ao criar conta - Permitir jogadores verem logs dos seus próprios personagens ingame pelo painel - Sistema de pré registro - Proibir login de jogadores no painel com aviso. (útil para quando o servidor ainda está para lançar) - Sistema de permissões para administradores do painel - Adicionar GM a uma conta podendo escolher suas permissões - Códigos promocionais com sistema de cashback para o dono - Permitir o usuário aplicar 2 cupons em uma única doação (as porcentagens somam) - Escolher entre doação por pacotes pré definidos ou preço definido pelo usuário - Gráfico de doações mensais - Gráfico de doações mensais individual para cada usuário - Sistema de Pincode - Preencher dados do item via XML do RAE ao enviar itens - Buscar contas por IP de login1 ponto
-
#!/bin/bash # Define as variaveis de cores RED='\e[91m' GREEN='\e[92m' YELLOW='\e[93m' RESET='\e[0m' # Atualiza o sistema echo -e "${YELLOW}Atualizando o sistema...${RESET}" sudo apt-get update -y >/dev/null 2>&1 echo -e "${GREEN}Sistema atualizado.${RESET}" # Verifica se o sistema está executando Ubuntu 20.04 if [ "$(lsb_release -rs)" != "20.04" ]; then echo -e "${RED}Este script so pode ser executado no Ubuntu 20.04.${RESET}" exit 1 fi # Função para verificar se um pacote está instalado package_installed() { dpkg -s "$1" >/dev/null 2>&1 && return 0 || return 1 } # Função para instalar um pacote install_package() { if dpkg --print-architecture | grep -q "i386"; then PACKAGE="$1:i386" else PACKAGE="$1" fi if package_installed "$PACKAGE"; then echo -e "${GREEN}O pacote $PACKAGE ja esta instalado.${RESET}" else echo -e "${YELLOW}Instalando o pacote $PACKAGE...${RESET}" if sudo apt-get install -y "$PACKAGE" >/dev/null 2>&1; then echo -e "${GREEN}O pacote $PACKAGE foi instalado com sucesso.${RESET}" else echo -e "${RED}Falha ao instalar o pacote $PACKAGE.${RESET}" exit 1 fi fi } # Função para configurar mariadb e criar um novo usuario configure_mariadb() { echo -e "${YELLOW}Configurando MariaDB...${RESET}" # Gera uma senha aleatoria PASSWORD=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 13 ; echo '') # Executa comandos SQL sudo mysql -u root <<-EOF >/dev/null 2>&1 CREATE USER 'admin'@'%' IDENTIFIED BY '$PASSWORD'; GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%'; FLUSH PRIVILEGES; EOF echo -e "${GREEN}Usuario 'admin' criado.${RESET}" # Salva o usuario e senha em um arquivo na pasta raiz do linux echo "Usuario: admin" | sudo tee /root/mariadb_admin_credentials.txt >/dev/null 2>&1 echo "Senha: $PASSWORD" | sudo tee -a /root/mariadb_admin_credentials.txt >/dev/null 2>&1 echo -e "${GREEN}O usuario e a senha foram salvos em /root/mariadb_admin_credentials.txt.${RESET}" # Configura mariadb para permitir conexoes remotas echo "bind-address = 0.0.0.0" | sudo tee -a /etc/mysql/mariadb.conf.d/50-server.cnf >/dev/null 2>&1 sudo service mariadb restart echo -e "${GREEN}MariaDB configurado para permitir conexoes remotas.${RESET}" } # Lista de pacotes a serem instalados system_tools=("htop" "curl" "wget" "ipset" "net-tools" "tzdata" "ntpdate") development=("make" "gcc" "g++" "libssl-dev" "libcrypto++-dev" "libpcre3" "libpcre3-dev" "libtesseract-dev" "libx11-dev" "gcc-multilib" "libc6-dev" "build-essential" "gcc-multilib" "g++-multilib" "libtemplate-plugin-xml-perl" "libxml2-dev" "libxml2") java_mono=("openjdk-11-jre" "mono-complete") archive_tools=("p7zip-full") libraries=("libpcap-dev") database=("mariadb-server" "mariadb-client") php_apache=("apache2" "php7.4" "php-cli" "php-common" "php-curl" "php-gd" "php-mbstring" "php-mysql" "php-xml" "php-xmlrpc" "php-soap" "php-intl" "php-zip" "php-bcmath" "php-json" "php-tidy") # Instala ferramentas do sistema for package in "${system_tools[@]}"; do install_package "$package" done # Instala ferramentas de desenvolvimento for package in "${development[@]}"; do install_package "$package" done # Instala Java e Mono for package in "${java_mono[@]}"; do install_package "$package" done # Instala ferramentas de arquivo for package in "${archive_tools[@]}"; do install_package "$package" done # Instala bibliotecas for package in "${libraries[@]}"; do install_package "$package" done # Instala banco de dados for package in "${database[@]}"; do install_package "$package" done # Instala PHP e Apache for package in "${php_apache[@]}"; do install_package "$package" done # Configura MariaDB e cria um novo usuario configure_mariadb service apache2 restart echo -e "${GREEN}Instalacao concluida!${RESET}" install-ubuntu20.04.sh1 ponto
-
1 ponto
-
1 ponto
-
#!/usr/bin/perl use strict; use warnings; use POSIX ":sys_wait_h"; use Socket; use IO::Handle; my $limite_conexoes = 50; my $tempo_bloqueio = 4 * 3600; my %conexoes_por_ip; my $arquivo_ban = "ban.txt"; system("iptables -F"); system("iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT"); system("iptables -A INPUT -j DROP"); system("iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above $limite_conexoes -j REJECT --reject-with tcp-reset"); my $socket; socket($socket, PF_INET, SOCK_STREAM, getprotobyname('tcp')) or die ": $!"; setsockopt($socket, SOL_SOCKET, SO_REUSEADDR, 1) or die ": $!"; my $endereco = sockaddr_in(0, INADDR_ANY); bind($socket, $endereco) or die ": $!"; listen($socket, SOMAXCONN) or die ": $!"; while (1) { my $cliente = accept(NOVACONEXAO, $socket); my ($porta_cliente, $endereco_cliente) = sockaddr_in($cliente); my $ip_cliente = inet_ntoa($endereco_cliente); $conexoes_por_ip{$ip_cliente}++; if ($conexoes_por_ip{$ip_cliente} > $limite_conexoes) { bloquear_ip($ip_cliente); } print "Conexão de $ip_cliente na porta $porta_cliente aceita.\n"; close(NOVACONEXAO); } close($socket); sub bloquear_ip { my $ip = shift; open(my $ban_fh, '>>', $arquivo_ban) or die "Não foi possível abrir o arquivo $arquivo_ban: $!"; print $ban_fh "$ip\n"; close($ban_fh); system("iptables -A INPUT -s $ip -j DROP"); print "IP $ip bloqueado por $tempo_bloqueio segundos.\n"; sleep($tempo_bloqueio); system("iptables -D INPUT -s $ip -j DROP"); print "IP $ip desbloqueado.\n"; } DDOS Simulado com a ferramenta:Unicorn is a Win32 UDP flooding/DoS (Denial of Service)1 ponto
-
1 ponto
-
Ferramenta desenvolvida por Joslian publicada gratuitamente, utilizada para gerar tw em vários dias da semana. universalmanagerd.rar1 ponto
-
1 ponto
-
1 ponto
-
Sistema Operaciona: Linux Ubuntu versão 14/16 1° Instale o WinSCP e o PuTTYgen 3° Logue-se na vps usando o programa PuTTYgen ou WinSCP anexado : 2° Coloque os dados da sua VPS e execulte os comandos abaixo Comandos Usados apt-get update apt-get install -y apache2 apt-get install -y mysql-server apt-get install -y openjdk-7-jre apt-get install -y php5 apt-get install -y php5-mysql apt-get install -y phpmyadmin sudo apt-get install -y libapache2-mod-php5 dpkg --add-architecture i386 apt-get update apt-get install -y libgtk2.0-0:i386 libpangox-1.0-0:i386 libpangoxft-1.0-0:i386 libidn11:i386 gstreamer0.10-pulseaudio:i386 gstreamer0.10-plugins-base:i386 gstreamer0.10-plugins-good:i386 sudo apt-get update sudo apt-get install libssl1.0.0 libssl-dev cd /lib/x86_64-linux-gnu sudo ln -s libssl.so.1.0.0 libssl.so.10 sudo ln -s libcrypto.so.1.0.0 libcrypto.so.10 Na versão 16 alguns comandos da erro, mas muda pouca coisa, segue: apt-get install -y openjdk-9-jre apt-get install -y php apt-get install -y php-mysql sudo apt-get install -y libapache2-mod-php Créditos:revolts putty-64bit-0.78-installer.msi WinSCP-5.21.7-Setup.exe1 ponto
-
1 ponto
-
1 ponto
-
1 ponto
-
Fala guys, esses plugins estão perdidos por ai, muito difícil achar até em outros fóruns vou postar pra vocês :D Angelica2_Plugins_3ds_Max.rar1 ponto
-
offsets.txt Offsets com algumas a mais que tenho por aqui (Adicionei as que tem no seu arquivo)1 ponto
-
1 ponto
-
1 ponto
-
Estou compartilhando um NPC que acho louco. PWServer usada 1.5.1 v101 guitarhero.rar1 ponto
-
Abre o gfactiond no editor de hex e procura por número inteiro 359999, modifique para o tempo que deseja (em segundos).1 ponto
-
1 ponto
-
Bom esse sistema eu paguei ao Web e programador Frank para fazer pra mim anos atrás quando eu usava versões antigas de pwserv, e cliente que não tem a opção de alterar nick com item na loja. Eu nunca fiz a instalação, sempre foi frank que instalava nas minhas maquinas porém tem um tutorial na pasta de como configurar, estou postando ai totalmente free. 1 - Edite as configurações do banco de dados em ./application/config/database.php * Altere as seguintes linhas: 'hostname', 'username', 'password', 'database' 2 - Na mesma pasta altere, as primeras 4 configurações no arquivo config.php * a configuração "base_url" deve conter a url para a pasta da aplicação com uma barra '/' no final. ex: www.exemplo.com/alteradordenick/ IMPORTANTE: É necessário que o ativo mod_rewrite esteja ativo para o perfeito funcionamento do código. alterador de nick base64.tgz Alterador de nick md5.rar1 ponto
-
1 ponto
-
1 ponto