Nowy Czar i inne pytanko 16915 42

O temacie

Autor Batioo

Zaczęty 2.08.2009 roku

Wyświetleń 16915

Odpowiedzi 42

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Powinno być ok:
func void weaponreaction(var c_npc attacker,var c_npc defender)
{
if(!Npc_IsInFightMode(attacker,FMODE_MELEE))
{return;};
var c_item weapon;
weapon=Npc_GetReadiedWeapon(attacker);
if(Hlp_IsItem(weapon,instance_broni_a))
{
//reakcja na broń a
   Wld_PlayEffect("spellFX_IceCube",self,self,0,0,0,FALSE);

}
else if(Hlp_IsItem(weapon,instance_broni_b))
{
//reakcja na broń b

};
};

func void B_Orc_AssessCombatDamage()
{
weaponreaction(other,self);
};

func int CmpNpc(var c_npc p1,var c_npc p2)
{
var int old1;
var int old2;
var int result;
old1=p1.aivar[0];
old2=p2.aivar[0];
p1.aivar[0]=0;
p2.aivar[0]=1;
result=p1.aivar[0];
p1.aivar[0]=old1;
p2.aivar[0]=old2;
return result;
};

func void Sbd_is_damaged()
{
//ERRATA if (self==other&&hero==victim)
if(Npc_IsPlayer(victim)&&CmpNpc(self,other))
{weaponreaction(self,hero);};
};

sebastiansok

sebastiansok

Użytkownicy
posty93
Propsy1
  • Użytkownicy

sebastiansok

Nowy Czar i inne pytanko
#21 2009-08-04, 09:46(Ostatnia zmiana: 2009-08-04, 09:54)
a tak wgl błąd jest tutaj:
"Wld_PlayEffect("spellFX_IceCube",attacker,defender,0,0,0,FALSE)"

to musi być tam gdzie masz napisane // Reakcja na broń A
ale dobra podam Ci jak moje skrypty wyglądają na to
Cytuj
var int WeaponCharges;

func void WeaponReaction1 (var C_NPC attacker,var C_NPC defender)
{
Wld_SendTrigger("SKRIPTTRIGGER");
    var C_Item ReadyWeap;
    var C_item weapon;
    const string PRINT_Miecz_runiczny      = "Połowa Naładowana";
    const string PRINT_Headshot      = "HEADSHOT!";
    ReadyWeap = Npc_GetReadiedWeapon (attacker);
    weapon=Npc_GetReadiedWeapon(attacker);
 if(Hlp_IsItem(ReadyWeap,ItMw_2H_FireRainSword_full) == TRUE) && (Npc_HasBodyFlag(attacker,26)) && (WeaponCharges >= 10)
    {
   Wld_PlayEffect("spellFX_Massdeath_EXPLOSION",Defender,Attacker,0,300,DAM_MAGIC,FALSE);
   Wld_PlayEffect("spellFX_BELIARSRAGE",  Defender, Attacker, 0, 0, 0, FALSE );
   Wld_PlayEffect("spellFX_Firestorm_SPREAD",attacker,attacker,0,200,DAM_MAGIC,FALSE);
   B_MagicHurtNpc (self, Defender, 50);
   PrintScreen   (PRINT_Headshot, -1,-1, FONT_Screen ,2);
   WeaponCharges = 0;
    }
 else if(Hlp_IsItem(ReadyWeap,ItMw_2H_FireRainSword_full) == TRUE) && (WeaponCharges == 5)
    {
   PrintScreen   (PRINT_Miecz_runiczny, -1,-1, FONT_Screen ,1);
    WeaponCharges += 1;
    }
else if(Hlp_IsItem(ReadyWeap,ItMw_2H_FireRainSword_full) == TRUE)
       {
       Wld_PlayEffect("spellFX_ChargeFireball",defender,attacker,0,0,0,FALSE);
       Wld_PlayEffect("spellFX_Sleep_ORIGIN",attacker,attacker,0,0,0,FALSE);   
       WeaponCharges += 1;
       };

};
Odrazu mówie, ja mam pare rzeczy dodanych, a te efekty tak se dowaliłem ;d.... w tym mieczu mam zrobione te efekty, a także że jak się połowa załaduje(bo ja mam wyzwalany efekt po iluś hitach) to Ci się pokaże  napis na ekranie "połowa naładowana" a jak walniesz zaklęciem, to "HEADSHOT!", ale jak chcesz se to usuń, ale zostaw najważniejsze  czyli efekty, IF z Weaponcharges 10 i  tam gdzie ąsz WeaponCharges += 1;

