Skocz do zawartości
Max_Renault

Tworzymy wybieralke

Rekomendowane odpowiedzi

Spis treści:


  • Dodawanie skinów
  • Tworzenie własnej wybierałki
  • Dodawanie muzyki do wybieralki
  • Tworzenie napisów nad skinami

Dodawanie skina do wybierałki:

Szukamy public'a OnGameModeInit, i wzorujemy się na poniższym schemacie:

public OnGameModeInit()

{

AddPlayerClass(Id skinu,X,Y,Z,Obrót,Broń 1,Amunicja 1,Bron 2,Amunicja 2,Bron 3,Amunicja 3);

return 1;

}

to ID skina którego chcemy dodać do wybieralki, można je znaleźć na stronie http://www.gtam.info/sampid/skiny_samp.php

Współrzędne spawnu skina po jego wybraniu, można je zdobyć z samp_debug.exe

Obrót postaci po wybraniu skina, można to również znaleźć w samp_debug.exe

Bronie jakie mają być dostępne po spawnie dla danego skina, najpierw ID broni, potem amunicja, ID broni można znaleźć poniżej

Lista ID_Broni

Bronie:

1 - Kastet
2 - Kij Golfowy
3 - Pałka Policyjna
4 - Nóż
5 - Kij Baseballowy
6 - Łopata
7 - Kij Bilardowy
8 - Katana
9 - Piła Łańcuchowa
10 - Różowy Wibrator
11 - Biały Wibrator
12 - Długi Biały Wibrator
13 - Biały Wibrator 2
14 - Kwiaty
15 - Laska
16 - Granaty
17 - Gaz Łzawiący
18 - Koktail Molotova
22 - Pistolet
23 - Pistolet Z Tłumikiem
24 - Pistolet Desert Eagle
25 - Shotgun
26 - Sawn Off Shotgun
27 - Combat Shotgun
28 - Micro Uzi (Mac 10)
29 - MP5
30 - AK47
31 - M4
32 - Tec9
33 - Karabin
34 - Snajperka
35 - RPG
36 - Wyrzutnia Rakiet
37 - Miotacz ognia
38 - Minigun
39 - Ładunki Wybuchowe
40 - Detonator
41 - Spray
42 - Gaśnica
43 - Aparat Fotograficzny
44 - Noktowizor
45 - Termowizor
46 - Spadochron
Każdy skin można dawać w tym public według powyższego przykładu. 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. Szukamy tego:
SetupPlayerForClassSelection(playerid) { SetPlayerInterior(playerid,ID interioru); SetPlayerPos(playerid,x,y,z); SetPlayerFacingAngle(playerid, kąt lub x,y,z); SetPlayerCameraPos(playerid,x,y,z); SetPlayerCameraLookAt(playerid,x,y,z); }
tu jest interior (0 - jest na zewnątrz)  – interior można znaleźć pod komendą /interior tu jest miejsce gdzie będą stały postacie na początku jak się wybiera tutaj jest kąt pod jakim można obrócić skina – kąt można podać tzw. współrzędne tutaj jest miejsce w którym została umieszczona kamera a tutaj jest miejsce z którego kamera patrzy na skina A w public'u OnPlayerRequestClass wklej:
SetupPlayerForClassSelection(playerid);
Gdzieś na dole mapy wklej gotowy kod:
SetupPlayerForClassSelection(playerid)
{

SetPlayerInterior(playerid,ID interioru);
SetPlayerPos(playerid,x,y,z);
SetPlayerFacingAngle(playerid, kąt lub x,y,z);
SetPlayerCameraPos(playerid,x,y,z);
SetPlayerCameraLookAt(playerid,x,y,z);

Wszystkie funkcje opisane powyżej :)

Dodawanie muzyki do wybieralki:

Dodawanie muzyki w tle podczas wybierania gracza

Aby dodać muzykę do wybierałki trzeba znaleźć to:

SetupPlayerForClassSelection(playerid)

{

SetPlayerInterior(playerid,ID interioru); // - nie polecam id 0, ponieważ nawet po wybraniu skina, muzyka nie przestaje grać

SetPlayerPos(playerid,x,y,z);

SetPlayerFacingAngle(playerid, x lub x,y,z);

SetPlayerCameraPos(playerid,x,y,z);

SetPlayerCameraLookAt(playerid,x,y,z);

PlayerPlaySound(playerid,1159,258.4893,-41.4008,1002.0234);

}

