Wyświetlanie nazwy broni w trakcie gry nad paskiem życia 4172 9

O temacie

Autor pawbuj

Zaczęty 21.11.2010 roku

Wyświetleń 4172

Odpowiedzi 9

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
jak w temacie rozumiem,że takie coś robi się obowiązkowo triggerem.
przyda się też :
if Npc_GetEquippedMeleeWeapon (hero)np. gdy mamy broń do walki wręcz


ale nie wiem bardzo jak zrobić , aby nazwa noszonej broni się wyświetlała. dodam, że opcja dopisywania skryptu do każdej założonej broni jest za bardzo pracochłonna.
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
Cytat: Mag Saturas link=topic=12014.msg119819#msg119819#msg119819#msg119819 date=1290362353
Mi się wydaje że powinien ten post być w tutorialach
Nie pisz jeśli nie wnosisz nic do tematu bo będzie to traktowane jako spam, byłeś już ostrzegany :/
Post Pawbuja nie zawiera ŻADNYCH informacji które by cokolwiek komuś dawały, to przecież pytanie :facepalm:

Nie napisałeś czy chodzi ci o broń białą czy dystansową, zrobiłem żeby wypisywał to co jest.

var c_item weapon;
if (Npc_HasEquippedMeleeWeapon(hero) && Npc_HasEquippedRangedWeapon(hero))
{weapon = Npc_GetEquippedMeleeWeapon(hero); Print(weapon.name);
weapon = Npc_GetEquippedRangedWeapon(hero); Print(weapon.name);}
if (Npc_HasEquippedMeleeWeapon(hero))
{weapon = Npc_GetEquippedMeleeWeapon(hero); Print(weapon.name);}
else if (Npc_HasEquippedRangedWeapon(hero))
{weapon = Npc_GetEquippedRangedWeapon(hero); Print(weapon.name);};
Jeśli chcesz żeby było to nad paskiem życia, zamiast print użyj PrintScreen, koordynaty musisz dobrać metodą prób i błędów. Jako że nie znoszę triggerów, dodałbym jednak aktywatora funkcji do każdej broni - można zrobić to bez problemu z automatu, sprytnie każąc programowi (choćby notatnikowi) w każdym odpowiednim miejscu dopisać po linijce kodu.

kamiloops

kamiloops

Użytkownicy
posty161
Propsy11
ProfesjaProgramista
  • Użytkownicy
Ahhhh ja też mam takie coś w modyfikacji, ale zlikwiduje bo to jest zbędne.
Takie żeczy tylko przeszkadzają.
 
Nie mam polskich znakow

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
Avallach zrobiłem to podobnie . Problem następny to wyświetlanie ilości strzał/bełtów w gotowości do strzału jak i samej broni,
ważne, aby systm odróznił też łuk od kuszy , a tym samym strzałę od bełtu

dam skrypt, który wałkuję:

if  //(equippedranged.flags == ITEM_BOW)
 ( Npc_IsInFightMode(hero, FMODE_FAR))
&& (Npc_HasItems(hero,ItAmArrow))
&& (Npc_HasRangedWeaponWithAmmo (hero))
      {
var int zet;
zet = Npc_HasItems(hero, ItAmArrow);
PrintScreen (ConcatStrings ("Strzały: ", IntToString(zet)),5,36,"FONT_OLD_10_WHITE.TGA",2);
};
};
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
Źle się za to bierzesz.

if (Npc_HasEquippedRangedWeapon(hero))
{
var c_item item; item = Npc_GetEquippedRangedWeapon(hero); item = item.munition;
if (Npc_HasItems(hero, item)) {print(ConcatStrings(ConcatStrings(item.name, ": "), IntToString(Npc_HasItems(hero, item)));};
};

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
wyrzuca przy item.munition

ten skrypt powoduje,że się wyświetla nawet kiedy strzelamy,ale ma wady:
1) nieodróżnia bełtów od strzał;
2)nie wyświetla nazwy broni;

if (Npc_HasItems(hero,ItAmArrow))
&& (Npc_HasRangedWeaponWithAmmo (hero))
      {
var int zet;
zet = Npc_HasItems(hero, ItAmArrow);
PrintScreen (HP3,7,87,"FONT_OLD_10_WHITE.TGA",3);
PrintScreen (ConcatStrings ("Strzały: ", IntToString(zet)),7,89,"FONT_OLD_10_WHITE.TGA",2);
 


pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
Cytat: Avallach link=topic=12014.msg119869#msg119869#msg119869#msg119869 date=1290404610
Mój odróżnia (i to dowolne pociski), skopiuj dokładnie jaki błąd wywala.
undefined function: item.munition
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
Cytat: pawbuj link=topic=12014.msg119924#msg119924#msg119924#msg119924 date=1290450963
undefined function: item.munition
Chyba wiem gdzie błąd, właściwie to jakby trochę niedociągnięcie ze strony PB - wbrew pozorom pocisk jest zapisywany jako liczba. Nie da się bezpośrednio pobrać itemu pod nią zapisanego, a więc nie da się też wyciągnąć nazwy. Można jednak pokombinować ze zmienną dynamiczną "item":
if (Npc_HasEquippedRangedWeapon(hero))
{
var c_item weapon; var int munition;
weapon = Npc_GetEquippedRangedWeapon(hero); munition = weapon.munition;
CreateInvItem(self, munition); //wiem że to głupie ale trzeba kombinować :D
Npc_HasItems(self, munition); //wiem że to głupie ale trzeba kombinować :D
Npc_RemoveInvItem(self, munition); //wiem że to głupie ale trzeba kombinować :D
Wld_InsertItem(munition, "START"); //wiem że to głupie ale trzeba kombinować :D
weapon = item;
if (Npc_HasItems(hero, weapon)) {print(ConcatStrings(ConcatStrings(weapon.name, ": "), IntToString(Npc_HasItems(hero, weapon)));};
};
Te linijki z "kombinowaniem" są po to, żeby gra automatycznie zapisała "obrabiany" obiekt pod instance "item" (takie unikatowe, dynamiczne cuś). Nie da się tego zrobić ręcznie bez Ikarusa, a nie pamiętam kiedy dokładnie gra robiła to z automatu - któraś z tych funkcji powinna do tego doprowadzić.

Jak będzie działać, spróbuj potem bez linijki Wld_InsertItem, da się co prawda zrobić i z nią i pozbywając się zarazem insertowanego itemu, ale trzeba by jeszcze bardziej kombinować.


Ewentualnie, bardzo łatwo można by przekonwertować tego integera minution na typ c_item za pomocą Ikarusa, z tym że sam Ikaurus jest dużym problemem...

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
może cos mniej skomplikowanego :

if (Npc_HasItems(hero,ItAmArrow))
&& (ItAmArrow == item.munition)// musi wykrywać , że jest to itamrrow - jak tutaj zrobić, aby działało?
&& (Npc_HasRangedWeaponWithAmmo (hero))
      {
var int zet;
zet = Npc_HasItems(hero, ItAmArrow);
PrintScreen (HP3,7,87,"FONT_OLD_10_WHITE.TGA",3);
PrintScreen (ConcatStrings ("Strzały: ", IntToString(zet)),7,89,"FONT_OLD_10_WHITE.TGA",2);




};
};
 


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