Efektowne miecze autorstwa Xardasa17 - problem 5474 14

O temacie

Autor zalpl

Zaczęty 19.02.2010 roku

Wyświetleń 5474

Odpowiedzi 14

zalpl

zalpl

Użytkownicy
posty92
  • Użytkownicy
Otóż zrobiłem sobie miecz dający efekt rzucania czaru dzięki tutorialowi o Magicznej Broni autorstwa Zyska. Mówię potem a co sobie będę żałował...zrobię żeby świecił  :D  Więc dodałem odpowiednie linijki oraz SKRIPTTRIGGER do ZENA. Żadnego błędu nie wywaliło ale miecz nie świecił...tylko iskry z niego sypały jak zauważyłem...w związku z tym mam parę pytań:

1. SKRITTRIGGER - co on właściwie robi...nigdzie nie widziałem jego nazwy a po za tym Xardas17 nie mówił że ma mieć jakiś visual...u mnie wygląda to tak:
http://img269.imageshack.us/img269/7489/skripttrigger.jpg
2. Jak mogę zrobić sprawdzenie czy SKRIPTTRIGGER działa poprawnie?
3. Czy obojętne jest gdzie go dodam w startupie?
4.
//var C_Npc her;
//her = Hlp_GetNpc(PC_Hero);

//ERRATA if (self==other&&hero==victim)
Co dają te linijki? W tutkach też były w komentarzu...
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Cytuj
1. SKRITTRIGGER - co on właściwie robi...nigdzie nie widziałem jego nazwy a po za tym Xardas17 nie mówił że ma mieć jakiś visual...u mnie wygląda to tak:
http://img269.imageshack.us/img269/7489/skripttrigger.jpg
Wywołuje się co jakiś czas.

Cytuj
2. Jak mogę zrobić sprawdzenie czy SKRIPTTRIGGER działa poprawnie?
Daj jakiegoś Printa w funkcji.

Cytuj
3. Czy obojętne jest gdzie go dodam w startupie?
W inicie świata. W tutku Zyska wszystko pisze o wywoływaniu skryptu co XXX

zalpl

zalpl

Użytkownicy
posty92
  • Użytkownicy
No dobrze ale w takim razie dlaczego mój miecz nie działa? Wszystko zrobiłem dobrze i błędu nie wywala...Ustawienie triggera dobre?

EDIT: Jak chcesz zobaczyć jakąś linijkę kodu to powiedz...wrzucę :D
 


zalpl

zalpl

Użytkownicy
posty92
  • Użytkownicy
Cytat: Adanos link=topic=8983.msg83430#msg83430 date=Feb 19 2010, 09:31 AM\'
W tutorialu Zyska trochę inaczej wygląda ten trigger: http://themodders.org/index.php?showtopic=89

Tak...tylko że chodzi mi o trigger z efektownych mieczy...
http://themodders.org/index.php?showtopic=72
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
A gdzie wpisałeś tego triggera w startupie?

zalpl

zalpl

Użytkownicy
posty92
  • Użytkownicy
Cytat: Adanos link=topic=8983.msg83432#msg83432 date=Feb 19 2010, 09:39 AM\'
A gdzie wpisałeś tego triggera w startupie?
Na początku miałem w funkcji oldcamp chyba   :D  Ale zmieniłem teraz na func void init_WORLD3 i dalej nie działa...
 


zalpl

zalpl

Użytkownicy
posty92
  • Użytkownicy
Cytat: Adanos link=topic=8983.msg83436#msg83436 date=Feb 19 2010, 09:56 AM\'
Tego triggera masz w World3?

Tak...
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Pokaż skrypty. Tzn. startup i tą funkcję.

zalpl

zalpl

Użytkownicy
posty92
  • Użytkownicy
Pokaż skrypty. Tzn. startup i tą funkcję.

Startup:

