Tutorial wiele strzałna podstawie tego tutoriala stworzyłem skrypry, ale do GII(!). Po pierwsze, plik
B_SelectWeapon.d
Ma inną zawartość od pokazanego. stworzyłem łuk ja w tutorialu:
Var int BowChoose;
INSTANCE ItRw_bow_01 (C_Item)
{
name = "Łuk testowy";
mainflag = ITEM_KAT_FF;
flags = ITEM_BOW;
material = MAT_WOOD;
value = 1800;
damageTotal = 90;
damagetype = DAM_POINT;
munition = ItRw_FireArrow;
cond_atr[2] = ATR_DEXTERITY;
visual = "ItRw_Bow_L_02.mms";
description = "Łuk przystosowany do wybuchoych strzał";
TEXT[2] = NAME_Damage; COUNT[2] = 90;
TEXT[3] = NAME_Dex_needed; COUNT[3] = 10;
TEXT[5] = NAME_Value; COUNT[5] = 1800;
on_equip = equip_bestarrow_test;
on_unequip = unequip_dummy;
};
func void equip_bestarrow_test()
{
BowChoose = TRUE;
AI_ProcessInfos (hero);
};
func void unequip_dummy ()
{
BowChoose = FALSE;
AI_StopProcessInfos (hero);
};
monolog:
instance Bow_Hero_Choose (C_INFO)
{
npc = PC_Hero;
nr = 1;
condition = Bow_Hero_Choose_Condition;
information = Bow_Hero_Choose_Info;
permanent = 1;
important = 1;
};
FUNC int Bow_Hero_Choose_Condition()
{
if ( BowChoose == TRUE)
{
return 1;
};
};
FUNC VOID Bow_Hero_Choose_Info()
{
Info_ClearChoices (Bow_Hero_Choose);
Info_AddChoice (Bow_Hero_Choose, DIALOG_BACK, powrot);
if Npc_HasItems(hero, ItRw_FireArrow)
{
Info_AddChoice (Bow_Hero_Choose, "Ogniste Strzały", ogien );
};
if Npc_HasItems(hero, ItRw_Arrow)
{
Info_AddChoice (Bow_Hero_Choose, "Normalne Strzaly", pocisk );
};
};
FUNC void pocisk ()
{
var C_ITEM equippedbow;
equippedbow = Npc_GetEquippedRangedWeapon(hero);
equippedbow.munition = ItRw_Arrow;
BowChoose = FALSE;
none = TRUE;
fire = FALSE;
AI_StopProcessInfos (hero);
};
FUNC void ogien ()
{
var C_ITEM equippedbow;
equippedbow = Npc_GetEquippedRangedWeapon(hero);
equippedbow.munition = ItRw_FireArrow;
BowChoose = FALSE;
fire = TRUE;
none = False;
AI_StopProcessInfos (hero);
};
FUNC void powrot ()
{
BowChoose = FALSE;
AI_StopProcessInfos (hero);
};
i jeszcze funkcję dodatkowych obrażeń
func void CheckFireArrowDamage (var C_Npc oth, var C_Npc slf)
{
equippedbow = Npc_GetEquippedRangedWeapon(hero);
damagehit = Hlp_Random (3);
if ( fire == TRUE )
{
if (Npc_HasReadiedRangedWeapon(hero)) && (Npc_IsPlayer(oth))
{
if (damagehit == 1)
{
slf.attribute[ATR_HITPOINTS] -= 50;
PrintScreen("Npc zostaje trafiony ognistą strzała - 50 PŻ", -1,30,"font_old_20_white.tga",3);
Wld_PlayEffect("spellFX_Firebolt",slf,slf,0,0,0,FALSE);
}
else if (damagehit == 2)
{
slf.attribute[ATR_HITPOINTS] -= 20;
PrintScreen("Npc zostaje trafiony ognistą strzała - 20 PŻ", -1,30,"font_old_20_white.tga",3);
Wld_PlayEffect("spellFX_BELIARSRAGE",slf,slf,0,0,0,FALSE);
}
else if (damagehit == 0)
{
PrintScreen("Npc nie otrzymał trafienia krytycznego - 0 PŻ", -1,30,"font_old_20_white.tga",3);
};
};
};
// npc otrzymuje dodatkowe obrażenia, spowodowane atakiem ognistej strzały
// self.attributeATR_HITPOINTS] -= 50; // damit er auch selbst was abkriegt die PERC wirkt nicht auf ihn selbst]
//PrintScreen"Npc zostaje trafiony ognistą strzała", -1,30,"font_old_20_white.tga",3);
// Efekt ognia burza ognia)
// Wld_PlayEffect"spellFX_Firestorm",Hero,self,0,0,0,FALSE);
};
_Work\data\Scripts\Content\Story\Story_Globals
Var int fire;
Var int none;
var int damagehit;
var C_ITEM equippedbow;
_Work\data\Scripts\Content\AI\Human\B_Human\B_AssessDamage
CheckFireArrowDamage (other, self);
EDIT: Gites moreles, wszystko działa. Po prostu sprawdzałem skrypt na potworzach <faceplan>. A skoro to działa, to poprosiłbym o przeniesienie do dziau tutoriale