Pokaż wiadomości

Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.


Pokaż wątki - Vesemir

Strony: [1]
1
Witam
Próbowałem stworzyć czar przemiany w chrząszcza w formie zwoju. O dziwo w G2NK go nie ma.
Jednak mimo starań nie działa. Bezimienny bierze zwój i rozpoczyna animację przemiany ale nie zmienia się w chrząszcza tylko klęczy na kolanie po czym wstaje.
Byłbym wdzięczy za pomoc we wskazaniu co zrobiłem źle, co przeoczyłem  :)
I jak mogę to naprawić.


W pliku Constants.d  wykorzystałem SPL_Reserved_90
Spoiler
const int SPELL_GOOD = 0;
const int SPELL_NEUTRAL = 1;
const int SPELL_BAD = 2;
const int SPL_DONTINVEST = 0;
const int SPL_RECEIVEINVEST = 1;
const int SPL_SENDCAST = 2;
const int SPL_SENDSTOP = 3;
const int SPL_NEXTLEVEL = 4;
const int SPL_STATUS_CANINVEST_NO_MANADEC = 8;
const int SPL_FORCEINVEST = 1 << 16;
const int TARGET_COLLECT_NONE = 0;
const int TARGET_COLLECT_CASTER = 1;
const int TARGET_COLLECT_FOCUS = 2;
const int TARGET_COLLECT_ALL = 3;
const int TARGET_COLLECT_FOCUS_FALLBACK_NONE = 4;
const int TARGET_COLLECT_FOCUS_FALLBACK_CASTER = 5;
const int TARGET_COLLECT_ALL_FALLBACK_NONE = 6;
const int TARGET_COLLECT_ALL_FALLBACK_CASTER = 7;
const int TARGET_TYPE_ALL = 1;
const int TARGET_TYPE_ITEMS = 2;
const int TARGET_TYPE_NPCS = 4;
const int TARGET_TYPE_ORCS = 8;
const int TARGET_TYPE_HUMANS = 16;
const int TARGET_TYPE_UNDEAD = 32;
const int SPL_PalLight = 0;
const int SPL_PalLightHeal = 1;
const int SPL_PalHolyBolt = 2;
const int SPL_PalMediumHeal = 3;
const int SPL_PalRepelEvil = 4;
const int SPL_PalFullHeal = 5;
const int SPL_PalDestroyEvil = 6;
const int SPL_PalTeleportSecret = 7;
const int SPL_TeleportSeaport = 8;
const int SPL_TeleportMonastery = 9;
const int SPL_TeleportFarm = 10;
const int SPL_TeleportXardas = 11;
const int SPL_TeleportPassNW = 12;
const int SPL_TeleportPassOW = 13;
const int SPL_TeleportOC = 14;
const int SPL_TeleportOWDemonTower = 15;
const int SPL_TeleportTaverne = 16;
const int SPL_Teleport_3 = 17;
const int SPL_Light = 18;
const int SPL_Firebolt = 19;
const int SPL_Icebolt = 20;
const int SPL_LightHeal = 21;
const int SPL_SummonGoblinSkeleton = 22;
const int SPL_InstantFireball = 23;
const int SPL_Zap = 24;
const int SPL_SummonWolf = 25;
const int SPL_WindFist = 26;
const int SPL_Sleep = 27;
const int SPL_MediumHeal = 28;
const int SPL_LightningFlash = 29;
const int SPL_ChargeFireball = 30;
const int SPL_SummonSkeleton = 31;
const int SPL_Fear = 32;
const int SPL_IceCube = 33;
const int SPL_ChargeZap = 34;
const int SPL_SummonGolem = 35;
const int SPL_DestroyUndead = 36;
const int SPL_Pyrokinesis = 37;
const int SPL_Firestorm = 38;
const int SPL_IceWave = 39;
const int SPL_SummonDemon = 40;
const int SPL_FullHeal = 41;
const int SPL_Firerain = 42;
const int SPL_BreathOfDeath = 43;
const int SPL_MassDeath = 44;
const int SPL_ArmyOfDarkness = 45;
const int SPL_Shrink = 46;
const int SPL_TrfSheep = 47;
const int SPL_TrfScavenger = 48;
const int SPL_TrfGiantRat = 49;
const int SPL_TrfGiantBug = 50;
const int SPL_TrfWolf = 51;
const int SPL_TrfWaran = 52;
const int SPL_TrfSnapper = 53;
const int SPL_TrfWarg = 54;
const int SPL_TrfFireWaran = 55;
const int SPL_TrfLurker = 56;
const int SPL_TrfShadowbeast = 57;
const int SPL_TrfDragonSnapper = 58;
const int SPL_Charm = 59;
const int SPL_MasterOfDisaster = 60;
const int SPL_Deathbolt = 61;
const int SPL_Deathball = 62;
const int SPL_ConcussionBolt = 63;
const int SPL_Reserved_64 = 64;
const int SPL_Reserved_65 = 65;
const int SPL_Reserved_66 = 66;
const int SPL_Reserved_67 = 67;
const int SPL_Reserved_68 = 68;
const int SPL_Reserved_69 = 69;
const int SPL_Thunderstorm = 70;
const int SPL_Whirlwind = 71;
const int SPL_WaterFist = 72;
const int SPL_IceLance = 73;
const int SPL_Inflate = 74;
const int SPL_Geyser = 75;
const int SPL_Waterwall = 76;
const int SPL_Reserved_77 = 77;
const int SPL_Reserved_78 = 78;
const int SPL_Reserved_79 = 79;
const int SPL_Plague = 80;
const int SPL_Swarm = 81;
const int SPL_GreenTentacle = 82;
const int SPL_Earthquake = 83;
const int SPL_SummonGuardian = 84;
const int SPL_Energyball = 85;
const int SPL_SuckEnergy = 86;
const int SPL_Skull = 87;
const int SPL_SummonZombie = 88;
const int SPL_SummonMud = 89;
const int SPL_Reserved_90 = 90;
const int SPL_Reserved_91 = 91;
const int SPL_Reserved_92 = 92;
const int SPL_Reserved_93 = 93;
const int SPL_Reserved_94 = 94;
const int SPL_Reserved_95 = 95;
const int SPL_Reserved_96 = 96;
const int SPL_Reserved_97 = 97;
const int SPL_Reserved_98 = 98;
const int SPL_Reserved_99 = 99;
const int MAX_SPELL = 100;


const string spellFxInstanceNames[100] =
{
"PalLight",
"PalHeal",
"PalHolyBolt",
"PalHeal",
"PalRepelEvil",
"PalHeal",
"PalDestroyEvil",
"Teleport",
"Teleport",
"Teleport",
"Teleport",
"Teleport",
"Teleport",
"Teleport",
"Teleport",
"Teleport",
"Teleport",
"Teleport",
"Light",
"Firebolt",
"Icebolt",
"Heal",
"SummonGoblinSkeleton",
"InstantFireball",
"Zap",
"SummonWolf",
"WindFist",
"Sleep",
"Heal",
"LightningFlash",
"ChargeFireball",
"SummonSkeleton",
"Fear",
"Icecube",
"ChargeZap",
"SummonGolem",
"DestroyUndead",
"Pyrokinesis",
"Firestorm",
"Icewave",
"SummonDemon",
"Heal",
"Firerain",
"BreathOfDeath",
"MassDeath",
"ArmyOfDarkness",
"Shrink",
"Transform",
"Transform",
"Transform",
"Transform",
"Transform",
"Transform",
"Transform",
"Transform",
"Transform",
"Transform",
"Transform",
"Transform",
"Charm",
"MasterOfDisaster",
"Deathbolt",
"Deathball",
"Concussionbolt",
"Light",
"Light",
"Light",
"Light",
"Light",
"Light",
"Thunderstorm",
"Whirlwind",
"Waterfist",
"IceLance",
"Sleep",
"Geyser",
"Firerain",
"Light",
"Light",
"Light",
"Fear",
"Swarm",
"Greententacle",
"Firerain",
"SummonGuardian",
"Energyball",
"SuckEnergy",
"Skull",
"SummonZombie",
"SummonMud",
"Transform",
"Light",
"Light",
"Light",
"Light",
"Light",
"Light",
"Light",
"Light",
"Light"
};