//-------- eigentliche Startup des Spiels --------
FUNC VOID INIT_WORLD3 ()
{
INIT_Sub_Newcamp ();
INIT_Sub_Oldcamp ();
INIT_Sub_Psicamp ();
INIT_Sub_Demontower ();
INIT_Sub_Freeminecamp ();
INIT_Sub_Surface ();
[color="#FF0000"]Wld_SendTrigger ("SKRIPTTRIGGER");[/color]

B_InitMonsterAttitudes ();
B_InitGuildAttitudes();
};

FUNC VOID STARTUP_WORLD3 ()
{
Startup_Sub_Newcamp ();
Startup_Sub_Oldcamp ();
Startup_Sub_Psicamp ();
Startup_Sub_Demontower ();
Startup_Sub_Freeminecamp ();
Startup_Sub_Surface ();

//die folgende Zeile gilt nur, bis die INIT_...-Funktionen von Ulf unterstützt werden.
INIT_WORLD3 ();
PlayVideo ("INTRO.BIK");
};

weaponreaction:

func void weaponreaction (var c_npc attacker,var c_npc defender)
{

if(!Npc_IsInFightMode(attacker,FMODE_MELEE))
{return;};
var c_item weapon;
var c_item weapons;
weapon=Npc_GetReadiedWeapon(hero);
weapons = Npc_GetReadiedWeapon(self);
if(Hlp_IsItem(weapon,a1))
{
moc ();
Wld_PlayEffect ("spellFX_IceCube",attacker,defender,0,0,0,FALSE);
//var C_Npc her;
//her = Hlp_GetNpc(PC_Hero);
}
else if(Hlp_IsItem(weapon,a2))
{
Wld_PlayEffect ("spellFX_FireRain",attacker,defender,0,0,0,FALSE);

};
};

////////////////////////////////////////////////
///////////////////////////////////////////////
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[AIV_WANTEDITEM];
old2 = p2.aivar[AIV_WANTEDITEM];
p1.aivar[AIV_WANTEDITEM] = 0;
p2.aivar[AIV_WANTEDITEM] = 1;
result = p1.aivar[AIV_WANTEDITEM];
p1.aivar[AIV_WANTEDITEM] = old1;
p2.aivar[AIV_WANTEDITEM] = old2;
return result;
};
/////////////////////////////////
///////////////////////////////////
func void Sbd_is_damaged()
{
//ERRATA if (self==other&&hero==victim)
if(Npc_IsPlayer(victim)&&CmpNpc(self,other))
{weaponreaction(self,hero);};
};




//////////////////////////
/////////////////////////
/////////////////////////////
INSTANCE a1 (C_Item)
{
name = "Płonący Lód";

mainflag = ITEM_KAT_NF;
flags = ITEM_2HD_SWD;
material = MAT_METAL;
damagetype = DAM_BARRIER || DAM_FIRE;
damage[DAM_INDEX_BARRIER] = 99; ////////////////////// atak bariery
damage[DAM_INDEX_FIRE] = 99;  ///////////////////////// atak ognia
range = 150;

value = 500;

damageTotal = 90;
damagetype = DAM_EDGE;
range = 150;

cond_atr[2] = ATR_STRENGTH;
cond_value[2] = 75;

visual = "ItMw_2H_Sword_01.3DS";

description = name;
TEXT[2] = NAME_Damage; COUNT[2] = damageTotal;
TEXT[3] = NAME_Str_needed; COUNT[3] = cond_value[2];
TEXT[4] = NAME_TwoHanded;
TEXT[5] = NAME_Value; COUNT[5] = value;
};
/////////////////////
///////////////////
INSTANCE a2 (C_Item)
{
name = "T";

mainflag = ITEM_KAT_NF;
flags = ITEM_2HD_SWD;
material = MAT_METAL;

value = 500;

damageTotal = 90;
damagetype = DAM_EDGE;
range = 150;

cond_atr[2] = ATR_STRENGTH;
cond_value[2] = 75;

visual = "ItMw_2H_Sword_01.3DS";

description = name;
TEXT[2] = NAME_Damage; COUNT[2] = damageTotal;
TEXT[3] = NAME_Str_needed; COUNT[3] = cond_value[2];
TEXT[4] = NAME_TwoHanded;
TEXT[5] = NAME_Value; COUNT[5] = value;
};
/////////////////////////////////////////////////
///////////////////
/////////////////////////////////////////////////
func void skriptsteuerung() // nazwa ma znaczenie ( w następnym tutku )
{
var C_Item readiedWeapon;

readiedWeapon = Npc_GetReadiedWeapon(hero);
if(Hlp_IsItem(readiedWeapon,a1)) // instancja miecza
{
moc ();
};
};

