[AJUDA] Tapete de Prego -
Leleuh_MG - 25.06.2012
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...
Re: [AJUDA] Tapete de Prego -
Liba.Nakajima - 25.06.2012
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.
Re: [AJUDA] Tapete de Prego -
Leleuh_MG - 26.06.2012
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;
}
Re: [AJUDA] Tapete de Prego -
Liba.Nakajima - 27.06.2012
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.
Re: [AJUDA] Tapete de Prego -
Leleuh_MG - 27.06.2012
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.
Re: [AJUDA] Tapete de Prego -
LordShadow - 27.06.2012
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;
}
Re: [AJUDA] Tapete de Prego -
Liba.Nakajima - 27.06.2012
Й mesmo, se nгo der muito trabalho tenta passar seu FS pro eu GM, talvez no GM o PlayerInfo funcione.
Re: [AJUDA] Tapete de Prego -
Leleuh_MG - 27.06.2012
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 :/