G2 Ikarus pobieranie liczby przedmiotów z całej gry 2307 6

O temacie

Autor Bogdan Zwei

Zaczęty 22.11.2015 roku

Wyświetleń 2307

Odpowiedzi 6

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Moim problemem jest pobranie ilości wszystkich itemów w grze. Próbowałem zrobić to array'em, ale wychodziło, ze jest ponad 10000 przedmiotów, a tak na prawdę mam ich w całej grze 3313 (prawdzałem zCListSort'ami). Wiem, że da radę zrobić to w inny sposób, unikając robienia while (list.next); variable +=1; end;, lecz nic mi nie przychodzi do głowy. Jakieś pomysły?


while (list.next); variable +=1; end; użyłbym tylko w ostateczności, bo nie chcę obciążać gry.
 
:ok: zachęca do dalszej pomocy. Nie zapominaj o tym!

Prywatne wiadomości typu "Ej, pomocy" kasuję od razu. Od tego jest forum, a nie PW.

To me, defeat in anything is merely temporary, and its punishment is but an urge for me to greater effort to achieve my goal. Defeat simply tells me that something is wrong in my doing; it is a path leading to success and truth.

In order to realize our true self we must be willing to live without being dependent upon the opinion of others.

Sawik

Sawik

Moderator działu
Rebel
posty4772
Propsy3197
ProfesjaNierób
  • Moderator działu
  • Rebel
Jesteś pewien że potrzebujesz przechowywać to wszystko? Co chcesz osiągnąć? 
 
Ż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

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Nie przechować. Nie wiem jak to wytłumaczyć. Chodzi o wszystkie wstawione przedmioty w grze, a nie konkretnie ilość jednego przedmiotu w grze. Jeden item = 1, 15 tych samych itemów = 1.

Inaczej: list = _^(MEM_World.voblist_items); while (list.next); zmienna +=1; end; - za każdy unikalny item zmienna dostaje +1, moich WSZYSTKICH przedmiotów jest 3313 - w całej grze. Potrzebuję to jakoś dostać, co by nie używać listów, bo daremnie to laguje, a moja funkcja wtedy by miała dwa while() w jednym.
 
:ok: zachęca do dalszej pomocy. Nie zapominaj o tym!

Prywatne wiadomości typu "Ej, pomocy" kasuję od razu. Od tego jest forum, a nie PW.

To me, defeat in anything is merely temporary, and its punishment is but an urge for me to greater effort to achieve my goal. Defeat simply tells me that something is wrong in my doing; it is a path leading to success and truth.

In order to realize our true self we must be willing to live without being dependent upon the opinion of others.

Mark56

Mark56

Moderator
som veľký magič
posty1632
Propsy1846
ProfesjaAnimator
  • Moderator
  • som veľký magič
A raczej poco ci ta informacja ? może znajdziemy coś lepszego od liczenia przedmiotów 
 


Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Robię funkcję, która pobiera instance losowego przedmiotu z gry. Do tego właśnie potrzebuję ilości wszystkich przedmiotów w grze. I tutaj nie chodzi, ile który npc ma tych przedmiotów, tylko ile jest unikalnych przedmiotów w grze (czyli nawet, jak jest 5 przedmiotów o tej samej nazwie to liczy nam jako 1).
 
:ok: zachęca do dalszej pomocy. Nie zapominaj o tym!

Prywatne wiadomości typu "Ej, pomocy" kasuję od razu. Od tego jest forum, a nie PW.

To me, defeat in anything is merely temporary, and its punishment is but an urge for me to greater effort to achieve my goal. Defeat simply tells me that something is wrong in my doing; it is a path leading to success and truth.

In order to realize our true self we must be willing to live without being dependent upon the opinion of others.

Mark56

Mark56

Moderator
som veľký magič
posty1632
Propsy1846
ProfesjaAnimator
  • Moderator
  • som veľký magič
