[Ajuda] Converter Zcmd para Sscanf
#1

Tem um comando em Zcmd que eu gostaria de converter para Sscanf, pois meu gm й com base nela, eu procurei e achei uma cambada de tуpicos porйm o maluco postava e comando e os caras convertiam porйm ninguйm explicou como fez para converter, nгo achei mais nada alйm disso...
Aqui estб um exemplo de cmd em sscanf do GM:
Code:
if(strcmp(cmd, "/trazer", true) == 0)
	{
		if(pAdmin[playerid] == 2 || pAdmin[playerid] == 3 || pAdmin[playerid] == 4 || dini_Int(file, "Profissao") == Temac ||dini_Int(file, "Profissao") == Caminhoneiro || pAdmin[playerid] == 5 || pAdmin[playerid] == 6 || pAdmin[playerid] == 7 || pAdmin[playerid] == 8)
		{
			new tmp[256], plid;
			tmp = strtok(cmdtext, idx);
			if(!strlen(tmp))
			{
				SendClientMessage(playerid, Vermelho, "Digite: /trazer [id]");
				return 1;
			}
			plid = strval(tmp);
			if(IsPlayerConnected(plid))
			{
				new Float:X, Float:Y, Float:Z;
				new interiormeu = GetPlayerInterior(playerid);
				SetPlayerInterior(plid, interiormeu);
				GetPlayerPos(playerid, X, Y, Z);
				if(IsPlayerInAnyVehicle(plid))
				{
					new VehicleID = GetPlayerVehicleID(plid);
					SetVehiclePos(VehicleID, X+2, Y+2, Z);
					PutPlayerInVehicle(plid, VehicleID, 0);
				}
				else
				{
					SetPlayerPos(plid, X+2, Y+2, Z);

					TogglePlayerControllable(plid, false);
					SetTimerEx("DestogglePlayerControllable", 1000, 0, "d", plid);
				}
				format(string, sizeof(string), "%s (ID: %d) trouxe vocк atй sua posiзгo!", PlayerName(playerid), playerid);
				SendClientMessage(plid, tcadm, string);
				format(string, sizeof(string), "Vocк trouxe %s (ID: %d) atй sua posiзгo!", PlayerName(plid), plid);
				SendClientMessage(playerid, tcadm, string);
			}
			else
			{
				SendClientMessage(playerid, 0xFF0000AA, "Valor invбlido, tente novamente!");
			}
		}
		return 1;
	}
Aqui o comando que quero converter.. (Por favor expliquem como fizeram para converter)
Code:
CMD:siren(playerid, params[])
{
	if(IsACop(playerid))
	{
		new string[128], type;
		new VID = GetPlayerVehicleID(playerid);
		if(sscanf(params, "d", type))
		{
			SendClientMessageEx(playerid, COLOR_WHITE, "USAGE: /siren [type]");
			SendClientMessageEx(playerid, COLOR_GRAD2, "Type: 1 = Inside, 2 = Roof, 3 = Off.");
			return 1;
		}
		switch(type)
		{
		case 1:
			{
				if(Siren[VID] == 1)
				{
					SendClientMessageEx(playerid, COLOR_GRAD2, "This vehicle already has a siren!");
					return 1;
				}
				 new sendername[MAX_PLAYER_NAME];
                 Siren[VID] = 1;
                 GetPlayerName(playerid, sendername, sizeof(sendername));
                 SirenObject[VID] = CreateObject(18646, 10.0, 10.0, 10.0, 0, 0, 0);
                 AttachObjectToVehicle(SirenObject[VID], VID, 0.0, 0.75, 0.275, 0.0, 0.1, 0.0);
                 format(string, sizeof(string), "* %s puts the siren on the dashboard.", sendername);
                 ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
				return 1;
			}
		case 2:
			{
				if(Siren[VID] == 1)
				{
					SendClientMessageEx(playerid, COLOR_GRAD2, "This vehicle already has a siren!");
					return 1;
				}
                        Siren[VID] = 1;
                        new sendername[MAX_PLAYER_NAME];
                        GetPlayerName(playerid, sendername, sizeof(sendername));
                        SirenObject[VID] = CreateObject(18646, 10.0, 10.0, 10.0, 0, 0, 0);
                        AttachObjectToVehicle(SirenObject[VID], VID, -0.43, 0.0, 0.785, 0.0, 0.1, 0.0);
                        format(string, sizeof(string), "* %s puts the siren on the roof.", sendername);
                        ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
         				return 1;
			}
		case 3:
			{
				if(Siren[VID] == 0)
				{
					SendClientMessageEx(playerid, COLOR_GRAD2, "This vehicle doesn't have a siren on it!");
					return 1;
				}
				Siren[VID] = 0;
                new sendername[MAX_PLAYER_NAME];
               	GetPlayerName(playerid, sendername, sizeof(sendername));
               	DestroyObject(SirenObject[VID]);
               	format(string, sizeof(string), "* %s takes down the siren.", sendername);
               	ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
				return 1;
			}
		default:
			{
				SendClientMessageEx(playerid, COLOR_WHITE, "Invalid license type! /siren [type]");
				SendClientMessageEx(playerid, COLOR_GRAD2, "Type: 1 = Roof, 2 = Inside, 3 = Off.");
			}
		}
	}
	else SendClientMessageEx(playerid, COLOR_GREY, "You're not authorised to use this command.");
	return 1;
}
Reply
#2

