stare monety 2747 6

O temacie

Autor kula1984

Zaczęty 8.04.2015 roku

Wyświetleń 2747

Odpowiedzi 6

kula1984

kula1984

Użytkownicy
posty11
Profesjabrak
  • Użytkownicy

kula1984

stare monety
2015-04-08, 03:29(Ostatnia zmiana: 2015-04-08, 08:22)
Chciałby w g1 zrobić podobną rzecz jak w g2. Chodzi mi Wasilij który zbierał stare monety. Udało mi się napisać skrypt że npc bierze monety i daje w zamian rude, ale niestety tylko pojedynczo. Jak zrobić tak żeby, skrypt działał tak jak w g2. Żeby npc brał wszystkie monety na raz i dawał rude w zależności od ilości monet. Tak wygląda mój skrypt.

// **************************************
//               EXIT
// **************************************

instance DIA_Aulus_EXIT (C_INFO)
{
   npc         = Non_7000_Aulus;
   nr          = 999;
   condition   = DIA_Aulus_Exit_Condition;
   information = DIA_Aulus_Exit_Info;
   permanent   = 1;
   description = DIALOG_ENDE;
};                       

FUNC int DIA_Aulus_Exit_Condition()
{
   return 1;
};

FUNC VOID DIA_Aulus_Exit_Info()
{
   AI_StopProcessInfos   (self);
};



// **************************************
//               Hello
// **************************************

INSTANCE DIA_Aulus_Hello (C_INFO)
{
   npc         = Non_7000_Aulus;
   nr          = 1;
   condition   = DIA_Aulus_Hello_Condition;
   information = DIA_Aulus_Hello_Info;
   permanent   = 0;
   description = "Kim jesteś?";
};                       

FUNC INT DIA_Aulus_Hello_Condition()
{
   return 1;
};

FUNC VOID DIA_Aulus_Hello_Info()
{   
   AI_Output (other, self,"DIA_Aulus_Hello_15_00"); //Kim jesteś?
   AI_Output (self, other,"DIA_Aulus_Hello_13_01"); //Jestem Aulus.
};


// **************************************
//               monety
// **************************************

INSTANCE DIA_Aulus_monety (C_INFO)
{
   npc         = Non_7000_Aulus;
   nr          = 1;
   condition   = DIA_Aulus_monety_Condition;
   information = DIA_Aulus_monety_Info;
   permanent   = 0;
   description = "Potrzebujesz czegoś";
};                       

FUNC INT DIA_Aulus_monety_Condition()
{
if(Npc_Knowsinfo(other,DIA_Aulus_Hello))
{
   return 1;
};
};

FUNC VOID DIA_Aulus_monety_Info()
{   
   AI_Output (other, self,"DIA_Aulus_monety_15_00"); //Potrzebujesz czegoś?
   AI_Output (self, other,"DIA_Aulus_monety_13_01"); //Zbieram stare monety.
   AI_Output (self, other,"DIA_Aulus_monety_13_02"); //Dam ci rude za każdą monete którą mi przyniesiesz.
};


// **************************************
//               koniec
// **************************************

INSTANCE DIA_Aulus_koniec (C_INFO)
{
   npc         = Non_7000_Aulus;
   nr          = 1;
   condition   = DIA_Aulus_koniec_Condition;
   information = DIA_Aulus_koniec_Info;
   permanent   = 1;
   description = "Mam monety";
};                       

FUNC INT DIA_Aulus_koniec_Condition()
{
if(Npc_Knowsinfo(other,DIA_Aulus_Hello))
&&(Npc_hasitems(other, ItMi_Stuff_OldCoin_01) >=1)
{
   return 1;
};
};

FUNC VOID DIA_Aulus_koniec_Info()
{   
   AI_Output (other, self,"DIA_Aulus_koniec_15_00"); //Mam monety
   AI_Output (self, other,"DIA_Aulus_koniec_13_01"); //Tak o takie mi chodziło.
   AI_Output (self, other,"DIA_Aulus_koniec_13_02"); //Wez tą rude w zamian.

   B_giveinvitems(other,self,ItMi_Stuff_OldCoin_01, 1);
   Createinvitems(self,ItMiNugget,1);
   B_giveinvitems(self,other,ItMiNugget,1);
   

};


// **************************************
//               koniec2
// **************************************

INSTANCE DIA_Aulus_koniec2 (C_INFO)
{
   npc         = Non_7000_Aulus;
   nr          = 2;
   condition   = DIA_Aulus_koniec2_Condition;
   information = DIA_Aulus_koniec2_Info;
   permanent   = 1;
   description = "Mam monety";
};                       

FUNC INT DIA_Aulus_koniec2_Condition()
{
if(Npc_Knowsinfo(other,DIA_Aulus_Hello))
&&(Npc_hasitems(other, ItMi_Stuff_OldCoin_02) >=1)
{
   return 1;
};
};

FUNC VOID DIA_Aulus_koniec2_Info()
{   
   AI_Output (other, self,"DIA_Aulus_koniec2_15_00"); //Mam monety
   AI_Output (self, other,"DIA_Aulus_koniec2_13_01"); //Tak o takie mi chodziło.
   AI_Output (self, other,"DIA_Aulus_koniec2_13_02"); //Wez tą rude w zamian.

   B_giveinvitems(other,self,ItMi_Stuff_OldCoin_02, 1);
   Createinvitems(self,ItMiNugget,1);
   B_giveinvitems(self,other,ItMiNugget,1);
   

};
 

kaczka

kaczka

RaveN Studio
Definitely not kaczka!
posty2280
Propsy2392
NagrodyV
ProfesjaLvl designer
  • RaveN Studio
  • Definitely not kaczka!