a czy nie jest prościej odczytanie liczby pierwszego parsowanego itemku i odczytanie ostatniego ?  Nie ma sensu ich liczyć bo jak są one parsowane wszystkie po sobie to ich instance będzie własnie <pierwszy parsowany item ; ostatni parsowany item > . Gorzej jak nie są parsowane zaraz po siebie bo potem może ci wylosować instance czegoś innego i to był by problem...

By sobie to ułatwić zrób sobie dwa skrypty jeden z pierwszym i drugi z ostatnim itemem. Jeden daj w Gothic.src przed itemki w grze, ostani na koniec itemkow. Potem zrób se funkcje która pobierze i ich instance i wylosuje liczbę (instance pierwszego < x < instance ostatniego). Takim sposobem bez edicji skryptu masz "pewność"  ( ja bym gothicu nie wierzył ) ze zawsze wylosuje instance który był parsowany miedzi tymi dwoma skryptami.
+ itemy do qustow możesz parsować w .src później by nie zostały wylosowane.

+nie obciążasz gothic liczeniem itemow.
+masz kontrole nad losowanymi przedmiotami
+powinno pracować w miarę bez problemowo

-Gothic jest fishy.
 


Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Twój pomysł, Mark, mnie nie zadowala, niestety. Ten sposób jest trochę okrężną drogą.
Jakbym miał to zrobić (a najprawdopodobniej to zrobię) listami, to wywoływałbym tę funkcję za każdym razem, jak się przechodzi do nowego światu / wczytuje grę, ale musi być jeszcze inny sposób, łatwiejszy...


EDIT: Mark, dzięki Tobie wpadłem na pomysł, żeby jednym loopem podczas wczytywania gry / przechodzenia do nowego światu wypełniać zmienne (int) numerami instance przedmiotów, a potem losowanie tych zmiennych poprzez r_MinMax(x,y), albo poprzez robienie dwóch zmiennych, które będą przyjmować liczbę początkową i liczbę końcową itema (czyli pierwszy item ma numer 49209, to int1 = 49209, a ostatni to 129597 i int2 = 129597), lecz potem pojawia się jeszcze jeden problem, a dokładnie, to nie wiem czy aby na pewno instance przedmiotów mają ostatniNumer+1, a nie ostatniNumer + (>1)...


EDIT: Pobierając ID ostatniego i pierwszego itema listami, dostaję stacktrace error. Zaś robienie dokładnie jak Mark napisał też nie działa, bo:
1) Itemy nie zawsze mają te same ID - zależy to od tego, kiedy item został widziany przez grę (tak samo jest z mobami, który jest bliżej, ten dostaje szybciej swój numer) i to mnie dziwi...
2) Instance ID itemów nie są równo +1, każdy item jest większy o jakiś inny numer, więc jak nam wylosuje numer, w którym nie ma itema, to daje error. Czyli Nóż na wilki jest pierwszy, a jego ID to 14854, a laga jest druga i jej ID to 14644 (przykładowe ID, nie spamiętałem ID które sprawdzałem).

. Nie tędy droga.

Skrypt, jakby kogoś interesowało
var int firstID;
var int lastID;
func void B_GetItemID()
{
var zCListSort list; list = _^(MEM_World.voblist_items);
var int block; block = 0;

while (list.next);
//{
list = _^(list.next);

if (list.data)
{
if (!block)
{
firstID = list.data;
block = true;
};
lastID = list.data;
};
end;
//}
};

func int ReturnItemID() { return r_MinMax(firstID, lastID); };
 
:ok: zachęca do dalszej pomocy. Nie zapominaj o tym!

Prywatne wiadomości typu "Ej, pomocy" kasuję od razu. Od tego jest forum, a nie PW.

To me, defeat in anything is merely temporary, and its punishment is but an urge for me to greater effort to achieve my goal. Defeat simply tells me that something is wrong in my doing; it is a path leading to success and truth.

In order to realize our true self we must be willing to live without being dependent upon the opinion of others.


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