Advertisement
garfield

[Tutorial]: Sistema de profissões

Aug 16th, 2014
536
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 4.73 KB | None | 0 0
  1. #include a_samp
  2.  
  3.  
  4.  
  5. // Definimos a profissão do jogador
  6. #define p_NENHUM            0 // 0 -> Nenhuma Profissão
  7. #define p_MECANICO          1 // 1 -> mecanico
  8. #define p_MOTORISTA         2 // 2 -> motorista
  9. #define p_FRENTISTA         3 // 3 -> Frentista e por aí vai..
  10.  
  11.  
  12. new
  13.  
  14.  
  15.     // Criamos uma array bidimensional contendo os nomes das profissões, note que na primeira chave não há nenhum número,
  16.     // assim não precisando especificar a quantidade de profissões. Já na segunda chave, contém 120. Ou seja: cada profissão
  17.     // tem que ter no máximo 60 células, não esquecendo que a última célula é NULL.
  18.     // ficando apenas 59 células REAIS para ser usadas nos nomes.
  19.     Nome_Empregos[][60] =
  20.     {
  21.         "Nenhum",
  22.         "Mecanico",
  23.         "Motorista",
  24.         "Frentista"
  25.     },
  26.    
  27.    
  28.     // Aqui Criamos uma array contendo 500 células (cada célula é um jogador, que vai de 0 há 500).
  29.     g_Profissao[MAX_PLAYERS],
  30.    
  31.    
  32.     // Criamos uma array para nossas strings, assim evitando gasto excessivo de células..
  33.     string[128]
  34. ;
  35.  
  36.  
  37.  
  38.  
  39. // criamos o evento "main" que é o primeiro código iniciado..
  40. main(){
  41.  
  42.     print ("Primeiro GameMode");
  43. }
  44.  
  45.  
  46.  
  47. // Vamos agora criar algumas classes, adicionar algumas skins em nosso servidor:
  48. // por isto precisaremos do evento OnGameModeInit()
  49. public OnGameModeInit(){
  50.  
  51.  
  52.     AddPlayerClass(0, 1958.33, 1343.12, 15.36, 269.15, 26, 36, 28, 150, 0, 0); // classid 0
  53.     AddPlayerClass(50, 1958.33, 1343.12, 15.36, 269.15, 26, 36, 28, 150, 0, 0); // classid 1
  54.     AddPlayerClass(61, 1958.33, 1343.12, 15.36, 269.15, 26, 36, 28, 150, 0, 0); // classid 2
  55.     AddPlayerClass(42, 1958.33, 1343.12, 15.36, 269.15, 26, 36, 28, 150, 0, 0); // classid 3
  56.     return true;
  57. }
  58.  
  59.  
  60. // Também precisaremos fazer uma validação, certo ?
  61. public OnPlayerRequestClass(playerid, classid){
  62.  
  63.  
  64.     // Fazemos uma condição para verificar a classe  "classid" do jogador
  65.     if(classid == 0){ // classsid 0 (SKIN ID: 0 / CJ)
  66.    
  67.    
  68.         // CLASSID
  69.        
  70.         g_Profissao[playerid] = p_NENHUM;
  71.     }
  72.    
  73.    
  74.    
  75.     if(classid == 1){ // classid 1 (SKIN ID: 1 )
  76.    
  77.    
  78.         // SKIN DE MECANICO, PROFISSÃO DE MECANICO
  79.         g_Profissao[playerid] = p_MECANICO;
  80.     }
  81.    
  82.  
  83.  
  84.     if(classid == 2){
  85.  
  86.         // SKIN DE MOTORISTA, PROFISSÃO DE MOTORISTA
  87.         g_Profissao[playerid] = p_MOTORISTA;
  88.     }
  89.    
  90.  
  91.     if(classid == 3){
  92.  
  93.         // SKIN DE FRENTISTA, PROFISSÃO DE FRENTISTA
  94.         g_Profissao[playerid] = p_FRENTISTA;
  95.     }
  96.     return true;
  97. }
  98.  
  99.  
  100. public OnPlayerSpawn(playerid){
  101.  
  102.  
  103.     // Vamos informar a profissão do jogador
  104.     format(string, sizeof(string), "Você é um %s", Nome_Empregos[ g_Profissao[playerid] ]);
  105.     SendClientMessage(playerid, -1, string);
  106.     return true;
  107. }
  108.  
  109.  
  110. // Agora um exemplo, de quando o jogador digitar o comando para virar mecanico
  111. // e para listar os mecanicos disponíveis.
  112. public OnPlayerCommandText(playerid, cmdtext[]){
  113.  
  114.  
  115.     // Um simples comando para tornar o jogador mecânico
  116.     if(!strcmp(cmdtext, "/virarmecanico", true)){
  117.    
  118.    
  119.         // O Valor de quem está digitando este comando torna-se 1 (definição de p_MECANICO é 1)
  120.         g_Profissao[playerid] = p_MECANICO;
  121.         return true;
  122.     }
  123.    
  124.    
  125.    
  126.     // Agora outro simples comando para procurar os mecanicos disponíveis
  127.     if(!strcmp(cmdtext, "/procurarmecanico", true)){
  128.    
  129.  
  130.         // Criamos uma array com 24 células para armazenar o nome do jogador
  131.         new
  132.             pNome[24]
  133.         ;
  134.        
  135.        
  136.  
  137.         // Fazemos um loop percorrendo todos os jogadores
  138.         for(new i; i != MAX_PLAYERS; ++i){
  139.        
  140.             // Adicionamos uma condição para verificar somente os jogadores ONLINE
  141.             if(IsPlayerConnected(i)){
  142.            
  143.                 // Outra condição para verificar se o jogador do nosso looping é mecanico
  144.                 if(g_Profissao[i] == p_MECANICO){
  145.                
  146.                     // Caso for mecânico irá executar:
  147.                
  148.  
  149.                     // Pegamos o nome do jogador que está sendo percorrido pelo loop
  150.                     GetPlayerName(i, pNome, 24);
  151.                
  152.                     // formatamos a nossa array criada logo acima..
  153.                     format(string, sizeof(string), "Jogador:%s - Profissão: %s", pNome, Nome_Empregos[ p_MECANICO ]);
  154.                    
  155.                     // imprimimos na tela do jogador.
  156.                     SendClientMessage(playerid, -1, string);
  157.                 }
  158.             }
  159.         }
  160.         return true;
  161.     }
  162.    
  163.    
  164.    
  165.    
  166.     // Outro código..
  167.     if(!strcmp(cmdtext, "/profissoes", true)){
  168.  
  169.         new
  170.             pNome[24]
  171.         ;
  172.  
  173.  
  174.  
  175.         for(new i; i != MAX_PLAYERS; ++i){
  176.             if(IsPlayerConnected(i)){
  177.  
  178.                 if(g_Profissao[i] != p_NENHUM){
  179.                
  180.                     GetPlayerName(i, pNome, 24);
  181.                     format(string, sizeof(string), "Jogador:%s - Profissão: %s", pNome, Nome_Empregos[ g_Profissao[i] ]);
  182.                     SendClientMessage(playerid, -1, string);
  183.                 }
  184.             }
  185.         }
  186.         return true;
  187.     }
  188.     return true;
  189. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement