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
|