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
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.
- Você deverá abrir a pasta models dentro do seu sa-mp server.
- 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.
- Você deverá abrir a pasta models dentro do seu sa-mp server.
- 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.
- Todos os arquivos utilizados no Redirect deverão ser iguais aos arquivos na pasta models/ no sa-mp server.
Se você tiver alguma dúvida, comente no tópico. Se você encontrar algum erro comente ou envie via MP.