Witam. otóż męczy mnie to że wiele ludzi chce zrobić sobie taki skrypcik a nie potrafi. Cóż po wykonaniu poniższych instrukcji będziesz miał Broń na Wrzoda ;)
A Więc zaczynamy od skryptu postaci:
instance None_892_Gosc (Npc_Default)
{
// ------ NSC ------
name = "Gosc na tutka";
guild = GIL_OUT;
id = 945;
voice = 8;
flags = NPC_FLAG_IMMORTAL;
npctype = NPCTYPE_MAIN;
// ------ Attribute ------
B_SetAttributesToChapter (self, 3); //setzt Attribute und LEVEL entsprechend dem angegebenen Kapitel (1-6)
//----- Protections ----
protection [PROT_BLUNT] = IMMUNE; //Ważne!
protection [PROT_EDGE] = IMMUNE; //Ważne!
protection [PROT_POINT] = IMMUNE; //Ważne!
protection [PROT_FIRE] = IMMUNE; //Ważne!
protection [PROT_FLY] = IMMUNE; //Ważne!
protection [PROT_MAGIC] = IMMUNE; //Ważne!
// ------ Kampf-Taktik ------
fight_tactic = FAI_HUMAN_COWARD; // MASTER / STRONG / COWARD
// ------ Equippte Waffen ------ //Munition wird automatisch generiert, darf aber angegeben werden
EquipItem (self, ItMw_1h_Bau_Axe);
// ------ Inventory ------
B_CreateAmbientInv (self);
CreateInvItems (self, ItPo_Health_02, 1);
// ------ visuals ------ //Muss NACH Attributen kommen, weil in B_SetNpcVisual die Breite abh. v. STR skaliert wird
B_SetNpcVisual (self, MALE, "Hum_Head_Pony", Face_P_Normal03, BodyTex_P, ITAR_BDT_L);
Mdl_SetModelFatness (self, 0);
Mdl_ApplyOverlayMds (self, "Humans_Relaxed.mds"); // Tired / Militia / Mage / Arrogance / Relaxed
// ------ NSC-relevante Talente vergeben ------
B_GiveNpcTalents (self);
// ------ Kampf-Talente ------ //Der enthaltene B_AddFightSkill setzt Talent-Ani abhängig von TrefferChance% - alle Kampftalente werden gleichhoch gesetzt
B_SetFightSkills (self, 40); //Grenzen für Talent-Level liegen bei 30 und 60
// ------ TA anmelden ------
daily_routine = Rtn_Start_892;
};
FUNC VOID Rtn_Start_892 ()
{
TA_Stand_Drinking (05,00,21,00,"TAVERNE");
TA_Stand_Drinking (21,00,00,02,"TAVERNE");
TA_Stand_Drinking (00,02,05,00,"TAVERNE");
};
A teraz omówię co do czego:
flags = NPC_FLAG_IMMORTAL;
da nieśmiertelność naszemu "wrzodowi"
protection [PROT_BLUNT] = IMMUNE;
protection [PROT_EDGE] = IMMUNE;
protection [PROT_POINT] = IMMUNE;
protection [PROT_FIRE] = IMMUNE;
protection [PROT_FLY] = IMMUNE;
protection [PROT_MAGIC] = IMMUNE;
Mimo iż jest juz flag = 2 to najlepiej jest dać też to ;)
TA_Stand_Drinking (05,00,21,00,"TAVERNE");
TA_Stand_Drinking (21,00,00,02,"TAVERNE");
TA_Stand_Drinking (00,02,05,00,"TAVERNE");
"Wrzód" pije pod tawerną bez przerwy.
Dobra skoro mamy już skrypt postaci to zapisujemy i tworzymy broń.
wszystko jest obojętne. Ważnymi trzema linijkami są:
damageTotal = 0;
damagetype = DAM_EDGE;
cond_value = 1;
takie najlepiej ustawic. Czyli bron zadaje 0 DMG i wymaga 1 Siły (;d )
Skoro mamy broń to teraz najtrudniejsza część. Efekt, napis i ... śmierć
Wchodzimy w B_AssesDamage.d
i pod zmienną :
B_BeliarsWeaponSpecialDamage (other, self);
wklejamy to:
if (Npc_HasItems (other, ItMw_Kod_Broni) > 0)
{
var C_NPC zmienna; zmienna = Hlp_GetNpc(KodPostaci); //zmienna moze byc jaka chcesz tylko w kazdym miejscu gdzie pisze zmienna musi byc nazwa zmiennej np dales zmienna "pedał" to wszedzie musi byc pedal
Npc_GetInvItem(other, ItMw_KodBroni);
var C_ITEM OthWeap2; OthWeap2 = Npc_GetReadiedWeapon(other);
if (Hlp_GetInstanceID(self) == Hlp_GetInstanceID(zmienna))
&& (Hlp_GetInstanceID(OthWeap2) == Hlp_GetInstanceID(item))
{
Npc_ChangeAttribute (self, ATR_HITPOINTS, -1000);
return;
};
};
można pod :
Npc_ChangeAttribute (self, ATR_HITPOINTS, -1000);
dać jeszcze kilka funkcji np:
PrintScreen ("Twoj-Text", -1, 45, FONT_SCREEN, 2);
Wld_PlayEffect("Spellfx_XxX", self, self, 1, 1, 1, FALSE );
gdy już to wykonacie zapisujecie wszystko i uruchamiacie grę z parametrem skripte parsen. Przywołujecie Wrzoda, Broń na Wrzoda i dla testu jakiegos stwora i ludzia. Nie pokazałem tak jak czip , bo czip jeszcze wywoływał text po uderzeniu bronią człowieka lub stwora ;)
Liczę na propsy