Zmiana komuś czegoś G2 2077 4

O temacie

Autor RiPPerMAN

Zaczęty 6.04.2014 roku

Wyświetleń 2077

Odpowiedzi 4

RiPPerMAN

RiPPerMAN

Użytkownicy
FapTeam Studios
posty222
Propsy25
ProfesjaScenarzysta
  • Użytkownicy
  • FapTeam Studios
Witajcie, panie i panowie! Mam otóż taki mały kłopot... Bez owijania w bawełne!
Przykład:
SLD_20021_Ktos.attribute[ATR_HITPOINTS] = 0;bądź
SLD_20021_Ktos.guild = GIL_BDT;Niedziałają! Czemu? Ja się tego pytam... Jeśli zmienić nagle gildię bohaterowi to zadziała o tak:
hero.guild = GIL_BDT;I to podczas dialogu... Nie wiem co trzeba zrobić, żeby to zadziałało
Z góry dzięki za odpowiedź! :ok:
Może troszkę chaotycznie napisane, ale myślę, że wiecie o co mi chodzi
 
"Nie żałuj umarłych, żałuj żywych, a szczególnie tych, którzy żyją bez miłości"
~ Albus Parcival Wulfryk Brian Dumbledore

Atak Dzieci NEO
http://themodders.org/index.php?topic=21709.0

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
var C_NPC Ktos;
Ktos = Hlp_GetNpc (SLD_20021_Ktos);

Ktos.guild = GIL_BDT;

Z tego co mi wiadomo, instance jest czasami uważane przez silnik jako int, dlatego trzeba zrobić taki śmieszny warunek (aczkolwiek, nigdy się nie bawiłem w silniku, ani nie interesowałem się nim, więc niech się wypowie ktoś mądrzejszy na ten temat).
 
: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.

gothic1210
  • Gość
Bogdan ma racje. Po tym zabiegu, który opisał powinno działać.
 

RiPPerMAN

RiPPerMAN

Użytkownicy
FapTeam Studios
posty222
Propsy25
ProfesjaScenarzysta
  • Użytkownicy
  • FapTeam Studios
Tak, też kurna myślałem... Ale chciałem się dowiedzieć od zaawansowanych! Do zamknięcia! Dzieki!
 
"Nie żałuj umarłych, żałuj żywych, a szczególnie tych, którzy żyją bez miłości"
~ Albus Parcival Wulfryk Brian Dumbledore

Atak Dzieci NEO
http://themodders.org/index.php?topic=21709.0

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
Cytuj
var C_NPC Ktos;
Ktos = Hlp_GetNpc (SLD_20021_Ktos);

Ktos.guild = GIL_BDT;

Z tego co mi wiadomo, instance jest czasami uważane przez silnik jako int, dlatego trzeba zrobić taki śmieszny warunek (aczkolwiek, nigdy się nie bawiłem w silniku, ani nie interesowałem się nim, więc niech się wypowie ktoś mądrzejszy na ten temat).
Przecież nie masz tu żadnego warunku. Używasz funkcji. Warunek to taka struktura w kodzie: "if (wyrażenie) { wyrażenia do wykonania }". Wywołanie funkcji ma postać "funkcja (argumenty)". 

Można by się na ten temat rozpisać (właściwie to napisałem o tym tutorial), ale w skrócie:
Z technicznego puntku widzenia, SLD_20021_Ktos to identyfikator (nazwa bytu w skryptach - tutaj definicji twojego npc), któremu jest przypisany numer tego bytu.
 Aby dostać odniesienie do pierwszego (zwykle zarazem jedynego) w świecie obiektu npc którego definicja jest oznaczona danym identyfikatorem, używasz funkcji Hlp_GetNpc.

Dużo funkcji zewnętrznych jako argumentów oczekuje właśnie identyfikatorów (m.in. większość tych które dotyczą itemów) i wtedy te argumenty są oznaczone jako "var int" (bo jak napisałem to numer). Te które mają argumenty "var c_npc" teoretycznie potrzebują już obiektu, ale parser zwykle dokonuje podmiany automatycznie, tak że nie trzeba samemu używać Hlp_GetNpc. Kiedy jednak chcesz bezpośrednio odwołać się do pola w klasie (jak w temacie), musisz już  mieć odniesienie do obiektu, nie sam identyfikator. 

"Hero" to właściwie też identyfikator, ale zmiennej przechowującej odniesienie do obiektu klasy c_npc, a nie definicji obiektu. W związku z tym możesz  bezpośrednio odwoływać się do pól tego obiektu za pomocą kropki. 

, ale jeśli zobaczysz na to jak jest zdefiniowany (plik constants.d), to zobaczysz że jemu jest bezpośrednio przypisane odniesienie do obiektu klasy c_npc ("var c_npc hero"), dlatego możesz od razu odwoływać się do jego pól.


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