Skocz do zawartości


Ogłoszenie

Zapomniałeś loginu lub hasła napisz email do admistratora forum, nie zakładaj kolejnych kont!


Zdjęcie

Tekst nad głową

skrypty

  • Zaloguj się, aby dodać odpowiedź
9 odpowiedzi w tym temacie

#1 Józef Taktyka

Józef Taktyka

    Forumowicz

  • Ashaba
  • PipPip
  • 143 postów
  • 6259429
  • drakio
  • Wersja gry:1.23 (1765)
  • Maska Zdrajcy:Tak
  • Gniew Zehira:Tak

Napisano 21 luty 2017 - 15:53

Próbuje dodać na lokacji wyzwalacz, który będzie pokazywał nad głową postaci tekst przez parę sekund. W wyzwalaczu podstawiam pod OnEnter skrypt ga_floatingtextstring (dokładnej nazwy nie pamiętam, piszę z pamięci). I niestety tutaj się zatrzymuję bo nie wiem jak określić jaki tekst ma się pojawiać. W skrypcie jest podana zmienna sText , wklepuję ją w Zmiennych, wybieram typ string i w stringvalue podaję np. test. Ale to niestety nie działa. Nie wiem czy to trzeba skrypt modyfikować czy w zmiennych inaczej określić? Wydaje mi się, że zmienne trzeba podać odpowiednio ale coś mi nie idzie. Ktoś się tym kiedyś bawił?



#2 The_Tox

The_Tox

    Budowacz

  • Aeris - Mistrz Gry
  • Inne: Aeris - Budowniczy, Konsultanci
  • 225 postów
  • The_Tox
  • Wersja gry:1.23
  • Maska Zdrajcy:Tak
  • Gniew Zehira:Tak

Napisano 21 luty 2017 - 15:58

Józef,

Ja się bawiłem w coś podobnego. I nawet mi się to udało. Podzielę się rozwiązaniem, jak wrócę z pracy :)


  • Józef Taktyka lubi to

#3 The_Tox

The_Tox

    Budowacz

  • Aeris - Mistrz Gry
  • Inne: Aeris - Budowniczy, Konsultanci
  • 225 postów
  • The_Tox
  • Wersja gry:1.23
  • Maska Zdrajcy:Tak
  • Gniew Zehira:Tak

Napisano 21 luty 2017 - 19:57

Ok, to żadna tajemnica, wiec dla innych potrzebujących pokazuję, co wysłałem Józkowi:

 

 

void main()
{
object oPC = GetEnteringObject();
if (!GetIsPC(oPC)) return;
string oString;
object oTarget;
oTarget = GetNearestObjectByTag("MG");
oString = GetDescription (oTarget);
AssignCommand(oTarget, ActionSpeakString(oString));
}

 

Generalnie ustawiasz w onenter.

Potem w toolu wybierasz sobie obiekt: "Mówca" z palety standardowej: 04 POZOSTAŁE REKWIZYTY.

I w "Mówcy" (tutaj dałem mu tag: MG) ustawiasz dowolny opis.

Skrypt po wejściu gracza w trigger wypowiada opis.



#4 enemys

enemys

    Adminofaszysta

  • neverwinter2.gram.pl
  • Inne: Aeris - Budowniczy, Aeris - Mistrz Gry
  • 10426 postów
  • 4392048
  • Slithan
  • Wersja gry:1.23
  • Maska Zdrajcy:Tak
  • Gniew Zehira:Tak

Napisano 21 luty 2017 - 23:14

O ile się nie mylę, wyzwalacz będzie w tym skrypcie dostępny jako OBJECT_SELF, więc jeśli ustawiłeś na nim jakąś tekstową zmienną lokalną o nazwie, załóżmy, "abcd", to możesz ją odczytać przez:

string sAbcd = GetLocalString(OBJECT_SELF, "abcd");

Nie ma potrzeby dodawania zewnętrznego obiektu do przechowywania danych. Co więcej, w ten sposób można przechowywać wiele różnych zmiennych na obiekcie, a nie tylko pojedynczy tekst.