Edit: Kurde @Adanos, uprzedziłeś mnie, ale zostawie ten początek co napisałem
 
89% graczy uważa że najważniejsza jest grafika jeśli należysz do tych 11% wklej to do podpisu!

Zkirtaem

Zkirtaem

Moderator
Mięso
posty2171
Propsy1689
ProfesjaGracz
  • Moderator
  • Mięso

Zkirtaem
Moderator

Nowy Czar i inne pytanko
#22 2009-08-04, 10:59(Ostatnia zmiana: 2009-08-04, 11:06)
Cytuj
if(Hlp_IsItem(weapon,tenza))
    {



   Wld_PlayEffect("BARRIERE_PC_SHOOT",hero,hero,0,0,50,FALSE);
   Wld_PlayEffect("spellFX_Telekinesis",hero,hero,0,0,50,TRUE);
        Wld_PlayEffect("spellFX_Speed",hero,hero,0,0,0,FALSE);


//
   PrintDebugNpc( PD_MAGIC, "B_AssessMagic_Firerain" );   

//   Npc_SendPassivePerc(self, PERC_ASSESSFIGHTSOUND, hero, other);


   PrintDebugNpc( PD_MAGIC, "B_AssessMagic_Firerain" );   
   Npc_SendPassivePerc(self, PERC_ASSESSFIGHTSOUND, self, other);



//Wld_PlayEffect("spellFX_Firerain",hero,other,0,0,0,FALSE);

   PrintDebugNpc( PD_MAGIC, "B_AssessMagic_Fear" );   


   Npc_SendPassivePerc(self, PERC_ASSESSFIGHTSOUND, self, other);

   // Immunität für SLEEPER, TROLL, SWAMPSHARK, DEMON, SKELETONS, ZOMBIES, GOLEM
   if (   (self.guild   == GIL_SLF)       ||
         (self.guild == GIL_TROLL)      ||
         (self.guild == GIL_SWAMPSHARK)    ||
         (self.guild == GIL_DEMON)      ||
         (self.guild == GIL_GOLEM)      ||
         (self.guild == GIL_SKELETON)   ||
         (self.guild == GIL_ZOMBIE)         )
   {
      PrintDebugNpc   (PD_MAGIC, "...Ziel immun!" );   
   }
   else
   {
      PrintDebugNpc   (PD_MAGIC, "...Ziel NICHT immun!" );   
      Npc_ClearAIQueue(self);
      Npc_SetTarget   (self,   other);
      if (C_NpcIsHuman(self))
      {
         AI_StartState   (self, ZS_Flee, 0, "");
      }
      else if (C_NpcIsMonster(self))
      {
         AI_StartState   (self, ZS_MM_Flee, 0, "");
      };
   };

if (cm>100)
{
Wld_PlayEffect("spellFX_Fear",hero,other,0,10,0,FALSE);
Wld_PlayEffect("spellFX_Heal",hero,hero,0,100,0,FALSE);
cm=cm-100;
};

    };

Mój skromny skrypcik, w myśl którego przeciwnik spierdala, jak dostanie. Mi działa, spróbuj, porównaj do swojego, czy coś. Może Ci się przyda.
 

Batioo

Batioo

Użytkownicy
posty24
  • Użytkownicy

Batioo

Nowy Czar i inne pytanko
#23 2009-08-04, 12:21(Ostatnia zmiana: 2009-08-04, 12:38)
Sprawdziłem skrypty Adanosa i Sebastianasoka.
W skrypcie Adanosa nie wykryło żadnych błędów, natomiast w skrypcie Sebastiana wykryło takowe (chyba "exepted: ")" i takie same ale z przecinkami i innymi znakami).
Ale tak czy inaczej wiem już jak stworzyć miecz ''runiczny''.

Ale wciąż czekam na odpowiedź dot. stworzenia nowego czaru.

EDIT.

Błędów może i nie wykrywa, ale podczas gry miecz nie działa jak powinien. Może powinienem coś dodać w jego skrypcie, czy powinno działać w tej formie jak napisał Adanos?
 

