[ajuda] Sistema de placas do samp 0.3c
#1

Tipo da pra defini um certo carro com a placa dele? pq tipo eu queria que quando os cop digitace /multar usace tipo /multar (placadocarro) (preзo) ai o ultimo cara que piloto o carro com essa placa toma multa,entende?
Reply
#2

Tem sim.
Faзa o sistema de placas e poste-o aqui para que o adaptemos.
Reply
#3

pawn Код:
for(new placas=1; placas<MAX_VEHICLES; placas++)
{
    new stringer[12];
    format(stringer, sizeof(stringer), "BRL - %d", placas);
    SetVehicleNumberPlate(placas, stringer);
}
Esse й o codigo para colocar as placas.

Mas eu nгo sei se dar para verificar a placa do veiculo. Caso alguem saiba, posta ai.

OBS: Uma duvida: Eu nгo deveria colocar que placas = 0 ? Sгo assim que todos tutoriais mostram ... E por que estб como 1 entгo ?
Reply
#4

Isso que vocк fez vai setar a placa de todos os carros do servidor pra BRL - %d, outra coisa, pelo que sei й preciso o veiculo dar Respawn pra placa ser aplicada.
estude sobre o laзo for.
Placas = 1 vai comeзar do carro ID 1 e nгo do carro ID 0 ou seja sу um carro no servidor vai continuar cm a mesma placa.
Noticia: Nгo sei pra que vocк quer, mas seu cуdigo estб errado. =)
Reply
#5

Nгo estб errado, nгo. Aqui funciona perfeitamente.

E descobri aqui que se placas for igual a um numero, somente o carro que estiver o ID superior ou igual a este numero terб uma placa.

Aqui o codigo estб numa public com SetTimer.
Reply
#6

Galera eu percebi que tem um sistema de placa aqui ele й assim:
Код:
PlayerInfo[playerid][pVeiculo]
agora eu queria sabe como eu faзo para aplicar a multa dos policias o ultimo player que usou o veiculo
pq tipo pros cop sabe qual era a placa do veiculo й sу eu usar esse comando que fiz agora:
Код:
if(strcmp(cmd, "/verplaca", true) == 0)
	{
	    if(IsPlayerConnected(playerid) || IsPlayerInAnyVehicle(playerid) || Isequipando(playerid))
	    {
			tmp = strtok(cmdtext, idx);
			if(!strlen(tmp))
			{
				SendClientMessage(playerid, COLOR_GRAD2, "USE: /verplaca [ id ]");
				return 1;
			}
			new playa;
			playa = ReturnUser(tmp);
			if (Ispolicia(playerid))
			{
			    if(OnDuty[playerid]==1)
				{
				SendClientMessage(playerid, COLOR_GRAD1, "Vocк nгo bateu o cartгo! (/batercartao)");
				return 1;
				}
			    if(IsPlayerConnected(playa))
			    {
			        if(playa != INVALID_PLAYER_ID)
			        {
				        GetPlayerName(playa, giveplayer, sizeof(giveplayer));
						GetPlayerName(playerid, sendername, sizeof(sendername));
						TogglePlayerControllable(playa, 0);
						format(string, sizeof(string), "ADMIN CMD: %s Congelou %s",sendername,  giveplayer);
						printf("%s",string);
						format(string, sizeof(string), "A placa do veiculo usado por %s й %s",playa,PlayerInfo[playa][pVeiculo]);
						SendClientMessage(playerid,TEAM_GROVE_COLOR,string);
					}
				}
			}
			else
			{
				SendClientMessage(playerid, COLOR_GRAD1, "   Voce nгo esta autorizado a usar este comando!");
			}
		}
		return 1;
	}