– 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);

to tak zwane sound ID, to id danego dźwięku które możesz znaleźć tutaj: http://wiki.pawno.pl/index.php?title=Sound_list

Napisy nad skinami:

Objaśnienie: napis nad skinami to znaczy, gdy wejdziemy na serwer, i zobaczymy wybierałke skinów, nad każdym z nich (skinem) można umieścić napis, postaram się wam to przedstawić w tym poradniku.

Szukamy public'a OnPlayerRequestClass, i postępujemy tak jak poniżej:

public OnPlayerRequestClass(playerid, classid)

{

SetupPlayerForClassSelection(playerid);

switch(classid)

{

case 0:

{

GameTextForPlayer(playerid, "Napis",czas,styl);

}

return 1;

}

Ten public odpowiada za przesuwanie w wybieralce skinów.

to numer skina nad którym ma się wyświetlać napis, ZAWSZE zaczynaj od zera!

ID jakiemu graczy ma się  wyświetlić napis

Wpisz pomiędzy tzw. cudzysłowia twój napis, jaki ma się wyświetlać o przesunięciu skina

Czas przez jaki ma być wyświetlany napis, w sekundach!

To styl napisu jaki ma się wyświetlać, inaczej to umiejscowienie napisu na ekranie, dostępne na http://wiki.pawno.pl/index.php?title=GameTextStyle

Za pomocą tego można zrobić na przykład drużynę, wybierając jej skin.

Stworzone przez Max_Renault dla Pawno.pl

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jeśli możesz dodaj jeszcze informację o skinach, np. wybieranie drużyny przez skin, podpis przy danym skinie itd. Wtedy poradnik będzie praktycznie wyczerpywał temat wybierałki :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Aktualizacja dnia 2.05.2010 godzina 17.03. Zamieściłem więcej informacji, ale podziału na drużyny nie umiem za bardzo wytłumaczyć :D Proszę o rozważenie losów tego poradnika :)

Pozdrawiam

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Zrobiłem wszystko jak trzeba. Poradnik dobry. skiny i pozycje kamery ustawiłem tylko do wybierałki wkradł mi się skin CJ'a z nikąd. W ogmi nie dodawałem tego skina do wybierałki. Da się go jakoś wyrzucić z tej wybierałki?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Pewnie w OnGameModeInit masz ten skin, on zawsze jest domyślnie przy uruchamianiu pawno, spróbuj usunąc tam powinno być coś takiego:

AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);

Jeśli usuniesz, powinno być ok :P

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

'/save' po tej komendzie w folderze 'Moje dokumenty\GTA San Andreas User Files\SAMP' tworzy się plik saveposlist.txt bodajże z twoja pozycją na mapie, możesz to także robić w pojazdach oraz używać '/save pozycja' wtedy w pliku za AddPlayerClass/CreateVehicle będzie ten tekst czyli 'pozycja'

to jest jedyny sposób w sa:mp, jeśli chcesz dokładniej do w MTA ustaw sobie obiekt kulę bilardową i potem skopiuj jej pozycję

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

xD A jak chcę dodać napis i wklejam do odpowiedniego publicka to pisze.

C:\Users\Maciek\Desktop\samp server 0.3c\gamemodes\fm1.pwn(100) : warning 225: unreachable code

C:\Users\Maciek\Desktop\samp server 0.3c\gamemodes\fm1.pwn(118) : error 002: only a single statement (or expression) can follow each "case"

C:\Users\Maciek\Desktop\samp server 0.3c\gamemodes\fm1.pwn(118) : warning 215: expression has no effect

C:\Users\Maciek\Desktop\samp server 0.3c\gamemodes\fm1.pwn(193) : warning 217: loose indentation

C:\Users\Maciek\Desktop\samp server 0.3c\gamemodes\fm1.pwn(533) : warning 203: symbol is never used: "ret_memcpy"

Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase

1 Error.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Tak mam wpisane w tym publicku.

