[AJUDA] Tapete de Prego
#1

Eu achei esse script na net:

pawn Код:
#define FILTERSCRIPT
#include <a_samp>
#define TireDano(%1,%2,%3,%4) %1 | (%2 << 1) | (%3 << 2) | (%4 << 3)
new
Tapete,
Angle,
Float:xx,
Float:yy,
Float:zz;
forward
      PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z);
forward
      Pneu(playerid);
public
     PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
{
    if(IsPlayerConnected(playerid))
    {
        new Float:oldposx, Float:oldposy, Float:oldposz;
        new Float:tempposx, Float:tempposy, Float:tempposz;
        GetPlayerPos(playerid, oldposx, oldposy, oldposz);
        tempposx = (oldposx -x);
        tempposy = (oldposy -y);
        tempposz = (oldposz -z);
//      printf("DEBUG: X:%f Y:%f Z:%f",posx,posy,posz);
        if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
        {
            return 1;
        }
    }
    return 0;
}
public
     OnFilterScriptInit()
{
    print("\n--------------------------------------");
    print(" [HTS]Tapete Load By: [HTS]");
    print("--------------------------------------\n");
    SetTimer("Pneu",199,1);
    return 1;
}
public
    Pneu(playerid)
{
new Dano[4];
if (IsPlayerInAnyVehicle(playerid))
{
if (PlayerToPoint(5.0, playerid,xx,yy,zz))
{
GetVehicleDamageStatus(GetPlayerVehicleID(playerid), Dano[0], Dano[1], Dano[2], Dano[3]);
UpdateVehicleDamageStatus(GetPlayerVehicleID(playerid), Dano[0], Dano[1], Dano[2], TireDano(1, 1, 1, 1));
GameTextForPlayer(playerid,"~y~[~w~H~g~T~~r~S] ~w~Pneu Furado",6000,1);
}
}
}

public
     OnPlayerCommandText(playerid, cmdtext[])
{

if (strcmp("/criartapete", cmdtext, true, 10) == 0)
{
GetPlayerPos(playerid,xx,yy,zz);
GetPlayerFacingAngle(playerid, Angle);
Tapete = CreateObject(2899, xx, yy, zz, 0, 0, Angle);
GameTextForPlayer(playerid,"~y~[~w~H~g~T~~r~S] ~w~Tapete Criado",6000,1);
return 1;
}

if (strcmp("/deletartapete", cmdtext, true, 10) == 0)
{
DestroyObject(Tapete);
GameTextForPlayer(playerid,"~y~[~w~H~g~T~~r~S] ~w~Tapete Deletado",6000,1);
return 1;
}

return 0;
}
E eu queria fazer com que ele seja usado sу pelas organizaзхes:
Policia Militar
B.O.P.E
Exercito

E que nгo tenha o comando /deletartapete, e sim que ele suma depois de 1min... (se for possнvel)

Vocкs devem tar pensando que sou doente fazendo esses pedidos, eu comecei a arrumar servidores faz pouco tempo... Ainda nгo sei mexer direito em scriptfiles e includes, vim direto do c++ do tibia pro sa-mp...

Espero que me ajudem...
Reply
#2

Crie a forward:
Код:
forward SumirTapete();
No comando criar tapete, coloque embaixo da linha GameTextFor...
Код:
SetTimer("SumirTapete",60000,false); // Isso cria um SetTimer pra rodar que tem duraзгo de 1 min
Depois no final mesmo crie a public:
Код:
public SumirTapete() // O que acontece quando o tempo do tapete acaba
{
	DestroyObject(Tapete); // Destroi o tapete
	return 1;
}
Depois apague todo o comando "/deletartapete" pois ele nгo й mais necessбrio.

Agora para sу policiais usarem o comando tem que ver a variбvel que vocк usa pro player ser da policia.
Procure algum comando que sу policiais podem usar em seu GM como /algemar, e olhe a linha que ta escrito por exemplo:
Код:
if(PlayerInfo[playerid][pAlgumacoisa]
Nгo que seja desse tipo, mas qualquer tipo de variavel que for.

Se nгo achar fala qual GM ue estб usando para que podemos lhe ajudar melhor.
Reply
#3

Bem, eu arrumei ela...
Sу que da 4 erros:

pawn Код:
C:\Documents and Settings\Famнlia Mattos\Meus documentos\Downloads\Tapete2.pwn(28) : error 017: undefined symbol "PlayerInfo"
C:\Documents and Settings\Famнlia Mattos\Meus documentos\Downloads\Tapete2.pwn(28) : warning 215: expression has no effect
C:\Documents and Settings\Famнlia Mattos\Meus documentos\Downloads\Tapete2.pwn(28) : error 001: expected token: ";", but found "]"
C:\Documents and Settings\Famнlia Mattos\Meus documentos\Downloads\Tapete2.pwn(28) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Famнlia Mattos\Meus documentos\Downloads\Tapete2.pwn(28) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664          Copyright (c) 1997-2006, ITB CompuPhase


4 Errors.
script:
pawn Код:
#define FILTERSCRIPT
#include <a_samp>
#define TireDano(%1,%2,%3,%4) %1 | (%2 << 1) | (%3 << 2) | (%4 << 3)
new
Tapete,
Angle,
Float:xx,
Float:yy,
Float:zz;
forward
      PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z);