sebastiansok

sebastiansok

Użytkownicy
posty93
Propsy1
  • Użytkownicy

sebastiansok

Nowy Czar i inne pytanko
#24 2009-08-04, 12:37(Ostatnia zmiana: 2009-08-04, 12:40)
ten co ja podałem, to trzeba mieć jeszcze w paru plikach Weaponreaction1(other,self) czy jakoś tak... po drugie, to co podałem to miecz magiczny, a miecz runiczny robie dopiero, mam już narazie zrobione pod jedną rune, wyjęcie wszystkich itp.... zajęło mi to około 5 minut, jak się wie jak to robić to prościzna



Edit:
Jeśli chodzi o to co podałem, to skróciłem go, bo tam mam na ponad 12 mieczy, i nie chciałęm tego całego wysyłać więc skracałem, bez sprawdzania czy są błędy
 
89% graczy uważa że najważniejsza jest grafika jeśli należysz do tych 11% wklej to do podpisu!

Batioo

Batioo

Użytkownicy
posty24
  • Użytkownicy
"Runicznym" nazwałem go, bo używa czarów jakie są w runach a "magicznym mieczem" nazywam bronie typu Uriziel, które zadają obrażenia np. od magi lub barriery albo ognia.

Ale mi chodzi o skrypt Adanosa, to on nie działa (błędów nie wykrywa, ale w grze miecz zadaje obrażenia normalne, bez efektu.
 

sebastiansok

sebastiansok

Użytkownicy
posty93
Propsy1
  • Użytkownicy
no bo nie masz linijek w innym plikach w AI, że ma dostawać :P .... ja robie miecz runczny, w taki sposób że idziesz d okolesia a on wkłada Ci runę ;) ... mi to działa
 
89% graczy uważa że najważniejsza jest grafika jeśli należysz do tych 11% wklej to do podpisu!

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Cytuj
Ale mi chodzi o skrypt Adanosa, to on nie działa (błędów nie wykrywa, ale w grze miecz zadaje obrażenia normalne, bez efektu.
To jest twój skrypt, tylko że go poprawiłem. Więc nie do mnie pytanie dlaczego nie działa :)

Ani razu nie jest wywołany ten efekt:
Wld_PlayEffect("spellFX_IceCube",self,self,0,0,0,FALSE);?

Batioo

Batioo

Użytkownicy
posty24
  • Użytkownicy

Batioo

Nowy Czar i inne pytanko
#28 2009-08-04, 23:37(Ostatnia zmiana: 2009-08-05, 00:21)
Ani razu. W ogóle.

Edit:

Teraz mi Pan mówisz że trzeba zmieniać w plikach AI?! To niech Pan mi jeszcze powie co zmienić/dodać i w których plikach.
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Pokaż swoją broń o instancji:
instance_broni_a

Batioo

Batioo

Użytkownicy
posty24
  • Użytkownicy
INSTANCE swit_blade (C_Item)
{
name = "Świt";

mainflag = ITEM_KAT_NF;
flags = ITEM_SWD;
material = MAT_METAL;

value = 3500;//1750;//870;

damageTotal = 90;
damagetype = DAM_EDGE;
range =  100;




cond_atr[2]   = ATR_STRENGTH;
cond_value[2]  = 70;
visual = "ItMw_2H_Sword_Heavy_04.3DS";


description = name;
TEXT[2] = NAME_Damage; COUNT[2] = damageTotal;
TEXT[3] = NAME_Str_needed; COUNT[3] = cond_value[2];
TEXT[4] = NAME_OneHanded;
TEXT[5] = NAME_Value; COUNT[5] = value;
};

Oczywiście w skrypcie funkcji zmieniłem z
instance_broni_a na swit_bladeAle mam jakieś dziwne wrażenie że powinienem też coś dodać w skrypcie broni...
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Nie mylisz się. Brakuje jeszcze tego:
on_equip = weaponreaction;
//on_unequip = UnEquip_1H_10;

Chociaż nie wiem, co wpisać po ściągnięciu tej broni...

Batioo

Batioo

Użytkownicy
posty24
  • Użytkownicy
