[Pedido] Adaptaзгo de comandos
#1

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(playerid2345DIALOG_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!
Reply
#2

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(str42"%s/%s"name[0], name[1]);
ShowPlayerDialog(playerid2345DIALOG_STYLE_LIST"TESTE | Escolha um usuбrio:"str"Testar""Cancelar"); 
Reply
#3

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.
Reply
#4

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(str42"%s/%s"name[0], name[1]);
ShowPlayerDialog(playerid2345DIALOG_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!
Reply
#5

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(playeridparams[])
{
    new 
id1id2id3;
    if(
sscanf(params"iii"id1id2id3))
        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(str128"Participante 1: %s\nParticipante 2: %s\nParticipante 1: %s"name[0], name[1]); 
    
ShowPlayerDialog(playerid2345DIALOG_STYLE_LIST"TESTE | Escolha um usuбrio:"str"Testar""Cancelar");
    return 
1;
}
public 
OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    if(
dialogid == 2345)
    {
        if(
response)
        {
            new 
str[30], name[20];
            
GetPlayerName(Participante[listitem], name20);
            
format(str30"Vocк votou no participante %s"name);
            
SendClientMessage(playerid, -1str);
        }
    }
    return 
1;

Reply
#6

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(playeridparams[])
{
    new 
id1id2id3;
    if(
sscanf(params"iii"id1id2id3))
        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(str128"Participante 1: %s\nParticipante 2: %s\nParticipante 1: %s"name[0], name[1]); 
    
ShowPlayerDialog(playerid2345DIALOG_STYLE_LIST"TESTE | Escolha um usuбrio:"str"Testar""Cancelar");
    return 
1;
}
public 
OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    if(
dialogid == 2345)
    {
        if(
response)
        {
            new 
str[30], name[20];
            
GetPlayerName(Participante[listitem], name20);
            
format(str30"Vocк votou no participante %s"name);
            
SendClientMessage(playerid, -1str);
        }
    }
    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!
Reply
#7

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)....
Reply
#8

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 код:
new vagas [2]; 
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б!
Reply
#9

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.
Reply
#10

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(
Playeri){
    
         
Variavel[i] += 1;
    }
    
    if(
Variavel[playerid] <= 2) return SendClientMessage(playerid, -1"Vagas Cheias.");
    
    
SendClientMessage(playerid, -1"Vocк agora й um participante.");
    return 
1;

Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)