Portal SAMP
[Tutorial] [0.3.DL] Adicionando skins, objetos e usando Redirect() - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Guias e Tutoriais (https://portalsamp.com/forumdisplay.php?fid=7)
+--- Tópico: [Tutorial] [0.3.DL] Adicionando skins, objetos e usando Redirect() (/showthread.php?tid=119)



[0.3.DL] Adicionando skins, objetos e usando Redirect() - Smyle - 01/10/2020

Esse tutorial foi originalmente retirado do fórum SAMP. Tomei a liberdade de juntar alguns passos a outros porque a formatação do tópico foi difícil.


Créditos ao autor original: @willttoonn (Wil)







SA-MP 0.3.DL
Tutoriais de como adicionar skin, objeto e utilizar o 'Redirect()'
* É necessário estar utilizando o SA-MP 0.3.DL







  • Como adicionar skins server-side 

          

           1. Você deverá abrir a pasta 'models' dentro do seu SA-MP  Server.



           2. Ao abrir a pasta, você deverá adicionar o .dff e o .txd da skin desejada.



           3. Após colocar na pasta 'models' do seu SA-MP Server, você deverá editar o arquivo 'artconfig.txt' que está localizado na mesma pasta.



                - Use o parâmetro 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 (e.g: 20031);

                       • dffname[] - Deverá ser o caminho do arquivo .dff desta skin que foi adicionado anteriormente na pasta 'models'.

                       • txdname[] - Deverá ser o caminho do arquivo .txd dessa skin que foi adicionado anteriormente na pasta 'models'.

                - Exemplos:


Código:
AddCharModel(119, 20031, "police_asiatic.dff", "police_asiatic.t);


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


Código:
useartwork 1


            5. Ligue seu servidor (SA-MP Server) e entre no servidor.

                 - As skins serão baixadas assim que você conectar no servidor.

                 - Todas 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.





  • Como adicionar objetos server-side

            1. Você deverá abrir a pasta 'models' dentro do seu SA-MP Server;
               
               2. Você deverá adicionar o .dff e o .txd dentro dessa mesma pasta;

               3. Após colocá-los na pasta 'models', você deverá editar o arquivo 'artconfig.txt', localizado nesta pasta;

                      - Use o parâmetro AddSimpleModel(virtualworld, baseid, newid, dffname[], txdname[]); dentro do arquivo 'artconfig.txt'.

                              • virtualworld - Será o virtual world onde este objeto estará disponível. Use '-1' para ser disponível em todos virtual worlds.

                              • baseid - Será o ID do objeto que terá os parâmetros nativos copiados para este novo objeto.

                              • newid - Será o ID do novo objeto a ser inserido no jogo, e deverá ser entre -1000 e -30000 (e.g: -24320).

                              • dffname[] - Deverá ser o caminho do arquivo .dff deste objeto que foi inserido anteriormente no arquivo 'artconfig.txt'.

                              • txdname[] - Deverá ser o caminho do arquivo .txd deste objeto que foi inserido anteriormente no arquivo 'artconfig.txt'.


                      - Exemplos:


Código:
AddSimpleModel(-1, 18865, -24320, "AxonCamPOLICE1.dff", "AxonCamPOLICE1.txd");


             4. Após configurar o 'artconfig.txt', acesse o arquivo 'server.cfg' e adicione o seguinte parâmetro no final se já não existir:


Código:
useartwork 1


                5. Ligue o seu servidor; os arquivos do objeto serão baixados pelo client-side assim que você se conectar.

                        - O arquivo ficará salvo no mesmo endereço de pastas que foi citado na seção anterior do tutorial.


  • Como usar o Redirect()
              
              * Todos arquivos usados no Redirect() deverão ser iguais aos arquivos na pasta 'models' no SA-MP Server

                1. Você deverá abrir o código-fonte (gamemode) do seu servidor.
     
                2. Posicione a função OnPlayerRequestDownload(playerid, type, crc) em alguma posição do seu gamemode.

Código:
public OnRequestDownload(playerid, type, crc) {
   
    return 1;
}


               3. Crie uma variável global sem tamanho definido, acima da função, com o nome SERVER_DOWNLOAD e declare o local "url" de download.
                      
                     - Como exemplo, utilizarei o seguinte URL: http://www.dev-wil.com/downloads/03dl/models

Código:
new SERVER_DOWNLOAD[] = "http://www.dev-wil.com/downloads/03dl/models";
public OnRequestDownload(playerid, type, crc) {

    return 1;
}

              4. Agora, crie os parâmetros dessa função para que ela substitua o download via SA-MP Server para o do seu website.
                      - Adicione uma condição para checar se o player está conectado;
                      - Adicione condições com os types DOWNLOAD_REQUEST_TEXTURE_FILE e DOWNLOAD_REQUEST_MODEL_FILE para definir a função que irá buscar textura ou o modelo, respectivamente.

Código:
new SERVER_DOWNLOAD[] = "http://www.dev-wil.com/downloads/03dl/models";
public OnRequestDownload(playerid, type, crc) {
     if(!IsPlayerConnected(playerid)) return 0;

     if(type == DOWNLOAD_REQUEST_TEXTURE_FILE) {}

     if(type == DOWNLOAD_REQUEST_MODEL_FILE) {}

     return 1;
}


               5. Adicione as funções FindTextureFileNameFromCRC(crc, retstr[], retstr_size); e FindModelFileNameFromCRC(crc, retstr[], retstr_size);.
                        - Isso dirá ao SAMP Server que ele deve escrever o nome dos arquivos de textura e modelo a serem encontradas no servidor de web.
              
               6. Adicione uma variável local para substituir o 'retstr[]' e altere o terceiro parâmetro para o tamanho dessa nova variável.

               7. As funções que foram adicionadas no passo cinco retornarão um valor true (1) caso seja achada ou false (0) caso não. Crie uma variável pra identificar essa ação e atribua o valor a elas. Assim, também crie uma condição após onde checará esse valor que foi atribuído à nova variável.



Código:
new SERVER_DOWNLOAD[] = "http://www.dev-wil.com/downloads/03dl/models";
public OnRequestDownload(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) {}
    return 1;
}


              8. Declare uma variável local para texto com o tamanho de 256 caracteres. 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 formatação para tal variável, inserindo o SERVER_DOWNLOAD e o filename no texto.

              9. Abaixo da formatação criada, iremos inserir, enfim, a função RedirectDownload(playerid, url[]);, onde o 'url[]' é a variável formatada acima.

Código:
new SERVER_DOWNLOAD[] = "http://www.dev-wil.com/downloads/03dl/models";
public OnRequestDownload(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, 256, "%s/%s", SERVER_DOWNLOAD, filename);
         RedirectDownload(playerid, url_final);
    }
    return 1;
}

             10. Ligue o servidor e entre no server. Você notará que os arquivos serão baixados mais rapidamente pelo client-side desta 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.



Esse é o tutorial, eu posso ter deixado alguma informação ou código ter escapado porque tive que transcrever letra por letra, formatar espaço por espaço, então complica. Caso tenha algum erro ou algo do tipo, deixem comentado que eu posso ajudar e creio que o Wil, se tiver de bobeira, também tomará a liberdade de aparecer pra sanar algumas dúvidas que possam existir, por acaso.