Mam nieodparte wrażenie, że tu można by zrobić coś jak z mieczami z rudy w G2, które dodają umiejętność walki. W skrypcie mają napisane on_equip = Equip_1H_10;
on_unequip = UnEquip_1H_10;
sądzę, że tu można by zrobić coś podobnego, w jakimś pliku uwzględnić że po założeniu broni zadziała ta funkcja, a po ściągnięciu jej się wyłączy. Nie wiem czy coś takiego jest w G1 możliwe.
Lub można spróbować dodać przy ściąganiu on_unequip = weaponreaction; ale nie wiem czy to zadziała....
 

Batioo

Batioo

Użytkownicy
posty24
  • Użytkownicy
Dodałem w skrypcie on_equip = weaponreaction;, kiedy próbuję założyć miecz wyskakuje błąd: PAR: Function type not supported (WEAPONREACTION) (line 175). Sądzę iż oznacza to że tą funkcję trzeba chyba gdzieś "zarejestrować" czy coś. Problem w tym że nie wiem gdzie...
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Spróbuj tak dać:
on_equip =   B_Orc_AssessCombatDamage;

Batioo

Batioo

Użytkownicy
posty24
  • Użytkownicy
Niestety też to nie działa. Nie wiem co zrobić...
 

Batioo

Batioo

Użytkownicy
posty24
  • Użytkownicy
Ok, dziś zrobiłem miecz runiczny w G2NK, a w "Jedynce" sobie chyba odpuszczę.

Czekam na odpowiedź na pytanie "Jak zrobić nowy czar".
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator

inż. Avallach
Administrator

Nowy Czar i inne pytanko
#37 2009-08-09, 20:44(Ostatnia zmiana: 2009-08-10, 14:23)
Mnie dopiero dziś udało się rozszyfrować jak najprościej zrobić taki runiczny miecz. Wystarczy zagnieździć nową funkcję w pliku D:\Gothic\_Work\Data\Scripts\Content\AI\ZS_Human\ZS_ReactToDamage.d która będzie sprawdzała czy miecz jaki mamy nałożony jest magiczny. Jeśli tak, to wywołuje jakieś efekty wizualne i/lub zadaje specjalne obrażenia. Śmiesznie proste, inna sprawa że to tylko część efektów jakich można oczekiwać po magicznym mieczu, trudniej sprawić żeby sama broń wytwarzała wokół siebie aurę czaru, do tego potrzeba użyć pliku ZEN, a mi niestety gra nie chce zaakceptować nawet pliku strzały wprost skopiowanej z "die bedrohunga".

Batioo

Batioo

Użytkownicy
posty24
  • Użytkownicy
Zdziwiło mnie to że kiedy dałem funkcje w pliku podanym przez Avallacha to się udało.
Cóż, dziękuję wam za pomoc w tej sprawie (Adanosowi za poprawienie funkcji, a Avallachowi za plik w którym to dać), dalej sobie poradzę :D

A co do czaru to rezygnuję z tego pomysłu, te co są w Gothicu są fajne, nie trzeba mi nowego xD

Kolejne pytanko- Jak nazywa się w G1 plik, który jest "odpowiednikiem" pliku "ZS_ReactToDamage.d", tylko że dla potwórów (nie orków, ale zwykłych potworów)?
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator

inż. Avallach
Administrator

Nowy Czar i inne pytanko
#39 2009-08-11, 12:46(Ostatnia zmiana: 2009-08-11, 12:54)
Nie wiem jakim cudem ci działa bo niechcący trochę wprowadziłem cie w błąd. Ponieważ sam robiłem to metodą prób i błędów, osiadłem na laurach już kiedy pojawił się pierwszy wizualny efekt. W końcu zrozumiałem tutek o którym była mowa na początku. Okazało że wpis do ZS_ReactToDamage.d wystarcza tylko dopóki przeciwnik jest człowiekiem i nie ma zamiaru kontratakować. Jeśli chcesz mieć ciągle działającą magiczną broń trzeba dodać wpisy w:
ZS_Reacttodamage
B_CombatReacttodamage
B_MM_ReactToDamage
B_MM_ReactToCombatDamage
B_Orc_AssessDamage
i opcjonalnie w
ZS_Dead
Poza tym dobrze by było sprawdzić czy atakujący jest graczem, bo mogą pojawiać się dziwne efekty przy walce dwóch NPCów kiedy my mamy akurat założoną magiczną broń.


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