e agora como eu adapito pro comando de multa:
Код:
if(strcmp(cmd, "/multar", true) == 0)
	{
	    if(IsPlayerConnected(playerid))
	    {
	        if(!IsACop(playerid) && !IsACopSF(playerid) && !IsAPF(playerid) && IsHeroes(playerid))
			{
			    SendClientMessage(playerid, COLOR_GREY, "Voce nao e policial !");
			    return 1;
			}
	        if(OnDuty[playerid] != 1 && PlayerInfo[playerid][pMembro] == 1)
			{
			    SendClientMessage(playerid, COLOR_GREY, "Voce nao esta em servico !");
			    return 1;
			}
	    	tmp = strtok(cmdtext, idx);
			if(!strlen(tmp))
			{
				SendClientMessage(playerid, COLOR_GRAD2, "USE: /multar [ID] [Custo] [Razao]");
				return 1;
			}
			giveplayerid = ReturnUser(tmp);
            tmp = strtok(cmdtext, idx);
			if(!strlen(tmp))
			{
				SendClientMessage(playerid, COLOR_GRAD2, "USE: /multar [ID] [Custo] [Razao]");
				return 1;
			}
			moneys = strval(tmp);
			if(moneys < 1 || moneys > 10000) { SendClientMessage(playerid, COLOR_GREY, "Custo entre 1 e 10000 !"); return 1; }
			if(IsPlayerConnected(giveplayerid))
			{
			    if(giveplayerid != INVALID_PLAYER_ID)
			    {
			        if (ProxDetectorS(8.0, playerid, giveplayerid))
					{
					    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
						GetPlayerName(playerid, sendername, sizeof(sendername));
						new length = strlen(cmdtext);
						while ((idx < length) && (cmdtext[idx] <= ' '))
						{
							idx++;
						}
						new offset = idx;
						new result[64];
						while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
						{
							result[idx - offset] = cmdtext[idx];
							idx++;
						}
						result[idx - offset] = EOS;
						if(!strlen(result))
						{
							SendClientMessage(playerid, COLOR_GRAD2, "USE: /multar [ID] [Custo] [Razao]");
							return 1;
						}
						format(string, sizeof(string), "* Voce multou %s por $%d, Razao: %s", giveplayer, moneys, (result));
						SendClientMessage(playerid, COLOR_WHITE, string);
						format(string, sizeof(string), "* Oficial %s lhe deu uma multa no valor de $%d, Razao: %s", sendername, moneys, (result));
						SendClientMessage(giveplayerid, COLOR_WHITE, string);
						SendClientMessage(giveplayerid, COLOR_WHITE, "* Use /aceitar multa, para aceitar ela.");
						TicketOffer[giveplayerid] = playerid;
						TicketMoney[giveplayerid] = moneys;
						return 1;
					}
					else
					{
						SendClientMessage(playerid, COLOR_GREY, "O jogador esta longe !");
						return 1;
					}
				}
			}
			else
			{
			    SendClientMessage(playerid, COLOR_GREY, "O jogador esta Offline !");
			    return 1;
			}
		}
		return 1;
 }
esse comando de multa ao inves de ser o id do player ser a placa do carro dele?
Reply
#7

Vocк deveria multar o player e nгo o "carro". Assim seria mais facil ...
Reply
#8

Isto deve resolver o seu problema .


Antes de tudo, instale a include KveH: https://sampforum.blast.hk/showthread.php?tid=228434


Depois, certifique-se de nгo estar usando nenhuma vez a funзгo SetVehicleNumberPlate, mas sim SetVehiclePlate, funзгo da include .


Por fim, coloque:


pawn Код:
//No Topo do GM:

new UltimoVeiculoPlayer[MAX_VEHICLES];



//No OnPlayerExitVehicle


UltimoVeiculoPlayer[vehicleid] = playerid;




//Na sua public OnPlayerCommandText, junto com os outros comandos:


if(strcmp(cmd, "/multar", true) == 0)
    {
        new placatexto[35], multa;
        tmp = strtok(cmdtext, idx);
        if(!strlen(tmp)) return SendClientMessage(playerid, 0xFFFFFFAA, "Digite: /multar (placadocarro) (preзo)");
        format(placatexto,35,tmp);
        tmp = strtok(cmdtext, idx);
        if(!strlen(tmp)) return SendClientMessage(playerid, 0xFFFFFFAA, "Digite: /multar (placadocarro) (preзo)");
        multa = strval(tmp);
        for(new x = 0; x < MAX_VEHICLES; ++x)
        {
            if(!strcmp(GetVehiclePlate(x),placatexto,true))
            {
                SendClientMessage(UltimoVeiculoPlayer[x],0xFFFFFFAA,"Encontraram seu Ъltimo Veнculo quebrando regras e Por isso vocк Recebeu uma Multa !");
                GivePlayerMoney(UltimoVeiculoPlayer[x], (-1*multa));
            }
        }
        return true;
    }

Espero ter ajudado .
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)