SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Português/Portuguese

Reply
 
Thread Tools Display Modes
Old 03/06/2019, 12:04 AM   #1
GSantana
Huge Clucker
 
GSantana's Avatar
 
Join Date: Aug 2018
Location: Campo Grande-MS
Posts: 253
Reputation: 8
Default otimizar ou esta bom como está ?

boa noite a todos, estou desenvolvendo minha gm, e estou finalizando meu sistema de level, gostaria de saber se o comando '/comprar level' está bom, ou teria alguma forma de otimização, (eu sou muito paranoico com os códigos que faço).

PHP Code:
CMD:comprar(playeridparams[])
{
    new 
comando[20];
    
    if(
sscanf(params,"s",comando))  return  SCM(playeridINFOA"Comando incorreto ! Use /comprar [item], para mais comandos digite /ajuda");

    if(
strcmp(comando"nivel"true) == 0)
     {
      if(
Player[playerid][pLevel] == 0)
       {
        if(
Player[playerid][pScore] == 7) { if(GetPlayerMoney(playerid) >= 200) { Player[playerid][pLevel] += 1GivePlayerMoney(playerid, -200); } else { SCM(playeridINFOA"Você não tem dinheiro suficiente para comprar o level 1 !"); } } else { SCM(playeridINFOA"Você não tem pontos o suficiente para upar de level !"); }
       }
       
       if(
Player[playerid][pLevel] == 1)
       {
        if(
Player[playerid][pScore] == 10) { if(GetPlayerMoney(playerid) >= 800) { Player[playerid][pLevel] += 1GivePlayerMoney(playerid, -800); } else { SCM(playeridINFOA"Você não tem dinheiro suficiente para comprar o level 2"); } } else { SCM(playeridINFOA"Você não tem pontos o suficiente para upar de level !"); }
       }
       
      if(
Player[playerid][pLevel] == 2)
       {
        if(
Player[playerid][pScore] == 13) { if(GetPlayerMoney(playerid) >= 1000) { Player[playerid][pLevel] += 1GivePlayerMoney(playerid, -1000); } else { SCM(playeridINFOA"Você não tem dinheiro suficiente para comprar o level 3"); } } else { SCM(playeridINFOA"Você não tem pontos o suficiente para upar de level !"); }
       }
      if(
Player[playerid][pLevel] == 3)
       {
        if(
Player[playerid][pScore] == 13) { if(GetPlayerMoney(playerid) >= 1500) { Player[playerid][pLevel] += 1GivePlayerMoney(playerid, -1500); } else {SCM(playeridINFOA"Você não tem dinheiro o suficiente para comprar o level 4"); } } else { SCM(playeridINFOA"Você não tem pontos o suficiente para upar de level !"); }
       }
       
      if(
Player[playerid][pLevel] == 4)
       {
        if(
Player[playerid][pScore] == 16) { if(GetPlayerMoney(playerid) >= 5000) {Player[playerid][pLevel] += 1GivePlayerMoney(playerid, -5000); } else {SCM(playeridINFOA"Você não tem dinheiro o suficiente para comprar o level 5"); } } else { SCM(playeridINFOA"Você não tem pontos o suficiente para upar de level !"); }
       }
       
      if(
Player[playerid][pLevel] == 5)
       {
        if(
Player[playerid][pScore] == 16) { if(GetPlayerMoney(playerid) >= 10000) { Player[playerid][pLevel] += 1GivePlayerMoney(playerid, -10000); } else {SCM(playeridINFOA"Você não tem dinheiro o suficiente para comprar o level 6"); } } else { SCM(playeridINFOA"Você não tem pontos o suficiente para upar de level !"); }
       }
       
      if(
Player[playerid][pLevel] == 6)
       {
        if(
Player[playerid][pScore] == 20) { if(GetPlayerMoney(playerid) >= 18000) { Player[playerid][pLevel] += 1,  GivePlayerMoney(playerid, -18000); } else { SCM(playeridINFOA"Você não tem dinheiro o suficiente para comprar o level 7"); } } else { SCM(playeridINFOA"Você não tem pontos o suficiente para upar de level !"); }
       }
      
      if(
Player[playerid][pLevel] == 7)
       {
        if(
Player[playerid][pScore] == 24) { if(GetPlayerMoney(playerid) >= 20000) { Player[playerid][pLevel] += 1,  GivePlayerMoney(playerid, -20000); } else { SCM(playeridINFOA"Você não tem dinheiro o suficiente para comprar o level 8"); } } else { SCM(playeridINFOA"Você não tem pontos o suficiente para upar de level !"); }
       }
      
      if(
Player[playerid][pLevel] == 8)
       {
        if(
Player[playerid][pScore] == 28) { if(GetPlayerMoney(playerid) >= 27000) { Player[playerid][pLevel] += 1,  GivePlayerMoney(playerid, -27000); } else { SCM(playeridINFOA"Você não tem dinheiro o suficiente para comprar o level 9"); } } else { SCM(playeridINFOA"Você não tem pontos o suficiente para upar de level !"); }
       }
       
      if(
Player[playerid][pLevel] == 9)
       {
        if(
Player[playerid][pScore] == 32) { if(GetPlayerMoney(playerid) >= 32000) { Player[playerid][pLevel] += 1,  GivePlayerMoney(playerid, -32000); } else { SCM(playeridINFOA"Você não tem dinheiro o suficiente para comprar o level 10"); } } else { SCM(playeridINFOA"Você não tem pontos o suficiente para upar de level !"); }
       }
       
       
     }
    return 
1;

__________________
Modelador 3d, futuro Eng. Aeroespacial
GSantana is offline   Reply With Quote
Old 03/06/2019, 01:52 AM   #2
PedroH
Huge Clucker
 
Join Date: Jul 2017
Posts: 337
Reputation: 5
Default Re: otimizar ou esta bom como está ?

Tem algumas coisas que podem ser melhoradas em questão de estruturas, mas creio que a melhor forma de implentar seria assim:

PHP Code:
enum info_level
{
    
level,
    
score,
    
money_minimo

PHP Code:
new lista_level[][info_level] = 
{
    
//{level, pScore, Money minimo}
    
{07200},
    {
110800},
    {
2131000},
    {
3131500},
    {
4165000},
    {
51610000},
    {
62018000},
    {
72420000},
    {
82827000},
    {
93232000}

PHP Code:
CMD:comprar(playeridparams)
{
    for(new 
i=0sizeof(lista_level) ;i++) //Faz um loop na lista de leveis.
    
{
        if(
Player[playerid][pLevel] == lista_level[i][level]) //Verifica se é o level atual do player.
        
{
            if(
Player[playerid][pScore] == lista_level[i][score]) //Verifica se o player tem o score especificado.
            
{
                if(
GetPlayerMoney(playerid) >= lista_level[i][money_minimo]) //Verifica se o player tem o dinheiro minimo para comprar o level.
                    
GivePlayerMoney(playerid, -lista_level[i][money_minimo]);
                else
                    
SCM(playeridINFOA"Você não tem dinheiro suficiente para comprar o level %d !"lista_level[i][level]);
            }
            return 
1;
        }else
            
SCM(playeridINFOA"Você não tem pontos o suficiente para upar de level !"); 
    }

Quando quiser adicionar mais leveis basta colocar na lista de leveis junto com seus requisitos!

Last edited by PedroH; 03/06/2019 at 03:35 PM.
PedroH is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
[Off] Quem está criando servidor do zero e está precisando de programador? [BOPE]Seu._.Madruga Português/Portuguese 7 31/10/2014 11:52 PM
[Ajuda] MySql está setando o e-mail más não está chamando dialog [BOPE]Seu._.Madruga Português/Portuguese 2 03/03/2014 06:44 PM
[Ajuda]Oq Está Certo oq esta ERRADO brunogysin Português/Portuguese 2 20/11/2010 06:40 PM


All times are GMT. The time now is 05:28 PM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.