Thalie
http://thalie.pilsfree.cz/forum/

Scripts 2hard4me
http://thalie.pilsfree.cz/forum/viewtopic.php?f=1&t=8586
Page 1 of 1

Author:  Zeerit [ 14:27 27. Nov 2015 ]
Post subject:  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 ?

Author:  kokosak [ 14:31 27. Nov 2015 ]
Post subject:  Re: Scripts 2hard4me

Bys měl asik definovat proměnné spolu s jejich typem? ;)

Author:  pavad [ 14:35 27. Nov 2015 ]
Post subject:  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.

Author:  Zeerit [ 15:03 27. Nov 2015 ]
Post subject:  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.


pavad wrote:
Lec pravdu ma kokos - nekde mas promennou bez definovaneho typu.

kokosak wrote:
Bys měl asik definovat proměnné spolu s jejich typem? ;)


Mhm,neke, jak ? :D

Author:  Decka [ 18:16 27. Nov 2015 ]
Post subject:  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. :wink:

Author:  Zeerit [ 18:32 27. Nov 2015 ]
Post subject:  Re: Scripts 2hard4me

A jakou formu jsi tam zkusil vytvořit ?

Author:  Decka [ 18:41 27. Nov 2015 ]
Post subject:  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.

Author:  Zeerit [ 20:08 27. Nov 2015 ]
Post subject:  Re: Scripts 2hard4me

Jasně ty normální fungujou, jen se mi nedáří tam právě přidat nic novýho.

Author:  Decka [ 20:45 27. Nov 2015 ]
Post subject:  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.

Author:  pavad [ 21:14 27. Nov 2015 ]
Post subject:  Re: Scripts 2hard4me

Zeerit wrote:
Jasně ty normální fungujou, jen se mi nedáří tam právě přidat nic novýho.
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).

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...

Author:  Zeerit [ 22:51 27. Nov 2015 ]
Post subject:  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 :D Kdyžtak se ozvu.

Author:  Zeerit [ 10:18 28. Nov 2015 ]
Post subject:  Re: Scripts 2hard4me

Fajn, to bylo jednoduchý, funguje :D

Page 1 of 1 All times are UTC + 1 hour [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/