Znając życie po przeczytaniu tego tematu posypią się w moją stronę komentarze typu "Jest tego od groma na forum","Poszukaj uważnie,a znajdziesz","Przecież każdy głupi to wie" itp.No,ale się nudzę i postanowiłem coś napisać.
No to zaczynamy zabawę.Wklejam skrypt jedzenia,które nazwałem "Wódka".
// ****************************************
INSTANCE ItFo_Wodka (C_Item)
{
name = "Wódka";
mainflag = ITEM_KAT_FOOD;
flags = ITEM_MULTI;
value = 30;
visual = "ItFo_Booze.3DS";
material = MAT_LEATHER;
scemeName = "POTION";
on_state[0] = Use_Wodka;
description = name;
TEXT[1] = NAME_Bonus_HP;
COUNT[1] = 20;
TEXT[2] = NAME_Bonus_Mana;
COUNT[2] = 20;
TEXT[5] = NAME_Value;
COUNT[5] = 30;
};
FUNC VOID Use_Wodka()
{
Npc_ChangeAttribute (self, ATR_HITPOINTS, 20);
Npc_ChangeAttribute (self, ATR_MANA, 20);
const int Wodka_Bonus = 0;
if (Npc_IsPlayer (self))
{
Wodka_Bonus = Wodka_Bonus + 1;
if (Wodka_Bonus == 1)
{
PrintScreen ("Czuję się świeżo", -1, 25, FONT_ScreenSmall,2 );
};
if (Wodka_Bonus == 2)
{
PrintScreen ("Siła pudziana", -1, 25, FONT_ScreenSmall,2 );
B_RaiseAttribute (self, ATR_STRENGTH,5);
};
if (Wodka_Bonus == 3)
{
PrintScreen ("Moc Sarumana", -1, 25, FONT_ScreenSmall,2 );
B_RaiseAttribute (self, ATR_MANA_MAX,25);
};
if (Wodka_Bonus == 4)
{
PrintScreen ("Szybkość Legolasa", -1, 25, FONT_ScreenSmall,2 );
B_RaiseAttribute (self, ATR_DEXTERITY,25);
};
if (Wodka_Bonus == 4)
{
PrintScreen ("Wytrzymałość trolla", -1, 25, FONT_ScreenSmall,2 );
B_RaiseAttribute (self, ATR_HITPOINTS_MAX,15);
};
if (Wodka_Bonus == 5)
{
PrintScreen ("Chyba już nic się nie dzieje", -1, 25, FONT_ScreenSmall,2 );
Wodka_Bonus = 0;
};
};
};
Większość części skryptu na pewno wiele osób zna,ale wytłumaczę wszystkie(tak na wszelki wypadek-jak coś źle wytłumaczę to niech ktoś poprawi to będę wdzięczny).
INSTANCE ItFo_Wodka
Jest to po prostu instancja przedmiotu(inaczej kod przedmiotu,najważniejsza rzecz w całym skrypcie!).
name = "Wódka";
Po prostu nazwa przedmiotu wyświetlana w grze.
mainflag = ITEM_KAT_FOOD;
Tutaj tak naprawdę sam nie wiem,ale w tym miejscu wskazujemy,do jakiej kategorii zaliczamy przedmiot(jedzenie,pancerz,broń,przedmiot).
flags = ITEM_MULTI;
Tutaj zostawiamy bez zmian(a co do mainflag,jeśli robimy skrypt jedzenia to zostawiamy bez zmian).
value = 30;
Wartość przedmiotu(przy sprzedaży w grze jest zawsze zaniżana).
visual = "ItFo_Booze.3DS";
Czyli nazwa modelu w formacie .3ds ginu.
material = MAT_LEATHER;
Materiał z jakiego zrobiony jest przedmiot(ale to raczej nie ma wpływu w grze).
scemeName = "POTION";
Tutaj komenda odwołująca się do skryptu wywoływania animacji picia.
on_state[0] = Use_Wodka;
Tutaj zostawiamy bez zmian,bo jest potrzebne do funkcji użycia wódki.
description = name;
Czyli coś w stylu tytułu głównego(możemy zmienić name na jakiś opis np.Najlepsza wódka w Khorinis]).Po zmianie jak najedziemy na przedmiot to powinniśmy zobaczyć nazwę+opis np.Wódka,a poniżej napis(opis)Najlepsza wódka w Khorinis.
TEXT[1] = NAME_Bonus_HP;
COUNT[1] = 20;
TEXT[2] = NAME_Bonus_Mana;
COUNT[2] = 20;
TEXT[5] = NAME_Value;
COUNT[5] = 30;
};
Tutaj jest część odpowiedzialna za wyświetlanie nazw związanych z tym,co daje użycie przedmiotu.Pokażę,mniej więcej jak to wygląda w grze.
TEXT[1] = NAME_Bonus_HP;
COUNT[1] = 20;
W grze zamiast Text i Name_Bonus_Hp będzie pisało Premia punktów życia 20(czyli po użyciu odzyskujemy 20 hp)
TEXT[2] = NAME_Bonus_Mana;
COUNT[2] = 20;
Tutaj podobnie jak wyżej,z tym,że tutaj jest premia punktów magicznych.
TEXT[5] = NAME_Value;
COUNT[5] = 30;
Tutaj wartość przedmiotu(w grze będzie Wartość = 30)
FUNC VOID Use_Wodka()
{
Tutaj zaczyna się funkcja tego przedmiotu(UWAGA!musi być koniecznie taka sama,jak w linijce on_state[0]
Npc_ChangeAttribute (self, ATR_HITPOINTS, 20);
Npc_ChangeAttribute (self, ATR_MANA, 20);
Oznacza to,że po spożyciu odzyskujemy 20 punktów many i 20 punktów życia.
const int Wodka_Bonus = 0;
Tutaj jest stała funkcji,nic nie musimy z nią robić.
if (Npc_IsPlayer (self))
{
Tutaj warunek If(jeśli).Tutaj chyba chodzi o to,że jeśli NPC to gracz to zadziała funkcja(niech mnie jakiś skrypter poprawi,bo tutaj na 100% się machnąłem w tłumaczeniu).
Wodka_Bonus = Wodka_Bonus + 1;
Oznacza to naliczanie funkcji(takie coś jak było przy zadaniu od tego nowicjusza w gothic(w Nowym Obozie)dawał nam w nagrodę za rozdanie ziela do wyboru trzy z pięciu zwojów).
if (Wodka_Bonus == 1)
{
PrintScreen ("Czuję się świeżo", -1, 25, FONT_ScreenSmall,2 );
};
Tutaj oznacza,że jeśli użyjemy pierwszy raz tej wódki,to pojawia się napis(mniej więcej na środku ekranu) taki,jaki ustaliliśmy sobie po PrintScreen ("Nasz napis").I najlepiej zostawić dalsze części tak,jak ja mam,bo mogą być problemy.
if (Wodka_Bonus == 2)
{
PrintScreen ("Siła pudziana", -1, 25, FONT_ScreenSmall,2 );
B_RaiseAttribute (self, ATR_STRENGTH,5);
};
Tutaj po drugim użyciu zwiększa nam się siła o 5 punktów.Przy dalszych jest tak samo,ale wkleję ostatnią część,bo tam jest pewna funkcja.
if (Wodka_Bonus == 5)
{
PrintScreen ("Chyba już nic się nie dzieje", -1, 25, FONT_ScreenSmall,2 );
Wodka_Bonus = 0;
};
Oznacza to,że po 5 wypiciu wódki,resetuje się licznik.Czyli jeśli wypijemy wódkę szósty raz,to będzie taki sam efekt,jak za pierwszym razem(czyli napis "Czuję się świeżo").
No to tyle.Jeśli już był taki temat to przepraszam,ale szukałem w tutorialach i jedynie znalazłem tutorial do broni i pancerzy,ale do jedzenia nie.
Edit:Dobra 2 błędy znalezione przez Gothera poprawione.