Download Dodawanie dodatków Log in to check your private messages
  Diamenty Strona główna Twoje konto Register Log in

Previous topic «» Next topic
Poradnik do PAWNO
Author Message
nabuchomozor



Joined: 09 Jul 2009
Location: Daleko :)
Posts: 178

Posted: 2009-07-13, 15:09   Poradnik do PAWNO

Witam w poradniku do robienia map w PAWNO do SA-MP!!!
Myślę że sie wam podoba? Więc nie przedłużając bierzcie się do czytania :D

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 :P

Dodałem nowe programy do downloadu.
Są tam najpotrzebniejsze rzeczy. Polecam do ściągania.

Poradnik do Pawno:
Poradnik jest tworzony na mapie lvdmod.pwn
1. samp_debug.exe
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. Oto komendy których możemy użyć:
Wciskamy tylde [~] 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.

ID pojazdów, kolory oraz ID skinów macie w linku który podałem wyrzej.

Oto jak dodawać skiny:
Mamy przykładowo takie coś. Zapisało nam się to w pliku: savedpositions.txt
I o co w tym chodzi? Oznacze wszystko poszczególnymi kolorami:

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

Teraz czas na pojazdy:
Mamy takie coś też w pliku: savedpositions.txt

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
Otwieramy plik: savedpositions.txt i szukamy naszj zapisanej współrzędnej.
Zapisaliśmy np. współrzędną będać w pojeździe. Wygląda ona tak:

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

Co z tym zrobić? Musimy Napisać tak:

AddStaticPickup( );

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

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:

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

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

Oto typy respawnu pickupów:
0 przedmiot się nie pojawia
2 da się podnieśc i pojawia się po kilku sekundach (polecam używac tego)
3 da się podnieśc, ale się nie pojawia spowrotem
4 znika zaraz po pojawieniu się
5 znika zaraz po pojawieniu się
8 da się podnieśc (bez efektu) - znika zaraz po pojawieniu się
11 rozwala się zaraz po pojawieniu się*
12 rozwala się kilka sekund po pojawieniu się (eksplozja pojazdu?)
13 X - powoli opada na osi Z i ewentualnie przechodzi przez podłogę
15 da się podnieśc, nie pojawia się spowrotem
19 da się podnieśc, ale bez efektu (ikonka informacji?)
22 da się podnieśc, nie pojawia się spowrotem

I gdzie to wkleić?? Ano otwieramy plik: lvdm.pwn
i na dole mapy jest nowy wątek:
public OnGameModeInit()
a 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.

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

Otwieramy plik: lvdm.pwn i szukamy linijki: #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.

3. Jak zmienić nazwe mapy?? By w zakładce ,,Mode" pisało inaczej??
Otwieramy plik lvdm.pwn i szukamy na dole wątku: public OnGameModeInit()
Poniżej mamy takie coś: SetGameModeText("Ventura's DM~MG");
Zmieniamy to co jest zaznaczone na zielono. Pamiętaj że możesz zmieniać tekst
tylko w cudzysłowiach!!! Zaznaczonych tu na czerwono. Zapamiętaj to.

4.Jak dodać nowy kolor??
Otwieramy plik: lvdm.pwn i na samym początku są zdefiniowane kolory. Przykład: #define COLOR_GREY 0xAFAFAFAA
Następnie otwieramy plik: PAWNO - RGB to HEX.exe szukamy sobie nowy kolor. I definiujemy nową nazwe np.:
#define COLOR_LIGHTGREEN 0x18FE12FF

5. 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
Gdy to już mamy przystępujemy do pracy:

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
AddPlayerClass(281,487.0723,-13.4085,1000.6797,220.7422,0,0,0,0,0,0); // coord buy



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"
wtedy 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: {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: {487.0723,-13.4085,1000.6797} - to są współrzędne
z tej linijki: ( 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ść :) )

Tutaj macie link do obrazka jak to wygląda:

