12.07.2017, 17:26
SUMБRIO
VAMOS USAR SSCANF (RECOMENDO V. 2.8.1 BY ******)
VAMOS CRIAR O COMANDO, /DEUELO
CRIAR DIALOG
PEGA OS DADOS DOS 2 PLAYERS
Downloads:VAMOS USAR SSCANF (RECOMENDO V. 2.8.1 BY ******)
VAMOS CRIAR O COMANDO, /DEUELO
CRIAR DIALOG
PEGA OS DADOS DOS 2 PLAYERS
Zcmd
sscanf
Eu uso zcmd:
PHP код:
#include "a_samp"
#include "ZCMD"
#include "sscanf"
#define DIALOG_DUELO 1
new Player1[MAX_PLAYERS], Player2[MAX_PLAYERS];
ou se vocк usa o PlayerInfo[MAX_PLAYERS][pInfo] crie essas 2 var, dentro da enum
PHP код:
CMD:duelo(playerid,params[])
{
ShowPlayerDialog(playerid, DIALOG_DUELO, DIALOG_STYLE_INPUT, "Enviar duelo", "Insira o id do player com quem deseja duelar:", "Enviar", "Cancelar");
//aqui criamos o comando /duelo, e quando o player digitar ele, ira aparecer o dialog, pedindo pra ele inserir o id do player com quem ele quer duelar! caso ele clique sim ou nгo veremos abaixo!
}
PHP код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
//vamos criar nosso DIALOG_DUELO
if(dialogid == DIALOG_DUELO)
{
//response e usada pra dizer que o player aceitou os botхes "Enviar" ou "Cancelar", e em cada 1 deles, nos vamos criar algo pra quando eles for clicados!
//nesse caso nos enviamos um dialog pro id, dizendo se ele aceita ou nгo, ele tem 2 opзхes "sim e nгo", if(response) = supomos que e o botгo sim, se nos
//adcionarmos o "!'? ISSO MSM!
if(!reponse)
{
SendClientMessage(playerid, -1, "Vocк cancelou o duelo"); //se ele clicar cancelar, ele simplesmente so cancelara, o prosseguimento do duelo!
}
else //se nгo, se nгo oque? se ele nao clicar em cancelar e sim em enviar!
{
new id;
id = strval(inputtext);
if(!IsPlayerConnected(id)) return SendClientMessage(playerid, -1, "[ ERROR ] » Nenhuma pessoa online com esse ID");
//Aqui nos crio a variбvel "id" que irб armazena qual jogador й; id = inputtext = imputtext = oque o jogador digitou no dialog
//IsPlayerConnected = O player estб conectado, o uso "!" exclamaзгo, na lingua brasileira, ele representa supresa, no pawno, ele meio que distorce,
//IsPlayerConnected =estб online, !IsPlayerConnected = Nгo estб online, e se nуs usarmos o "if" = Se, ira de fica: "Se o player nгo estiver online",
//se nгo estiver retornarб a mensagem: "[ ERROR ] » Nenhuma pessoa online com esse ID"
new idnome[MAX_PLAYER_NAME], pnome[MAX_PLAYER_NAME];
GetPlayerName(id, idnome, sizeof(idnome)); GetPlayerName(playerid, pnome, sizeof(pnome));
//criamos a funзгo para gueta o nome do playerid e o id
new str[128] //criando uma string = linha, com maximo de 128 caracteres.
format(str, sizeof(str), "Olб %s eu %s estou te convidando para um duelo valendo um beijo aceita?", idnome, pnome);
//aqui nos demos um format, = nos mostramos oque й a variбvel "str", e a msg que ira ao id. "%s" = string, nos vamos imprimir as variбveis
//dps do", var, var); "%s ",var1); "%s, %s", var1, var2); vamos imprimir o nome dos 2 ent, usaremos a segunda forma!
ShowPlayerDialog(id, DIALOG_DUELO+1, DIALOG_STYLE_MSGBOX, "Convite para duelo", str, "Sim", "Nгo");
//aqui vamos mostra uma dialogo, para o id, mandando a str com quem estб convidando ele!
//dialog_duelo+1 e pra nos nao criar outro dialog = DIALOG_DUELO2, praticamente nos crio uma gemea do dialog_duelo
SendClientMessage(playerid, -1, "[DUELO] Desafio enviado."); //enviamos ao playerid que o duelo dele foi enviado!
//agora vamos usar nossa variбvel de player1 e player2, nos vamos trocar playerid por player1 e player2 por id!
Player1[playerid] = playerid;
Player2[id] = id
//criamos isso porque, se nos colocasse playerid, e id no dialog iria da erro, pq la nem existe essas 2 variavels, que criamos aqui no comando!
//outra forma era criar um nova public com os dados dos 2 players, se quiserem faзo um assim! mas como nos estamos criando por dialog!
}//fechando else
} //terminamos DIALOG_DUELO, ate agora estб assim:
O jogador digita /duelo, aparece odialog, ele escolhe o id do inimigo, chega uma mensagem pro inimigo, dizendo que o player que lutar contra ele!
e ele tem a opзгo de aceitar ou nгo!
vamos crialas agora!
//vamos usa o dialog_duelo+1
if(dialogid == DIALOG_DUELO+1)
{
if(!response)
{
new 2nome{MAX_PLAYER_NAME];
GetPlayerName(Player2, 2nome, sizeof(2nome));
ShowPlayerDialog(Player1, 100, DIALOG_STYLE_MSGBOX, "Duelo", "O jogador %s recusou seu duelo", 2nome);
}
else
{
//aqui tu coloca oque acontecerб se ele aceita o duelo
//seta os 2 num ringue ate morrer etc
ex:
SetPlyerPos(Player1, x,y,z);
SetPlyerPos(Player2, x,y,z);
}
}
return 1;
}
TEm como fazer mais, porem foi sу uma base pra pergunta
Um mais complexo dps ensino: /duelo [enviar/aceitar]
na verdade ia criar ele, deixei ate o sscanf pra download