forward Pneu(playerid);
forward SumirTapete();
forward IsACop(playerid);
forward IsAMember(playerid);

enum pInfo
{
    pKey[128],
    pLider,
    pMembro,
};

public IsACop(playerid)
{
    if(IsPlayerConnected(playerid))
    {
        new lider = PlayerInfo[playerid][pLider];
        new member = PlayerInfo[playerid][pMembro];
        if(member==1 || member==2 || member==3 || member==16 || member==11 || member==24)
        {
            return 1;
        }
        else if(lider==1 || lider==2 || lider==3 || lider==16 || lider==11 || lider==24)
        {
            return 1;
        }

public
     PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
{
    if(IsPlayerConnected(playerid))
    {
        new Float:oldposx, Float:oldposy, Float:oldposz;
        new Float:tempposx, Float:tempposy, Float:tempposz;
        GetPlayerPos(playerid, oldposx, oldposy, oldposz);
        tempposx = (oldposx -x);
        tempposy = (oldposy -y);
        tempposz = (oldposz -z);
//      printf("DEBUG: X:%f Y:%f Z:%f",posx,posy,posz);
        if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
        {
            return 1;
        }
    }
    return 0;
}
public
     OnFilterScriptInit()
{
    print("\n--------------------------------------");
    print(" [MG]Tapete Load By: Leleuh");
    print("--------------------------------------\n");
    SetTimer("Pneu",199,1);
    return 1;
}
public
    Pneu(playerid)
{
new Dano[4];
if (IsPlayerInAnyVehicle(playerid))
{
if (PlayerToPoint(5.0, playerid,xx,yy,zz))
{
GetVehicleDamageStatus(GetPlayerVehicleID(playerid), Dano[0], Dano[1], Dano[2], Dano[3]);
UpdateVehicleDamageStatus(GetPlayerVehicleID(playerid), Dano[0], Dano[1], Dano[2], TireDano(1, 1, 1, 1));
GameTextForPlayer(playerid,"~y~[~w~M~g~G] ~w~Pneu Furado",6000,1);
}
}
}

public
     OnPlayerCommandText(playerid, cmdtext[])
{

if (strcmp("/criartapete", cmdtext, true, 10) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            if(IsACop(playerid))
{
GetPlayerPos(playerid,xx,yy,zz);
GetPlayerFacingAngle(playerid, Angle);
Tapete = CreateObject(2899, xx, yy, zz, 0, 0, Angle);
GameTextForPlayer(playerid,"~y~[~w~M~g~G] ~w~Tapete Criado",6000,1);
SetTimer("SumirTapete",60000,false); //pra mudar o tempo so mudar o 60000
return 1;
}

if (strcmp("/criartapete", cmdtext, true, 10) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            if(!IsACop(playerid))
{
GetPlayerPos(playerid,xx,yy,zz);
GetPlayerFacingAngle(playerid, Angle);
Tapete = CreateObject(2899, xx, yy, zz, 0, 0, Angle);
GameTextForPlayer(playerid,"~y~[~w~M~g~G] ~w~Vocк nгo й um policial!",6000,1);
return 1;
}

public SumirTapete() // O que acontece quando o tempo do tapete acaba
{
    DestroyObject(Tapete); // Destroi o tapete
    return 1;
}

return 0;
}
Reply
#4

tenta subistituir essa sua:
Код:
public IsACop(playerid)
{
	if(IsPlayerConnected(playerid))
	{
	    new lider = PlayerInfo[playerid][pLider];
	    new member = PlayerInfo[playerid][pMembro];
	    if(member==1 || member==2 || member==3 || member==16 || member==11 || member==24)
		{
		    return 1;
		}
		else if(lider==1 || lider==2 || lider==3 || lider==16 || lider==11 || lider==24)
		{
		    return 1;
		}
Por essa:
Код:
public IsACop(playerid)
{
	if(IsPlayerConnected(playerid))
	{
	    new lider = PlayerInfo[playerid][pLeader];
	    new membro = PlayerInfo[playerid][pMember];
	    if(member==1 || member==2 || member==3 || member==16 || member==11 || member==24)
		{
		    return 1;
		}
		else if(lider==1 || lider==2 || lider==3 || lider==16 || lider==11 || lider==24)
		{
		    return 1;
		}
	}
	return 0;
}
Ou seja, colocar um "return 0;" no fim.
Eu nгo sei muto bem o motivo por nгo entender bem de pawno, mas acho que pra uma public de forward funcionar tem que ter o "return 0;"
Obs: Nгo tenho certeza do que estou escrevendo.
Reply
#5

Sim cara, eu prefiro notepad c++ pra trabalhar scripting, pawno quando encontra erro nгo dexa nem vc testar pra ver a onde ta erro "em pratica"

vo la testar, qualquer coisa edito aqui

pawn Код:
C:\Users\Administrator\Desktop\SAMP MG\filterscripts\Tapete.pwn(28) : error 017: undefined symbol "PlayerInfo"
C:\Users\Administrator\Desktop\SAMP MG\filterscripts\Tapete.pwn(28) : warning 215: expression has no effect
C:\Users\Administrator\Desktop\SAMP MG\filterscripts\Tapete.pwn(28) : error 001: expected token: ";", but found "]"
C:\Users\Administrator\Desktop\SAMP MG\filterscripts\Tapete.pwn(28) : error 029: invalid expression, assumed zero
C:\Users\Administrator\Desktop\SAMP MG\filterscripts\Tapete.pwn(28) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664          Copyright (c) 1997-2006, ITB CompuPhase


4 Errors.
Troquei e deu esses.
Reply
#6

Olha peguei esse comando do tapete de pregos do meu GM. Ele funciona com todas ORG's policiais, Mais acho que nгo vai funcionar colocar em outro GM, por isso n fecha pawno para dar ctrl + z

pawn Код:
if(strcmp(cmdtext, "/prego", true)==0 || strcmp(cmdtext, "/pregos", true)==0)
    {
        if(PlayerPaintballing[playerid] != 0)
        {
            SendClientMessage(playerid,COLOR_YELLOW," Vocк nгo pode por pregos no evento!");
            return 1;
        }
        if (!IsACop(playerid)) return SendClientMessage(playerid, COLOR_GREY, "Vocк nгo й COP!");
        if (SpikeInfo[playerid][sCreated] != 0) return SendClientMessage(playerid, COLOR_GREY, "Vocк sу pode implantar 1 prego por vez, /rpr - para remover seu tapete de pregos.");
        new Float:X, Float:Y, Float:Z, Float:A;
        GetPlayerPos(playerid, X, Y, Z);
        GetPlayerFacingAngle(playerid, A);
        SpikeInfo[playerid][sCreated]=1;
        SpikeInfo[playerid][sX]=X;
        SpikeInfo[playerid][sY]=Y;
        SpikeInfo[playerid][sZ]=Z-0.7;
        SpikeInfo[playerid][sObject] = Thiago_CreateObject(2899, X, Y, Z-0.9, 0, 0, A-90, 300.0);
        GameTextForPlayer(playerid, "~w~Pregos ~r~Criados", 5000, 5);
        SendClientMessage(playerid, COLOR_GREEN, "Pregos Implantados... Use /rpr Para Remover e Poder Criar Mais!.");
        format(string, sizeof(string), "Estado: Um prego foi bem plantado por %s.", PlayerName(playerid));
        for(new i = 0; i < MAX_PLAYERS; i++)
        {
            if(IsPlayerConnected(i))
            {
                if(IsACop(i))
                {
                    SendClientMessage(i, TEAM_BLUE_COLOR, string);
                    if (PlayerInfo[i][pCargo] >= 5 && IsACop(i))
                    {
                        SendClientMessage(i, COLOR_YELLOW, "Vocк pode remover todos os pregos usando /rprall");
                    }
                }
            }
        }
        return 1;
    }
Reply
#7

Й mesmo, se nгo der muito trabalho tenta passar seu FS pro eu GM, talvez no GM o PlayerInfo funcione.
Reply
#8

O Liba ta certo, й que eu queria dividir o FS com a galera do fуrum, mas pelo visto vai ter q ficar no GM ^^
Vo testar brigadгo Shadow e Liba :B

Editei e nгo deu certo :/
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)