Kopiujemy potrzebne dane które utworzyliśmy i wklejamy do kodu źródłowego naszej mapki.
Kompilujemy skrypt i włączamy naszą mapke. Gdy pojedziemy do naszego miejsca zobaczymy
czerwone kółko. Oto nasz marker którego stworzyliśmy sami! :D

Thx dla 50p :wink:

6. Aby wszystko nam ładnie i pięknie chodziło... zapisujemy nasz projekt a potem musimy go skompilować czyli dajemy na compile.
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
7.Tworzymy własną wybierałkę gracza/playera =
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:

Szukamy tego:

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

P.S. To są moje współrzędne które sam zrobiłem. Są wzięte z mapy która jest na n2.
Współrzędne można wziąć z samp_debug.exe lub przez San Andreas Place Manager.
Wygodny jest ten drugi sposób bo można to robić latająć JetPackiem i wtedy jest łatwiej.
Ale jak kto woli. Gdy robimy współrzędne za pomocą samp_debug.exe wyciągamy współrzędne z tąd:
AddStaticVehicle(521,2000.8287,1527.6210,14.1892,1.3089,36,0);
AddPlayerClass(0,2292.7839,2452.5076,10.8203,89.9717,0,0,0,0,0,0);
Pamiętajmy że robiąć współrzędne przez San Andreas Place Manager będziemy musieli pozmieniać
przecinki jak kopiujemy współrzędne.
Aha i 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:

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 ??);
}

Chyba pomogłem? Jak czegoś nie wiecie to się pytać.
Aha. Na początku lepiej aby SetPlayerCameraPos i SetPlayerCameraLookAt były takie same.
Później łatwiej wam będzie zrobić własną wybierałke playera. W linku jest obrazek, który mniej więcej wyjaśnia o co w tym chodzi... :D Link do zdjęcia: http://www.fotosik.pl/pok...68cfe63a8d.html


8. Dodawanie muzyki w tle podczas wybierania gracza/playera
Aby dodać muzyczke trzeba znaleźć to:
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. Waży 16 MB :D
Aha, i jak jest interior 0 czyli na dworze to muzyka będzie grać chyba przez
cały czas gry więc odradzam dodawanie muzyki gdy interior jest zerowy. :D


9.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. Jest to opisane w punkcie: 5
Bierzemy się do roboty…
Szukamy na początku kodu mapki zdefiniowane posiadłości:
Wygląda to tak: #define CP_NAZWA NR.
I na samym dole dodajemy nową definicje:

#define CP_STARFISH 11

STARFISH – jest to nasza nazwa, jaka będzie występowała w kodzie źródłowym
11 – a jedenaście jest 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:

#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:
#define MAX_POINTS 11
11- oznacza maksymalną liczbę posiadłości. Zmieniamy ją na:
#define MAX_POINTS 12
12 – ponieważ chcemy dodać jedną posiadłość

Zaraz pod: #define MAX_POINTS 12 jest linijka:
new Float:checkCoords[MAX_POINTS][4] = {
{2100.6367,1841.2338, 2352.1677,2014.0052} //komentarz nieobowiązkowy
};

