1
Skrypty / unikalny miecz
« dnia: 2009-12-31, 12:57 »Sam lód to osobny efekt, poszukaj go na liście istniejących.
ok poszukam ; ]
btw do czego jest funkcja
PrintDebug lub PrintDebugNPC ?
Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.
Sam lód to osobny efekt, poszukaj go na liście istniejących.
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 weaponreaction(var c_npc Hero,var c_npc Self)
{
if(!Npc_IsInFightMode(hero,FMODE_MELEE))
{
return;
};
var c_item weapon;
var c_item eqweapon;
weapon=Npc_GetReadiedWeapon(hero);
eqweapon=Npc_GetEquippedMeleeWeapon(hero);
if(Hlp_IsItem(weapon,asdtest))
{
Wld_PlayEffect("SPELLFX_ICEWAVE",self,self,0,50,DAM_MAGIC,FALSE);
PrintDebugNpc( PD_MAGIC, "B_AssessMagic ...IceCube oder IceWave" );
Npc_SendPassivePerc(self, PERC_ASSESSFIGHTSOUND, self, other);
if ( !( (self.guild == GIL_SLF) ||
(self.guild == GIL_DEMON) ||
(self.guild == GIL_GOLEM) ||
(self.guild == GIL_SWAMPSHARK) ||
(self.guild == GIL_TROLL)) ) &&
( ! (C_BodystateContains(self,BS_SWIM)) || (C_BodystateContains(self,BS_DIVE)) )
{
Npc_ClearAIQueue(self);
AI_StartState (self, ZS_MagicFreeze, 0, "");
};
}
else if (Hlp_IsItem(eqweapon,asdtest))
{
Wld_SendTrigger("weaponreaction");
};
};
///////////////////////////////////////////////////////////////////////////////
func void Sbd_is_damaged()
{
if (self==other&&hero==victim)
{
if(Npc_IsPlayer(victim)&&CmpNpc(self,other))
{
weaponreaction(self,hero);
};
};
};
//-----------------------------------------------------------
//MIECZ
//-----------------------------------------------------------
INSTANCE asdtest (C_Item)
{
name = "asdtest miecza";
mainflag = ITEM_KAT_NF;
flags = ITEM_SWD;
material = MAT_METAL;
value = 2500;
damageTotal = 110;
damagetype = DAM_EDGE;
range = 130;
cond_atr[2] = ATR_STRENGTH;
cond_value[2] = 5;
visual = "ItMw_1H_Sword_Bastard_04.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;
};
Banalny błąd - brak ";" na końcu linijki![]()
func void ZS_Orc_Attack ()
{
PrintDebugNpc (PD_ORC_FRAME, "Orc_Attack!" );
Npc_SetTarget (self, other );
Npc_PercEnable (self, PERC_ASSESSDAMAGE, B_Orc_AssessCombatDamage ) // ta linijke
Npc_PercEnable (self, PERC_ASSESSMAGIC, B_AssessMagic);
Npc_PercEnable (self, PERC_ASSESSMURDER, B_Orc_AssessMurder );
Npc_PercEnable (self, PERC_ASSESSDEFEAT, B_Orc_AssessDefeat );
INSTANCE for_monsters (C_Item)
{
name = "test miecza";
mainflag = ITEM_KAT_NF;
flags = ITEM_2HD_AXE;
material = MAT_WOOD;
value = 4060;
damageTotal = 98;
damagetype = DAM_EDGE;
range = 150;
cond_atr[2] = ATR_STRENGTH;
cond_value[2] = 5;
visual = "ItMw_2H_Axe_Heavy_03.3DS";
on_equip = Equip_for_monsters;
on_unequip = UnEquip_for_monsters;
description = name;
TEXT[1] = "Ten miecz skuteczny jest potwora.";
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 Equip_for_monsters()
{
Npc_ChangeAttribute(instance_potwora,ATR_HITPOINTS_MAX,-1500);
};
FUNC VOID UnEquip_for_monsters()
{
Npc_ChangeAttribute(instance_potwora,ATR_HITPOINTS_MAX,+1500);
};
INSTANCE asdtest (C_Item)
{
name = "asd miecz test";
mainflag = ITEM_KAT_NF;
flags = ITEM_2HD_SWD;
material = MAT_METAL;
value = 4500;
damageTotal = 150;
damagetype = DAM_EDGE;
range = 140;
cond_atr[2] = ATR_STRENGTH;
cond_value[2] = 5;
visual = "ItMw_2H_Sword_Heavy_03.3DS";
description = name;
TEXT[1] = "test micza";
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 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,asdtest))
{
Wld_PlayEffect("spellFX_IceCube",attacker,defender,0,0,0,FALSE);
PrintDebugNpc( PD_MAGIC, "B_AssessMagic ...IceCube oder IceWave" );
Npc_SendPassivePerc(defender, PERC_ASSESSFIGHTSOUND, defender, other);
if ( !( (defender.guild == GIL_SLF) ||
(defender.guild == GIL_DEMON) ||
(defender.guild == GIL_GOLEM) ||
(defender.guild == GIL_SWAMPSHARK) ||
(defender.guild == GIL_TROLL) ) ) &&
( ! (C_BodystateContains(defender,BS_SWIM)) || (C_BodystateContains(defender,BS_DIVE)) )
{
Npc_ClearAIQueue(defender);
AI_StartState (defender, ZS_MagicFreeze, 0, "");
};
}
else
{
return;
};
};
//////////////////////////////////////////////////////////////////////////
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()
{
if(Npc_IsPlayer(victim)&&CmpNpc(self,other))
{weaponreaction(self,hero);};
};
//////////////////////////////////////////////////////////////////////////
func void B_Orc_AssessCombatDamage()
{
weaponreaction(other,self);
};
ShadowR, chodzi ci o te niebieskie trisy?
Próbowałem jak się da, ale jak dekompiluje mds walki mieczem jednoręcznym, to wyskakuje mi takie coś:
Co teraz??
NO MATCHING FILES FOUND.
Musisz ściągnąć plugin, który importuje pliki 3ds Gothica do max. Plugin jest na WoGu. Teraz ja mam małe pytanko. Co zrobić, bym po edycji świata nie musiał robić wszystkich vobów i waypointów od nowa? Jest chyba opcja zapisania drzewka vobów, ale nie jestem pewien jak ona działa. I czytałem coś, o tym, że otwiera się plik 3ds, a potem zen ze światem i świat się podmieni, ale wolę się spytać konkretnie o ten problem.
ejemy, ty ogadaci zadag chip, achoi.
Gdziekolwiek, najlepiej pod samym mieczem.
Aha, taka mała rada: najpierw użyj mojego skryptu w niezmienionej formie, dopiero jak zadziała, weź się za "obsługę" orków, to będzie już bardziej skomplikowana sprawa.
Obejrzyj sobie jak to jest zrobione że ostatniego szamana w g1 można zabić tylko Urizielem. Możesz albo skorzystać ze specjalnych typów obrażeń, albo dać danym NPC flags=2, i napisać skrypt który w razie nakładania odpowiedniego miecza czyni ich śmiertelnymi. I cofa to przy ściąganiu (funkcją on_equip i on_unequip)