[Tutorial] CONTADOR DE DUELOS
#1

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:
Zcmd
sscanf

Eu uso zcmd:
PHP код:
#include "a_samp"
#include "ZCMD"
#include "sscanf"
#define DIALOG_DUELO 1 
//vamos criar 2 variбvel globais, fora de qualquer callbacks!
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(playeridDIALOG_DUELODIALOG_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! 

Agora vamos em public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
PHP код:
public OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
//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(ididnomesizeof(idnome)); GetPlayerName(playeridpnomesizeof(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(strsizeof(str), "Olб %s eu %s estou te convidando para um duelo valendo um beijo aceita?"idnomepnome);
   
//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(idDIALOG_DUELO+1DIALOG_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 /dueloaparece odialogele escolhe o id do inimigochega uma mensagem pro inimigodizendo 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(Player22nomesizeof(2nome));
ShowPlayerDialog(Player1100DIALOG_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(Player1x,y,z);
SetPlyerPos(Player2x,y,z);
}
}
  return 
1

Criei pra responder o topico : clique aqui

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
Reply
#2

Legal,Gostei talvez eu use
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)