Scripts 2hard4me

Neaktuální příspěvky jsou shromažďovány zde.

Moderators: DM, WB

Locked
User avatar
Zeerit
Urozený
Posts: 1582
Joined: 21:02 12. Dec 2013

Scripts 2hard4me

Post by Zeerit »

Ř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 ?
User avatar
kokosak
Ďábel
Posts: 6104
Joined: 11:18 05. Feb 2008

Re: Scripts 2hard4me

Post by kokosak »

Bys měl asik definovat proměnné spolu s jejich typem? ;)
PUF!
pavad
Bůh
Posts: 4064
Joined: 23:30 05. Dec 2010

Re: Scripts 2hard4me

Post by pavad »

Dej sem kod (predpokladam ze nebude prilis slozity) - jinak jde o hadani.

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.
User avatar
Zeerit
Urozený
Posts: 1582
Joined: 21:02 12. Dec 2013

Re: Scripts 2hard4me

Post by Zeerit »

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
Decka
Šlechtic
Posts: 311
Joined: 22:35 18. Sep 2010

Re: Scripts 2hard4me

Post by Decka »

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:
User avatar
Zeerit
Urozený
Posts: 1582
Joined: 21:02 12. Dec 2013

Re: Scripts 2hard4me

Post by Zeerit »

A jakou formu jsi tam zkusil vytvořit ?
Decka
Šlechtic
Posts: 311
Joined: 22:35 18. Sep 2010

Re: Scripts 2hard4me

Post by Decka »

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.
User avatar
Zeerit
Urozený
Posts: 1582
Joined: 21:02 12. Dec 2013

Re: Scripts 2hard4me

Post by Zeerit »

Jasně ty normální fungujou, jen se mi nedáří tam právě přidat nic novýho.
Decka
Šlechtic
Posts: 311
Joined: 22:35 18. Sep 2010

Re: Scripts 2hard4me

Post by Decka »

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.
pavad
Bůh
Posts: 4064
Joined: 23:30 05. Dec 2010

Re: Scripts 2hard4me

Post by pavad »

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...
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.
User avatar
Zeerit
Urozený
Posts: 1582
Joined: 21:02 12. Dec 2013

Re: Scripts 2hard4me

Post by Zeerit »

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.
User avatar
Zeerit
Urozený
Posts: 1582
Joined: 21:02 12. Dec 2013

Re: Scripts 2hard4me

Post by Zeerit »

Fajn, to bylo jednoduchý, funguje :D
Locked