To co jest pogrubione na czarno jest to rozmiar strefy w której będzie znajdował się marker.
Współrzędne strefy bierzemy z samp_debug.exe Jak zrobić strefę dowiemy się z punktu: 5
Aha nie zapomnijmy o dodanie wyżej przecinka!!! Wyglądać będzie to w moim przypadku tak:
{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ę:
new Float:checkpoints[MAX_POINTS][3] = {
{2163.3354,1904.5193,10.8125} //komentarz nie obowiązkowy

To co pogrubiłem na czarno są to współrzędne w którym będzie znajdował się nasz marker.
Współrzędne bierzemy z samp_debug.exe Jak zrobić współrzędne dowiemy się w punkcie: 5
Aha i tutaj także pamiętajmy o przecinku:
{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:
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…
CP_BOTIQUE, - tutaj jest
CP_STARFISH - tutaj na końcu nie ma
};

Jedziemy dalej :)
Mamy teraz linijke:
#define MAX_PROPERTIES 8
8 - jest to liczba określająca ile budynków możemy dodać
Zmieniamy ją na 9 :
#define MAX_PROPERTIES 9
Ponieważ chcemy dodać nową posiadłość

Poniżej linijki: #define MAX_PROPERTIES 9
Mamy coś co jest najprostsze. Musimy ustalić nazwę posiadłość, cenę i kwotę jaką dany gracz będzie otrzymywać po kupnie budynku.
Mamy tak:
new propertyNames[MAX_PROPERTIES][32] = {
"Nazwa naszej posiadłości"

Wygląda to tak:
"Botique", pamiętajmy o przecinkach!! Tutaj jest
"Kasyno Star Fish" Tutaj nie ma
};

Następne to cena:
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:
new propertyEarnings[MAX_PROPERTIES] = {
20000

W całości wygląda to tak:
1500, jest przecinek
20000 nie ma przecinka
};

I ostatnie które trzeba zmienić to:
new propertyOwner[MAX_PROPERTIES] = {999,999,999,999,999,999,999};
Dopisujemy trzy dziewiątki na końcu:
new propertyOwner[MAX_PROPERTIES] = {999,999,999,999,999,999,999,999};

I przechodzimy do dalszej częśći… Szukamy komendy: /buy
Mamy coś takiego:
//------------------- /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 to co pogrubiłem na czarno czyli:
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:
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");
*/

I tak. Pamiętajmy aby to co jest pogrubione na czarno umieścić pomiędzy tymi znakami które są zaznaczone na czerwono. Kolor żółty jest to treść komunikatu jaki zostanie wyświetlony gdy wejdziemy do czerwoneo kółka.
I krótkie wyjaśnienie:
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. Jak dodać lub zdefiniować nowe kolory dowiemy się z punktu: 4

10. Dodawanie broni by Rogal24

Szukamy linijki #define MAX_WEAPONS 8 zmieniamy na #define MAX_WEAPONS 9

Potem czas na nazwę broni pod linijką
new weaponNames[MAX_WEAPONS][32] = {
Dodajemy nazwe np
"Minigun"
ale musimy pamiętać o przecinku będzie to tak:
"m4", - tu jest przecinek
"Minigun" - a tu go nie ma

Jedziem dalej pod linijką
new weaponIDs[MAX_WEAPONS] = {
dodajemy
[id broni] //np. nasza nazwa/komentarz
38 //Minigun
pamiętajmy ciągle o przecinku będzie to wyglądało tak:
31, //M4- przecinek po liczbie
38 //minigun - tu niema przecinka

Teraz czas na koszt broni, szukamy linijki:
new weaponCost[MAX_WEAPONS] = {
i dodajemy cenę np:
20000
Pamiętamy o przecinku bez niego ani rusz! Będzie to wyglądało tak:
3000, - jest przecinek
20000 - nie ma go

I ostatnia linijka to:
new weaponAmmo[MAX_WEAPONS] = {
wpisujemy pod nią ilość amunicji np.:
240
przypomnę przecineczek...
120, - jest
240 - nie ma



Może jeszcze coś dodam jak będziecie chcieli.
Prosze się pytać jak czegoś nie wiecie. :P
_________________
Pomoz forum i zostan VIP'em!
I Ty mozesz dolaczyc do ekipy lsteam2009.pl juz dzis!

Na GG pomagam tylko odpłatnie. Jeśli nie chcesz mnie wesprzeć finansowo nie pisz.
 
 
 
suchy1119

Joined: 22 Aug 2009
Posts: 1

Posted: 2009-08-22, 09:22   

Heh THX
 
 
Display posts from previous:   
Reply to topic
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum
Add this topic to your bookmarks
Printable version


Powered by phpBB modified by Przemo © 2003 phpBB Group
Style created by PiotreQ9 from www.HeavyMusic.org
Page generated in 0.47 second. SQL queries: 25