[Pedido] Sistema PayDay com TextDraw
#1

Alguйm teria um sistema de pagamento com textdraw?

Exemplo: O jogador logava e comeзava a contar o tempo, tipo: "30 minutos". Ao final dos 30 minutos, ele receberia o pagamento. Se ele saнsse faltando 10 minutos para terminar a contagem, quando ele voltasse, contava a partir dos 10 minutos que estavam faltando.

Esse й o meu sistema atual:

Код:
public PayDay()
{
	new Conta;
	new rent = 0;
    for(new i = 0; i < MAX_PLAYERS; i++)
	{
		if(IsPlayerConnected(i) && !IsPlayerNPC(i))
		{
		    if(gPlayerLogged[i] > 0)
		    {
			    if(MoneyMessage[i]==1)
				{
				    SetPlayerCriminal(i,255, "Vocк nгo pagou sua divida com o banco e foi preso.");
				}
				new playername2[MAX_PLAYER_NAME];
				GetPlayerName(i, playername2, sizeof(playername2));
				Conta = PlayerInfo[i][pConta];
				new key = PlayerInfo[i][pPHousekey];
				if(key != 999)
				{
					rent = CasaInfo[key][hRent];
					if(strcmp(playername2, CasaInfo[key][hOwner], true) == 0)
					{
						rent = 0;
					}
					else if(rent > GetPlayerMoneyEx(i))
					{
						PlayerInfo[i][pPHousekey] = 999;
						SendClientMessage(i, COLOR_WHITE, "Vocк foi expulso(a).");
						rent = 0;
					}
					CasaInfo[key][hCofre] = CasaInfo[key][hCofre]+rent;
				}
				if(PlayerInfo[i][pTiroteio] == 1)
				{
					 SetPlayerWeather(i, 42);
				}
				if(PlayerInfo[i][pTiroteio] == 2)
				{
					 SetPlayerWeather(i, 42);
				}
				if(PlayerInfo[i][pValidadeCarro] > 0)
				{
					 if(PlayerInfo[i][pValidadeCarro] == 1)
					 {
						  PlayerInfo[i][pCarLic] = 0;
						  SendClientMessage(i, COLOR_LIGHTRED, "A Sua licenзa de carro passou da validade, vocк precisa renovб-la!");
					 }
					 PlayerInfo[i][pValidadeCarro] -= 1;
				}
				if(PlayerInfo[i][pValidadeMoto] > 0)
				{
					 if(PlayerInfo[i][pValidadeMoto] == 1)
					 {
						  PlayerInfo[i][pMotoLic] = 0;
						  SendClientMessage(i, COLOR_LIGHTRED, "A Sua licenзa de moto passou da validade, vocк precisa renovб-la!");
					 }
					 PlayerInfo[i][pValidadeMoto] -= 1;
				}
				if(PlayerInfo[i][pValidadeBarco] > 0)
				{
					 if(PlayerInfo[i][pValidadeBarco] == 1)
					 {
						  PlayerInfo[i][pBoatLic] = 0;
						  SendClientMessage(i, COLOR_LIGHTRED, "A Sua licenзa de navegaзгo passou da validade, vocк precisa renovб-la!");
					 }
					 PlayerInfo[i][pValidadeBarco] -= 1;
				}
				if(PlayerInfo[i][pValidadeAviao] > 0)
				{
					 if(PlayerInfo[i][pValidadeAviao] == 1)
					 {
						  PlayerInfo[i][pFlyLic] = 0;
                          SendClientMessage(i, COLOR_LIGHTRED, "A Sua licenзa de voo passou da validade, vocк precisa renovб-la!");
					 }
					 PlayerInfo[i][pValidadeAviao] -= 1;
				}
				if(PlayerInfo[i][pValidadeOnibus] > 0)
				{
					 if(PlayerInfo[i][pValidadeOnibus] == 1)
					 {
                          PlayerInfo[i][pCamOniLic] = 0;
						  SendClientMessage(i, COLOR_LIGHTRED, "A Sua licenзa de caminhao/onibus passou da validade, vocк precisa renovб-la!");
					 }
					 PlayerInfo[i][pValidadeOnibus] -= 1;
				}
				if(PlayerInfo[i][pBateria] > 0)
				{
					 if(PlayerInfo[i][pBateria] == 1)
					 {
						  SendClientMessage(i, COLOR_LIGHTRED, "A Bateria do seu celular esgotou, compre outra na 24-7!");
						  PlayerInfo[i][pBateria] = 0;
					 }
					 else
					 {
					      PlayerInfo[i][pBateria] -= 1;
					 }
				}
				new tmpintrate;
			    if(PlayerInfo[i][pVIP] == 1) { tmpintrate = 2; }
			    else if(PlayerInfo[i][pVIP] == 2) { tmpintrate = 3; }
			    else if(PlayerInfo[i][pVIP] == 3) { tmpintrate = 4; }
				else { tmpintrate = 1; }
				if(PlayerInfo[i][pPayDay] >= 1)
				{
				    Tax += TaxValue;//Shorld work for every player online
				    PlayerInfo[i][pConta] -= TaxValue;
					new checks = PlayerInfo[i][pSalario];
				    ConsumingMoney[i] = 1;
				    if(PlayerInfo[i][pSocio] == 1)
					{
					     PlayerInfo[i][pExp]+= 4;
					}
					else if(PlayerInfo[i][pSocio] == 2)
					{
					     PlayerInfo[i][pExp]+= 6;
					}
					else if(PlayerInfo[i][pSocio] == 3)
					{
					     PlayerInfo[i][pExp]+= 10;
					}
					else if(PlayerInfo[i][pSocio] == 0)
					{
					     PlayerInfo[i][pExp]++;
					}
					PlayerPlayMusic(i);
                    PlayerInfo[i][pConta] = Conta+checks;
					SendClientMessage(i, COLOR_WHITE, "|_B_V_P_|Pagamento|_B_V_P_|");
					format(gstring, sizeof(gstring), "Salбrio:{00FF00}R$[%d]{F2F2F2}| Imposto:{ff0000}[-R$%d]",checks,TaxValue);
					SendClientMessage(i, COLOR_WHITE, gstring);
                    if(PlayerInfo[i][pPHousekey] != 999 || PlayerInfo[i][pPbiskey] != 257)
					{
					    format(gstring, sizeof(gstring), "{F2F2F2}Energia:{ff0000}[-R$0] | {F2F2F2}Бgua:{ff0000}[-R$0]");
						SendClientMessage(i, COLOR_GRAD1, gstring);
					}
					format(gstring, sizeof(gstring), "| Juros Bancбrios {00FF00}[0.%d]",tmpintrate);
					SendClientMessage(i, COLOR_WHITE, gstring);
					format(gstring, sizeof(gstring), "Saldo Bancбrio Anterior:{ff0000}R$[%d] {F2F2F2}| Saldo Bancбrio Atual:{00FF00}R$[%d]", Conta,PlayerInfo[i][pConta]);
					SendClientMessage(i, COLOR_WHITE, gstring);
					PlayerPlaySound(i, 1185, 0.0, 0.0, 0.0);
					format(gstring, sizeof(gstring), "~y~-==- ~g~ BRV Salario ~y~ -==-");
					GameTextForPlayer(i, gstring, 5000, 1);
					OnPlayerSave(i);
					rent = 0;
					pban[i] = 0;
					PlayerInfo[i][pCaixinha] = 0;
					PlayerInfo[i][pPayDay] = 0;
					PlayerInfo[i][pSalario] = 0;
                    PlayerInfo[i][pConnectTime] += 1;
                    if(PlayerInfo[i][pEmprego] > 0)
        {
            if(PlayerInfo[i][pContractTime] <= 0)
	    	    		{
							PlayerInfo[i][pContractTime] ++;
						}
	    			}
                }
				else
				{
				    SendClientMessage(i, COLOR_LIGHTRED, "Salбrio recebido. Espere mais 30 minutos para o prуximo.");
				}
				if(PlayerInfo[i][pVIP] > 0)
				{
    		if(PlayerInfo[i][pDiaVIP] <= 0)
   					 	{
	          			PlayerInfo[i][pVIP] = 0;
	          			if(PlayerInfo[i][pSocio] > 0)
						{
   							PlayerInfo[i][pSocio] = 0;
   							SendClientMessage(i, COLOR_RED, "Seus dias de vip/sуcio acabaram e seus status de vip/sуcio foram retirados !");
          				}
          				else
          				{
                               SendClientMessage(i, COLOR_RED, "Seus dias de vip acabaram e seus status de vip foram retirados !");
          				}
          				SendClientMessage(i, COLOR_YELLOW, "O Seu tнtulo foi retirado automaticamente, digite /titulos !");
            }
	            }
			}
		}
		new lolbagui;
		lolbagui = PlayerInfo[i][pExp];
		new nxtlevel = PlayerInfo[i][pLevel]+1;
		if(lolbagui >= nxtlevel*levelexp)
		{
		    ShowPlayerDialog(i, 49, DIALOG_STYLE_MSGBOX, "Respeito Adquirido!", "Vocк jб pode passar para o prуximo nнvel !\n\nVocк deseja comprar agora o prуximo nivel?", "Sim", "Nгo");
		}
	}
	new rand = random(99);
	if(rand < 96) { rand += 3; }
	Lotto(rand);
}
Essa й a minha variбvel:

