Quantcast
Channel: SA-MP Forums
Viewing all articles
Browse latest Browse all 18226

[Tutorial] SA-MP 0.3.8: Adicionando skins, objetos e usando Redirect()

$
0
0
SA-MP 0.3.8
Tutoriais de como adicionar skin, objeto e utilizar o Redirect()
É necessário está utilizando o SA-MP 0.3.8
  • Como usar o adicionar skins server-side
    • Você deverá abrir a pasta models dentro do seu sa-mp server.

    • Ao abrir tal pasta você deverá adicionar o .dff e .txd da skin desejada.

    • Após coloca-los na pasta models do seu sa-mp server, você deverá editar o arquivo artconfig.txt, localizado nesta mesma pasta.

      Use o parametro AddCharModel(baseid, newid, dffname[], txdname[]); dentro do artconfig.txt.
      • baseid - Será a skin que ele irá copiar os movimentos e falas, dentre as 311 skins disponíveis (0-311).
      • newid - Deverá ser o novo ID da skin, entre 20000 e 30000 (ex: 20012).
      • dffname[] - Deverá ser o caminho do arquivo .dff desta skin a partir da pasta models dentro do seu sa-mp server.
      • txdname[] - Deverá ser o caminho do arquivo .txd desta skin a partir da pasta models dentro do seu sa-mp server.

      Ex:
      Code:

      AddCharModel(280, 25000, "police_asiatic.dff", "police_asiatic.txd");


    • Após configurar o artconfig.txt vá até o server.cfg e coloque o seguinte parâmetro no final do arquivo (caso ainda não tenha feito):
      Code:

      useartwork 1
    • Ligue seu sa-mp server e entre no servidor.
    • As skins serão baixadas assim que adentrar dentro do servidor.

    • Todas as skins são baixadas pelo client-side e serão colocadas na pasta GTA San Andreas User Files\SAMP\cache\IP_Do_Servidor\ do jogador. Os arquivos possuem nomes diferentes que são definidos pelo próprio SA-MP server, utilizando alguma criptografia para defini-los.
  • Como usar o adicionar objetos no server-side
    • Você deverá abrir a pasta models dentro do seu sa-mp server.

    • Ao abrir tal pasta você deverá adicionar o .dff e .txd do objeto desejado.

    • Após coloca-los na pasta models do seu sa-mp server, você deverá editar o arquivo artconfig.txt, localizado nesta mesma pasta.

      Use o parametro AddSimpleModel(virtualworld, baseid, newid, dffname[], txdname[]); dentro do artconfig.txt.
      • virtualworld - Será o virtual world onde esse objeto estará disponível. Você poderá colocar como -1 para ser disponível em qualquer virtual world.
      • baseid - É o id do objeto que terá os parâmetros nativos copiados para o novo objeto.
      • newid - É o novo id do objeto a ser inserido no jogo, que deverá está entre -1000 e -30000 (ex: -24121).
      • dffname[] - Deverá ser o caminho do arquivo .dff deste objeto a partir da pasta models dentro do seu sa-mp server.
      • txdname[] - Deverá ser o caminho do arquivo .txd deste objeto a partir da pasta models dentro do seu sa-mp server.

      Ex:
      Code:

      AddSimpleModel(-1, 18865, -1000, "AxomCamPOLICE1.dff", "AxomCamPOLICE1.txd");


    • Após configurar o artconfig.txt vá até o server.cfg e coloque o seguinte parâmetro no final do arquivo (caso ainda não tenha feito):
      Code:

      useartwork 1
    • Ligue seu sa-mp server e entre no servidor.
    • Os objetos serão baixadas assim que adentrar dentro do servidor.

    • Todos os objetos são baixadas pelo client-side e serão colocadas na pasta GTA San Andreas User Files\SAMP\cache\IP_Do_Servidor\ do jogador. Os arquivos possuem nomes diferentes que são definidos pelo próprio SA-MP server, utilizando alguma criptografia para defini-los.
  • Como usar o Redirect()
    • Todos os arquivos utilizados no Redirect deverão ser iguais aos arquivos na pasta models/ no sa-mp server.
    • Você deverá abrir o código fonte (gamemode) de seu servidor.
    • Posicione a função OnPlayerRequestDownload(playerid, type, crc) em alguma posição do gamemode, sugiro acima do OnGameModeInit para facilitar.
      Code:

                              public OnPlayerRequestDownload(playerid, type, crc)
                              {
                             
                                      return 1;
                              }

    • Crie uma variável global sem tamanho definido, acima da public com o nome SERVER_DOWNLOAD.
      Code:

                              new SERVER_DOWNLOAD[];
                              public OnPlayerRequestDownload(playerid, type, crc)
                              {
                             
                                      return 1;
                              }

    • Declare o URL do local onde estão os arquivos do seu servidor em seu site na variável criada. Para o exemplo, utilizarei o seguinte URL http://www.dev-wil.com/downloads/038/models.
      Code:

                              new SERVER_DOWNLOAD[] = "http://www.dev-wil.com/downloads/038/models";
                              public OnPlayerRequestDownload(playerid, type, crc)
                              {
                             
                                      return 1;
                              }

    • Agora, crie os parâmetros do seu OnPlayerRequestDownload para que ele substitua o download via sa-mp server pelo do seu site. Coloque uma condição para checar se o jogador está conectado. Crie condições com os types DOWNLOAD_REQUEST_TEXTURE_FILE e DOWNLOAD_REQUEST_MODEL_FILE para definir a função que irá buscar a textura ou o arquivo de modelo, respectivamente.
      Code:

                              new SERVER_DOWNLOAD[] = "http://www.dev-wil.com/downloads/038/models";
                              public OnPlayerRequestDownload(playerid, type, crc)
                              {
                                      if(!IsPlayerConnected(playerid))
                                              return 0;
                                     
                                      if(type == DOWNLOAD_REQUEST_TEXTURE_FILE)
                                              {}
                                      else if(type == DOWNLOAD_REQUEST_MODEL_FILE)
                                              {}
                                      return 1;
                              }

    • Adicione as funções FindTextureFileNameFromCRC(crc, retstr[], retstr_size) e FindModelFileNameFromCRC(crc, retstr[], retstr_size)[/b] para o sa-mp server escrever o nome dos arquivos de textura e modelo, respectivamente, a serem encontrados no servidor de web dentro das condições com o type.
      Code:

                              new SERVER_DOWNLOAD[] = "http://www.dev-wil.com/downloads/038/models";
                              public OnPlayerRequestDownload(playerid, type, crc)
                              {
                                      if(!IsPlayerConnected(playerid))
                                              return 0;
                                     
                                      if(type == DOWNLOAD_REQUEST_TEXTURE_FILE)
                                              FindTextureFileNameFromCRC(crc, retstr[], retstr_size);
                                      else if(type == DOWNLOAD_REQUEST_MODEL_FILE)
                                              FindModelFileNameFromCRC(crc, retstr[], retstr_size);
                                      return 1;
                              }

    • Crie uma variável local para substituir o retstr[] e altere o retstr_size para sizeof(nome da variavel)..
      Code:

                              new SERVER_DOWNLOAD[] = "http://www.dev-wil.com/downloads/038/models";
                              public OnPlayerRequestDownload(playerid, type, crc)
                              {
                                      if(!IsPlayerConnected(playerid))
                                              return 0;
                                             
                                      new filename[64];
                                     
                                      if(type == DOWNLOAD_REQUEST_TEXTURE_FILE)
                                              FindTextureFileNameFromCRC(crc, filename, sizeof(filename));
                                      else if(type == DOWNLOAD_REQUEST_MODEL_FILE)
                                              FindModelFileNameFromCRC(crc, filename, sizeof(filename));
                                             
                                      return 1;
                              }

    • As funções de FindTextureFileNameFromCRC e FindModelFileNameFromCRC irão retornar um valor 1 para caso seja achada ou 0 para caso não seja, crie uma variável para identificar tal ação e prossiga para o próximo passo. Lembre-se de colocar a variável para ser igual a função de localizar os arquivos.
      Code:

                              new SERVER_DOWNLOAD[] = "http://www.dev-wil.com/downloads/038/models";
                              public OnPlayerRequestDownload(playerid, type, crc)
                              {
                                      if(!IsPlayerConnected(playerid))
                                              return 0;
                                             
                                      new filename[64], filefound;
                                     
                                      if(type == DOWNLOAD_REQUEST_TEXTURE_FILE)
                                              filefound = FindTextureFileNameFromCRC(crc, filename, sizeof(filename));
                                      else if(type == DOWNLOAD_REQUEST_MODEL_FILE)
                                              filefound = FindModelFileNameFromCRC(crc, filename, sizeof(filename));
                                             
                                      return 1;
                              }

    • Agora crie uma condição para que caso a variável tenha o valor 1 ela prossiga com algumas informações.
      Code:

                              new SERVER_DOWNLOAD[] = "http://www.dev-wil.com/downloads/038/models";
                              public OnPlayerRequestDownload(playerid, type, crc)
                              {
                                      if(!IsPlayerConnected(playerid))
                                              return 0;
                                             
                                      new filename[64], filefound;
                                     
                                      if(type == DOWNLOAD_REQUEST_TEXTURE_FILE)
                                              filefound = FindTextureFileNameFromCRC(crc, filename, sizeof(filename));
                                      else if(type == DOWNLOAD_REQUEST_MODEL_FILE)
                                              filefound = FindModelFileNameFromCRC(crc, filename, sizeof(filename));
                                             
                                      if(filefound)
                                              {}
                                     
                                      return 1;
                              }

    • Declare uma variável local para texto com o tamanho de 256. Essa variável será responsável por armazenar a URL final do arquivo, contendo a URL principal e a localização do arquivo nesse endereço. Crie uma formtação para tal variável, inserindo o SERVER_DOWNLOAD e o filename no texto.
      Code:

                              new SERVER_DOWNLOAD[] = "http://www.dev-wil.com/downloads/038/models";
                              public OnPlayerRequestDownload(playerid, type, crc)
                              {
                                      if(!IsPlayerConnected(playerid))
                                              return 0;
                                             
                                      new filename[64], filefound, url_final[256];
                                     
                                      if(type == DOWNLOAD_REQUEST_TEXTURE_FILE)
                                              filefound = FindTextureFileNameFromCRC(crc, filename, sizeof(filename));
                                      else if(type == DOWNLOAD_REQUEST_MODEL_FILE)
                                              filefound = FindModelFileNameFromCRC(crc, filename, sizeof(filename));
                                             
                                      if(filefound)
                                      {
                                              format(url_final, sizeof(url_final), "%s/%s", SERVER_DOWNLOAD, filename);
                                      }
                                     
                                      return 1;
                              }

    • Agora abaixo da formatação insira a função RedirectDownload(playerid, url[]), onde o url[] é a variável que formatamos.
      Code:

                              new SERVER_DOWNLOAD[] = "http://www.dev-wil.com/downloads/038/models";
                              public OnPlayerRequestDownload(playerid, type, crc)
                              {
                                      if(!IsPlayerConnected(playerid))
                                              return 0;
                                             
                                      new filename[64], filefound, url_final[256];
                                     
                                      if(type == DOWNLOAD_REQUEST_TEXTURE_FILE)
                                              filefound = FindTextureFileNameFromCRC(crc, filename, sizeof(filename));
                                      else if(type == DOWNLOAD_REQUEST_MODEL_FILE)
                                              filefound = FindModelFileNameFromCRC(crc, filename, sizeof(filename));
                                             
                                      if(filefound)
                                      {
                                              format(url_final, sizeof(url_final), "%s/%s", SERVER_DOWNLOAD, filename);
                                              RedirectDownload(playerid, url_final);
                                      }
                                      return 1;
                              }

    • Ligue o SA-MP Server e entre no jogo, você notará que os arquivos serão baixados mais rapidamente pelo client-side dessa forma.
    • Caso ocorra que no lugar da porcentagem apareça o erro (22) HTTP Response co... significará que o caminho indicado para o arquivo está errado ou diferente do sa-mp server. Faça um debug e descubra o erro.

Se você tiver alguma dúvida, comente no tópico. Se você encontrar algum erro comente ou envie via MP.

Viewing all articles
Browse latest Browse all 18226

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>