Pobieranie nazwy NPC do zmiennej 3920 13

O temacie

Autor

Zaczęty 1.06.2014 roku

Wyświetleń 3920

Odpowiedzi 13

gothic1210
  • Gość
Czemu to jest źle?
var string self_member_name;
self_member_name = self.name;
(Syntax " . " dla ścisłości).
Czym to zastąpić? Da się w ogóle jakoś?
 

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio
Cytuj
var C_Npc slf;
var string self_member_name;
Cytuj
slf = Hlp_GetNpc(self);
self_member_name = slf.name
To jest zwykłym sposobem.
Można też ikarusem.

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Wątpię by to coś pomogło ;)

Problemem jest to, że parser nie widzi self, nie wie co to jest.

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
Czemu to jest źle?
var string self_member_name;
self_member_name = self.name;
(Syntax " . " dla ścisłości).
Czym to zastąpić? Da się w ogóle jakoś?
zależy w jakiej sytuacji jest to wykonywane. o co dokładnie ci chodzi?
kiedy ta nazwa ma zostać pobrana/?
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
A ja nie rozumiem w czym problem. Gdzie chcesz umieścić ten kod? Nie chodzi ci przypadkiem o
var string self_member_name;
self_member_name = name[0];
(C_NPC.name to tablica)

Cytat: Adanos
Problemem jest to, że parser nie widzi self, nie wie co to jest.
Skąd wniosek że o to self jest problemem?

Zucklov

Zucklov

Quest Pack Team
Sztywniutko
posty1220
Propsy1241
ProfesjaSkrypter
  • Quest Pack Team
  • Sztywniutko
W LeGo jest to zrobione tak:
//========================================
// Ustalanie imion
//========================================
func void SetName(var int npc, var string nname) { //funkcja zmieniająca imię
    var oCNpc slf; slf = Hlp_GetNpc(npc);
    if(slf.aiscriptvars[AIV_Name]) {
        slf.name = nname; //ustawienie imienia
    };
    slf.name_1 = nname; //przypisanie imienia do inta klasy oCNpc
};

//========================================
// Pokazywanie imion
//========================================
func void ShowName(var int npc) {
    var oCNpc slf; slf = Hlp_GetNpc(npc);
    slf.aiscriptvars[AIV_Name] = 1; //ustalenie aivara, który odpowiada za pokazywanie imion na 1 (oczywiście trzeba tego aivara zdefiniować, jak modujesz G1)
    slf.name = slf.name_1;  //zmiana właściwego imienia
};
W praktyce wygląda to tak, że w dialogu dodajesz:
    SetName (instance_npca, "Nowe imię");
    ShowName(instance_npca);
Wiem, że nie jesteś nowy w moddingu, ale na wszelki wypadek objaśniam xD
 
Lieb Vaterland magst ruhig sein

gothic1210
  • Gość
A ja nie rozumiem w czym problem. Gdzie chcesz umieścić ten kod? Nie chodzi ci przypadkiem o
var string self_member_name;
self_member_name = name[0];
(C_NPC.name to tablica)

Cytat: Adanos
Problemem jest to, że parser nie widzi self, nie wie co to jest.
Skąd wniosek że o to self jest problemem?
Cały czas się domaga ";".
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Ale na pewno masz to w jakiejś funkcji? :lol2:

gothic1210
  • Gość
Ech no dobra już wam powiem co chciałem zrobić...
//dołączanie do grupy!!
if self.aivar[AIV_PARTYMEMBER] = TRUE
{
var c_npc slf;
var string self_member_name;
slf = Hlp_GetNpc(self);
self_member_name = slf.name[0];
//var string self_member_name = name[0];
PrintScreen(ConcatStrings(ConcatStrings(IntToString(self_member_name),"dołącza do grupy"),IntToString("!")),1,1,"font_old_10_white.tga",2);
};
 

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio

chicken
RaveN Studio

Pobieranie nazwy NPC do zmiennej
#9 2014-06-01, 19:59(Ostatnia zmiana: 2014-06-01, 20:33)
Tak jest poprawnie:
Cytuj
//dołączanie do grupy!!
if (self.aivar[AIV_PARTYMEMBER] == TRUE)
{
    var string msg;
    var c_npc slf;
    slf = Hlp_GetNpc(self);

    msg = ConcatStrings(slf.name, " dołącza do grupy!");
    PrintScreen(msg,1,1,"font_old_10_white.tga",2);
};
Przede wszystkim:
Czy to jest całość? Jeśli tak, to wpisz to do FUNC VOID nazwa()

Dodałem to do trigera. Mam tam funkcję 600 linijek to jej nie kopiowałem. Zaraz sprawdzę w grze.
Oki

gothic1210
  • Gość

gothic1210
Gość

Pobieranie nazwy NPC do zmiennej
#10 2014-06-01, 20:00(Ostatnia zmiana: 2014-06-01, 20:14)
Dodałem to do trigera. Mam tam funkcję 600 linijek to jej nie kopiowałem. Zaraz sprawdzę w grze.

Prasuje, ale nie wyświetla się nic.
Poprawiłem warunek na (self.aivar[AIV_PARTYMEMBER]==TRUE) i też nic.
 

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio
Problemem jest to, że parser nie widzi self, nie wie co to jest.
Tu jest odpowiedź.
Prawdopodobnie Ty chcesz to wywołać przy każdym dołączeniu do drużyny. Spróbuj tak:
//dołączanie do grupy!!
const int AIV_JOINEDTOPARTY = 999;
var oCNpc her; her = Hlp_GetNpc(hero);
    var C_Npc slf; slf = _^(her.focus_vob);
if (slf.aivar[AIV_PARTYMEMBER] == TRUE) {
    var string msg;

    if (slf.aivar[AIV_JOINEDTOPARTY]==FALSE) {
msg = ConcatStrings(slf.name, " dołącza do grupy!");
PrintScreen(msg,1,1,"font_old_10_white.tga",2);
slf.aivar[AIV_JOINEDTOPARTY] = TRUE;
    };
};
Wymagany Ikarus.

Zucklov

Zucklov

Quest Pack Team
Sztywniutko
posty1220
Propsy1241
ProfesjaSkrypter
  • Quest Pack Team
  • Sztywniutko

Zucklov
Quest Pack Team

Pobieranie nazwy NPC do zmiennej
#12 2014-06-01, 20:43(Ostatnia zmiana: 2014-06-01, 20:54)
Jeżeli dodałeś to triggera, to parser po prostu nie wie kim jest self. To jest właśnie problem w tego typu funkcjach. Najlepiej to zrobić tak:
func void nazwa (var C_NPC slf)
{
if (slf.aivar[AIV_PARTYMEMBER] == TRUE)
{
var string msg;
var c_npc zmienna;
                zmienna = Hlp_GetNpc(slf);

msg = ConcatStrings(zmienna.name, " dołącza do grupy!");
PrintScreen(msg,1,1,"font_old_10_white.tga",2);
};
};
I w dialogu ją wywołać, np:
nazwa (Arto);Edit: @up Aivarem to nie zadziała, sam próbowałem (to pewnie pamiętasz, jak próbowałem i zasięgałem u Ciebie rady).
 
Lieb Vaterland magst ruhig sein

gothic1210
  • Gość
Szkoda, że to takie zagmatwane wszystko. Myślałem, że będzie to można zrobić jakoś globalnie dla wszystkich. Dzięki Jasiu. Temat można zamknąć.
 


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