const string spellFxAniLetters[100] =
{
"SLE",
"HEA",
"FBT",
"HEA",
"FBT",
"HEA",
"FIB",
"HEA",
"HEA",
"HEA",
"HEA",
"HEA",
"HEA",
"HEA",
"HEA",
"HEA",
"HEA",
"HEA",
"SLE",
"FBT",
"FBT",
"HEA",
"SUM",
"FBT",
"FBT",
"SUM",
"WND",
"SLE",
"HEA",
"WND",
"FIB",
"SUM",
"FEA",
"FRZ",
"FIB",
"SUM",
"FIB",
"FIB",
"FIB",
"FEA",
"SUM",
"HEA",
"FEA",
"FIB",
"MSD",
"SUM",
"SLE",
"TRF",
"TRF",
"TRF",
"TRF",
"TRF",
"TRF",
"TRF",
"TRF",
"TRF",
"TRF",
"TRF",
"TRF",
"FIB",
"FIB",
"FBT",
"FBT",
"FBT",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"STM",
"WHI",
"WND",
"FBT",
"SLE",
"WND",
"FEA",
"XXX",
"XXX",
"XXX",
"FBT",
"FBT",
"FRZ",
"FEA",
"SUM",
"WND",
"WND",
"WND",
"SUM",
"SUM",
"TRF",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX",
"XXX"
};



W const string spellFxInstanceNames zmieniłem "Light" na "Transform"
W const string spellFxAniLetters[100] zmieniłem "XXX" na "TRF",

Dzięki czemu po wybraniu zwoju w ręku Beziego jest właściwy efekt czaru przemiany

W Spell_ProcesMana.d na końcu dopisałem

Spoiler
        if(activeSpell == SPL_Reserved_90)
{
return Spell_Logic_Reserved_90(manaInvested);
};
return FALSE;


Po użyciu zwoju mana zostaje prawidłowo zużyta z zasobów many beziego.

W Spell_Transform.d wpisałem
Spoiler

const int SPL_Cost_TrfMeatBug = 10;  <----- To na początku pliku



func int Spell_Logic_Reserved_90(var int manaInvested)       <----- To na końcu pliku
{
if((Npc_GetActiveSpellIsScroll(self) && (self.attribute[ATR_MANA] >= SPL_Cost_Scroll)) || (self.attribute[ATR_MANA] >= SPL_Cost_TrfMeatBug))
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_TrfMeatBug;
Npc_SetActiveSpellInfo(self,Meatbug);
return SPL_SENDCAST;
}
else
{
return SPL_SENDSTOP;
};
};



Dla pewności dodałem jeszcze w Spell_Transform_Alle.d
Spoiler

const int SPL_Cost_TrfMeatBug = 10; <----- To na początku pliku


func int Spell_Logic_Reserved_90 (var int manaInvested)      <----- To na końcu pliku
{
if ((Npc_GetActiveSpellIsScroll(self) && (self.attribute[ATR_MANA] >= SPL_Cost_Scroll)))
|| (self.attribute[ATR_MANA] >= SPL_Cost_TrfMeatBug)
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_TrfMeatBug;

Npc_SetActiveSpellInfo(self, Meatbug);
return SPL_SENDCAST;
}
else
{
return SPL_SENDSTOP;
};
};



