SA-MP Forums Archive
[Pedido] Pedir, Apenas uma modificaзгo.(quem quiser tapete de prego) - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Pedido] Pedir, Apenas uma modificaзгo.(quem quiser tapete de prego) (/showthread.php?tid=367803)



Pedir, Apenas uma modificaзгo.(quem quiser tapete de prego) - davi54723 - 11.08.2012

Aew, galera o maior desafio , foi achar o tapete de prego que funcione, eu jб consegui.
Caso alguйm queira sу pegar..
Preciso que alguйm modifique o o comando de tapete de prego para apenas policias, pois qualquer um pode colocar..
alguйm pode me ajudar.

Code:
#include <a_samp>
#include <SpikeStrip>

strtok(const string[], &index)
{
	new length = strlen(string);
	while ((index < length) && (string[index] <= ' '))
	{
		index++;
	}

	new offset = index;
	new result[20];
	while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
	{
		result[index - offset] = string[index];
		index++;
	}
	result[index - offset] = EOS;
	return result;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
	new cmd[256];
	new idx;
	cmd = strtok(cmdtext, idx);

	if (strcmp(cmd,"/ctapete",true) == 0)
	{
	    new Float:plocx,Float:plocy,Float:plocz,Float:ploca;
        GetPlayerPos(playerid, plocx, plocy, plocz);
        GetPlayerFacingAngle(playerid,ploca);
        CreateStrip(plocx,plocy,plocz,ploca);
	    return 1;
	}
	else if (strcmp(cmd,"/rtapete",true) == 0)
	{
        DeleteClosestStrip(playerid);
	    return 1;
	}
	else if (strcmp(cmd,"/removerall",true) == 0)
	{
        DeleteAllStrip();
	    return 1;
	}
	
	return 0;
}



Re: Pedir, Apenas uma modificaзгo.(quem quiser tapete de prego) - UkTaKe - 11.08.2012

Vocк tem que passar a funзгo para identificar um policial (EX: PlayerInfo[playerid][Organizacao] == 10).


Re: Pedir, Apenas uma modificaзгo.(quem quiser tapete de prego) - RebeloX - 11.08.2012

O meu bspikes й dinвmico o problema й que vocк nгo sabe usar..


Re: Pedir, Apenas uma modificaзгo.(quem quiser tapete de prego) - davi54723 - 11.08.2012

Quote:
Originally Posted by UkTaKe
View Post
Vocк tem que passar a funзгo para identificar um policial (EX: PlayerInfo[playerid][Organizacao] == 10).
Como faзo isso?


Re: Pedir, Apenas uma modificaзгo.(quem quiser tapete de prego) - davi54723 - 11.08.2012

Quote:
Originally Posted by BlueX
View Post
O meu bspikes й dinвmico o problema й que vocк nгo sabe usar..
Nгo sei usar o seu, e vocк nгo me ajudou :/


Re: Pedir, Apenas uma modificaзгo.(quem quiser tapete de prego) - RebeloX - 11.08.2012

Quote:
Originally Posted by davi54723
View Post
Nгo sei usar o seu, e vocк nгo me ajudou :/
Sу fazer assim.

Comando de criar tapete
pawn Code:
if (strcmp(cmd,"/ctapete",true) == 0)
{
    new name[24];
    GetPlayerName(playerid,name,24);
    CreateSpike(playerid,name);
    SendClientMessage(playerid,-1,"Criando um tapete de pregos.");
    return 1;
}
Comando de deletar tapete

pawn Code:
if (strcmp(cmd,"/ctapete",true) == 0)
{
    DestroySpike(playerid);
    return 1;
}
Lembrando que tem de estar onde o tapete esta.

Agora й sу fazer assim, na public OnPlayerUpdate coloque este cуdigo:

pawn Code:
IsPlayerInSpike(playerid,/*true/false para desligar o motor*/,/*true/false para criar fogo*/,/*velocidade necessбria para criar fogo.*/,/*tempo para destruir o fogo, coloque 60000*/)
ex:
pawn Code:
IsPlayerInSpike(playerid,true,true,60,60000)
Agora caso queira enviar uma mensagem quando ele passa pelo tapete de pregos sу usar este cуdigo.

pawn Code:
public OnPlayerPassedSpike(playerid,bool:fire,bool:engine){
    if(fire && engine){
        SendClientMessage(playerid,0x800000AA,"Opa, seu carro esta pegando fogo!");
    }
    return 1;
}
Agora para voce permitir o comando para policial sу, veja este exemplo:

[pawn]
pawn Code:
if (strcmp(cmd,"/ctapete",true) == 0)
{
    if(policial[playerid] != 1) return 1;
    new name[24];
    GetPlayerName(playerid,name,24);
    CreateSpike(playerid,name);
    SendClientMessage(playerid,-1,"Criando um tapete de pregos.");
    return 1;
}
Aconselho vocк a ver o meu tutorial de empregos, espero que isso ajude


Re: Pedir, Apenas uma modificaзгo.(quem quiser tapete de prego) - Delay - 11.08.2012

Um simples IsACop nao resorve?