getloot:

func int moc ()
{

Wld_PlayEffect("spellFX_ogien",hero,hero,0,0,0,FALSE); // serce ognia w mieczu Wld_PlayEffect("spellFX_Pyrokinesis",hero,hero,0,0,0,FALSE); // iskry lecące od miecza
};

visualfx:

INSTANCE spellFX_ogien(CFx_Base_Proto)
{
visname_S = "CAST10";
visAlpha = 1;

emtrjmode_s = "FIXED";
emTrjOriginNode = "ZS_RIGHTHAND";
emtrjtargetnode = "BIP01 HEAD";
emtrjnumkeys = 1;
emtrjnumkeysvar = 1;
emtrjangleelevvar = 15.;
emtrjangleheadvar = 0.;
emtrjdynupdatedelay = 0.;
emFXInvestTarget_S = "spellFX_Pyrokinesis_target";
emTrjTargetRange = 0;
emTrjTargetElev = 0;
};

INSTANCE spellFX_ogien_KEY_CAST (C_ParticleFXEmitKey)
{
pfx_ppsIsLoopingChg = 1;
};

To chyba wszystko...oprócz tych plików gdzie trzeba było funkcje weaponreaction wywołać...wydaje mi się że skrypty mam dobrze...
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Daj do funkcji weaponreaction print("jest"); np. tu
Cytuj
if(!Npc_IsInFightMode(attacker,FMODE_MELEE))
{return;};
var c_item weapon;
var c_item weapons;
weapon=Npc_GetReadiedWeapon(hero);
weapons = Npc_GetReadiedWeapon(self);
print("jest");
if(Hlp_IsItem(weapon,a1))
{
moc ();
Wld_PlayEffect ("spellFX_IceCube",attacker,defender,0,0,0,FALSE);
//var C_Npc her;
//her = Hlp_GetNpc(PC_Hero);    
}
else if(Hlp_IsItem(weapon,a2))
{
Wld_PlayEffect ("spellFX_FireRain",attacker,defender,0,0,0,FALSE);

};
};

BTW gdzie masz zapisany ten skrypt? I z jakim rozszerzeniem?

zalpl

zalpl

Użytkownicy
posty92
  • Użytkownicy
 

Xardas17

Xardas17

Użytkownicy
-
posty87
Propsy5
  • Użytkownicy
  • -
odpowiedzia na ten problem jest moja drobna pomylka podczas pisania tego skryptu pomylilem sie plik mialem nazwany skriptsteuerung.d i odruchowo tak samo nadalem funkcji nazwe Błąd poprawiam sie teraz funkcja musi miec nazwe SKRIPTTRIGGER bo taka deklarowalismy w tigerze

zalpl

zalpl

Użytkownicy
posty92
  • Użytkownicy
Cytat: Xardas17 link=topic=8983.msg83612#msg83612 date=Feb 20 2010, 10:27 AM\'
odpowiedzia na ten problem jest moja drobna pomylka podczas pisania tego skryptu pomylilem sie plik mialem nazwany skriptsteuerung.d i odruchowo tak samo nadalem funkcji nazwe Błąd poprawiam sie teraz funkcja musi miec nazwe SKRIPTTRIGGER bo taka deklarowalismy w tigerze


Tak z pomocą Xardasa17 udało mi się w końcu zrobić ten miecz...temat można zamknąć czy coś takiego...
 


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