W pliku IT_Addon_Scrolls.d zdefiniowałem zwój
Spoiler
instance ItSc_TrfMeatBug(C_Item)
{
name = NAME_Spruchrolle;
mainflag = ITEM_KAT_RUNE;
flags = ITEM_MULTI;
value = Value_Sc_TrfMeatBug;
visual = "ItSc_TrfMeatBug.3DS";
material = MAT_LEATHER;
spell = SPL_Reserved_90;
cond_atr[2] = ATR_MANA_MAX;
cond_value[2] = SPL_Cost_Scroll;
wear = WEAR_EFFECT;
effect = "SPELLFX_WEAKGLIMMER";
description = NAME_SPL_Reserved_90;
text[0] = NAME_MageScroll;
text[1] = NAME_Mana_needed;
count[1] = SPL_Cost_Scroll;
text[5] = NAME_Value;
count[5] = value;
};



Już pomijam że w pliku Text.d wpisałem nazwy i opisy bo to szczegół.

2
Witam
Czy jest możliwość wyciągnięcia z G1 animacji jak Bezi zapala obozowe latarnie pochodnią ?
Bo w G2NK wstawiłem latarnie dałem w usewithitem ITLSTORCHBURNING ale przy próbie odpalenia nic się nie dzieje

3
Spacer / [G2NK] AbandonedMine.ZEN
« dnia: 2021-11-21, 08:47 »
Witam
Od kilku lat pracuje nad patchem do G2NK i chciałbym dodać możliwość wejścia do opuszczonej kopalni przy przechodzeniu do górniczej doliny. Pobrałem już ZENa z WoGa próbuje otworzyć Zena w Spacerze ale po wczytaniu jest cały czarny i widać tylko znaczniki świateł i waypointy nie widać co jest podłogą co sufitem i gdzie są ściany. Byłbym wdzięczny za pomoc bo nie wiem co z tym zrobić. Jak i późniejsze wskazówki które skrypty edytować aby mapa się poprawnie ładowała w grze.

Przejrzałem również poniższe wątki na forum ale niezbyt mi pomogły.
https://themodders.org/index.php?topic=29993.msg1353022#msg1353022
https://themodders.org/index.php?topic=25403.0
https://themodders.org/index.php?topic=17379.msg1039665#msg1039665

4
Witam chciałem przenieść rutynę medytacji nowicjuszy na bagnie do G2NK. Próbowałem przenosić plinki animacji z G1 do G2 kopiowałem rutynę ale NPC tylko stał i nic nie robił. Mam pytanie do ekspertów modowania czy da się  w ogóle przenieść taką rutynę wraz z animacjami do G2 ?  Z tego co widziałem to w G2 są już animacje o takich nazwach ale odpowiadają za modlitwę przy kapliczkach. Utworzenie nowej rutyny i przekopiowanie kodu tej rutyny z G1 do G2 to nie jest dla mnie problem ale zasadniczo nie wiem jak te animacje przenieść żeby te z G1 nie nadpisywały ty G2 i generalnie żeby przy tej rutynie ta animacja medytacji przy FP się wykonywała.

5
Skrypty / Greg i strażnik
« dnia: 2020-08-12, 18:43 »
Witam od jakiegoś czasu moduję hobbistycznie Gothica 2 NK i ostatnio napotkałem następujący problem.
Na początku gry mam już strój farmera od Lobarta i oddaje go Gregowi aby mógł wejść do miasta a następnie idę pod bramę obok Lothara  bez zbroi to strażnik mnie ignoruje i nie zaczepia i mogę wejść bez żadnej gadki do miasta. Gdy przed rozmową z Gregiem zdejmę strój rolnika a następnie w trakcie dialogu go mu przekaże to potem normalnie strażnik mnie zaczepia i jest wszystko ok. Ale gdy mam założony strój rolnika i rozmawam z Gregiem to występuje ten wyżej wymieniony bug.

Ktoś ma pomysł co to może być ????   :hmmm:

Przyznam się że samemu próbowałem to jakoś korygować w dialogach Grega i strażnika przy bramie ale bez rezultatów.
Myslałem czy nie ma to przypadkiem jakiegoś związku

AI_StopProcessInfos(self);

albo


