Adaptaзгo de comandos -
Ley - 12.01.2016
Boa tarde users, estou com uma dъvida de como posso estar sobrepondo o nick de um usuбrio em um ShowPlayerDialog a partir de outro comando... O esboзo do que estou a tentar fazer:
PHP код:
new bool:participando[MAX_PLAYERS];
PHP код:
CMD:participar(playerid) {
participando[playerid] = true;
return 1;
}
PHP код:
ShowPlayerDialog(playerid, 2345, DIALOG_STYLE_LIST, "TESTE | Escolha um usuбrio:", "Usuario1\nUsuario2", "Testar", "Cancelar");
A minha dъvida, й: Como posso fazer para o nick do usuбrio que estб com a booleana verdadeira aparecer no lugar de "Usuбrio1" ou "Usuбrio2" respectivamente?
Alguйm poderia me ajudar? Por favor.
Grato!
Re: Adaptaзгo de comandos -
EditPawn - 12.01.2016
Dessa forma, acredito que seja o que queira.
Cria uma variбvel global para armazenar os ids dos participantes
PHP код:
new Participante[2];
Depois seta o id do Usuario1 e Usuario2.
PHP код:
Participante[0] = Usuario1;
Participante[1] = Usuario2;
Para pegar o nome do jogador.
PHP код:
new name[2][20], str[42];
GetPlayerName(Participante[0], name[0], 20);
GetPlayerName(Participante[1], name[1], 20);
format(str, 42, "%s/%s", name[0], name[1]);
ShowPlayerDialog(playerid, 2345, DIALOG_STYLE_LIST, "TESTE | Escolha um usuбrio:", str, "Testar", "Cancelar");
Re: Adaptaзгo de comandos -
Ever_SH - 12.01.2016
Loop e Format, й o que vocк precisa.
https://sampwiki.blast.hk/wiki/Format
https://sampforum.blast.hk/showthread.php?tid=290735
@Edit Se for para apenas 2 players, use o mйtodo que o EditPawn postou.
Re: Adaptaзгo de comandos -
Ley - 12.01.2016
Quote:
Originally Posted by EditPawn
Dessa forma, acredito que seja o que queira.
Cria uma variбvel global para armazenar os ids dos participantes
PHP код:
new Participante[2];
Depois seta o id do Usuario1 e Usuario2.
PHP код:
Participante[0] = Usuario1;
Participante[1] = Usuario2;
Para pegar o nome do jogador.
PHP код:
new name[2][20], str[42];
GetPlayerName(Participante[0], name[0], 20);
GetPlayerName(Participante[1], name[1], 20);
format(str, 42, "%s/%s", name[0], name[1]);
ShowPlayerDialog(playerid, 2345, DIALOG_STYLE_LIST, "TESTE | Escolha um usuбrio:", str, "Testar", "Cancelar");
|
PHP код:
Participante[0] = Usuario1;
Participante[1] = Usuario2;
Colocando essas linhas no comando de participaзгo? Nгo irб gerar possнvel conflito adicionando mais de um usuбrio no "Participante[0]"? Terб como me explicar? Grato!
Re: Adaptaзгo de comandos -
EditPawn - 12.01.2016
Quote:
Originally Posted by Ley
PHP код:
Participante[0] = Usuario1;
Participante[1] = Usuario2;
Colocando essas linhas no comando de participaзгo? Nгo irб gerar possнvel conflito adicionando mais de um usuбrio no "Participante[0]"? Terб como me explicar? Grato!
|
Cada cйlula й um participante.
Usuario1 e Usuario2 seria o id dos players.
@EDIT
Tente dessa forma
PHP код:
#define MAX_PARTICIPANTE 3
new Participante[MAX_PARTICIPANTE];
CMD:participantes(playerid, params[])
{
new id1, id2, id3;
if(sscanf(params, "iii", id1, id2, id3))
return SendClientMessage(playerid, -1, "use: /participantes [primeiro] [segundo] [terceiro]");
if(!IsPlayerConnected(id1))
return SendClientMessage(playerid, -1, "Primeiro jogador nгo conectado.");
if(!IsPlayerConnected(id2))
return SendClientMessage(playerid, -1, "Segundo jogador nгo conectado.");
if(!IsPlayerConnected(id3))
return SendClientMessage(playerid, -1, "Terceiro jogador nгo conectado.");
Participante[0] = id1;
Participante[1] = id2;
Participante[2] = id3;
return 1;
}
CMD:votar(playerid)
{
new name[MAX_PARTICIPANTE][20], str[128];
GetPlayerName(Participante[0], name[0], 20);
GetPlayerName(Participante[1], name[1], 20);
GetPlayerName(Participante[2], name[2], 20);
format(str, 128, "Participante 1: %s\nParticipante 2: %s\nParticipante 1: %s", name[0], name[1]);
ShowPlayerDialog(playerid, 2345, DIALOG_STYLE_LIST, "TESTE | Escolha um usuбrio:", str, "Testar", "Cancelar");
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 2345)
{
if(response)
{
new str[30], name[20];
GetPlayerName(Participante[listitem], name, 20);
format(str, 30, "Vocк votou no participante %s", name);
SendClientMessage(playerid, -1, str);
}
}
return 1;
}
Re: Adaptaзгo de comandos -
Ley - 13.01.2016
Quote:
Originally Posted by EditPawn
Cada cйlula й um participante.
Usuario1 e Usuario2 seria o id dos players.
@EDIT
Tente dessa forma
PHP код:
#define MAX_PARTICIPANTE 3
new Participante[MAX_PARTICIPANTE];
CMD:participantes(playerid, params[])
{
new id1, id2, id3;
if(sscanf(params, "iii", id1, id2, id3))
return SendClientMessage(playerid, -1, "use: /participantes [primeiro] [segundo] [terceiro]");
if(!IsPlayerConnected(id1))
return SendClientMessage(playerid, -1, "Primeiro jogador nгo conectado.");
if(!IsPlayerConnected(id2))
return SendClientMessage(playerid, -1, "Segundo jogador nгo conectado.");
if(!IsPlayerConnected(id3))
return SendClientMessage(playerid, -1, "Terceiro jogador nгo conectado.");
Participante[0] = id1;
Participante[1] = id2;
Participante[2] = id3;
return 1;
}
CMD:votar(playerid)
{
new name[MAX_PARTICIPANTE][20], str[128];
GetPlayerName(Participante[0], name[0], 20);
GetPlayerName(Participante[1], name[1], 20);
GetPlayerName(Participante[2], name[2], 20);
format(str, 128, "Participante 1: %s\nParticipante 2: %s\nParticipante 1: %s", name[0], name[1]);
ShowPlayerDialog(playerid, 2345, DIALOG_STYLE_LIST, "TESTE | Escolha um usuбrio:", str, "Testar", "Cancelar");
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 2345)
{
if(response)
{
new str[30], name[20];
GetPlayerName(Participante[listitem], name, 20);
format(str, 30, "Vocк votou no participante %s", name);
SendClientMessage(playerid, -1, str);
}
}
return 1;
}
|
Desculpe o incomodo, novamente, EditPawn, mas nгo teria uma forma de fazer com que os ID's sejam definidos automaticamente a partir de um comando secundбrio? Porquк nesse caso estб sendo definido a partir de um comando de seleзгo. Gostaria de saber se haveria como por para suprir as cйlulas com um comando aleatуrio, sem ser por meio de uma definiзгo direta?
Grato!
Re: Adaptaзгo de comandos -
focaximubh - 13.01.2016
Ley se bem entendi sua dъvida, vocк poderia verificar os players existentes no servidor e lanзar o valor na variбvel de forma aleatуria a partir da variбvel verdadeira ou falsa (1/0)....
Re: Adaptaзгo de comandos -
Ley - 14.01.2016
Quote:
Originally Posted by focaximubh
Ley se bem entendi sua dъvida, vocк poderia verificar os players existentes no servidor e lanзar o valor na variбvel de forma aleatуria a partir da variбvel verdadeira ou falsa (1/0)....
|
Olб focaximubh, a minha dъvida й saber como posso adicionar o nick do player automaticamente na ShowPlayerDialog, atravйs de outro comando, por exemplo, o cуdigo que o EditPawn elaborou acima... Porйm, a minha dъvida й saber como eu posso estar fazendo sem o auxнlio de um comando para selecionar os usuбrios participantes.
Por exemplo, digamos que tenham "vagas" para ser ocupadas para suprir os locais vazios no Dialog:
PHP код:
CMD:participar(playerid) {
// verificaзгo se as vagas estгo lotadas (3 vagas)
SendClientMessage(playerid, -1, "Vocк agora й um participante.");
// Dar a "vaga [0]" a ele, e assim sucessivamente para os prуximos usuбrios a participar, atй chegar ao "vagas [2]" e lotar os espaзos.
return 1;
}
Com isso as participaзхes no comando /participar, os usuбrios jб estariam com os nicks no ShowPlayerDialog, compreendes?
Espero que possa me ajudar, agradeзo desde jб!
Re: Adaptaзгo de comandos -
EditPawn - 14.01.2016
Nгo sei se entendi, mas talvez vocк possa setar o valor da variбvel padrгo para -1 ou INVALID_PLAYER_ID jб que os ids possнveis sгo a partir de zero, depois verifica se cada vaga й diferente de -1 ou caso for INVALID_PLAYER_ID, caso for true, a vaga estб livre, caso for false a vaga jб estб preenchida. Nгo sei se seria exatamente isso que vocк deseja.
Re: Adaptaзгo de comandos -
Coringa_Vilao - 14.01.2016
nгo sei se entendi muito, seria isso ?
PHP код:
new Variavel[MAX_PLAYERS];
public OnPlayerConnect(playerid){
Variavel[playerid] = 0;
return 1;
}
CMD:participar(playerid){
foreach(Player, i){
Variavel[i] += 1;
}
if(Variavel[playerid] <= 2) return SendClientMessage(playerid, -1, "Vagas Cheias.");
SendClientMessage(playerid, -1, "Vocк agora й um participante.");
return 1;
}