public OnPlayerRequestClass(playerid, classid)
{
    SetupPlayerForClassSelection(playerid);

	switch(classid)
{
	case 23:
{
	GameTextForPlayer(playerid, "Skaut",1500,1);
}
	return 1;

}
A błąd tutaj.
C:\Users\Maciek.borowiak-PC.000\Desktop\samp server 0.3c\gamemodes\fm1.pwn(96) : warning 225: unreachable code
C:\Users\Maciek.borowiak-PC.000\Desktop\samp server 0.3c\gamemodes\fm1.pwn(114) : error 002: only a single statement (or expression) can follow each "case"
C:\Users\Maciek.borowiak-PC.000\Desktop\samp server 0.3c\gamemodes\fm1.pwn(114) : warning 215: expression has no effect
C:\Users\Maciek.borowiak-PC.000\Desktop\samp server 0.3c\gamemodes\fm1.pwn(190) : warning 217: loose indentation
C:\Users\Maciek.borowiak-PC.000\Desktop\samp server 0.3c\gamemodes\fm1.pwn(764) : warning 203: symbol is never used: "ret_memcpy"
Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase


1 Error.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

wystarczy spojrzeć uważnie i widać że masz o jedną klamrę { więcej ...

p.s układanie kodu!

public OnPlayerRequestClass(playerid, classid)
{
	SetupPlayerForClassSelection(playerid);

	switch(classid)
	{
		case 23:
		{
			GameTextForPlayer(playerid, "Skaut",1500,1);
		}
	}
	return 1;
}

Poradnik ma jedną poważną głupią rzecz, SetupPlayerForClassSelection jako public

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

No to robisz tak

public OnPlayerRequestClass(playerid, classid)
{
	SetupPlayerForClassSelection(playerid);

	switch(classid)
	{
		case 0..23: // do 23 skinu pojawia sie gametext skaut
		{
			GameTextForPlayer(playerid, "Skaut",1500,1);
		}
                case 24..30: {
                        GameTextForPlayer(playerid, "Inna nazwa",1500,1);
                }
	}
	return 1;
}

Liczysz skiny z ongamemodeinit od 0 ;p

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Postaw sobie w mta obiekt i skopiuj pozycję do SetPlayerCameraPos.

Albo hydrą/sobkiem/jetpackiem czy czego tam używasz, i potem /save w wymarzonej pozycji.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Mi coś nie działa wklejam to

AddPlayerClass(280,2295.4683,2452.2332,10.8203,83.8610,0,0,0,0,0,0); // Spawn Policji LV
AddPlayerClass(281,-1593.5020,716.3091,-5.2422,271.9815,0,0,0,0,0,0); // Spawn Policji SF
AddPlayerClass(282,1568.1782,-1690.0094,6.2188,175.3728,0,0,0,0,0,0); // Spawn Policji LS
AddPlayerClass(283,618.7209,-599.0103,17.2330,266.7224,0,0,0,0,0,0); // Spawn Policji Bone Contry

Ale nie mogę zrobić kamery (Jak robiłem to błędy są) Co zrobić?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Przecież AddPlayerClass dodaje postać,[b] wystarczy spojrzeć do innej mapy![/b] 
Zobacz to znalazłem w mapie [b]dodawanej[/b] do paczki serwera 
[quote]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);
}

public OnPlayerRequestClass(playerid, classid)
{
	SetupPlayerForClassSelection(playerid);
	return 1;  
} 

Oczywiście, wszystkie funkcje z SetUpPlayerForClassSelect, można dać w callbacku OnPlayerRequestClass.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

dlaczego jak mam

public SetupPlayerForClassSelection(playerid)
{
 	SetPlayerInterior(playerid,0);
	SetPlayerPos(playerid,266.40,-145.65,79.34);
	SetPlayerFacingAngle(playerid, 270.0);
	SetPlayerCameraPos(playerid,2653.69,-1458.35,1004.7882);
	SetPlayerCameraLookAt(playerid,2653.69,-1458.35,1004.7882);

to mam kamerę na środku mapy?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

LOL teraz coraz lepiej ale jeszcze nie to ,widać skina jak się zmiania ale to nie jest te same miejsce jakie jest w SetPlayerPos

public SetupPlayerForClassSelection(playerid)
{
 	SetPlayerInterior(playerid,0);
	SetPlayerPos(playerid,2660.41,-1458.89,79.38);
	SetPlayerFacingAngle(playerid, 270.0);
	SetPlayerCameraPos(playerid,265.40,-1448.65,79.38);
	SetPlayerCameraLookAt(playerid,2660.41,-1458.89,79.38);
}

tylko skin jest tyłem do kamery i jest za daleko .

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×