POWRACA

PDK POWRACA


#1 2009-07-21 09:12:27

Stoper

Administrator

12220489
Zarejestrowany: 2009-07-20
Posty: 23
Punktów :   

system /nrg

www.Pawno.pl


    
Witam.Pisze poradnik jak zrobić System NRG. Wpisujesz /NRG i dostajesz 1 NRG-500(wsadza cie na NRG). Przewidziane są takie opcje jak:

1.Gdy siedzisz w jakimś innym pojeździe i wpiszesz /NRG to wywala cie z pojazdu i posadza cie na NRG.
2.To robi tylko 1 NRG dla 1 gracza! Nie ma możliwości zespawnować sobie powyżej 1 NRG.
3.Zawsze spawnuje sie NRG o kolorze Czarno-Czerwonym.

P.S. Ja mam na serverze "Rangi Graczy" komenda /nrg jest możliwa tylko dla gracza z rangą "Stały gracz" więc nie spawnuje sie na server bardzo dużo nowych NRG więc nie ma problemów jeśli chodzi o limit pojazdów itp.

Na samej górze Moda lub Skryptu (okolice linijek np. #define COLOR_WHITE 0xFFFFFFAA) wklejamy to:
Kod
new NRG[MAX_PLAYERS];

Jest to nazwa funkcji z użyciem [MAX_PLAYERS] czyli dla wszystkich graczy.

Następny krok to znajdź linijke:
Kod
public OnPlayerCommandText(playerid, cmdtext[])


Pod tą linijką Wstaw:

Kod
if(strcmp(cmdtext, "/nrg", true)==0)
{
if( NRG[playerid] > 0 )
{
if(GetPlayerVehicleID(playerid) != NRG[playerid])
{
if(IsPlayerInAnyVehicle(playerid))
{
RemovePlayerFromVehicle(playerid);
}
new Float: X, Float: Y, Float: Z, Float: Ang;
GetPlayerPos(playerid, X, Y, Z);
GetPlayerFacingAngle(playerid, Ang);
PutPlayerInVehicle(playerid, NRG[playerid], 0);
SetVehiclePos(NRG[playerid], X, Y, Z);
SetVehicleZAngle(NRG[playerid], Ang);
SetVehicleHealth(NRG[playerid], 1000.0);
LinkVehicleToInterior(NRG[playerid], GetPlayerInterior(playerid));
SendClientMessage(playerid,MOJ, "Osobiste NRG zrobione!");
}
else
{
SendClientMessage(playerid,COLOR_RED, "Juz masz 1 NRG!");
}
}
else
{
if(IsPlayerInAnyVehicle(playerid))
{
RemovePlayerFromVehicle(playerid);
}
new Float: X, Float: Y, Float: Z, Float: Ang;
GetPlayerPos(playerid, X, Y, Z);
GetPlayerFacingAngle(playerid, Ang);
NRG[playerid] = CreateVehicle(522, X, Y , Z, Ang, 75,3, 5000000);
PutPlayerInVehicle(playerid, NRG[playerid], 0);
LinkVehicleToInterior(NRG[playerid], GetPlayerInterior(playerid));
SendClientMessage(playerid,MOJ, "Osobiste NRG zrobione.");
PlayerPlaySound(playerid, 1085, 0.0, 0.0, 0.0);
SetVehicleParamsForPlayer(NRG[playerid], playerid, 0, 0);
for(new i=0; i <= MAX_PLAYERS; i++)
{
if ( IsPlayerConnected(i) )
{
if ( i != playerid )
{
SetVehicleParamsForPlayer(NRG[playerid], i, 0, 1);
}
}
}
}
return 1;
}

if(strcmp(cmdtext, "/nrg", true)==0) -tutaj jest komenda /NRG zmień na dowolną.
if( NRG[playerid] > 0 ) - jeśli gracz nie ma już NRG czyli te 0 to leci dalej...
if(GetPlayerVehicleID(playerid) != NRG[playerid]) - to bierze Id pojazdu w którym siedzi gracz,jeśli to nie jest NRG utworzone wcześniej poprzez tą komendę.
if(IsPlayerInAnyVehicle(playerid)) - jeśli gracz jest w jakimś pojeździe(idzie dalej...)
RemovePlayerFromVehicle(playerid); -wywala gracza z Pojazdu (jeśli siedzi w jakimś innym podczas wpisania komendy /NRG.
new Float: X, Float: Y, Float: Z, Float: Ang; -to określa pozycje w której pojawi sie NRG(obecna pozycja gracza.)
GetPlayerPos(playerid, X, Y, Z); -bierze pozycje gracza...
GetPlayerFacingAngle(playerid, Ang); - bierze kierunek w którym stoi gracz(kierunek w którym sie patrzysz).
PutPlayerInVehicle(playerid, NRG[playerid], 0); - wsadza gracza na NRG-500.
SetVehiclePos(NRG[playerid], X, Y, Z); -ustawia pozycje NRG w takiej pozycji jaką ma gracz.
SetVehicleZAngle(NRG[playerid], Ang); - ustawia kierunek w jakim stoi Pojazd.
SetVehicleHealth(NRG[playerid], 1000.0); -ustawia poziom życia pojazdu na MAX.(w razie czego...).
LinkVehicleToInterior(NRG[playerid], GetPlayerInterior(playerid)); - jeśli gracz jest w jakimś interiorze i wpisuje /NRG to dodaje nrg do Interioru.
SendClientMessage(playerid,MOJ, "Osobiste NRG zrobione!"); - pokazuje wiadomość na czacie po wpisaniu komendy /NRG.
else - jeśli gracz już ma 1 NRG pokazuje sie wiadomość na czacie:
SendClientMessage(playerid,COLOR_RED, "Juz masz 1 NRG!");
else - to komenda wielokrotnego użytku więc "else" jeśli:
if(IsPlayerInAnyVehicle(playerid)) - jeśli gracz jest w jakimś pojeździe:
RemovePlayerFromVehicle(playerid); - wywala gracza z jakiegoś pojazdu jeśli w nim jest.
NRG[playerid] = CreateVehicle(522, X, Y , Z, Ang, 75,3, 5000000); - ta funkcja to Serce naszego tematu...to tworzy NRG-500 dla gracza.
Liczba 522 to ID pojazdu(NRG-500).
X, Y, Z, - to współrzędne gdzie pojazd sie pojawi.
Ang - to kierunek w jakim pojazd bedzie ustawiony.
75 - to 1 z 2 kolorów naszego NRG.
3 - to 2 z 2 kolorów NRG.
5000000 - to czas respawnu w sekundach(ta część budzi wiele kontrowersji...)
SetVehicleParamsForPlayer(NRG[playerid], playerid, 0, 0); - ustawia parametry motoru do Gracza.

10 Klamr otwierających,10 klamr zamykających.
Kod jest ułożony poprawnie (co jest bardzo ważne w profesjonalnym scriptingu,początkujących raczej nie dotyczy...)
Użyte kolory:
Kod
#define COLOR_RED 0xAA3333AA
#define MOJ 0xFF9900AA

Offline

 

Stopka forum

RSS
Powered by PunBB
© Copyright 2002–2008 PunBB
Polityka cookies - Wersja Lo-Fi


Darmowe Forum | Ciekawe Fora | Darmowe Fora
www.feralheart-super-gierka.pun.pl www.musa2010.pun.pl www.everastots.pun.pl www.najlepszemotylki.pun.pl www.wsztokf.pun.pl