Scripts 2hard4me
Scripts 2hard4me
Řekl jsem si, že si trochu zablbnu a i když nemám žádné předchozí zkušenosti, zkusím vytvořit nový kouzlo.
Pokouším se vytvořit obdobu kouzla polymorph self/shapechange. Pomocí různých uprav, kopií existujících věci, pokusu a omylu, jsem se dostal poměrně daleko, ale zasekl jsem se při úpravě samotného scriptu. Úprava spells.2da a polymorph.2da byla celkem easy, šoupl jsem to do haku a nahrál ho do modulu, ale když ve scriptu přepíšu původní formu na moji nově vytvořenou napíše mi to u ní:
ERROR: VARIABLE DEFINED WITHOUT TYPE
Nějaký nápad co s tím ?
Pokouším se vytvořit obdobu kouzla polymorph self/shapechange. Pomocí různých uprav, kopií existujících věci, pokusu a omylu, jsem se dostal poměrně daleko, ale zasekl jsem se při úpravě samotného scriptu. Úprava spells.2da a polymorph.2da byla celkem easy, šoupl jsem to do haku a nahrál ho do modulu, ale když ve scriptu přepíšu původní formu na moji nově vytvořenou napíše mi to u ní:
ERROR: VARIABLE DEFINED WITHOUT TYPE
Nějaký nápad co s tím ?
Re: Scripts 2hard4me
Dej sem kod (predpokladam ze nebude prilis slozity) - jinak jde o hadani.
Lec pravdu ma kokos - nekde mas promennou bez definovaneho typu.
Lec pravdu ma kokos - nekde mas promennou bez definovaneho typu.
Diagnostikovany.
Každý moudrý má nač pomysliti,
kdyby ho pobídlo hovno v zápas jíti,
porazíš-li je, co z toho budeš míti,
a pakli ono tebe porazí, hned do lázně musíš jíti.
. . . . . . . . . Holan, V.
Každý moudrý má nač pomysliti,
kdyby ho pobídlo hovno v zápas jíti,
porazíš-li je, co z toho budeš míti,
a pakli ono tebe porazí, hned do lázně musíš jíti.
. . . . . . . . . Holan, V.
Re: Scripts 2hard4me
Kod jsem vzal z Shapechange (NW_S0_ShapeChg)
#include "x2_inc_spellhook"
void main()
{
/*
Spellcast Hook Code
Added 2003-06-23 by GeorgZ
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
int nSpell = GetSpellId();
object oTarget = GetSpellTargetObject();
effect eVis = EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_3);
effect ePoly;
int nPoly;
int nMetaMagic = GetMetaMagicFeat();
int nDuration = GetCasterLevel(OBJECT_SELF);
//Enter Metamagic conditions
if (nMetaMagic == METAMAGIC_EXTEND)
{
nDuration = nDuration *2; //Duration is +100%
}
//Determine Polymorph subradial type
if(nSpell == 415)
{
nPoly = POLYMORPH_TYPE_RED_DRAGON;
}
else if (nSpell == 416)
{
nPoly = POLYMORPH_TYPE_FIRE_GIANT;
}
else if (nSpell == 417)
{
nPoly = POLYMORPH_TYPE_BALOR;
}
ePoly = EffectPolymorph(nPoly);
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_SHAPECHANGE, FALSE));
//Apply the VFX impact and effects
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis, GetLocation(oTarget));
DelayCommand(0.4, AssignCommand(oTarget, ClearAllActions())); // prevents an exploit
DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ePoly, oTarget, TurnsToSeconds(nDuration)));
}
Když ale změním ono POLYMORPH_TYPE_RED_DRAGON na něco novýho tak mi to hodí chybu.

#include "x2_inc_spellhook"
void main()
{
/*
Spellcast Hook Code
Added 2003-06-23 by GeorgZ
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
int nSpell = GetSpellId();
object oTarget = GetSpellTargetObject();
effect eVis = EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_3);
effect ePoly;
int nPoly;
int nMetaMagic = GetMetaMagicFeat();
int nDuration = GetCasterLevel(OBJECT_SELF);
//Enter Metamagic conditions
if (nMetaMagic == METAMAGIC_EXTEND)
{
nDuration = nDuration *2; //Duration is +100%
}
//Determine Polymorph subradial type
if(nSpell == 415)
{
nPoly = POLYMORPH_TYPE_RED_DRAGON;
}
else if (nSpell == 416)
{
nPoly = POLYMORPH_TYPE_FIRE_GIANT;
}
else if (nSpell == 417)
{
nPoly = POLYMORPH_TYPE_BALOR;
}
ePoly = EffectPolymorph(nPoly);
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_SHAPECHANGE, FALSE));
//Apply the VFX impact and effects
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis, GetLocation(oTarget));
DelayCommand(0.4, AssignCommand(oTarget, ClearAllActions())); // prevents an exploit
DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ePoly, oTarget, TurnsToSeconds(nDuration)));
}
Když ale změním ono POLYMORPH_TYPE_RED_DRAGON na něco novýho tak mi to hodí chybu.
pavad wrote:Lec pravdu ma kokos - nekde mas promennou bez definovaneho typu.
Mhm,neke, jak ?kokosak wrote:Bys měl asik definovat proměnné spolu s jejich typem?
Re: Scripts 2hard4me
Kupodivu mi ten tvůj script po překopírování chyby nehlásí a to ani po výměně té konstanty za jinou. 
Re: Scripts 2hard4me
A jakou formu jsi tam zkusil vytvořit ?
Re: Scripts 2hard4me
Ani nevim, prostě jsem tam hodil nějakou z tech konstant, které jsou ve hře pro polymorph definovány. Ono ti to asi padá jen když to vyměníš za nějakou tvoji proměnu, kterou si definoval v nějakém tom 2da že, ale ty standartní by ti měly fungovat.
Re: Scripts 2hard4me
Jasně ty normální fungujou, jen se mi nedáří tam právě přidat nic novýho.
Re: Scripts 2hard4me
No tak místo toho názvu ( POLYMORPH_ZEERIT..) co tam zadáváš z toho 2da proměn tam zadej hodnotu řádku ( nebo ID nebo co to tam je - prostě integer). Jde o to, že tu konstantu jsi opravdu nedefinoval a proto ti to píše, že jsi ji nedefinoval.
Re: Scripts 2hard4me
Zeerite, veskere ty CAPS psane stringy (jsou to ve skutecnosti - a presneji receno - INT konstanty) "POLYMORF_TYPE_RED_DRAGON" a podobne jsou definovany v nejakych jinych skriptech (dohledat je muzes pres nazvy inkludovanych fajlu: #include; ovsem pocitej ze z jednoho odkazovaneho souboru budes nasledne odkazovan na dalsi a az pak mozna najdes co hledas).Zeerit wrote:Jasně ty normální fungujou, jen se mi nedáří tam právě přidat nic novýho.
Pokud si ale definujes nejaky svuj retezec jako konstantu (CONST pokud si jeste vybavuji nwn skripty), tak pokud soubor s nim neni inkludovany pres #nazev_souboru, tak o nem skript kouzla nic nevi.
Fakticky zkus misto toho "POLYMORF_TYPE_NEVIM_CO" primo napsat INT hodnotu (coz je vlastne ten radek co zminoval vyse Decka).
Edit: Nebo muzes v souboru skriptu polymorf.nss (nebo jak se to jmenuje) definovat onu konstantu "POLYMORF_ZEERIT" pozadovanou hodnotou...
Diagnostikovany.
Každý moudrý má nač pomysliti,
kdyby ho pobídlo hovno v zápas jíti,
porazíš-li je, co z toho budeš míti,
a pakli ono tebe porazí, hned do lázně musíš jíti.
. . . . . . . . . Holan, V.
Každý moudrý má nač pomysliti,
kdyby ho pobídlo hovno v zápas jíti,
porazíš-li je, co z toho budeš míti,
a pakli ono tebe porazí, hned do lázně musíš jíti.
. . . . . . . . . Holan, V.
Re: Scripts 2hard4me
Cool, dík oběma za info, nějak to přelouskám a pokusím se z toho něco vyčíst
Kdyžtak se ozvu.
Re: Scripts 2hard4me
Fajn, to bylo jednoduchý, funguje 