Komentarze

# Episodes from Liberty City dopiero w połowie kwietnia
  1. no ja <komuna>......

Witam w poradniku do robienia map w PAWNO do SA-MP!!!

Oto linki w których jest wszystko tzn.:

  • 4 programy do edytowania map _ SA-MP Script Maker
  • Program do robienia kolorów
  • SA-MP 0.1b server + Client + Fix
  • Dwa programy do patrzenia na bieżąco: Ludzi, pojazdów i broni wraz z ich ID
  • Mapy na których jes tworzony ten poradnik(jest tam też sftdm i lvdm)
  • Pliki includes do programu Pawno
  • Inne-tzn. Id pojazdów, kolory, itp. itd.

Prawie w każdym folderze jest opis danego programu.
Po prostu jest tam wszystko czego programista zapragnie.

Download: Poardnik Pawno (7,32MB)

Poradnik jest tworzony na mapie lvdmod.pwn

SA-MP Debug

Program którym możemy dodawać pojazdy i skiny. Jest on w folderze z grą GTA:SA. O ile mamy zainstalowane SA-MP.

Uruchamiamy samp_debug.exe i klikamy na Launch Debug. By wpisać daną komendą przyciskamy tyldę [~] lub [T] i piszemy:

  • /save (nie obowiązkowo komentarz) – zapisuje: id postaci, współrzędne x,y,z, obrót postaci,bronie
  • /vsel – załącza wybór pojazdów
  • /v (id pojazdu) – spawnuje pojazd o podanym id
  • /interior – dowiesz sie jaki id ma interior w którym jesteś (0 jest na zewnątrz, dwór)
  • F11 i F12 – wybór postaci

Koordy – czyli współrzędne które zapisywaliśmy w samp_debug.exe są w pliku: savedpositions.txt w folderze z grą GTA:SA. Gdy chcemy dodać to co zapisaliśmy kopiujemy wybraną linijke i wklejamy do kodu źródłowego mapki.

Plik saveposition

Dodawanie skinu

W pliku: savedpositions.txt zapisane mamy nasze poczynania z debuga, np.

Kod
AddPlayerClass(0,1958.3783,1343.1572,15.3746,269.1425,0,0,0,0,0,0);
AddPlayerClass(ID Skinu,X,Y,Z,A,Broń1 0 ,Amunicja1 0,Broń2 0,Amunicja2 0,Broń3 0,Amunicja3 0);
AddPlayerClass(102,1958.3783,1343.1572,15.3746,269.1425,5,0,22,100,32,50);

Czerwony- ID gracza/skinu
Zielony-Współrzędne X Y Z
Brązowy-Kamera, obrót gracza -z ang. Angle
Fioletowy-ID broni
Niebieski-Amunicja

Dodawanie pojazdów

Kod
AddStaticVehicle(0,2040.2279,1344.4127,10.6719,3.5436,0,0);
AddStaticVehicle(ID pojazdu,X,Y,Z,A,Kolor1,Kolor2);
AddStaticVehicle(411,2040.2279,1344.4127,10.6719,3.5436,126,54);

Czerwony-ID pojazdu
Zielony-Współrzędne X Y Z gdzie pojazd ma się znajdować
Brązowy-Kamera, obrót samochodu – z ang. Angle
Fioletowy-Kolor pierwszy pojazdu
Niebieski-Kolor drugi pojazdu

Jak dodać Pickupa? Czyli np. kamizelke na mapie albo broń? Zapisujem współrzędne przez sam_debug.exe tam gdzie chcemy mieć nasz przedmiot. Możemy być w aucie lub na nogach i dajem: /save opis

Następnie otwieramy plik: savedpositions.txt i szukamy naszj zapisanej współrzędnej. Zapisana współrzędna wyglądać będzie następująco:

Kod
AddStaticVehicle(411,1710.3359,1614.3585,10.1191,3.5436,126,54);

Co z tym zrobić? Musimy Napisać tak:

Kod
AddStaticPickup( );

Kopiujemy współrzędne zaznaczone na zielono: 1710.3359,1614.3585,10.1191 do:

Kod
AddStaticPickup(1710.3359,1614.3585,10.1191);

Teraz aby dodać pickupa musimy dodać jego ID (czyli np. broni albo JetPacka):

W tym celu dopisujemy przed współrzędnymi dwie cyfry: 370,2,

I w całości to wygląda tak:

Kod
AddStaticPickup(370,2,1710.3359,1614.3585,10.1191); //JetPack

Czerwony- ID pickupa lub broni 370-jest to pickup JetPacka
Pomarańczowy- typ respawnu

