[G2 NK]Unknown identifier ELSE (line 94) 7647 24

O temacie

Autor Graveir

Zaczęty 7.10.2012 roku

Wyświetleń 7647

Odpowiedzi 24

Graveir

Graveir

Użytkownicy
Avatar Twilight Sparkle / Pożeracz serc
posty1275
Propsy235
ProfesjaGracz
  • Użytkownicy
  • Avatar Twilight Sparkle / Pożeracz serc
 
Mój obecny sprzęt PC:
Intel core i5-4590
8 gb ram
Geforce GTX 1050Ti

Graveir

Graveir

Użytkownicy
Avatar Twilight Sparkle / Pożeracz serc
posty1275
Propsy235
ProfesjaGracz
  • Użytkownicy
  • Avatar Twilight Sparkle / Pożeracz serc
Dobra,więc napiszę jeszcze raz co zrobiłem.W pliku VisualFxInst.d dodałem :
Spoiler
INSTANCE spellFX_MassDestroy(CFx_Base_Proto)
{

      visname_S = "MFX_MassDeath_INIT";
      emtrjmode_s = "FIXED";
emTrjOriginNode = "ZS_RIGHTHAND";
      emtrjloopmode_s = "NONE";
emFXCreatedOwnTrj = 0;

};

INSTANCE spellFX_MassDestroy_KEY_INIT(C_ParticleFXEmitKey)
{
visname_S = "MFX_MassDeath_INIT";
};

INSTANCE spellFX_MassDestroy_KEY_INVEST_1 (C_ParticleFXEmitKey)
{
visname_S = "MFX_MassDeath_RIGHTHAND";
emCreateFXID = "spellFX_MassDeath_LEFTHAND";
};


INSTANCE spellFX_MassDestroy_KEY_CAST(C_ParticleFXEmitKey)
{
emCreateFXID = "spellFX_MassDeath_EXPLOSION";
pfx_ppsIsLoopingChg = 1;
};


instance spellFX_MassDestroy_EXPLOSION (CFx_Base_Proto)
{
visname_S = "MFX_MassDeath_EXPLOSION";

emtrjmode_s = "FIXED";
emTrjOriginNode = "Bip01 L Hand";
emFXCreate_S =  "spellFX_MassDeath_GROUND";

};


INSTANCE spellFX_MassDestroy_GROUND (CFx_Base_Proto)
{
visname_S = "MFX_MassDeath_CAST";
emTrjOriginNode = "BIP01 R Foot";
emActionCollDyn_S = "CREATEONCE";
      emFXCollDyn_S = "spellFX_MassDeath_COLLIDEDYNFX";
      emFXCollDynAlign_S = "COLLISIONNORMAL";
      emCheckCollision = 1;
      LightPresetName = "REDAMBIENCE";
      sfxid = "MFX_MassDeath_Cast";
sfxisambient = 1;
};

instance spellFX_MassDestroy_LEFTHAND (CFx_Base_Proto)
{
visname_S = "MFX_MassDeath_LEFTHAND";
visAlpha = 1;

emtrjmode_s = "FIXED";
emTrjOriginNode = "Bip01 L Hand";

emFXCreate_S = "FX_EARTHQUAKE";

};

INSTANCE spellFX_MassDestroy_SUB (CFx_Base_Proto) // vorrübergehend, bis er hardcodiert nicht mehr gesucht wird
{
      visname_S = "";
      emtrjmode_s = "FIXED";
emTrjOriginNode = "BIP01 HEAD";
};


INSTANCE spellFX_MassDestroy_COLLIDEDYNFX (CFx_Base_Proto)
{
visname_S = "MFX_MassDeath_TARGET";
emTrjOriginNode = "BIP01";
emFXCreatedOwnTrj = 1;
emtrjmode_s = "FIXED";
sfxid = "MFX_MassDeath_Target";
};
Skrypt czaru przerobiłem lekko:
Spoiler

const int SPL_Cost_MassDestroy = 40;
const int SPL_Damage_MassDestroy = 175;

instance Spell_MassDestroy(C_Spell_Proto)
{
time_per_mana = 0;
damage_per_level = SPL_Damage_MassDestroy;
targetCollectAlgo = TARGET_COLLECT_NONE;
};


func int Spell_Logic_Massdestroy(var int manaInvested)
{
if(Npc_GetActiveSpellIsScroll(self) && (self.attribute[ATR_MANA] >= SPL_Cost_Scroll))
{
return SPL_SENDCAST;
}
else if(self.attribute[ATR_MANA] >= 40)
{
return SPL_SENDCAST;
}
else
{
return SPL_SENDSTOP;
};
};