Nie jestem MG, tylko adminofaszystą.

Od wtorku do czwartku każdego tygodnia zajęty i nieobecny (ew. obecny z doskoku na forum) - o ile serwer się nie pali i nie wali, nie pomogę.

PROSZĘ ZGŁASZAĆ BUGI W DZIALE BUGÓW, NIE PRZEZ PRYWATNĄ WIADOMOŚĆ, CHYBA ŻE W GRĘ WCHODZĄ SZKODLIWE EXPLOITY BĄDŹ BŁĘDY WYMAGAJĄCE BARDZO PILNEGO ZAŁATANIA!

Pierwsze prawo Aeris w ujęciu molekularnym: każdy elektron ma swój spin, każdy gracz Aeris ma swoją spinę.


#5 Józef Taktyka

Józef Taktyka

    Forumowicz

  • Ashaba
  • PipPip
  • 143 postów
  • 6259429
  • drakio
  • Wersja gry:1.23 (1765)
  • Maska Zdrajcy:Tak
  • Gniew Zehira:Tak

Napisano 22 luty 2017 - 11:05

Metoda Toxa pomogła, dzięki :) Od VVuzka dostałem też dobre rozwiązanie. 

 

enemys, jeśli dobrze rozumiem Twoje rozwiązanie musiałbym dla każdego wyzwalacza tworzyć osobny skrypt z podstawionym tekstem w abcd?



#6 enemys

enemys

    Adminofaszysta

  • neverwinter2.gram.pl
  • Inne: Aeris - Budowniczy, Aeris - Mistrz Gry
  • 10426 postów
  • 4392048
  • Slithan
  • Wersja gry:1.23
  • Maska Zdrajcy:Tak
  • Gniew Zehira:Tak

Napisano 22 luty 2017 - 12:41

Nie, skrypt mógłby być ten sam dla wszystkich wyzwalaczy, tylko nazwa (nie zawartość!) zmiennej lokalnej na wyzwalaczu musiałaby być identyczna dla każdego z nich.

Nie jestem MG, tylko adminofaszystą.

Od wtorku do czwartku każdego tygodnia zajęty i nieobecny (ew. obecny z doskoku na forum) - o ile serwer się nie pali i nie wali, nie pomogę.

PROSZĘ ZGŁASZAĆ BUGI W DZIALE BUGÓW, NIE PRZEZ PRYWATNĄ WIADOMOŚĆ, CHYBA ŻE W GRĘ WCHODZĄ SZKODLIWE EXPLOITY BĄDŹ BŁĘDY WYMAGAJĄCE BARDZO PILNEGO ZAŁATANIA!

Pierwsze prawo Aeris w ujęciu molekularnym: każdy elektron ma swój spin, każdy gracz Aeris ma swoją spinę.


#7 Józef Taktyka

Józef Taktyka

    Forumowicz

  • Ashaba
  • PipPip
  • 143 postów
  • 6259429
  • drakio
  • Wersja gry:1.23 (1765)
  • Maska Zdrajcy:Tak
  • Gniew Zehira:Tak

Napisano 22 luty 2017 - 12:51

Ok kumam. Dzięki za pomoc :)



#8 The_Tox

The_Tox

    Budowacz

  • Aeris - Mistrz Gry
  • Inne: Aeris - Budowniczy, Konsultanci
  • 225 postów
  • The_Tox
  • Wersja gry:1.23
  • Maska Zdrajcy:Tak
  • Gniew Zehira:Tak

Napisano 23 luty 2017 - 12:01

Tak swoja droga próbowałem także z:

string sAbcd = GetLocalString(OBJECT_SELF, "abcd");

I co ciekawe nie dostawałem tekstu :). Mimo ustawienia zmiennej string na wyzwalaczu.

 

Jednak, tak jak mówiłem, działa z obiektem "Mówca"

Dodatkowo, zrobiłem potem jeszcze małą modyfikację pod serwer, żeby wyzwalacz nie spamował tekstem, np. kiedy 10 graczy na niego wchodzi.

 

 