Код:
PayDay
Se alguйm puder me ajudar, ficaria muito agradecido. Obrigado.
Reply
#2

vocк pode dividir os 30 minutos em 3 = 10
ai criar a variбvel global que vai armazena em qual minuto o player estб!

PHP код:
new Minutos[]; //se quiser coloca max_players
ai б forward do payday
forward PayDay
(playerid);
Em gamemodeinit 
SetTimer
("PayDay"10000*601); //10000 = 10 segundos * multiplicador por 60 = 10 minutos! 1 = true, repetir a cada 10 minutos
//ai na public tu pode criar algo assim!
Minutos[playerid] ++; //a variavel lб, (aqui nos disse a ela que cada vez que der 10 minutos a variavel minutos vai criar mais 1 dela, (explico mу ruim k) ai tipo, deu 10 minutos minutos = 1 deu mais 10 = 2 etc, ent nos vamos criar 3 checks
public PayDay(playerid)
{
   
Minutos[playerid] ++;
    if(
Minutos[playerid] == 1)
   {
      
//ai aqui vocК cria a funзгo para que se ele sair, ele sair setado como Minutos[playerid] == 1 tlg agora?
   
}
    if(
Minutos[playerid] == 2)
   {
      
//ai aqui vocК cria a funзгo para que se ele sair, ele sair setado como Minutos[playerid] == 2 
   
}
    if(
Minutos[playerid] == 3)
   {
      
e aqui vai ser o payday!
   }
return 
1;
}
Ai tipo se ele sair quando minutos tiver == 2tu criar um sistema de salvamento pra salva que ele saiu com minutos =2ai altomбticamentequando der o paydayse ele tiver minutos=2 ele vai pula o 1 tlg?
pode criar em dof2 mesmopra salva
A esqueci, quando de o ==3 tu seta o jogador pra == 0
Minutos[playerid] = 0;