Szczerze mówiąc, próbowałem w G II ogarnąć skopiowany skrypt Wasila ale po miliardach kombinacji zabiera wszystko, daje 0 exp i 0 gold ;C
Jest tam zdefiniowany dziwny warunek, którego odpowiednika/źródła nie mogłem nigdzie znaleźć.
 

Sawik

Sawik

Moderator działu
Rebel
posty4772
Propsy3197
ProfesjaNierób
  • Moderator działu
  • Rebel
Szczerze mówiąc, próbowałem w G II ogarnąć skopiowany skrypt Wasila ale po miliardach kombinacji zabiera wszystko, daje 0 exp i 0 gold ;C
Jest tam zdefiniowany dziwny warunek, którego odpowiednika/źródła nie mogłem nigdzie znaleźć.
Bo ty kaczka jesteś.

NPC_HASItems czy jak tam to szło, zwracał inta, zapisz go w tymczasowej zmiennej po czym zabierz taką właśnie ilość starych coinsów i daj ile tam bryłek się należy.
 
Życzę wam seksu analnego po stronie biernej.
Dropbox +500 mb na start
LowPoly
Wykonanie modelu niskopoligonowego to sztuka kompromisu. Nie jest to jedynie uproszczenie modelu wysokopoligonowego, ale głęboka modyfikacja oraz podejmowanie decyzji często zmieniających wygląd pierwotny obiektu, tak by przy najmniejszej ilości trójkątów uzyskać jak najwierniej odwzorowany kształt oryginału. Nie można też zapomnieć o tym iż musi nadal wyglądać przekonywająco i tak balansować by uzyskać efekt optymalny.

Podstawowym założeniem jest, że model nie powinien mieć zbędnych, niewidocznych dla gracza detali włączonych w geometrie. Większość obiektów jakie znajdują się w grze powinna prezentować się najlepiej z odległości około 3-5 metrów. Wszelkie detale, które zanikają, wydają się płaskie lub zlewają się z bryłą modelu należy uznać za zbędne i pozostawić je na normal mapie.

Fakt, iż gracz będzie w stanie podejść bliżej do obiektu i zobaczyć go z mniejszej niż 3m odległości nie powinno stanowić większego problemu, gdyż większą rolę odgrywają wtedy tekstury oraz dodatkowy detal zależny od materiału obiektu. To właśnie kompromis między wydajnością, a szczegółowością otoczenia.

Detal, którego nie widać z 3-5 metrów nie powinnien istnieć w geometrii modelu.
Krawędzie znajdujące się blisko siebie, które zlewają się z większej odległości należy uprościć do wspólnej płaszczyzny

gothic1210
  • Gość
Akurat miałem pod ręką. Jak zapisać go w tymczasowej zmiennej? Tak:
ilosc_miesa = Npc_hasitems (hero, Itfomuttonraw);
 

kula1984

kula1984

Użytkownicy
posty11
Profesjabrak
  • Użytkownicy
Nadal nie rozumie. Uczę się modować od paru dni. Moglibyście mi to dokładniej wytłumaczyć?
 

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio

chicken
RaveN Studio

stare monety
#5 2015-04-08, 15:05(Ostatnia zmiana: 2015-04-08, 15:19)
Więc tak..
Mamy funkcję
Npc_HasItems(tutajNpc, tutajInstancePrzedmiotu);
, która zwraca ilość posiadanych "tutajInstancePrzedmiotu" w inwentarzu / ekwipunku postaci "tutajNpc".
Np:
Npc_HasItems(hero, ItMiNugget);Zwraca ilość WSZYSTKICH posiadanych bryłek rudy (ItMiNugget) w eq postaci hero (Bezimienny).
Wpisując tą funkcję jako argument, będzie określała ilość WSZYSTKICH posiadanych przedmiotów przez Bezimiennego.
Możesz  też nie wiedzieć, co to są argumenty.
Argument, to paramter przekazywany do funkcji, np:
Npc_HasItems(argument pierwszy, argument drugi);
i tak coraz więcej.

Popatrzmy na Twój problem:
B_giveinvitems(other,self,ItMi_Stuff_OldCoin_01, 1);
   Createinvitems(self,ItMiNugget,1);
   B_giveinvitems(self,other,ItMiNugget,1);
Funkcja B_GiveInvItems, jako ostani argument przyjmuje ilość przedmiotu, która ma być oddana.
Czyli tutaj oddamy 1 sztukę starej monety.
Wpisując w ilość jako argument funkcję Npc_HasItems, będzie oznaczać CAŁĄ ilość posiadanego przedmiotu przez danego npc, podanego w pierwszym argumencie tej funkcji.
B_giveinvitems(NpcKtoryOddaje, NpcKtoryOtrzyma, Przedmiot, Npc_HasItems(NpcKtoryOddaje, Przedmiot));To oznacza:
NpcKtoryOddaje Przedmiot dla NpcKtoryOtrzyma CAŁĄ ilość Przedmiotu.

Odpowiedz sobie, co się teraz stanie w poniższym kodzie?
B_GiveInvItems(other, self, ItMiNugget, Npc_HasItems(other, ItMiNugget));
Załużmy, że OTHER to Bezimienny, a SELF to Aulus.
Jak się poddasz lub uda Ci się odpowiedzieć, możesz otworzyć spoiler:
Spoiler
Bezimienny odda wszystkie posiadane bryłki rudy Aulusowi.
Mam nadzieję, że teraz będzie Ci łatwiej.

kula1984

kula1984

Użytkownicy
posty11
Profesjabrak
  • Użytkownicy
Dziękuje. Już się z to biorę. A jak nie uda mi się tego pojąć to, zrobię po prostu jeszcze kilka opcji dialogu z możliwością wymiany np. po 50 i 100szt.
 


0 użytkowników i 1 Gość przegląda ten wątek.
0 użytkowników
Do góry