B_GiveInvItems(other,self,ITAR_Bau_L,1);


Tak jakby strażnik nie mógł załapać że nie mam już stroju farmera
 i mimo że nie mam już go w ekwipunku to gra w dialogu strażnika myśli że jeszcze mam ale nie może go wykryć i się buguje dialog. Takie mam przypuszczenia

Mój problem przypomina trochę problem z tego tematu: http://themodders.org/index.php?topic=29895.msg1349982#msg1349982

Umieszczam jeszcze fragmenty kodu dialogów Grega i Strażnika bramy


instance DIA_Addon_Greg_NW_Stadtwachen(C_Info)
{
npc = PIR_1300_Addon_Greg_NW;
nr = 5;
condition = DIA_Addon_Greg_NW_Stadtwachen_Condition;
information = DIA_Addon_Greg_NW_Stadtwachen_Info;
permanent = TRUE;
description = "Jeśli chodzi o strażników...";
};


func int DIA_Addon_Greg_NW_Stadtwachen_Condition()
{
if((MIS_Addon_Greg_BringMeToTheCity == LOG_Running) && (GregLocation == Greg_Farm1))
{
return TRUE;
};
};


var int DIA_Addon_Greg_NW_Stadtwachen_ChoiceClose_geld;
var int DIA_Addon_Greg_NW_Stadtwachen_ChoiceClose_Schein;
var int DIA_Addon_Greg_NW_Stadtwachen_ChoiceClose_constantino;

func void DIA_Addon_Greg_NW_Stadtwachen_Info()
{
AI_Output(other,self,"DIA_Addon_Greg_NW_Stadtwachen_15_00"); //Jeśli chodzi o strażników...
AI_Output(self,other,"DIA_Addon_Greg_NW_Stadtwachen_01_01"); //Tak. Masz jakiś pomysł?
Info_ClearChoices(DIA_Addon_Greg_NW_Stadtwachen);
Info_AddChoice(DIA_Addon_Greg_NW_Stadtwachen,"Będę musiał o tym pomyśleć.",DIA_Addon_Greg_NW_Stadtwachen_nochnicht);
if(DIA_Addon_Greg_NW_Stadtwachen_ChoiceClose_geld == FALSE)
{
Info_AddChoice(DIA_Addon_Greg_NW_Stadtwachen,"A może spróbujesz łapówki?",DIA_Addon_Greg_NW_Stadtwachen_geld);
};
if((DIA_Addon_Greg_NW_Stadtwachen_ChoiceClose_Schein == FALSE) && Npc_HasItems(other,ItWr_Passierschein))
{
Info_AddChoice(DIA_Addon_Greg_NW_Stadtwachen,"Mam przepustkę do miasta.",DIA_Addon_Greg_NW_Stadtwachen_Schein);
};
if((MIS_Addon_Lester_PickForConstantino != 0) && (DIA_Addon_Greg_NW_Stadtwachen_ChoiceClose_constantino == FALSE))
{
Info_AddChoice(DIA_Addon_Greg_NW_Stadtwachen,"Do miasta mogą wejść zbieracze ziół.",DIA_Addon_Greg_NW_Stadtwachen_constantino);
};
if(Npc_HasItems(other,ITAR_Bau_L) || Npc_HasItems(other,ITAR_Bau_M))
{
Info_AddChoice(DIA_Addon_Greg_NW_Stadtwachen,"Powinni cię wpuścić, jeśli założysz ten strój rolnika.",DIA_Addon_Greg_NW_Stadtwachen_klamotten);
};
};

