E' la mia prima guida perciò perdonatemi se fa schifo
Sono Funzioni Molto Banali per i RP e non
Qui spiegheremo come aggiungere alcune funzioni per Roleplay.
1. Casco sulla MotoCominciamo Definendo in alto la funzione che siamo sulla moto
Codice:
forward IsModelABike(carid);
Così ora fuori da tutto mettiamo la funzione che dice che noi siamo su una moto..perciò sulle auto non può essere usato
Codice:
public IsModelABike(carid)
{
new modelid = GetVehicleModel(carid);
if(modelid == 448 || modelid == 461 || modelid == 462 || modelid == 463 || modelid == 468 || modelid == 471 || modelid == 481 || modelid == 509 || modelid == 510 || modelid == 521 || modelid == 522 || modelid == 523 || modelid == 581 || modelid == 586)
{
return 1;
}
return 0;
}
Così abbiamo aggiiunto l'ID e definendo che sono delle moto,Ora dobbiamo definire la funzione del che ci dice che stiamo usando il casco
In cima
Codice:
new UsingBelt[MAX_PLAYERS];
e anche
Codice:
new sendername[MAX_PLAYER_NAME];
che ci servirà dopo per il messaggio
Ed ora dobbiamo fare il comando vero e proprio
Codice:
if (strcmp(cmd, "/helmet", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(IsPlayerInAnyVehicle(playerid))
{
if(IsModelABike(GetPlayerVehicleID(playerid)))
{
if(UsingBelt[playerid] == 0)
{
SendClientMessage(playerid, COLOR_X, "* Ti sei messo il casco in testa");
format(string, sizeof(string), "* %s Si è messo il casco", sendername);
UsingBelt[playerid] = 1;
}
else
{
SendClientMessage(playerid, COLOR_X, "* Hai tolto il tuo casco);
format(string, sizeof(string), "* %s Si è tolto il casco", sendername);
UsingBelt[playerid] = 0;
}
}
else
{
return 1;
}
La funzione UsingBelt[playerid] = 1 spiega se stiamo usando il casco o no con 1 è on con 0 è off mentre IsModelABike spiega se siamo su una moto.
Perciò basterà scrivere /helmet per mettersi o togliere il casco
2. Bustapaga SempliceEcco comme creare un sistema di Pay Day semplice che darà ai player una somma di denaro ogni Tot di tempo.
Iniziamo e lo chiameremo Salary e lo definiamo
Codice:
forward Salary();
Ora dobbiamo creare il timer che ci permetterà di dare i soldi ogni tot di tempo perciò creiamo il timer nel OnGameModeInit
Codice:
SetTimer("Salary",720000,1);
al posto di 720000 possiamo cambiare il tempo che è espresso in millisecondi
Ora tocca alla parte finale,il denaro vero e propria. Fuori da tutto creaiamo la funzione Salary
Codice:
public Salary()
{
new counter;
if(IsPlayerConnected(counter))
SendClientMessageToAll(COLOR_X,"Hai ricevuto la tua Bustapaga ");
GivePlayerMoney(counter,500);
}
IsPlayerConncted determina se il giocatore è connesso.
3. RefreshRefresh è una funzione Banale che ci aiuterà a sbuggarci dagli Int
In alto definiamo solo la funzione
Codice:
new Float:slx, Float:sly, Float:slz;
che si servirà per sbuggarci se siamo incastrati
Codice:
if(strcmp(cmd, "/refresh", true) == 0)
{
if(IsPlayerConnected(playerid))
{
SetPlayerVirtualWorld(playerid, 0);
SetPlayerInterior(playerid,0);
GetPlayerPos(playerid, slx, sly, slz);
SetPlayerPos(playerid, slx, sly, slz+2);
SendClientMessage(playerid,COLOR_X,"Sei stato Re-Freshato,se hai altri problemi contatta una admin!");
return 1;
}
La funzione SetPlayerVirtualWorld serve a metterci al "world" 0 che è quello base...per chi non sapesse i virtual world sono funzioni che permettono di creare mondi virtuali ad esempio io sono nel virtual world 1 e un altro player è nello 0 anche se siamo nello stesso punto non ci vedremo.
SetPlayerInterior specifica in quale interior siamo: 0 mondo normale
GetPlayerPos(playerid, slx, sly, slz); e il Set serviranno per alzarci di un pochino in modo se siamo incastrati eccetera.
Lo so è una funzione babbea l'ho appena creata.
4. Blocchi stradaliIn quasi tutti gli RP i poliziotti hanno quella funzione di poter spawnare dei posti di blocco per bloccare i veicoli. Ora vi spiego come crearli innanzitutto in cima aggiungiamo la funzione statica Block
Codice:
static Block[MAX_PLAYERS];
Che saranno i nostri posti di blocco,ora nei comandi aggiungiamo
Codice:
if(strcmp(cmdtext, "/roadblock", true)==0)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
{
if(Block[playerid])
{
SendClientMessage(playerid, COLOR_X, "Hai già creato un posto di blocco scrivi /removeroadblock per riumovere il blocco.");
return 1;
}
new Float:X1, Float:Y1, Float:Z1, Float:A;
GetPlayerPos(playerid, X1, Y1, Z1);
GetPlayerFacingAngle(playerid, A);
Block[playerid] = CreateObject(981, X1-3, Y1, Z1, 0.0, 0.0, A);
SendClientMessage(playerid, COLOR_X, "Posto di blocco piazzato.");
}
}
}
return 1;
}
Block[playerid] = CreateObject(981, X1-3, Y1, Z1, 0.0, 0.0, A); Servirà a creare il posto di blocco davanti a noi
Non possiamo mica lasciare i Blocchi li a marcire quindi creiamo il comando per distruggerli
Codice:
if(strcmp(cmdtext, "/removeroadblock", true)==0)
{
if(!Block[playerid])
{
SendClientMessage(playerid, COLOR_GREY, "Non hai creatyo nessun blocco.");
return 1;
}
DestroyObject(Block[playerid]);
Block[playerid] = 0;
SendClientMessage(playerid, COLOR_X, "Posto di blocco rimosso.");
return 1;
}
Sarà come la funzione precedente ma solo con il DestroyObject che ci distruggerà il nostro povero blocco.
5. AutomessaggiQuesta funzione servirà a mandare messaggi varii ogni tot di tempo...si basa sul metodo del Salary perciò non è complicato,Definiamo in alto AutoMSG
Codice:
forward AutoMsg();
Ora dobbiamo creare il timer che farà comparire i messaggi ogni tot di tempo
Nel OnGameModeInit
Codice:
SetTimer("AutoMsg",170000,1);
170000 Lo possiamo sostituire con un tempo differente in millisecondi
Ora fuori da tutto mettiamo il vero corpo del messaggio
Codice:
public AutoMsg()
{
new rnd = random(3);
switch(rnd)
{
case 0:
{
SendClientMessageToAll(COLOR_X,"SERVER: Se ti Serve qualcosa sicuramente lo troverai su /help!!");
}
case 1:
{
SendClientMessageToAll(COLOR_X,"SERVER: Visita ww.gta-center.com/forums");
}
case 2:
{
SendClientMessageToAll(COLOR_X,"SERVER : We we");
}
}
}
new rnd = random(3); Servirà a determinare che sono casuali,potete aggiungere più messaggi basta inserire
Codice:
}
case NUMERO:
{
SendClientMessageToAll(COLOR_X,"SERVER:we we");
Al posto di numero mettiamo il numero di sequenza del messaggio
Finisco qua la guida poi l'aggiornerò!