Й fбcil.
Se eu nгo me engano
й sу trocar o
Code:
CMD: siren(playerid,params[])
por
Code:
if(strcmp(cmd, "siren", true) == 0)
e o:
Code:
if(sscanf(params,
por
Code:
if(sscanf(cmdtext,

Estб ai o Cmd.
Code:
if(strcmp(cmd, "/siren", true) == 0)
{
	if(IsACop(playerid))
	{
		new string[128], type;
		new VID = GetPlayerVehicleID(playerid);
		if(sscanf(cmdtext, "d", type))
		{
			SendClientMessageEx(playerid, COLOR_WHITE, "USAGE: /siren [type]");
			SendClientMessageEx(playerid, COLOR_GRAD2, "Type: 1 = Inside, 2 = Roof, 3 = Off.");
			return 1;
		}
		switch(type)
		{
		case 1:
			{
				if(Siren[VID] == 1)
				{
					SendClientMessageEx(playerid, COLOR_GRAD2, "This vehicle already has a siren!");
					return 1;
				}
				 new sendername[MAX_PLAYER_NAME];
                 Siren[VID] = 1;
                 GetPlayerName(playerid, sendername, sizeof(sendername));
                 SirenObject[VID] = CreateObject(18646, 10.0, 10.0, 10.0, 0, 0, 0);
                 AttachObjectToVehicle(SirenObject[VID], VID, 0.0, 0.75, 0.275, 0.0, 0.1, 0.0);
                 format(string, sizeof(string), "* %s puts the siren on the dashboard.", sendername);
                 ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
				return 1;
			}
		case 2:
			{
				if(Siren[VID] == 1)
				{
					SendClientMessageEx(playerid, COLOR_GRAD2, "This vehicle already has a siren!");
					return 1;
				}
                        Siren[VID] = 1;
                        new sendername[MAX_PLAYER_NAME];
                        GetPlayerName(playerid, sendername, sizeof(sendername));
                        SirenObject[VID] = CreateObject(18646, 10.0, 10.0, 10.0, 0, 0, 0);
                        AttachObjectToVehicle(SirenObject[VID], VID, -0.43, 0.0, 0.785, 0.0, 0.1, 0.0);
                        format(string, sizeof(string), "* %s puts the siren on the roof.", sendername);
                        ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
         				return 1;
			}
		case 3:
			{
				if(Siren[VID] == 0)
				{
					SendClientMessageEx(playerid, COLOR_GRAD2, "This vehicle doesn't have a siren on it!");
					return 1;
				}
				Siren[VID] = 0;
                new sendername[MAX_PLAYER_NAME];
               	GetPlayerName(playerid, sendername, sizeof(sendername));
               	DestroyObject(SirenObject[VID]);
               	format(string, sizeof(string), "* %s takes down the siren.", sendername);
               	ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
				return 1;
			}
		default:
			{
				SendClientMessageEx(playerid, COLOR_WHITE, "Invalid license type! /siren [type]");
				SendClientMessageEx(playerid, COLOR_GRAD2, "Type: 1 = Roof, 2 = Inside, 3 = Off.");
			}
		}
	}
	else SendClientMessageEx(playerid, COLOR_GREY, "You're not authorised to use this command.");
	return 1;
}
Nгo testei, qualquer coisa me informe.
Reply
#3

Vocк vai alterar o:
Code:
CMD: siren(playerid,params[])
Por:
Code:
if(strcmp(cmd, "/siren", true) == 0)
E o:
Code:
if(sscanf(params,
Por:
Code:
if(sscanf(cmdtext,
Reply
#4

й, isso.
Reply
#5

Manos, deu esses erros seguintes, oque pode ser ? pelo tуpico que vi era so adc em cima da GM isso :
Code:
new Siren[MAX_VEHICLES];
new SirenObject[MAX_VEHICLES];
Esses sгo os erros
Code:
\gamemodes\dten.pwn(18607) : error 017: undefined symbol "IsACop"
\gamemodes\dten.pwn(18609) : warning 219: local variable "string" shadows a variable at a preceding level
\gamemodes\dten.pwn(18611) : warning 217: loose indentation
\gamemodes\dten.pwn(18617) : warning 217: loose indentation
\gamemodes\dten.pwn(18626) : warning 217: loose indentation
\gamemodes\dten.pwn(18632) : error 017: undefined symbol "ProxDetector"
\gamemodes\dten.pwn(18633) : warning 217: loose indentation
\gamemodes\dten.pwn(18642) : warning 217: loose indentation
\gamemodes\dten.pwn(18648) : error 017: undefined symbol "ProxDetector"
\gamemodes\dten.pwn(18663) : error 017: undefined symbol "ProxDetector"
\gamemodes\dten.pwn(18673) : warning 217: loose indentation
\gamemodes\dten.pwn(18674) : warning 217: loose indentation
Reply
#6

Tu pego esse code da onde cara? '-'
O Comando'
Reply
#7

https://sampforum.blast.hk/showthread.php?tid=307319
Reply
#8

Hey voce nгo quiz dizer

Covertar strtok para sscanf ?

e a funзгo com o processador Zcmd ?
Reply
#9

O IsACop deve ser a variбvel usada pra ver se o jogador й policial, й sу remover ela e fazer a indentaзгo novamente. Quanto ao ProxDetector eu nгo sei.
Reply
#10

man sscanf й uma funзгo q processa o zcmd se eu n me engano
Reply
#11

Ok, me passaram a informaзгo errada entгo.
Reply
#12

Vocк copiou esse code antes de estuda-lo. IsACop deve ser uma variavel, porйm nгo tem no seu gamemode.
ProxDetector, deve ser alguma nativa ou algo que nгo consta em seu sistema.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)