Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Sniper
Administrator forum
Dołączył: 24 Lut 2008
Posty: 343
Przeczytał: 0 tematów
Pomógł: 33 razy Ostrzeżeń: 0/3
|
Wysłany: Pon 21:01, 24 Mar 2008 Temat postu: Misja dla początkujących mapperów! |
|
Zrobimy małą misję:
Ok.! Na początek scenariusz. Spadliśmy z samolotu i jesteśmy w wodzie koło jakiejś wyspy. Nie mamy broni, ale na brzegu był tasak. Przechodzimy przez dżunglę i spotykamy przy pomoście najemników. Pilnują oni łodzi. Trzeba ukraść łódź i wydostać się z wyspy. Proste.
Na początek przesuwamy nasze miejsce startu do wody. Jest to Respawn z zakładki TagPoint:
Teraz w RollupBar w pierwszym dziale wchodzimy do zakładki Entity i w folderze Triggers szukamy „ProximityTrigger” i wstawiamy go tak aby Miejsce startu było w środku.
Teraz tworzymy drugi ProximityTrigger i wstawiamy go na brzegu. W środku tworzymy TagPoint który jest w dziale Objects pod zakładką TagPoint. Koniecznie musimy zmienić mu nazwę na radar1 i kolor na żółty (dla wyróżnienia).
Jeszcze gdzieś na brzegu wstawimy głośniczek misji który jest w zakładce Entity w folderze Sound pod nazwą MissionHint:
Teraz przechodzimy na drugi koniec wyspy i zajmiemy się pomostem. Jest to obiekt który znajduje się w zakładce Brush w folderze outdoor\islanders_structures pod nazwą wooden_pierb. Wstawiamy go żeby wyglądał mniej więcej tak:
Teraz stworzymy łódkę np.: Ponton. Jest on w Entity w folderze Vehicles pod nazwą InflatableBoat. Wstawiamy go na końcu pomostu:
Teraz przechodzimy do Proporties w menu Mission. I wybieramy Create. Zapisujemy jako nazwa mapy map1. Po zapisaniu wybieramy Edit. Teraz postępujemy uważnie i dokładnie bo każdy zły ruch doprowadzi do tego że misja nie zadziała.
Kod: | Pod linijką: Mission = {
dopisujemy:
Briefing = 0,
Objective1 = 0,
Objective2 = 0,
};
I w całości wygląda to tak:
Mission = {
Briefing = 0,
Objective1 = 0,
Objective2 = 0,
};
Dalej pod linijką:
function Mission:Finish()
-- go to next mission...
end
Robimy linijkę odstępu i wpisujemy: (oczywiście możesz sobie to skopiować za pomocą CTRL+C i wkleić)
function Mission:Event_init_mission()
-- r_checkSunVis=2;
-- r_Contrast=0.6;
-- fov=90;
-- e_terrain_caustics=0;
-- hud_panoramic=0;
-- e_water_ocean=1;
-- e_shadow_maps=0;
-- r_VolumetricFog=0;
-- r_WaterRefractions=0;
-- r_Contrast=0.65;
end
Znów linijka odstępu i wpisujemy:
-- Ingame Messages (Mission Objectives)
function Mission:Event_objectiveX()
Hud:AddMessage('xxxxxxxxx’10);
Hud:SetRadarObjective("yyyyyyyyy");
Hud:PushObjective({},"zzzzzzzzzzz");
end
UWAGA! Gdzie X to numer zadania czyli np:1.
xxxxxxxxx – treść zadania wyświetlana na ekranie gry
yyyyyyyyy – nazwa radaru koniecznie taka sama jak radar. (wielkość liter)
zzzzzzzzzz - treść zadania wyświetlana w dzienniku misji (w grze TAB)
Zatem będzie to wyglądało np.: tak:
-- Ingame Messages (Mission Objectives)
function Mission:Event_objective1()
Hud:AddMessage('Doplyn do brzegu',10);
Hud:SetRadarObjective("radar1");
Hud:PushObjective({},"Doplyn do brzegu");
end
Misję drugą robimy podobnie ale dodajemy linijkę:
function Mission:Event_objective2()
Hud:AddMessage('Ukradnij Lodz',10);
Hud:SetRadarObjective("radar2");
Hud:PushObjective({},"Ukradnij Lodz");
Hud:CompleteObjective("Doplyn do brzegu");
end
Jest to linijka, która mówi jaką misję wykonaliśmy poprzednio. Trzeba wpisać dokładnie tą samą treść co w pierwszej misji. Proste nie.
Robimy jeszcze jedną misję np.:
function Mission:Event_objective3()
Hud:AddMessage('Wydostan sie z wyspy',10);
Hud:SetRadarObjective("radar3");
Hud:PushObjective({},"Wydostan sie z wyspy");
Hud:CompleteObjective("Ukradnij Lodz");
end
I na zakończenie misja nieudana:
function Mission:Event_Mission_failure()
Hud:AddMessage('Niestety zniszczyles lodz i teraz nie masz jak sie wydostac!',10);
end
|
A co zrobić , w sytuacji gdy gracz zginie? Bez tego skryptu pewnie po zabiciu gracz pojawia się przy najbliższym respawnie. Jeżeli do naszego skryptu dodamy linijkę
Kod: | function Mission:Event_MissionFailed()
if (god) then
god=nil;
end
local ent = System:GetEntityByName("DelayTrigger20");
local pos=new(ent:GetPos());
local ang=new(ent:GetAngles());
_localplayer:SetPos(pos);
_localplayer:SetAngles(ang);
_localplayer.timetodie=1;
end |
da ona nam możliwość, że w przypadku gdy gracz zginie to mapa się wyłącza i trzeba wczytać ostatni zapis. Tak jak jest to w przypadku wszystkich misji w kampanii.
Zapisujemy i przechodzimy dalej. W pierwszym ProximityTrigger1 przy starcie zaznaczamy go i szukamy zakładki ProximityTrigger. Tam zaznaczamy OnEnter i niżej w Mission Handler z listy wybieramy objective1. Jeśli nie będzie tam żadnej listy to cofnij się w poradniku i sprawdź gdzie zrobiłeś błąd.
Ok! Teraz klikamy jeszcze raz na OnEnter i wybieramy Pick New i wskazujemy głośniczek na brzegu ten o nazwie MissionHint. Połączy się on kreską. Wchodzimy do głośniczka i w Entity Proporties na pierwszej pozycji Hint szukamy dźwięku: Languages\missiontalk\mutant\mutant_specific_a_1.wav (co się stało, gdzie ja jestem).
Jeszcze raz w ProximityTrigger1 przy starcie w OnEnter klikamy prawym przyciskiem myszy na MissionHint1 i wybieramy Play.
Teraz klikamy na ProximityTrigger2 i w OnEnter w Mission Handler wybieramy objective2 i później Pick New i wskazujemy na ponton. ProximityTrigger2 musi być trochę większy od pierwszego tak żeby gracz na pewno w niego wszedł. Ustawiamy w nim jeszcze w zakładce
Entity Proporties wartość DimY na 20.
Kopiujemy pierwszy radar i wstawiamy go na pomoście obok łodzi.
Klikamy na łódź i w OnDriverIn ustawiamy objectiv3 i w On OnDeath mission_failure.
Gratulacje najtrudniejszą część masz za sobą. Dla utrudnienia w grze robimy jeszcze tak:
W menu Mission\Proporties Player i w ekwipunku gracza usuń wszystkie bronie.
Na brzegu obok pierwszego radaru połóż maczetę:
Znajdziesz ją w Entity w folderze Pickups pod nazwą PickupMachete. Ładnie ją obróć żeby była wbita. Połóż koło niej jeszcze szkielet. Jest on w Brush\characters\dead\skeleton:
I masz już niezły klimat. Na pomoście stwórz parę kiboli:
I w dżungli parę świń:
Dalej piszę o zachowaniu się inteligencji w grze (AI) ... >>KLIK<<
Post został pochwalony 1 raz
Ostatnio zmieniony przez Sniper dnia Pon 21:20, 24 Mar 2008, w całości zmieniany 2 razy
|
|
Powrót do góry |
|
|
|
|
JackGTA
Administrator forum
Dołączył: 24 Lut 2008
Posty: 170
Przeczytał: 0 tematów
Pomógł: 10 razy Ostrzeżeń: 0/3
|
Wysłany: Czw 22:38, 10 Lip 2008 Temat postu: |
|
Te świnie to mnie rozbroiły xD Sniper! Ty zboczeńcu!
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
Gość
|
Wysłany: Sob 10:17, 12 Lip 2008 Temat postu: |
|
Poradnik super tylko mam problem.
Pisałem maila do snipera i mnie tu zaprosił więc pisze tu.
Gdy trzeba edytować skrypt misji , klikam edit i nic sie nie dzieje . prosze o szybką pomoc
|
|
Powrót do góry |
|
|
Sniper
Administrator forum
Dołączył: 24 Lut 2008
Posty: 343
Przeczytał: 0 tematów
Pomógł: 33 razy Ostrzeżeń: 0/3
|
Wysłany: Sob 10:49, 12 Lip 2008 Temat postu: |
|
Załóżmy:
Nasza mapka nazywa się XXX. Przechodzimy do Mission->Proporties i kilkamy CREATE, i w folderze z mapką tworzymy nowy skrypt i nazywamy go jak nasza mapka XXX. Potem klikamy zapisz...
następnie EDIT i tam wklejamy nasze skrypty. Jak już coś zapiszemy klikamy RELOAD, a gdy się na liście nic nie pojawi tzn że zrobiłeś Syntax Error czyli błąd pisowni w skład którego wchodzą:
- polskie znaki
- { brakujące nawiasy
- " brakujące cudzysłowowa
jeśli gdzieś sie zgubiłeś napisz..
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
Sniper
Administrator forum
Dołączył: 24 Lut 2008
Posty: 343
Przeczytał: 0 tematów
Pomógł: 33 razy Ostrzeżeń: 0/3
|
Wysłany: Sob 10:51, 12 Lip 2008 Temat postu: |
|
EDIT* aha, jeśli się nie otwiera po kliknięciu na EDIT, to wchodzimy ręcznie do folderu, i na naszym skrypcie klikamy właściwości, i w otwieranie za pomocą ZMIEŃ i wybierz NOTATNIK i zastosuj...
Post został pochwalony 1 raz
|
|
Powrót do góry |
|
|
Gość
|
Wysłany: Sob 14:08, 12 Lip 2008 Temat postu: |
|
Dziękuje za pomoc wszystko działa
|
|
Powrót do góry |
|
|
Gość
|
Wysłany: Sob 14:26, 12 Lip 2008 Temat postu: |
|
Qwde , mam nastepny problem.W skrypcie skopiowalem kod z tego poradnika i gdy wciskam reload wyskakuje mi syntax eroor nie wiem co jest źle zamieszczam tu kod który mam w skrypcie :
Mission = {
Briefing = 0,
Objective1 = 0,
Objective2 = 0,
};
function Mission:OnInit()
-- you may want to load a string-table etc. here...
end
function Mission:OnUpdate()
local i;
local bFinished=1;
for i,objective in Mission do
if (type(objective)~="function") then
if (objective==0) then
bFinished=0;
else
end
end
end
if (bFinished==1) then
self.Finish();
end
end
function Mission:Finish()
-- go to next mission...
end
function Mission:Event_init_mission()
-- r_checkSunVis=2;
-- r_Contrast=0.6;
-- fov=90;
-- e_terrain_caustics=0;
-- hud_panoramic=0;
-- e_water_ocean=1;
-- e_shadow_maps=0;
-- r_VolumetricFog=0;
-- r_WaterRefractions=0;
-- r_Contrast=0.65;
end
-- Ingame Messages (Mission Objectives)
function Mission:Event_objective1()
Hud:AddMessage('Doplyn do brzegu’10);
Hud:SetRadarObjective("radar1");
Hud:PushObjective({},"Doplyn do brzegu");
end
function Mission:Event_objective2()
Hud:AddMessage('Ukradnij Lodz',10);
Hud:SetRadarObjective("radar2");
Hud:PushObjective({},"Ukradnij Lodz");
Hud:CompleteObjective("Doplyn do brzegu");
end
function Mission:Event_objective3()
Hud:AddMessage('Wydostan sie z wyspy',10);
Hud:SetRadarObjective("radar3");
Hud:PushObjective({},"Wydostan sie z wyspy");
Hud:CompleteObjective("Ukradnij Lodz");
end
function Mission:Event_Mission_failure()
Hud:AddMessage('Niestety zniszczyles lodz i teraz nie masz jak sie wydostac!',10);
end
function Mission:Event_MissionFailed()
if (god) then
god=nil;
end
local ent = System:GetEntityByName("DelayTrigger20");
local pos=new(ent:GetPos());
local ang=new(ent:GetAngles());
_localplayer:SetPos(pos);
_localplayer:SetAngles(ang);
_localplayer.timetodie=1;
end
|
|
Powrót do góry |
|
|
Sniper
Administrator forum
Dołączył: 24 Lut 2008
Posty: 343
Przeczytał: 0 tematów
Pomógł: 33 razy Ostrzeżeń: 0/3
|
Wysłany: Czw 17:05, 17 Lip 2008 Temat postu: |
|
usuwaj po kolei cale skrypty np:
function Mission:Event_objective3()
Hud:AddMessage('Wydostan sie z wyspy',10);
Hud:SetRadarObjective("radar3");
Hud:PushObjective({},"Wydostan sie z wyspy");
Hud:CompleteObjective("Ukradnij Lodz");
end
I zobacz jak zachowa się skrypt. W końcu znajdzie się błąd w tekście i gitara.
Z resztą zaraz sprawdzę u siebie co jest nie tak...
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
Gość
|
Wysłany: Czw 16:16, 30 Paź 2008 Temat postu: |
|
Wystarczy zamienić cudzysłowy z takich ' na takie". Powinno być wtedy ok. W którymś kodzie u góry brakowało przecinka w AddMessage, pomiędzy treścią a czasem jej ukazania. Poza tym wszędzie w AddMessage jest ' zamiast ".
Ostatnio zmieniony przez Gość dnia Czw 16:20, 30 Paź 2008, w całości zmieniany 1 raz
|
|
Powrót do góry |
|
|
marcinLDZ
Dołączył: 19 Gru 2008
Posty: 96
Przeczytał: 0 tematów
Pomógł: 4 razy Ostrzeżeń: 0/3 Skąd: Łódź
|
Wysłany: Czw 7:52, 26 Mar 2009 Temat postu: |
|
Czy mógł ktoś by mi dać swój skrypt bo u mnie ten co pisze nie chodzi . W proximity trigger zaznaczam on enter i gdy biorę MISSION HANDLER niema objective1
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach
|
|