Alguem pode disponibilizar ao forum um tutorial de como criar um sistema de inventario em dialog ou texdraw esplicativo para aprender como funciona o sistema?
Bom fiz esse sistema de DJ basiado em um que vim na net ok.
Ele funciona da seguinte forma o Admin que esta logado na Rcon, utiliza do comandos /TocarMusica e /PMusicaTodos. E tem dois comandos para os players /PedirMusica e / PMusica.
Bom quando utiliso do comando /TocarMusica aparece uma Dialog para eu inserir algum link do youtube ou para mim escrever um nome do cantor e o nome da musica, mais quando confirmo o link ou o nomes aparece uma msg dizendo q pois a musica tal para tocar, mais não aparece nenhuma musica tocando e buga o servidor, pq fica aparecendo a Dialog para Logar no Servidor, mais quando logo não desbuga, poderiam mim ajuda??
new pname[MAX_PLAYER_NAME];
new bool:PediuMusica[MAX_PLAYERS];
public OnFilterScriptInit()
{
print("\n [FS] Música carregado by [TSVR]LeleziN.Dr ");
return 1;
}
public OnFilterScriptExit()
{
return 1;
}
public OnPlayerConnect(playerid)
{
PediuMusica[playerid] = false;
return 1;
}
public OnPlayerSpawn(playerid)
{
static nomedoserver[64], str[128];
//GetConsoleVarAsString("hostname", nomedoserver, sizeof(nomedoserver));
format(str, sizeof(str), "O %s contém um sistema de música feito por [TSVR]LeleziN.Dr | CMD: /amusica ", nomedoserver);
SendClientMessage(playerid, COR_DICA, str);
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == D_MUSICA)
{
if(!response)
{
SendClientMessage(playerid, COR_INFO, "DICA: Comandos do Sistema de Música: ( /amusica )");
}
else
{
if(strlen(inputtext) < 1)
{
SendClientMessage(playerid, COR_ERRO, "ERRO: Insira alguma música!");
ShowPlayerDialog(playerid, D_MUSICA, DIALOG_STYLE_INPUT, "Música para todos", "Insira o nome da música desejada!\n(AVISO): Coloque o cantor e o nome da música ou o link do youtube para melhores resultados\n", "Tocar", "Cancelar");
}
else
{
static i, str[128], str2[104+MAX_PLAYER_NAME];
GetPlayerName(playerid, pname, MAX_PLAYER_NAME);
for( i = GetMaxPlayers() - 1; i > -1; --i)
{
if(IsPlayerConnected(i))
{
format(str, sizeof(str), "https://6t.pe/?song=%s", inputtext);
PlayAudioStreamForPlayer(i, str);
format(str2, sizeof(str2), "[ADMIN] %s colocou a música %s, digite /pmusica se quiser parar!", pname, inputtext);
}
}
SendClientMessageToAll(COR_INFO, str2);
}
}
return 1;
}
if(dialogid == D_PEDIRMUSICA)
{
if(!response)
{
SendClientMessage(playerid, COR_DICA, "DICA: Comandos do Sistema de Música: ( /amusica )");
}
else
{
if(strlen(inputtext) < 1)
{
SendClientMessage(playerid, COR_ERRO, "ERRO: Insira alguma música!");
ShowPlayerDialog(playerid, D_PEDIRMUSICA, DIALOG_STYLE_INPUT, "Pedir uma Música", "Insira o nome da música desejada!\n[AVISO]: Coloque o cantor e o nome da música ou o link do youtube para melhores resultados\n", "Pedir", "Cancelar");
}
else
{
SendClientMessage(playerid, COR_DICA, "AVISO: Música enviada com sucesso aos ADMINS!");
PediuMusica[playerid] = true;
SetTimerEx("PedidoDeMusica", 120000, false, "d", playerid);
static i, str2[104+MAX_PLAYER_NAME];
GetPlayerName(playerid, pname, MAX_PLAYER_NAME);
for( i = GetMaxPlayers() - 1; i > -1; --i)
{
if(IsPlayerAdmin(i))
{
format(str2, sizeof(str2), "ATENÇÃO ADMINS: %s está pedindo a música %s", pname, inputtext);
SendClientMessage(i, COR_INFO, str2);
}
}
}
}
return 1;
}
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp(cmdtext, "/tocarmusica", true)==0)
{
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COR_ERRO, "ERRO: Comando disponível apenas para admins RCON!");
ShowPlayerDialog(playerid, D_MUSICA, DIALOG_STYLE_INPUT, "Música para todos", "Insira o nome da música desejada!\n[AVISO]: Coloque o cantor e o nome da música ou o link do youtube para melhores resultados\n", "Tocar", "Cancelar");
return 1;
}
if (strcmp(cmdtext, "/pmusicatodos", true)==0)
{
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COR_ERRO, "ERRO: Comando disponível apenas para admins RCON!");
static i,str[104+MAX_PLAYER_NAME];
GetPlayerName(playerid, pname, MAX_PLAYER_NAME);
for( i = GetMaxPlayers() - 1; i > -1; --i)
{
if(IsPlayerConnected(i))
{
StopAudioStreamForPlayer(i);
}
}
format(str, sizeof(str), "[ADMIN] %s parou a música atual!", pname);
SendClientMessageToAll(COR_INFO, str);
return 1;
}
if (strcmp(cmdtext, "/pmusica", true)==0)
{
StopAudioStreamForPlayer(playerid);
SendClientMessage(playerid, COR_INFO, "INFO: A reprodução de sons foi parada!");
return 1;
}
if (strcmp(cmdtext, "/pedirmusica", true)==0)
{
if(PediuMusica[playerid] == false)
{
ShowPlayerDialog(playerid, D_PEDIRMUSICA, DIALOG_STYLE_INPUT, "Pedir uma Música", "Insira o nome da música desejada!\n[AVISO]: Coloque o cantor e o nome da música ou o link do youtube para melhores resultados\n", "Pedir", "Cancelar");
}
else
{
SendClientMessage(playerid, COR_ERRO, "ERRO: Aguarde 2 Minutos para pedir outra música!");
}
return 1;
}
if (strcmp(cmdtext, "/amusica", true)==0)
{
if(IsPlayerAdmin(playerid))
{
ShowPlayerDialog(playerid, D_AJUDA, DIALOG_STYLE_MSGBOX, "Comandos de Música", "COMANDOS ADM: \n\n/tocarmusica - Toca uma música para todos pelo nome ou link do youtube\n/pmusicatodos - Para a música de todos\n\nCOMANDOS PLAYER: \n\n/pmusica - Para a música atual\n/pedirmusica - Envia a música desejada para os admins online\n", "Ok", "");
}
else
{
ShowPlayerDialog(playerid, D_AJUDA, DIALOG_STYLE_MSGBOX, "Comandos de Música", "/pmusica - Para a música atual\n/pedirmusica - Envia a música desejada para os admins online\n", "Ok", "");
}
return 1;
}
return 1;
}
Como indentificar a arma que esta na mão "usando" no momento para quando eu rolar as armas a qye estava na mão ir para o inventario e a que estava no inventario ir para mão?
Venho apresentar à vocês o Newus RPG, um servidor com bastante conteúdo.
(A imagem está horrível eu sei, foi só para deixar o tópico vivo, segundo as regras)
~~~~~~~~~~~~~~~~~~~~~~
Alguns dos sistemas do servidor:
- Sistema de lutar contra outros jogadores; - Sistema de organizações (polícia, crime, detran...); - Sistema de inventário (com: acessórios, armas, skins de inventários, etc...); - Sistema de eventos, como: fallout, corridas, mata-mata, derbys.. ; - Sistema de lotérica (pagar multas da radares, pagar impostos de casas e empresas, jogar na loteria..); - Sistema de concessionária; - 10 Profissões (mecânico, maquinista, caminhoneiro, etc..); - Sistema de ouvir rádios - /LojaCash - Tem muito mais conteúdo, se eu citar aqui dura umas 100 linhas, enfim loguem lá!
IP: 198.50.195.141:7774
[font="Proxima Nova Regular", "Helvetica Neue", Helvetica, Arial, sans-serif][/font]
Fazer um RG é algo bem simples para quem já sabe logica e um pouquinho da include sscanf... porém para novatos pode ser muito estressante e por isso resolvi fazer este tutorial.
1- Includes
Para fazer o famoso RG precisaremos ter a include ZCMD e o SScanf2 ambos os links abaixo:
Agora precisaremos fazer uma definição pra nossa dialog de RG, desta maneira:
Código:
#define DRG 1
#define = Definir algo
DRG = Nome da definição
1 = ID da definição
3- Começando o Comando
Bom, agora que você já tem as includes podemos começar o nosso comando.
Primeiro vamos fazer a base dele.
Código:
CMD:rg(playerid, params[])
{
return 1;
}
4 - Variaveis locais
Após isso temos que definir algumas variaveis locais, desta maneira:
Código:
CMD:rg(playerid, params[])
{
new RG[256],Name[25];
return 1;
}
Bom, RG é o nome da nossa String e Name é para puxar o nome do jogador.
5- Getando o nome
Agora, precisamos getar o nome do player formatar a dialog com os dados do player, primeiro iremos Getar o nome do player desta forma:
Código:
CMD:rg(playerid, params[])
{
new RG[256],Name[25];
GetPlayerName(playerid,Name,25);
return 1;
}
Pronto, agora temos como puxar o nome do player para a nossa dialog
6- Formatando
Agora como disse acima iremos formatar a dialog com os dados do player, desta forma:
Esse foi mais um sistema que contribui no Fórum antigo, e quis trazer pra cá agora, pra não perder, é um sistema de profissões simples de carregamento e descarregamento, ele está em uma versão BETA bem desatualizada, mais pretendo em breve trazer melhorias, visto que ele foi criado quando comecei a programar, aceito sugestões e criticas construtivas, ele é livre pra uso, mais sempre mantenha o crédito.
Possui poucos comandos, a maioria das funcionalidades das profissões são por Key!
Comandos:
/Cancelar - Para cancelar um trabalho. /CV - id do veículo,Cor 1, Cor 2. /Operar - Para iniciar um trabalho como operário(a). /Profs - Para escolher uma profissão.
Profissões Criadas:
1º Transportador(a) de Concreto. 2º Transportador(a) de Carvão. 3º Operador(a) de Máquinas.