func void DIA_Addon_Greg_NW_Stadtwachen_klamotten()
{
var C_Item itm;
itm = Npc_GetEquippedArmor(other);
AI_Output(other,self,"DIA_Addon_Greg_NW_Stadtwachen_klamotten_15_00"); //Powinni cię wpuścić, jeśli założysz ten strój rolnika.

if(Npc_HasItems(other,ITAR_Bau_L))
{
if(Npc_HasEquippedArmor(other) == FALSE)
{
AI_UnequipArmor (other);
}
else if((Hlp_IsItem(itm,ITAR_Bau_L) == TRUE) || (Hlp_IsItem(itm,ITAR_Bau_M) == TRUE))
{
AI_UnequipArmor (other);
};
B_GiveInvItems(other,self,ITAR_Bau_L,1);

}
else
{
if(Npc_HasEquippedArmor(other) == FALSE)
{
AI_UnequipArmor (other);
}
else if((Hlp_IsItem(itm,ITAR_Bau_L) == TRUE) || (Hlp_IsItem(itm,ITAR_Bau_M) == TRUE))
{
AI_UnequipArmor (other);
};
B_GiveInvItems(other,self,ITAR_Bau_M,1);
};
AI_Output(self,other,"DIA_Addon_Greg_NW_Stadtwachen_klamotten_01_01"); //Tego mi właśnie trzeba. Wiedziałem, że mogę na ciebie liczyć.
AI_Output(self,other,"DIA_Addon_Greg_NW_Stadtwachen_klamotten_01_02"); //Nikt na mnie nie zwróci uwagi, jeśli przebiorę się za wsiowego głupka. Ha, ha!
if(Npc_HasItems(self,ITAR_Bau_L))
{
AI_EquipArmor(self,ITAR_Bau_L);
}
else
{
AI_EquipArmor(self,ITAR_Bau_M);
};
AI_Output(self,other,"DIA_Addon_Greg_NW_Stadtwachen_klamotten_01_03"); //Doskonale. Dobrze się spisałeś. Oto obiecana zapłata.
CreateInvItems(self,ItMi_Gold,50);
B_GiveInvItems(self,other,ItMi_Gold,50);
B_GivePlayerXP(XP_Greg_NW_GiveBauArmor);
AI_Output(other,self,"DIA_Addon_Greg_NW_Stadtwachen_klamotten_15_04"); //Co? Nędzne 50 złotych monet? Chyba żartujesz.
AI_Output(self,other,"DIA_Addon_Greg_NW_Stadtwachen_klamotten_01_05"); //Złoto to nie wszystko, przyjacielu. Niech ci to na razie wystarczy.
AI_Output(self,other,"DIA_Addon_Greg_NW_Stadtwachen_klamotten_01_06"); //Mam przeczucie, że wkrótce się spotkamy.
AI_Output(self,other,"DIA_Addon_Greg_NW_Stadtwachen_klamotten_01_07"); //I kto wie? Mogę być wtedy bardziej szczodry. Trzymaj się.
AI_StopProcessInfos(self);
if(Npc_KnowsInfo(other,DIA_Lothar_Hallo))
{
Npc_ExchangeRoutine(self,"Markt");
};
B_LogEntry(TOPIC_Addon_Greg_NW,"Dałem mu ubranie farmera. Może ominąć strażników w przebraniu.");
MIS_Addon_Greg_BringMeToTheCity = LOG_SUCCESS;
};











const string Mil_310_Checkpoint = "NW_CITY_ENTRANCE_MAIN";


var int MIL_310_Personal_AbsolutionLevel;

instance DIA_Mil_310_Stadtwache_FirstWarn(C_Info)
{
npc = Mil_310_Stadtwache;
nr = 1;
condition = DIA_Mil_310_Stadtwache_FirstWarn_Condition;
information = DIA_Mil_310_Stadtwache_FirstWarn_Info;
permanent = TRUE;
important = TRUE;
};


func int DIA_Mil_310_Stadtwache_FirstWarn_Condition()
{
if(Npc_GetDistToWP(other,Mil_310_Checkpoint) <= 700)
{
Npc_SetRefuseTalk(self,5);
return FALSE;
};
if((B_GetGreatestPetzCrime(self) >= CRIME_ATTACK) && (B_GetCurrentAbsolutionLevel(self) == MIL_310_Personal_AbsolutionLevel))
{
self.aivar[AIV_PASSGATE] = FALSE;
}
else if(Mil_310_schonmalreingelassen == TRUE)
{
self.aivar[AIV_PASSGATE] = TRUE;
};
if((self.aivar[AIV_Guardpassage_Status] == GP_NONE) && (self.aivar[AIV_PASSGATE] == FALSE) && (Hlp_StrCmp(Npc_GetNearestWP(self),self.wp) == TRUE) && (Npc_RefuseTalk(self) == FALSE))
{
return TRUE;
};
};