void main()
{
object oPC = GetEnteringObject();

// zmienna int ENTER domyslnie ustawiona na 0

int iEnter = GetLocalInt(OBJECT_SELF, "ENTER");
if (!GetIsPC(oPC)) return;

if (iEnter == 1) return;

string oString = GetDescription (oTarget);
object oTarget = GetNearestObjectByTag("MG");

float fTimer = GetLocalFloat(OBJECT_SELF, "TIMER");

AssignCommand(oTarget, ActionSpeakString(oString));

// zmienna int ENTER ustawiana na 1, żeby tekst nie pojawiał się za każdym razem keidy gracz wejdzie

SetLocalInt (OBJECT_SELF, "ENTER", 1);

// zmienna resetuje się do 0, po ustalonym czasie w fTimer

DelayCommand(fTimer, SetLocalInt (OBJECT_SELF, "ENTER", 0));

}



#9 enemys

enemys

    Adminofaszysta

  • neverwinter2.gram.pl
  • Inne: Aeris - Budowniczy, Aeris - Mistrz Gry
  • 10426 postów
  • 4392048
  • Slithan
  • Wersja gry:1.23
  • Maska Zdrajcy:Tak
  • Gniew Zehira:Tak

Napisano 23 luty 2017 - 17:47

To musiałeś tę zmienną ustawić źle albo mieć inny błąd w skrypcie. W grze są gotowe triggery ze skryptami sterowanymi zmiennymi lokalnymi, np. skrypt "gtr_speak_node". Obiekt "mówcy" jest potrzebny najwyżej do wymówienia tekstu, jeśli nie ma być on wyświetlany nad postacią gracza, tylko wymówiony przez ActionSpeakString, bo triggerowi (chyba) nie można przypisać żadnej akcji.


Nie jestem MG, tylko adminofaszystą.

Od wtorku do czwartku każdego tygodnia zajęty i nieobecny (ew. obecny z doskoku na forum) - o ile serwer się nie pali i nie wali, nie pomogę.

PROSZĘ ZGŁASZAĆ BUGI W DZIALE BUGÓW, NIE PRZEZ PRYWATNĄ WIADOMOŚĆ, CHYBA ŻE W GRĘ WCHODZĄ SZKODLIWE EXPLOITY BĄDŹ BŁĘDY WYMAGAJĄCE BARDZO PILNEGO ZAŁATANIA!

Pierwsze prawo Aeris w ujęciu molekularnym: każdy elektron ma swój spin, każdy gracz Aeris ma swoją spinę.


#10 Moreus

Moreus

    Aktywny

  • Użytkownik
  • PipPipPip
  • 1366 postów
  • moreus
  • Wersja gry:Chaotic Evil
  • Maska Zdrajcy:Tak
  • Gniew Zehira:Tak

Napisano 06 czerwiec 2017 - 12:14

Tak swoja droga próbowałem także z:

string sAbcd = GetLocalString(OBJECT_SELF, "abcd");

I co ciekawe nie dostawałem tekstu :). Mimo ustawienia zmiennej string na wyzwalaczu.

 

Jednak, tak jak mówiłem, działa z obiektem "Mówca"

Dodatkowo, zrobiłem potem jeszcze małą modyfikację pod serwer, żeby wyzwalacz nie spamował tekstem, np. kiedy 10 graczy na niego wchodzi.

// Trochę zmieniłem kod
void main()
{	
	object oTarget = GetEnteringObject();
	if(GetIsPC(oTarget)&&!GetLocalInt(OBJECT_SELF, "ENTER"))
	{
		object oSelf = OBJECT_SELF;
		SetLocalInt (oSelf, "ENTER", 1);
		AssignCommand(oTarget,SpeakString(GetLocalString(oSelf,"STRING")));// Zmienna Lokalna STRING przechowuje tekst na wyzwalaczu
		DelayCommand(GetLocalFloat(oSelf, "TIMER"),SetLocalInt (oSelf, "ENTER", 0));
	}
}

  • The_Tox lubi to





Również z jednym lub większą ilością słów kluczowych: skrypty



IPB Skin By Virteq