Oto kilka typów respawnu pickupów:

  • 0- nie pokazuje pickupa
  • 2- respawn pickupa co kilka minut
  • 3- jest cały czas. żaden respawn

I gdzie to wkleić? Ano otwieramy plik: lvdm.pwn i na dole mapy jest nowy wątek:

Kod
public OnGameModeInit()

Niżej są umieszczone Skiny i Pojazdy. Aby dodać swoje skiny lub pojazdy usuwamy je i dodajemy nowe.
Pamiętaj!!! Możesz wstawić tylko 50 modeli pojazdów i 250 wszystkich!!! Inaczej server się nie włączy!!!
Z pickupami postępujemy tak samo. Tylko dodajemy je lepiej pod pojazdami. Pickupy nie liczą się do modeli
pojazdów więc możemy ich dodać ile chcemy.

Jak zrobić żeby gracz miał więcej kasy na początku:

Otwieramy plik: lvdm.pwn i szukamy linijki:

Kod
#define PocketMoney 50000

Jest ona na początku kodu źródłowego mapki. Liczba zaznaczona na czerwono jest liczbę pieniędzy jaką gracz będzie dysponował na początku rozgrywki.

Jak zmienić nazwe mapy?

Otwieramy plik lvdm.pwn i szukamy na dole wątku:

Kod
public OnGameModeInit()

Poniżej mamy takie coć:

Kod
SetGameModeText(‘Ventura’s DM~MG‘);

Zmieniamy to co jest zaznaczone na zielono. Pamiętaj że możesz zmieniać tekst tylko w cudzysłowiach.

Jak dodać nowy kolor?

Otwieramy plik: lvdm.pwn i na samym początku są zdefiniowane kolory, np.

Kod
#define COLOR_GREY 0xAFAFAFAA

Następnie otwieramy plik: PAWNO – RGB to HEX.exe szukamy sobie nowy kolor. I definiujemy nową nazwe np.:

Kod
#define COLOR_LIGHTGREEN 0×18FE12FF

Tworzenie własnego markera i strefy, czyli czerwonego kółka

Aby zrobić współrzędne najlepiej zaopatrzyć się w program San Andreas Place Manage lub robić to przez samp_debug.exe

Kod
AddPlayerClass(281,491.5403,-10.1736,1000.6797,205.3798,0,0,0,0,0,0); // coord 1
AddPlayerClass(281,491.7465,-17.6610,1000.6797,182.2477,0,0,0,0,0,0); // coord 2
AddPlayerClass(281,483.8130,-18.0149,1000.6797,95.8099,0,0,0,0,0,0); // coord 3
AddPlayerClass(281,483.9237,-10.1626,1000.6797,357.7577,0,0,0,0,0,0); // coord 4

3—-4
| B | -droga robienia współrzędnych
2—-1

Kod
AddPlayerClass(281,487.0723,-13.4085,1000.6797,220.7422,0,0,0,0,0,0); // coord buy
Kod
AddPlayerClass(281,491.5403,-10.1736,1000.6797,205.3798,0,0,0,0,0,0);
(ID gracza, X , Y , Z , A , bronie ID)

Potrzebujesz współrzędnych X i Y bierzesz:

  • najniższy X ‘483.8130
  • najniższy Y ‘-18.0149‘ (Jest to liczba ujemna i dlatego jest najmniejsza)
  • najwyższy X ‘491.7465′
  • najwyższy Y ‘-10.1626

Teraz masz tak:

Kod
{483.8130,-18.0149, 491.7465,-10.1626} – to są współrzędne checkCoords – Strefy w której będzie znajdował się marker: ( new Float:checkCoords[MAX_POINTS][4] = { )

Aby mieć współrzędne ,,checkpoints’ przepisujesz współrzędne:

Kod
{487.0723,-13.4085,1000.6797} – to są współrzędne

z tej linijki:

Kod
( new Float:checkpoints[MAX_POINTS][3] = { ) – są to współrzędne w którym będzie znajdować się marker(czyli to czerwone kólko, cylinder w które trzeba wejść )

PAWNO Marker

Kopiujemy potrzebne dane które utworzyliśmy i wklejamy do kodu źródłowego naszej mapki. Kompilujemy skrypt (F5) i włączamy naszą mapke. Gdy pojedziemy do naszego miejsca zobaczymy czerwone kółko.

Kompilacja (pwn do amx

By wszystko nam ładnie i pięknie chodziło zapisujemy nasz projekt a potem musimy go skompilować czyli dajemy na compile (F5). Skompilowany plik .amx zostanie utworzony tam gdzie edytowaliśmy plik .pwn Czyli naszym przykładem był plik: lvdmod.pwn i skompilowaliśmy go do formatu lvdmod.amx

Tworzymy własną wybierałkę gracza

Chodzi o własnego gracza którym będziemy grali i o to w jaki sposób będzie to pokazane. Oto link do zdjęcia:

PAWNO Select Screen

Szukamy tego:

Kod
public SetupPlayerForClassSelection(playerid)
{


SetPlayerInterior(playerid,0);
SetPlayerPos(playerid,2097.502,1158.271,24.5625);
SetPlayerFacingAngle(playerid, 70.0);
SetPlayerCameraPos(playerid,2094.7,1158.271,24.5625);
SetPlayerCameraLookAt(playerid,2094.7,1158.271,24.5625);
}

Zielony- tu jest interior (0- jest na zewnątrz, dwór)
Niebieski – tu jest miejsce gdzie będą stały postacie na początku jak się wybiera
Fioletowy – tutaj jest kąt pod jakim można obrócić skina
Brązowy – tutaj jest miejsce w którym została umieszczona kamera
Błękitny – a tutaj jest miejsce z którego kamera patrzy na skina

Pamiętajcie że kamera ZAWSZE Będzie zwrócona w kierunku: N, S, W, lub E (Północ, Południe, Wschód, Zachód).

A tu jest opisane jak to mniej więcej wygląda:

Kod
public OnPlayerRequestClass(playerid, classid)

{
SetPlayerInterior(playerid,interior); – interior można wziąść z samp_debug.exe

SetPlayerPos(playerid, x, y, z);
SetPlayerFacingAngle(playerid, a); – kąt w przediale od 1-360 stopni
SetPlayerCameraPos(playerid, x, y, z);
SetPlayerCameraLookAt(playerid, x, y, z lub x ??);

}

PAWNO Select Screen

Dodawanie muzyki w tle podczas wybierania gracza

Aby dodał muzyczke trzeba znaleść to:

Kod
public SetupPlayerForClassSelection(playerid)
{
SetPlayerInterior(playerid,14);
SetPlayerPos(playerid,258.4893,-41.4008,1002.0234);
SetPlayerFacingAngle(playerid, 270.0);

SetPlayerCameraPos(playerid,256.0815,-43.0475,1004.0234);
SetPlayerCameraLookAt(playerid,258.4893,-41.4008,1002.0234);
PlayerPlaySound(playerid,1159,258.4893,-41.4008,1002.0234);

}

Kolor zielony – weź stąd współrzędne: SetPlayerPos(playerid,258.4893,-41.4008,1002.0234);

i wklej do: PlayerPlaySound(playerid,1159,2097.502,1158.271,24.5625);

ID muzyki i inne są w pliku do pobrania który zamieściłem.

Dodajemy własne posiadłości:

Zaczynamy od wybrania miejsca, w którym gracze będą mogli kupić nową posiadłość.
Następnie musimy utworzyć strefę i markera – czyli czerwone kółko, cylinder.

Szukamy na początku kodu mapki zdefiniowane posiadłości. Wygląda to tak:

Kod
#define CP_NAZWA NR

I na samym dole dodajemy nową definicje:

Kod
#define CP_STARFISH 11

STARFISH – jest to nasza nazwa, jaka będzie występowała w kodzie źródłowym
11 – to liczba porządkowa przydzielana po kolei, czyli np. 1, 2, 3, 4, itd.

Następnie niżej szukamy podobnych definicji i na samym dole dodajemy:

Kod
#define P_STARFISH 8

STARFISH – jest to nasza nazwa, jaka będzie występowała w kodzie źródłowym musi się zgadzać z wyrzej wymienioną zdefiniowaną wartością
8 – jest to numer porządkowy przydzielany kolejno np. 1, 2, 3, 4, 5, itd.

Szukamy kolejnego wyrazu. Tym razem jest to:

Kod
#define MAX_POINTS 11

11 – oznacza maksymalną liczbę posiadłości. Zmieniamy ją na:

Kod
#define MAX_POINTS 12

12 – ponieważ chcemy dodać jedną posiadłość

Zaraz pod:

Kod
#define MAX_POINTS 12

znajdziemy linijkę:

Kod
new Float:checkCoords[MAX_POINTS][4] = {
{2100.6367,1841.2338, 2352.1677,2014.0052} //komentarz nieobowiązkowy
};

To co jest na czarno jest to rozmiar strefy w której będzie znajdował się marker. Współrzędne strefy bierzemy z samp_debug.exe

Aha nie zapomnijmy o dodanie wyżej przecinka!!! Wyglądać będzie to w moim przypadku tak:

Kod
{416.7485,-84.4242, 422.6890,-74.0611}, //BOTIQUE Tu jest przecinek po nawiasie

{2100.6367,1841.2338, 2352.1677,2014.0052} //STARFISH A tutaj nie ma

W ostatniej linijce nie dajemy nigdy przecinka po nawiasie!!!

Przechodzimy niżej. Mamy tam linijkę:

Kod
new Float:checkpoints[MAX_POINTS][3] = {
{2163.3354,1904.5193,10.8125} //komentarz nie obowiązkowy

To co na czarno są to współrzędne w którym będzie znajdować się nasz marker. Współrzędne bierzemy z samp_debug.exe

Aha i tutaj także pamiętajmy o przecinku:

Kod
{418.5547,-80.1667,1001.8047}, //BOTIQUE tutaj za nawiasem jest przecinek
{2163.3354,1904.5193,10.8125} //STARFISH a tutaj nie ma
};

Pamiętajmy że tutaj także nie dajemy nigdy na końcu ostatniej współrzędnej przecinka!!!

Kolejny etap to dodanie nazwy w linijce:

Kod
new checkpointType[MAX_POINTS] = {

CP_STARFISH

STARFISH – jest to nazwa którą zdefiniowaliśmy wcześniej i musi być wszędzie taka sama

Aha i przecinki…

Kod
CP_BOTIQUE, – tutaj jest
CP_STARFISH – tutaj na końcu nie ma
};

Dalej mamy teraz linijke:

Kod
#define MAX_PROPERTIES 8

8 – jest to liczba określająca ile budynków możemy dodać

Ponieważ chcemy dodać nową posiadłość zmieniamy ją na 9 :

Kod
#define MAX_PROPERTIES 9

Poniżej linijki:

Kod
#define MAX_PROPERTIES 9

Mamy coś co jest najprostsze. Musimy ustalić nazwę posiadłośco, cenę i kwotę jaką dany gracz będzie otrzymywał po kupnie budynku:

Kod
new propertyNames[MAX_PROPERTIES][32] = {
‘Nazwa naszej posiadłości’

Wygląda to tak:

Kod
‘Botique’, pamiętajmy o przecinkach!! Tutaj jest

‘Kasyno Star Fish’ Tutaj nie ma
};

Następne to cena:

Kod
new propertyValues[MAX_PROPERTIES] = {

200000

W całości wygląda to tak:
20000, pamiętajmy o przecinku

200000 Tutaj nie ma przecinka
};

I ostatnie to kwota jaką będzie dawała posiadłość za jej kupno:

Kod
new propertyEarnings[MAX_PROPERTIES] = {
20000

W całości wygląda to tak:

Kod
1500, jest przecinek

20000 nie ma przecinka
};

I ostatnie które trzeba zmienić to:

Kod
new propertyOwner[MAX_PROPERTIES] = {999,999,999,999,999,999,999};

Dopisujemy trzy dziewiątki na końcu:

Kod
new propertyOwner[MAX_PROPERTIES] = {999,999,999,999,999,999,999,999};

I przechodzimy do dalszej części… Szukamy komendy: /buy

Kod
//——————- /buy

if(strcmp(cmd, ‘/buy’, true) == 0) {
new property=999;

if(IsPlayerInCheckpoint(playerid)) {

switch (playerCheckpoint[playerid]) {
case CP_BOTIQUE:{

property = P_BOTIQUE;
}
case CP_STARFISH: {
property = P_STARFISH;
}
}

Dodajemy coś takiego:

Kod
case CP_STARFISH: {

property = P_STARFISH; <— tutaj nie wolno usuwać średnika na końcu!!!
}

I ostatnie, które musimy zmieniń to komunikat jaki będzie wyświetlany gdy wejdziemy do markera. Szukamy tego:

Kod
public OnPlayerEnterCheckpoint(playerid)
{
new string[256];
new ownplayer[MAX_PLAYER_NAME];

switch(getCheckpointType(playerid))
/* case CP_BOTIQUE: {
SendClientMessage(playerid, COLOR_YELLOW, ‘Możesz kupić Botique za $23,000 używając komendy /buy’);
SendClientMessage(playerid, COLOR_YELLOW, ‘Będziesz dostawał regularnie $2,300′)
}
case CP_STARFISH: {
SendClientMessage(playerid, COLOR_YELLOW, ‘Możesz kupić Kasyno Star Fish za $200,000 używając komendy /buy‘);

SendClientMessage(playerid, COLOR_YELLOW, ‘Będziesz dostawać regularnie $20,000‘);
*/

SendClientMessage(playerid, COLOR_YELLOW, ‘Twój komentarz‘);
COLOR_YELLOW – kolor możemy sami zmienić lub dodać nowy. Gdy dodaliśmy np. szary, to może być to: COLOR_GREY i tekst będzie wyświetlany na szaro.