PHP код:
if(Minutos[playerid] == 3)
   {
      
//e aqui vai ser o payday!
      
Minutos[playerid] = 0;
   } 
lembrando que no login do player, ele ja tem que tб setado de minutos, ex se ele saiu com 2, quando ele logar ele ja tem que ta setado com 2, bota o dof2 pra dar load em gamemodeinit, quando o gamemode inicia ja seta o valor do jogador, se coloca em spawn, vai fica atrasado os minutos
Reply
#3

Como eu faзo pra ficar aparecendo o relуgio do payday na tela ?
Reply
#4

Quote:
Originally Posted by Abne
Посмотреть сообщение
Como eu faзo pra ficar aparecendo o relуgio do payday na tela ?
Imagem de Teste:https://imgur.com/a/d34R1
new MinutosP[MAX_PLAYERS], SegundosP[MAX_PLAYERS], Text: Textdraw0[MAX_PLAYERS];//variavel minutos e segundos do payday.

PHP код:
public OnPlayerConnect(playerid

    for(new 
0MAX_PLAYERSi++) 
    { 
        
SetTimerEx("RelogioUP"1000true"i"i); 
        
Textdraw0[i] = TextDrawCreate(499.000000123.000000""); 
    
TextDrawBackgroundColor(Textdraw0[i], 255); 
    
TextDrawFont(Textdraw0[i], 1); 
    
TextDrawLetterSize(Textdraw0[i], 0.4500000.899999); 
    
TextDrawColor(Textdraw0[i], -16776961); 
    
TextDrawSetOutline(Textdraw0[i], 0); 
    
TextDrawSetProportional(Textdraw0[i], 0); 
    
TextDrawSetShadow(Textdraw0[i], 1); 
    
TextDrawSetSelectable(Textdraw0[i], 0); 
    } 
    
MinutosP[playerid] = DOF2_GetInt(Conta"Minutos Payday");//Carregar Minutos 
    
SegundosP[playerid] = DOF2_GetInt(Conta"Segundos Payday");//Carregar Segundos 
    
return 1

public 
OnplayerDisconnect(playeridreason

    
DOF2_SetInt(Conta"Minutos Payday"MinutosP[playerid]);//Salvar Minutos 
    
DOF2_SetInt(Conta"Segundos Payday"SegundosP[playerid]);//Salvar Segundos 
    
return 1

forward RelogioUP(playerid);//Em algum lugar da sua GM. 
public RelogioUP(playerid)//Em algum lugar da sua GM. 

    if(
MinutosP[playerid] == && SegundosP[playerid] == 0
    { 
        
MinutosP[playerid] = 59
        
SegundosP[playerid] = 59
    
PayDay(); 
    } 
    if(
SegundosP[playerid] == -1
    { 
        if(
MinutosP[playerid] == 0
        
MinutosP[playerid] = 59
        
SegundosP[playerid] = 59
        
MinutosP[playerid]--; 
    } 
    new 
string[128]; 
    
format(stringsizeof(string), "Payday:~w~%02dm e %02ds"MinutosP[playerid], SegundosP[playerid]); 
    
TextDrawSetString(Textdraw0[playerid],string); 
    
TextDrawShowForPlayer(playeridTextdraw0[playerid]); 
    
SegundosP[playerid] --; 
    return 
1

Crйditos
DelK_+ REP NELE
http://forum.sa-mp.com/member.php?u=297267
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)