[TUT] Checar Бrea Player -
ipsBruno - 29.05.2010
Tutorial de Como Checar Бrea do player bom para proibir veiculos em tais lugares
Primeiramente Criamos a Funзгo que irб fazer para checar бrea do player
Ao Final GM:
pawn Код:
stock IsPlayerInArea(playerid, Float:minx, Float:maxx, Float:miny, Float:maxy)
{
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z);
if (x > minx && x < maxx && y > miny && y < maxy) return 1;
return 0;
}
EXPLICAЗГO:
IsPlayerInArea -> Funзгo
playerid -> Player que sofre aзгo
Float:minx, Float:maxx, Float:miny, Float:maxy-> Argumento que podem ser usados
if (x > minx && x < maxx && y > miny && y < maxy) -> Compara Area do player
Agora Vamos Criar um Timer que Verifica Area do player
OnGameModeInit:
pawn Код:
SetTimer("CHECARAREA",true,1000);
EXPLICAЗГO:
SetTimer -> Iniciar Tempo
true -> Repete Timer
1000 ->Tempo
Agora a Public que o Timer Chamarб:
Final GM:
pawn Код:
forward CHECARAREA(playerid);
public CHECARAREA(playerid)
{
if(IsPlayerInArea(playerid, CORDENADAS) == true)
{
SendClientMessage(playerid,COR,"Kickado por estar em local de xister noob kkk");
Kick(playerid);
}
return 1;
}
EXPLICAЗГO:
if(IsPlayerInArea -> Checa бrea player
forward -> Declara Public adicionar
Kick -> Kick Player que estiver a area
SendClientMessage -> Envia Mensagem ao player
DICA:
Caso nгo sabes coodenada de cabeзa vai aqui:
http://forum.sa-mp.com/index.php?topic=82857.0
Ele faz o codigo para vocк
Tutorial Retirado do Blog Pawn SA:MP nгo permitido em outros blog sem autorizaзгo do autor
Re: [TUT] Checar Бrea Player -
Gil_Henriquee - 29.05.2010
No meu caso, como eu faria se eu quiser restringir digamos que toda a бrea do aeroporto de LS? como eu faria para fecha-la inteira..?
Atй aonde eu entendi o teu tutorial proнbe apenas um determinado local certo?
Abras
Re: [TUT] Checar Бrea Player -
zSuYaNw - 29.05.2010
ele sу vai Executar a aзгo somente na coordenada ?
Re: [TUT] Checar Бrea Player -
Rick_DR - 29.05.2010
Muito bom mas tenho a mesma duvida que eles
Re: [TUT] Checar Бrea Player -
DartakousLien - 29.05.2010
Quote:
Originally Posted by TheGarfield
ele sу vai Executar a aзгo somente na coordenada ?
|
sim, somente dentro daquela area, tipo
coordenada x maximo = 5000
coordenada x minimo = 4000
coordenada y maximo = 5000
coordenada y minimo = 4000
se tu estiver na coordenada
x = 4500
y = 4500
voзe й kickado
se estiver na
x = 3999
y = 3999
vocк nгo й kickado, resumindo, se a coordanada x onde vocк estб for superior a 4000 e inferior a 5000 e y for superior a 4000 e inferior a 5000 vocк й kickado caso contrario nгo aconteзe nada
tipo se estiver na
x = 4500
y = 3999
vocк nгo й kickado, porque a coordenada x й superior a 4000 e inferior a 5000 mas a coordenada y nao
espero ter ajudado
@TOPIC
Parabйns DraKoN tб muito bom
Re: [TUT] Checar Бrea Player -
ipsBruno - 29.05.2010
valeu pelo apoio DJLoko
Re: [TUT] Checar Бrea Player -
[BR]JD - 29.05.2010
ae drakon eu posso postar no meu blog ?
Re: [TUT] Checar Бrea Player -
[NWD]Tweener_ - 29.05.2010
E se no caso eu quisesse utilizar isso para proibir uma arma em um local/бrea, eu usaria assim?
Код:
forward CHECARAREA(playerid);
public CHECARAREA(playerid)
{
if(IsPlayerInArea(playerid, CORDENADAS) == true)
{
SendClientMessage(playerid,COR,"Vocк perdeu suas armas champz (Acho que perdeu)");
ResetPlayerWeapons(playerid);
}
return 1;
}
Re: [TUT] Checar Бrea Player -
ipsBruno - 29.05.2010
QueTal?
rs
pawn Код:
forward CHECARAREA(playerid);
public CHECARAREA(playerid)
{
if(IsPlayerInArea(playerid, CORDENADAS) == true)
{
SendClientMessage(playerid,COR,"Kickado por estar em local de xister noob kkk");
ResetPlayerWeapons(playerid);
}
return 1;
}
Provavelmente o SendClientMessage enviarб varias vezes
Re: [TUT] Checar Бrea Player -
[NWD]Tweener_ - 29.05.2010
Quote:
Originally Posted by DraKoNeoN
QueTal?
rs
pawn Код:
forward CHECARAREA(playerid); public CHECARAREA(playerid) { if(IsPlayerInArea(playerid, CORDENADAS) == true) { SendClientMessage(playerid,COR,"Kickado por estar em local de xister noob kkk"); ResetPlayerWeapons(playerid); } return 1; }
Provavelmente o SendClientMessage enviarб varias vezes
|
Mais para frente vou ver isso no meu GM й que o host ja estб pago e ainda falta algumas coisas, entгo vou deixar essas cosia para adicionar com o tempo. Aliбs, o que mudou do que eu coloquei para esse?
Re: [TUT] Checar Бrea Player -
DartakousLien - 29.05.2010
a mensagem
Re: [TUT] Checar Бrea Player -
Scratchy_Nutz - 29.05.2010
Quote:
Originally Posted by DJLoko™
a mensagem
|
LOL
Re: [TUT] Checar Бrea Player -
[NWD]Tweener_ - 29.05.2010
Quote:
Originally Posted by DJLoko™
a mensagem
|
Obvio que a mensagem (riariaira) digo no cуdigo.
Re: [TUT] Checar Бrea Player -
DartakousLien - 29.05.2010
Quote:
Originally Posted by [NWD
Black_Alien ]
Quote:
Originally Posted by DJLoko™
a mensagem
|
Obvio que a mensagem (riariaira) digo no cуdigo.
|
mas eu disse "a mensagem", porque nao vi mais nenhuma diferenзa
Re: [TUT] Checar Бrea Player -
ipsBruno - 30.05.2010
Vocкs Viram que eu dei 'rs,' risada para ironizar,ainda falei
QueTal?
Rs
A Mensagem pode estar enviado muita vezes tente criar outro coisa para enviar apenas 1x
Re: [TUT] Checar Бrea Player -
DartakousLien - 30.05.2010
Quote:
Originally Posted by DraKoNeoN
QueTal?
rs
pawn Code:
forward CHECARAREA(playerid); public CHECARAREA(playerid) { if(IsPlayerInArea(playerid, CORDENADAS) == true) { SendClientMessage(playerid,COR,"Kickado por estar em local de xister noob kkk"); ResetPlayerWeapons(playerid); } return 1; }
Provavelmente o SendClientMessage enviarб varias vezes
|
deixa ver se eu entendi, se estiver aqui, irгo estar sempre a apareзer mensagens certo, enquanto la estiver vai estar sempre a aparecer a mensagem, isso significa que enche o ecra com mensagens em milesimos de segundos.
pode usar GameTextForPlayer (aco que й assim que escreve) e esse apareзe tal como o SendClientMessage, equanto vocк estiver la, mas pelo menos na enche o chat com a mesma mensagem milhentos de vezes
Re: [TUT] Checar Бrea Player -
andmeida10 - 30.05.2010
cd creditos a quem criou a stock..
...
Mt bom trabalho
Re: [TUT] Checar Бrea Player -
[NWD]Tweener_ - 14.07.2010
DraKoN kenga, me salva manolo, й o seguinte, eu atй criei um outro tуpico por que eu nгo achei esse. Mas aqui vai eu:
Quero que uma funзгo nгo funcione em uma determinada area, como eu faria? Para que sу na area definida essa funзгo nгo funcionasse? (A funзгo que me refiro й de prender o player se matar)
------------@EDIT
Esqueci jб consegui. Cara, a cada dia o SA:MP me surpreende mais. . .
-----------@EDITІ
Bom, testei agora, e o player morto, estб dando spawn em outro lugar ao invйs de dar spawn nos hospitais.
pawn Code:
public OnPlayerDeath(playerid, killerid, reason)
{
if(!IsPlayerInArea(killerid, 1076.198, 1210.226, 1154.294, 1372.684) == true)
{
if(GetClosestHospital(playerid) == 0){
SetSpawnInfo(playerid, 1, pap_CarregarInt(playerid, "Skin"), -2651.6501, 634.4510, 14.4531, 180.0000, 0, 0, 0, 0, 0, 0);
}
else if(GetClosestHospital(playerid) == 1){
SetSpawnInfo(playerid,1,pap_CarregarInt(playerid, "Skin"),1173.5842,-1324.5615,15.1953,278.4624,0,0,0,0,0,0);
}
else if(GetClosestHospital(playerid) == 2){
SetSpawnInfo(playerid,1,pap_CarregarInt(playerid, "Skin"),2031.9415,-1404.3578,17.2614,165.8180,0,0,0,0,0,0);
}
else if(GetClosestHospital(playerid) == 3){
SetSpawnInfo(playerid,1,pap_CarregarInt(playerid, "Skin"),1582.5615,1768.7921,10.8203,93.7454,0,0,0,0,0,0);
}
SendClientMessage(playerid, COLOR_YELLOW, "[HOSPITAL]Os mйdicos do Hospital pъblico nгo lhe combraram nada!");
pap_SalvarInt(playerid, "Dinheiro_banco", pap_CarregarInt(playerid, "Dinheiro_banco") - 0 );
pap_SalvarInt(playerid, "Morreu", pap_CarregarInt(playerid, "Morreu") + 1 );
if(Procurados[playerid] == 1){
Procurados[playerid] = 0;
Presos[playerid] = 1;
pap_SalvarInt(playerid, "Preso", 1);
LogarPlayer(playerid);
}
else{
SendDeathMessage(killerid,playerid,reason);
if (patd_PegarDinheiroJogador(playerid) > 0) {
SendClientMessage(playerid,COLOR_WHITE,"[HOSPITAL] Alйm disso, um assassino cara de pau robou toda sua grana,");
SendClientMessage(playerid,COLOR_WHITE,"[HOSPITAL] enquanto vocк estava agonizando na beira da morte no chгo.");
patd_ManipularDinheiro(killerid, patd_PegarDinheiroJogador(playerid));
patd_ZerarDinheiroJogador(playerid);
}
}
Preso[killerid] = 1;
pap_SalvarInt(killerid, "Preso", 1);
ResetPlayerWeapons(killerid);
LogarPlayer(killerid);
pap_SalvarInt(killerid, "Matou", pap_CarregarInt(killerid, "Matou") + 1 );
}
return 1;
}
Funciona perfeito, a nгo ser pelo fato do player morto na бrea dar spawn no mesmo lugar do comando /fianca, e nгo no spawn do hospital.
Alguйm sabe arrumar зabagaзa?
Re: [TUT] Checar Бrea Player -
BiieL - 14.07.2010
ah, o chato eh q so tem X e Y mas nao tem a altura
, pois a altura tambem definiria pois a pessoa pode estar de aviгo ai passa por cima da area sem fazer nada e eh kick ou ban, so isso mesmo.
IsPLayerInArea Eita comando util hein.
Re: [TUT] Checar Бrea Player -
[NWD]Tweener_ - 14.07.2010
Por que o Spawm de quem й morto dentro da area nгo estб sendo nуs hospitais, e sim, no spawm do comando /fianca
Code
pawn Code:
public OnPlayerDeath(playerid, killerid, reason)
{
if(!IsPlayerInArea(killerid, 1076.198, 1210.226, 1154.294, 1372.684) == true)
{
if(GetClosestHospital(playerid) == 0){
SetSpawnInfo(playerid, 1, pap_CarregarInt(playerid, "Skin"), -2651.6501, 634.4510, 14.4531, 180.0000, 0, 0, 0, 0, 0, 0);
}
else if(GetClosestHospital(playerid) == 1){
SetSpawnInfo(playerid,1,pap_CarregarInt(playerid, "Skin"),1173.5842,-1324.5615,15.1953,278.4624,0,0,0,0,0,0);
}
else if(GetClosestHospital(playerid) == 2){
SetSpawnInfo(playerid,1,pap_CarregarInt(playerid, "Skin"),2031.9415,-1404.3578,17.2614,165.8180,0,0,0,0,0,0);
}
else if(GetClosestHospital(playerid) == 3){
SetSpawnInfo(playerid,1,pap_CarregarInt(playerid, "Skin"),1582.5615,1768.7921,10.8203,93.7454,0,0,0,0,0,0);
}
SendClientMessage(playerid, COLOR_YELLOW, "[HOSPITAL]Os mйdicos do Hospital pъblico nгo lhe combraram nada!");
pap_SalvarInt(playerid, "Dinheiro_banco", pap_CarregarInt(playerid, "Dinheiro_banco") - 0 );
pap_SalvarInt(playerid, "Morreu", pap_CarregarInt(playerid, "Morreu") + 1 );
if(Procurados[playerid] == 1){
Procurados[playerid] = 0;
Presos[playerid] = 1;
pap_SalvarInt(playerid, "Preso", 1);
LogarPlayer(playerid);
}
else{
SendDeathMessage(killerid,playerid,reason);
if (patd_PegarDinheiroJogador(playerid) > 0) {
SendClientMessage(playerid,COLOR_WHITE,"[HOSPITAL] Alйm disso, um assassino cara de pau robou toda sua grana,");
SendClientMessage(playerid,COLOR_WHITE,"[HOSPITAL] enquanto vocк estava agonizando na beira da morte no chгo.");
patd_ManipularDinheiro(killerid, patd_PegarDinheiroJogador(playerid));
patd_ZerarDinheiroJogador(playerid);
}
}
Preso[killerid] = 1;
pap_SalvarInt(killerid, "Preso", 1);
ResetPlayerWeapons(killerid);
LogarPlayer(killerid);
pap_SalvarInt(killerid, "Matou", pap_CarregarInt(killerid, "Matou") + 1 );
}
return 1;
}