-
Black_Rock.
User deleted
Rifaccio la guida su come creare un casello o un cancello apribile senza comando ma usando IsPlayerInRangeOfPoint.
Prima di tutto per chiarirci faccio vedere delle screen.
Cancello chiuso quando sei lontano dal cancello:
Cancello che si sta aprendo perchè sei vicino al cancello
Cancello Aperto
Cancello Richiuso perchè ti sei allontanato dal Cancello
Ok, Adesso iniziamo a scriptare...
gli include che ci interessano sono 2:CITAZIONE#include <streamer>
#include <a_samp>
dopo aver messo gli include subito sotto gli include dovete mettere le forwards, che servono per aiutarci dopo per lo scritp.
Le Forwards devono essere lo stesso numero dei cancelli che vuoi aprire sennò lo script non va.
Per esempio, se i cancelli sono 4 debbo scrivereCITAZIONEforward TollGameOpen01();
forward TollGameOpen02();
forward TollGameOpen03();
forward TollGameOpen04();
ma in questo tutorial ne useremo solo 1 di cancello quindi sotto le Include dovete mettereCITAZIONEforward TollGameOpen01();
e poi la stessa cosa per le New, devono essere lo stesso numero dei cancelli, quindi scrivete sotto le forwardCITAZIONEnew TollGate1;
#if defined FILTERSCRIPT
OKK, ora passiamo a definire a cosa servono le new e le forwards.
Quindi sotto OnFilterScriptInit dovete mettere tutti gli object della vostra base esclusi i cancelli.
I cancelli li dovete scrivere in modo particolare:
se il cancello èCITAZIONECreateDynamicObject(974, 3181, 510.20001, 6.4, 0, 0, 90);
voi dovete scrivereCITAZIONETollGate1 = CreateDynamicObject(974, 3181, 510.20001, 6.4, 0, 0, 90);
e poi usiamo adesso le forward scrivendo sotto tutti gli object:CITAZIONESetTimer("TollGameOpen01", 1000, 1);
che sarebbeCITAZIONESetTimer("ForWard", Intervallo in millisencondi, ripetizioni);
ora inizia il bello ehehehehe
apriamo un nuovo public che sarebbe:CITAZIONEpublic TollGameOpen01()
e scriviamoci dentroCITAZIONE{
new open;
for(new i=GetMaxPlayers(); i > -1; i--)
{
poi qui iniziamo ad usare IsPlayerInRangeOfPoint quindi dovete prendere delle coordinate vicino al cancello dove il player deve stare per aprire il cancello ad esempio:CITAZIONEif(IsPlayerInRangeOfPoint(i, 8.0, 3184.69995,510.39999,3.8665))
che sta perCITAZIONE(i, il range lasciate 8.0, coordinata X, coordinata Y, coordinata Z)
poi se volete che il cancello si apra solo quando il player ha una tag specifica dovete mettere:CITAZIONE{
if(DoesPlayerHasTag(i,"[TAG DEL CAN"))
poi il messaggio di aperturaCITAZIONE{
SendClientMessage(i,0xFFFFFFFF,"Apertura in corso...");
e adesso dovete specificare il movimento che deve fare il cancello per poter aprirsi quindiCITAZIONEopen = 1;
MoveDynamicObject(TollGate1, 3181, 510.20001, 0, 2.0); /* qui lo spostamento che deve fare il cancello del casello */
break;
}
che sta per:CITAZIONEMoveDynamicObject(OBJECT, coordinata X, coordinata Y, coordinata Z, Velocità "Più grande è il numero, più è veloce");
e adesso dobbiamo fare in modo che il cancello si richiuda quando noi ce ne andiamo quindiCITAZIONE}
if(!open)
MoveDynamicObject(TollGate1, 3181, 510.20001, 6.4, 2.0); /* qui lo spostamento che deve fare il cancello del casello per ritornare come era prima*/
}
}
in pratica dovete rimettere le coordinate standard del cancello.
Poi ricordatevi di mettere lo stock alla fine dello script che èCITAZIONEstock DoesPlayerHasTag(playerid,tag[]) {
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
return (strfind(name,tag,true) != -1);
}
se non avete capito come scriptarla vi metto l'anteprima dello scritp così capite se avete sbagliato:SPOILER (clicca per visualizzare)#define FILTERSCRIPT
#include <streamer>
#include <a_samp>
/* FORWARDS per il tempo */
forward TollGameOpen01();
/* NEW(Tollgate o Caselli per essere elaborati) "Tollgate o caselli sono la stessa cosa" */
new TollGate1;
#if defined FILTERSCRIPT
public OnFilterScriptInit()
{
/* Qui gli object per bloccare il casello, io Ho usato l'object 974 ma non siete obbligati a fare per forza 974, funziona con tutti gli object */
TollGate1 = CreateDynamicObject(974, 3181, 510.20001, 6.4, 0, 0, 90);
/* Tempo che deve stare il player sotto il casello per aprirsi*/
SetTimer("TollGameOpen01", 1000, 1);
/* Qui mettete tutti gli object della vostra base */
CreateDynamicObject(3997, 3102.7998, 404.69922, 3.6, 0, 0, 0);
CreateDynamicObject(3997, 3103, 524.59998, 3.6, 0, 0, 0);
CreateDynamicObject(3866, 3033.69922, 357.89941, 11.4, 0, 0, 87.99);
CreateDynamicObject(3887, 3032, 386.5, 10.9, 0, 0, 0);
AddStaticVehicleEx(560,3080.1999500,506.5000000,4.4000000,0.0000000,0,0,15); //Sultan
AddStaticVehicleEx(560,3074.1999500,506.6000100,4.4000000,0.0000000,0,0,15); //Sultan
Create3DTextLabel("Base BlackBloc, difendetela con cura e astuzia", 0x00000000, 3084.19995,418.29999, 2.0, 40.0, 0, 0);
return 1;
}
#else
main()
{}
#endif
public TollGameOpen01()
{
new open;
for(new i=GetMaxPlayers(); i > -1; i--)
{
/* qui devi scrivere le coordinate dove il player si deve trovare per aprirsi il casello*/
if(IsPlayerInRangeOfPoint(i, 8.0, 3184.69995,510.39999,3.8665)) /* (i, il range lasciate 8.0, coordinata X, coordinata Y, coordinata Z)*/
{
if(DoesPlayerHasTag(i,"[BlackBloc")) /* al posto di [BlackBloc mettete la tag del vostro Clan */
{
SendClientMessage(i,0xFFFFFFFF,"Apertura in corso...");
open = 1;
MoveDynamicObject(TollGate1, 3181, 510.20001, 0, 2.0); /* qui lo spostamento che deve fare il cancello del casello */
break;
}
}
if(!open)
MoveDynamicObject(TollGate1, 3181, 510.20001, 6.4, 2.0); /* qui lo spostamento che deve fare il cancello del casello per ritornare come era prima*/
}
}
public OnFilterScriptExit()
{
return 1;
}
/* !!!!!!!!ATTENZIONE!!!!!!!! RICORDATEVI DI METTERE QUESTO STOCK SOTTO LO SCRITP SENNò NON FUNGE NIENTE*/
stock DoesPlayerHasTag(playerid,tag[]) {
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
return (strfind(name,tag,true) != -1);
}
Guida by Rock, copiata da nessuno, tutorial tutto a parole mie e sono sorpreso che nessuno e neanche inglesi e russi non abbiano fatto un tutorial per cancelli apribili senza cmd.
VIETATO FARE IL COPIA E INCOLLA DI TUTTA LA GUIDA E SPACCIARVI CHE LA GUIDA è VOSTRA.
Aggiornato 27/10/2013
Edited by Guido_La.Vespa - 27/10/2013, 00:03. -
.
Bravo...bella guida. . -
-Tommy-.
User deleted
si però appena passa uno del clan ci vanno dentro tutti ! XD
cmq importantizzo guida!.