Re: Pedir, Apenas uma modificaзгo.(quem quiser tapete de prego) - RebeloX - 11.08.2012

Quote:
Originally Posted by Delay
View Post
Um simples IsACop nao resorve?
Depende, o IsACop pode nгo estar usando as variбveis que o server usa.


Re: Pedir, Apenas uma modificaзгo.(quem quiser tapete de prego) - DartakousLien - 12.08.2012

Quote:
Originally Posted by davi54723
View Post
Como faзo isso?
Na verdade o que voce queria saber nao explicaram para voce neh? Eu explico entao. Voce quer colocar o criar tapete so para policia. Muito bem, entao logicamente voces sabe que o server vai precisar saber se voce й policia ou nao e para isso vamos usar uma condicao ou seja "if"

este й o seu comando
pawn Code:
if (strcmp(cmd,"/ctapete",true) == 0)
{
    new Float:plocx,Float:plocy,Float:plocz,Float:ploca;
    GetPlayerPos(playerid, plocx, plocy, plocz);
    GetPlayerFacingAngle(playerid,ploca);
    CreateStrip(plocx,plocy,plocz,ploca);
    return 1;
}
aqui todo o mundo pode criar, entao vamos colcar o if ( condicao para saber se ele й policia )

ficaria assim

pawn Code:
if (strcmp(cmd,"/ctapete",true) == 0)
{
    if(SerPolicia(playerid))//aqui voce usa de acordo com o seu gm para saber se й policia pode ser IsACop ou outros..nao sei, ou simplesmente a tecnica do pMembro]==x nao sei...
    {
        new Float:plocx,Float:plocy,Float:plocz,Float:ploca;
        GetPlayerPos(playerid, plocx, plocy, plocz);
        GetPlayerFacingAngle(playerid,ploca);
        CreateStrip(plocx,plocy,plocz,ploca);
        return 1;
    }
    else
    {
        SendClientMessage(playerid,-1,"Voce nao й policia");
        return 1;
    }
}
como й obvio este comando podia ser bastante melhorado...talvez pra voce seja complicado porque й iniciado em pawn, pelo menos parece entao aconselho voce primeiro a aprender e depois melhorar, mas vou deixar o codigo melhorado

pawn Code:
if(!strcmp(cmdtext,"/ctapete",true)) {
    if(!SerPolicia(playerid)) {
        return SendClientMessage(playerid,-1,"Voce nao й policia"),1;
    }
    new Float:pos[4];
    GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
    GetPlayerFacingAngle(playerid,pos[3]);
    CreateStrip(pos[0],pos[1],pos[2],pos[3]);
    return 1;
}



Re: Pedir, Apenas uma modificaзгo.(quem quiser tapete de prego) - davi54723 - 12.08.2012

Quote:
Originally Posted by DJloko
View Post
Na verdade o que voce queria saber nao explicaram para voce neh? Eu explico entao. Voce quer colocar o criar tapete so para policia. Muito bem, entao logicamente voces sabe que o server vai precisar saber se voce й policia ou nao e para isso vamos usar uma condicao ou seja "if"

este й o seu comando
pawn Code:
if (strcmp(cmd,"/ctapete",true) == 0)
{
    new Float:plocx,Float:plocy,Float:plocz,Float:ploca;
    GetPlayerPos(playerid, plocx, plocy, plocz);
    GetPlayerFacingAngle(playerid,ploca);
    CreateStrip(plocx,plocy,plocz,ploca);
    return 1;
}
aqui todo o mundo pode criar, entao vamos colcar o if ( condicao para saber se ele й policia )

ficaria assim

pawn Code:
if (strcmp(cmd,"/ctapete",true) == 0)
{
    if(SerPolicia(playerid))//aqui voce usa de acordo com o seu gm para saber se й policia pode ser IsACop ou outros..nao sei, ou simplesmente a tecnica do pMembro]==x nao sei...
    {
        new Float:plocx,Float:plocy,Float:plocz,Float:ploca;
        GetPlayerPos(playerid, plocx, plocy, plocz);
        GetPlayerFacingAngle(playerid,ploca);
        CreateStrip(plocx,plocy,plocz,ploca);
        return 1;
    }
    else
    {
        SendClientMessage(playerid,-1,"Voce nao й policia");
        return 1;
    }
}
como й obvio este comando podia ser bastante melhorado...talvez pra voce seja complicado porque й iniciado em pawn, pelo menos parece entao aconselho voce primeiro a aprender e depois melhorar, mas vou deixar o codigo melhorado

pawn Code:
if(!strcmp(cmdtext,"/ctapete",true)) {
    if(!SerPolicia(playerid)) {
        return SendClientMessage(playerid,-1,"Voce nao й policia"),1;
    }
    new Float:pos[4];
    GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
    GetPlayerFacingAngle(playerid,pos[3]);
    CreateStrip(pos[0],pos[1],pos[2],pos[3]);
    return 1;
}
Vocк respondeu minha pergunta, mбs infelizmente nгo consegui fazer com as informaзхes que me passou.
Poderia substituir e enviar o cуdigo pronto?

Obrigado...