func void Spell_Cast_Massdestroy()
{
if(Npc_GetActiveSpellIsScroll(self))
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_Scroll;
}
else
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - 40;
};
self.aivar[AIV_SelectSpell] += 1;
};
Dodałem wpis do Spell_ProcessMana
if (activeSpell == SPL_SUMMON3WARG )
{
return spell_logic_summon3warg (manaInvested);
};
Skrypt runy
Spoiler
instance ItRu_MassDestroy(C_Item)
{
name = "Masowe zniszczenie";
mainflag = ITEM_KAT_RUNE;
flags = ITEM_MISSION;
value = 1500;
visual = "ItRu_MassDeath.3ds";
material = MAT_STONE;
spell = SPL_MassDestroy;
mag_circle = 2;
wear = WEAR_EFFECT;
effect = "SPELLFX_WEAKGLIMMER_RED";
description = "Masowe zniszczenie";
text[0] = NAME_Mag_Circle;
count[0] = mag_circle;
text[1] = NAME_Manakosten;
count[1] = SPL_Cost_MassDestroy;
text[2] = NAME_Dam_Magic;
count[2] = SPL_Damage_MassDestroy;
text[5] = NAME_Value;
count[5] = value;
};
W pliku text pozmieniałem 65 linijki z _reserved_65
TXT SPELLS :
"Masowe zniszczenie",
const string NAME_SPL_MassDestroy = "Masowe zniszczenie";
W constants dopisałem:
const int SPL_MassDestroy = 65;
const string spellFxInstanceNames :
"MassDestroy",
const string spellFxAniLetters :
"MSD",
No i to wszystko(o ile nic nie pominąłem)spowodowało,że:
1)Jest animacja rzucania czaru poprawnie(wcześniej animacja też była jednak miała małą wadę)
2)Teraz zżera poprawną ilość many(40)
3*)Nie zadaje obrażeń.
W jakim pliku trzeba obrażenia "zadeklarować" do tego czaru?Czy po prostu gdzieś się machnąłem/coś pominąłem?
 
Mój obecny sprzęt PC:
Intel core i5-4590
8 gb ram
Geforce GTX 1050Ti

Sawik

Sawik

Moderator działu
Rebel
posty4772
Propsy3197
ProfesjaNierób
  • Moderator działu
  • Rebel

Dodałem wpis do Spell_ProcessMana
if (activeSpell == SPL_SUMMON3WARG )
{
return spell_logic_summon3warg (manaInvested);
};
Dobra, zacznij od powiedzenia mi czemu jest to SPL_SUMMON3WARG, a nie Twój czar SPL_MassDestroy.

Tak z innej beczki, próbowałeś zamiast robić nowego czaru zmienić istniejący? W sensie zrobić samą zmianę ilości potrzebnej many, bo jak dobrze rozumiem to jest Twoim zamiarem i w swoim modzie nie użyjesz oryginalnego czaru.
 
Życzę wam seksu analnego po stronie biernej.
Dropbox +500 mb na start
LowPoly
Wykonanie modelu niskopoligonowego to sztuka kompromisu. Nie jest to jedynie uproszczenie modelu wysokopoligonowego, ale głęboka modyfikacja oraz podejmowanie decyzji często zmieniających wygląd pierwotny obiektu, tak by przy najmniejszej ilości trójkątów uzyskać jak najwierniej odwzorowany kształt oryginału. Nie można też zapomnieć o tym iż musi nadal wyglądać przekonywająco i tak balansować by uzyskać efekt optymalny.

Podstawowym założeniem jest, że model nie powinien mieć zbędnych, niewidocznych dla gracza detali włączonych w geometrie. Większość obiektów jakie znajdują się w grze powinna prezentować się najlepiej z odległości około 3-5 metrów. Wszelkie detale, które zanikają, wydają się płaskie lub zlewają się z bryłą modelu należy uznać za zbędne i pozostawić je na normal mapie.

Fakt, iż gracz będzie w stanie podejść bliżej do obiektu i zobaczyć go z mniejszej niż 3m odległości nie powinno stanowić większego problemu, gdyż większą rolę odgrywają wtedy tekstury oraz dodatkowy detal zależny od materiału obiektu. To właśnie kompromis między wydajnością, a szczegółowością otoczenia.

Detal, którego nie widać z 3-5 metrów nie powinnien istnieć w geometrii modelu.
Krawędzie znajdujące się blisko siebie, które zlewają się z większej odległości należy uprościć do wspólnej płaszczyzny