func void DIA_Mil_310_Stadtwache_FirstWarn_Info()
{
var C_Item itm;
AI_Output(self,other,"DIA_Mil_310_Stadtwache_FirstWarn_07_00"); //STAĆ!
if(B_GetGreatestPetzCrime(self) >= CRIME_ATTACK)
{
AI_Output(other,self,"DIA_Mil_310_Stadtwache_FirstWarn_15_01"); //O co chodzi?
AI_Output(self,other,"DIA_Mil_310_Stadtwache_FirstWarn_07_02"); //Dobrze wiesz o co!
if(B_GetGreatestPetzCrime(self) == CRIME_MURDER)
{
AI_Output(self,other,"DIA_Mil_310_Stadtwache_FirstWarn_07_03"); //Jesteś poszukiwany w mieście za morderstwo.
};
if(B_GetGreatestPetzCrime(self) == CRIME_THEFT)
{
AI_Output(self,other,"DIA_Mil_310_Stadtwache_FirstWarn_07_04"); //Nie potrzebujemy to żadnych brudnych złodziei!
};
if(B_GetGreatestPetzCrime(self) == CRIME_ATTACK)
{
AI_Output(self,other,"DIA_Mil_310_Stadtwache_FirstWarn_07_05"); //Nie trzeba nam w mieście pieniaczy!
};
AI_Output(self,other,"DIA_Mil_310_Stadtwache_FirstWarn_07_06"); //Dlaczego mielibyśmy cię wpuścić?
}
else
{
itm = Npc_GetEquippedArmor(other);
if((Npc_HasEquippedArmor(other) == FALSE) && (hero.guild == GIL_NONE))
{
AI_Output(other,self,"DIA_Mil_310_Stadtwache_FirstWarn_15_07"); //A dlaczego nie?
AI_Output(self,other,"DIA_Mil_310_Stadtwache_FirstWarn_07_08"); //TY tu nie wejdziesz, chłopcze!
AI_Output(other,self,"DIA_Mil_310_Stadtwache_FirstWarn_15_09"); //Dlaczego nie?
AI_Output(self,other,"DIA_Mil_310_Stadtwache_FirstWarn_07_10"); //Już po twoim obszarpanym wyglądzie widzę, że jedyne co ze sobą przynosisz to kłopoty.
AI_Output(self,other,"DIA_Mil_310_Stadtwache_FirstWarn_07_11"); //W mieście mamy już dostatecznie dużo kłopotów. Nie ma tu miejsca dla ludzi bez pieniędzy.
if((MIS_EnterCity != LOG_Running) && ((Npc_KnowsInfo(other,DIA_Maleth_ToTheCity)) == FALSE))
{
MIS_EnterCity = LOG_Running;
Log_CreateTopic(TOPIC_City,LOG_MISSION);
Log_SetTopicStatus(TOPIC_City,LOG_Running);
B_LogEntry(TOPIC_City,"Strażnicy strzegący bram miasta nie wpuszczą mnie, jeśli będę wyglądał jak nędzarz. Muszę zrobić coś ze swoim wyglądem albo poszukać innej drogi do miasta.");
};

}
else if((Hlp_IsItem(itm,ITAR_Bau_L) == TRUE) || (Hlp_IsItem(itm,ITAR_Bau_M) == TRUE))
{
if(self.aivar[AIV_TalkedToPlayer] == TRUE)
{
AI_Output(self,other,"DIA_Mil_310_Stadtwache_FirstWarn_07_12"); //Czego chcesz tym razem?
AI_Output(other,self,"DIA_Mil_310_Stadtwache_FirstWarn_15_13"); //Przysłano mnie z farmy.
AI_Output(self,other,"DIA_Mil_310_Stadtwache_FirstWarn_07_14"); //No proszę? Czyżbyś w końcu miał jakiś dobry powód, by się tu pojawiać?
}
else
{
AI_Output(self,other,"DIA_Mil_310_Stadtwache_FirstWarn_07_15"); //Jesteś jednym z pomocników z farmy Lobarta? Nigdy cię tu nie widziałem!
AI_Output(other,self,"DIA_Mil_310_Stadtwache_FirstWarn_15_16"); //Od niedawna pracuję dla Lobarta.
AI_Output(self,other,"DIA_Mil_310_Stadtwache_FirstWarn_07_17"); //Co sprowadza cię do miasta?
};
}
else
{
AI_Output(other,self,"DIA_Mil_310_Stadtwache_FirstWarn_15_18"); //Słucham?
if((hero.guild == GIL_PAL) || (hero.guild == GIL_KDF))
{
AI_Output(self,other,"DIA_Mil_310_Stadtwache_FirstWarn_07_19"); //Wybacz, ale takie mam rozkazy.
AI_Output(other,self,"DIA_Mil_310_Stadtwache_FirstWarn_15_20"); //Czyżbyś chciał mnie zatrzymać?
AI_Output(self,other,"DIA_Mil_310_Stadtwache_FirstWarn_07_21"); //Gdzieżbym śmiał. Wszyscy członkowie kościoła Innosa są mile widziani.
}
else
{
AI_Output(self,other,"DIA_Mil_310_Stadtwache_FirstWarn_07_22"); //Chciałem ci się tylko przyjrzeć. Wygląda na to, że masz pieniądze. Możesz wejść.
};
self.aivar[AIV_PASSGATE] = TRUE;
Stadtwache_333.aivar[AIV_PASSGATE] = TRUE;
Mil_310_schonmalreingelassen = TRUE;
if(MIS_EnterCity == LOG_Running)
{
Wld_SendTrigger("CITY_DOWNTOWN_GATE_01");
Wld_SendTrigger("CITY_DOWNTOWN_GATE_02");
MIS_EnterCity = LOG_SUCCESS;
B_LogEntry(TOPIC_City,"Strażnicy wpuścili mnie do miasta.");
}
else if (Temp_GateCity1 == FALSE)
{
Temp_GateCity1 = TRUE;
Wld_SendTrigger("CITY_DOWNTOWN_GATE_01");
Wld_SendTrigger("CITY_DOWNTOWN_GATE_02");
};
B_CheckLog();
AI_StopProcessInfos(self);
};
};
other.aivar[AIV_LastDistToWP] = Npc_GetDistToWP(other,Mil_310_Checkpoint);
self.aivar[AIV_Guardpassage_Status] = GP_FirstWarnGiven;
};




6
Skrypty / Skrypt Strażnik pilnujący kołowrotu
« dnia: 2020-06-01, 21:04 »
Witam mam taki problem. Chciałbym w G2NK do konkretnego kołowrotu przy pomocy onStateFunc w Spacerze przypisać funkcję. Owa funkcja miałaby po użyciu przez Hero kołowrotu powodować że stojący obok strażnik  (dokładnie Pal_210_Torwache który jest NPCTYPE_AMBIENT ) krzyknał by łąpy precz i wynoś się stąd  przy użyciu B_Say_Overlay(self,other,"$HANDSOFF"); i B_Say_Overlay(self,other,"$GETOUTOFHERE"); a następnie atakował by gracza  B_Attack(self,other,AR_UseMob,0); Cały sęk polega na tym że nie wiem jak przypisać / przekazać aby po użyciu kołowrotu TEN konkretny NPC to powiedział i zaatakował bohatera który używa kołowrotu. Jak skonstruować tą funkcję.  :hmmm:

Strony: [1]
Do góry