Poraz kolejny odświeżam...
Tu mój skrypt, jakby co:
INSTANCE beliar (C_Item)
{
name = "Szpon Beliara";
mainflag = ITEM_KAT_NF;
flags = ITEM_SWD;
material = MAT_METAL;
value = 0;
damageTotal = 150;
damagetype = DAM_EDGE;
range = 100;
cond_atr[2] = ATR_STRENGTH;
cond_value[2] = 75;
visual = "ItMw_BeliarWeapon_1H.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] = "Szpon Beliara jest teraz bronią jednoręczną...";
};
FUNC VOID weaponreaction()
{
var c_item weapon; weapon = Npc_GetReadiedWeapon (other);
if(Hlp_IsItem(weapon,beliar))
{
Wld_PlayEffect("spellFX_IceCube",other,self,0,0,0,FALSE);
AI_StartState (self, ZS_MagicFreeze, 0, "");
};
};
func void B_Orc_AssessCombatDamage()
{
weaponreaction();
};
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();
};
};
Tak myślałem, czy by nie zrobić czegoś takiego że:
Jeśli
AI_StartState (self, ZS_MagicFreeze, 0, "");
skończy się, to weaponreaction = FALSE. No i wtedy broń by nie atakowała sama od siebie, bowiem weaponreaction by się nie wyzwalał samoistnie. Tylko to mi przychodzi narazie do głowy, ale całkowicie nie wiem jak się za to zabrać.
A i jeszcze jedno. Co oznaczają te cudzysłowia w tym:
AI_StartState (self, ZS_MagicFreeze, 0, "");