Graveir

Graveir

Użytkownicy
Avatar Twilight Sparkle / Pożeracz serc
posty1275
Propsy235
ProfesjaGracz
  • Użytkownicy
  • Avatar Twilight Sparkle / Pożeracz serc
Źle wkleiłem ten Spell_ProcessMana.Ale to zbytnio znaczenia nie ma.A co do przerobienia Śmiertelnej Fali - to nie wiem,czy przypadkowo ten czar nie jest potrzebny(lub czy jakaś postać go nie ma).Spróbuję przerobić,ale osobiście wolałbym nie ruszać oryginalnych czarów.
Edit: Po przerobieniu oryginału zadaje obrażenia i zjada 40 many.Ale jak już wspomniałem - wolałbym nie ruszać oryginalnych skryptów.Chyba,że to będzie jedyne wyjście,by mieć przerobione czary.
 
Mój obecny sprzęt PC:
Intel core i5-4590
8 gb ram
Geforce GTX 1050Ti

Graveir

Graveir

Użytkownicy
Avatar Twilight Sparkle / Pożeracz serc
posty1275
Propsy235
ProfesjaGracz
  • Użytkownicy
  • Avatar Twilight Sparkle / Pożeracz serc
Jak przerobić ten dialog,żeby był wymagany wcześniejszy krąg,zanim będzie można wybrać/pojawi się opcja nauki następnego kręgu?Bo w tym moim można od razu nauczyć się 6 kręgu,co mi zbytnio nie odpowiada.
Spoiler
instance DIA_Kirion_Teach_Kregi(C_Info)
{
   npc = NONE_122_Kirion;
   nr = 3;
   condition = DIA_Kirion_Teach_Kregi_Condition;
   information = DIA_Kirion_Teach_Kregi_Info;
   permanent = TRUE;
   description = "Magiczne kręgi";
};


func int DIA_Kirion_Teach_Kregi_Condition()
{
   if(Npc_KnowsInfo(other,DIA_Kirion_Who))
   {
      return TRUE;
   };
};

func void DIA_Kirion_Teach_Kregi_Info()
{
   Info_ClearChoices(dia_Kirion_Teach_Kregi);
   Info_AddChoice(dia_Kirion_Teach_Kregi,Dialog_Back,Kirion_Teach_Kregi_back);
   Info_AddChoice(dia_Kirion_Teach_Kregi,"Szósty krąg",Kirion_Teach_Kregi_6);
   Info_AddChoice(dia_Kirion_Teach_Kregi,"Piąty krąg",Kirion_Teach_Kregi_5);
   Info_AddChoice(dia_Kirion_Teach_Kregi,"Czwarty krąg",Kirion_Teach_Kregi_4);
   Info_AddChoice(dia_Kirion_Teach_Kregi,"Trzeci krąg",Kirion_Teach_Kregi_3);
   Info_AddChoice(dia_Kirion_Teach_Kregi,"Drugi krąg",Kirion_Teach_Kregi_2);
   Info_AddChoice(dia_Kirion_Teach_Kregi,"Pierwszy krąg",Kirion_Teach_Kregi_1);
};

func void Kirion_Teach_Kregi_back()
{
   Info_ClearChoices(dia_Kirion_Teach_Kregi);
};

func void Kirion_Teach_Kregi_1()
{
   Info_ClearChoices(dia_Kirion_Teach_Kregi);
   B_TeachMagicCircle(self,other,1);
};

func void Kirion_Teach_Kregi_2()
{
   Info_ClearChoices(dia_Kirion_Teach_Kregi);
   B_TeachMagicCircle(self,other,2);
};

func void Kirion_Teach_Kregi_3()
{
   Info_ClearChoices(dia_Kirion_Teach_Kregi);
   B_TeachMagicCircle(self,other,3);
};

func void Kirion_Teach_Kregi_4()
{
   Info_ClearChoices(dia_Kirion_Teach_Kregi);
   B_TeachMagicCircle(self,other,4);
};

func void Kirion_Teach_Kregi_5()
{
   Info_ClearChoices(dia_Kirion_Teach_Kregi);
   B_TeachMagicCircle(self,other,5);
};

func void Kirion_Teach_Kregi_6()
{
   Info_ClearChoices(dia_Kirion_Teach_Kregi);
   B_TeachMagicCircle(self,other,6);
};
 
Mój obecny sprzęt PC:
Intel core i5-4590
8 gb ram
Geforce GTX 1050Ti


0 użytkowników i 1 Gość przegląda ten wątek.
0 użytkowników
Do góry