25 de jan. de 2011

[TUT] Criando sistema de léveis com kills

Bom, meu nick de jogo é SuB_ZeRo0_ e este é meu primeiro post.

Postei pois me pediram para fazer este sistema.

Bom, primeiro iremos adicionar as stock que irão nos ajudar a adicionar os leveis, etc.
Coloque-as em cima ou em baixo de seu GameMode:

Data provided by Pastebin.com - Download Raw
  1. stock CriarArquivoLevels(playerid) //Cria o arquivo em Scriptfiles/Levels
  2. {
  3.         new formatted[40],Nomesz[25];
  4.         GetPlayerName(playerid,Nomesz,25);
  5.         format(formatted,40,"Levels/%s.subzero",Nomesz);
  6.         if(fexist(formatted)) return 0;
  7.         new File:SubZero=fopen(formatted,io_write);
  8.         fwrite(SubZero,"0");
  9.         fclose(SubZero);
  10.         return 1;
  11. }
  12. stock PegarLevel(playerid) //Retorna o level do player
  13. {
  14.         new Nomesz[25],strp[10],formatted[40];
  15.         GetPlayerName(playerid,Nomesz,25);
  16.         format(formatted,40,"Levels/%s.subzero",Nomesz);
  17.         if(fexist(formatted)) return 0;
  18.         new File:SubZero=fopen(formatted,io_read);
  19.         fread(SubZero,strp);
  20.         fclose(SubZero);
  21.         return strval(strp);
  22. }
  23. stock AddLevel(playerid) //Adiciona mais um level ao player
  24. {
  25.         new Nomesz[25],strp[10],formatted[40];
  26.         GetPlayerName(playerid,Nomesz,25);
  27.         format(formatted,40,"Levels/%s.subzero",Nomesz);
  28.         if(fexist(formatted)) return 0;
  29.         new File:SubZero=fopen(formatted,io_read);
  30.         fread(SubZero,strp);
  31.         fclose(SubZero);
  32.         new level=strval(strp);
  33.         new StakLine[10];
  34.         format(StakLine,10,"%d",level+1);
  35.         new File:SubZero2=fopen(formatted,io_write);
  36.         fwrite(SubZero2,StakLine);
  37.         fclose(SubZero2);
  38.         return 1;
  39. }
 

Agora, crie uma pasta em Scriptfiles, chamada 'Levels' (sem ' ).


Após ter feito isso, iremos criar uma variável, para sabermos quantas pessoas ele matou.
No topo do GameMode coloque:
 
Data provided by Pastebin.com - Download Raw
  1. new Kills[MAX_PLAYERS]; //Guarda quantos o player matou
     


    Agora, vamos colocar nas publics o necessário, como neste código:

    Caso não veja ou queira o código em um página apenas: http://pastebin.com/1uKpVd2a
     
    Data provided by Pastebin.com - Download Raw
    1. public OnPlayerDeath(playerid,killerid)
    2. {
    3.         Kills[killerid]++; //Adiciona mais um Kill
    4.         new Matou=Kills[killerid];
    5.         //Aqui, quantos kills e o level:
    6.         if(Matou==1&&PegarLevel(killerid)==0) { //Se ele matou 1 e está level 0
    7.                 AddLevel(killerid);                 //Adiciona mais um level
    8.                 Kills[killerid]=0;                  //Zera o contador de Kills
    9.         }
    10.         //Exemplo de outro:
    11.         if(Matou==10&&PegarLevel(killerid)==1) {//Se ele matou 10 e está level 1
    12.                 AddLevel(killerid);                 //Adiciona mais um level
    13.                 Kills[killerid]=0;                  //Zera o contador de Kills
    14.         }
    15.         //Fim
    16.         return 1;
    17. }
    18.  
    19. public OnPlayerConnect(playerid)
    20. {
    21.     CriarArquivoLevels(playerid); //cria o arquivo do player
    22.         return 1;
    23. }
    24.  
    25. public OnPlayerDisconnect(playerid)
    26. {
    27.     Kills[playerid]=0; //Ajusta os Kills para 0, para o próximo player
    28.         return 1;
    29. }
      


    Pronto!
    Siga o exemplo no OnPlayerDeath e crie mais leveis!

    Boa sorte com seu GameMode, para ver o código completo:

    Peça ajuda pelo nosso Xat e caso encontro algum bug, reporte.

0 comentários:

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Powered by Blogger