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.


Wiadomości - BlackSwordsman

Strony: [1] 2
1
Skrypty / Nowy czar z czasowym efektem
« dnia: 2017-01-17, 23:03 »
Zwei weż proszę Cię spójrz jeszcze raz na zmianę parametrów przedmiotu bo się tam nowy problem pojawił.

Co do czarów będę pisał jak bym miał problem.

2
Skrypty / Nowy czar z czasowym efektem
« dnia: 2017-01-17, 22:46 »
1. Jak wpisać skrypt z efektem trwającym określony czas?
2. Czy da się zrobić czar bez błysków/rozbłysków żadnych. Tylko gest rzucania.

3
Skrypty / Nowy czar z czasowym efektem
« dnia: 2017-01-17, 22:29 »


Potrzebuje stworzyć nowe zaklęcie, które nie ma żadnego efektu wizualnego (oprócz gestykulacji beziego przy rzucaniu), który trwa określony czas i wywołuje określony efekt na postać i znika po upływie czasu albo po wczytaniu/zamknięciu gry jak czar światło np.?

4
Skrypty / Zmiana parametrów przedmiotu w trakcie gry
« dnia: 2017-01-16, 20:40 »
Działa! Bogdan Zwei ty to jednak jesteś fachowiec!
Npc_GetInvItem(hero, ItArScrollLight);
item.description = "Światło";
item.TEXT[2] = NAME_Manakosten;
item.COUNT[2] = MANACOST_LIGHT;
item.TEXT[5] = NAME_Value;
item.COUNT[5] = 20;

Wystarczy to wrzucić w spell_parm ();. Jedyny problem jest taki, że trzeba wypisywać wszystkie parametry bo zostają puste pola. Ale w życiu nie przypuszczałem, że to się będzie dało tak zrobić.

Post połączony: 2017-01-16, 23:32
Niestety pojawił się kolejny problem. Jak testowałem na 3 czarach wszystko było ok. Przy zmianie parametrów wszystkich czarów po załadowaniu nowej gry wyskakuje access violation i wywala do pulpitu.

5
Skrypty / Zmiana parametrów przedmiotu w trakcie gry
« dnia: 2017-01-16, 19:58 »
Niestety przy var int slight; slight = MEM_InstGetOffset(ItArScrollLight);
MEM_WriteInt(slight+ 776, MANACOST_LIGHT);
znowu wywala access violation.

2. Widzisz jak by to było takie proste to już bym to zrobił.
var C_Item slight;

slight = Hlp_GetInstanceID (ItArScrollLight);
slight.count[2] = MANACOST_LIGHT;

Zamiast Hlp_GetInstanceID próbowałem już kilkanaście różnych opcji. Męczę się drugi dzień z tym. W końcu gra musi wiedzieć przy slight o który przedmiot chodzi konkretnie podobnie jak:
Hlp_GetNpc(JakisNPC)Przy NPC.

Bogdan Zwei
No dobra ok, ale skąd gra ma wiedzieć który przedmiot to item. ?

6
Skrypty / Zmiana parametrów przedmiotu w trakcie gry
« dnia: 2017-01-16, 19:28 »
Bogdan Zwei
1. To co napisałeś dodaje tylko kolejny przedmiot do eq.
2. Już próbowałem nie działa.

Siemekk
1. Gra odpala, ale po wybraniu nowej gry wywala access violation.
2. Co wpisać w "rozmiar obiektu, watość"?

var int slight; slight = MEM_InstGetOffset(ItArScrollLight);
MEM_WriteInt(slight+ COUNT[2], MANACOST_LIGHT);
???

Generalnie chodzi o to że mają się zmieniać parametry wszystkich przedmiotów run/zwojów. Np. wszystkie kule ognia runy/zwoje mają mieć takie same parametry. Wszystko zależy od zmiennych z funkcji spell_parm (); wszędzie gdzie potrzeba dałem odniesienia i techniczne wszystko działa ok(podczas rzucania czaru odejmuje odpowiednią ilość mana oraz zadaje obrażeń tyle ile powinno), ale parametry przedmiotu się nie zmieniają i wyświetla się tylko pierwsza wartość tak jakby postać się wogóle nie rozwijała. Nie jestem fachowcem, ale może wystarczy tylko spell_parm (); wrzucić w odpowiednie miejsca?

7
Skrypty / Zmiana parametrów przedmiotu w trakcie gry
« dnia: 2017-01-16, 00:07 »
To której funkcji użyć? Nie da rady aktywnego czaru bo wtedy zmieni się tylko jeden czar i to tylko jak będzie aktywny, a ja potrzebuje żeby w jednej chwili zmieniać parametry wszystkich run/zwojów nawet tych nieużywanych. Nawet takich których nie ma jeszcze w eq. Chce żeby wszystko aktualizowało się razem ze zmienną.


Może lepiej wrzucić gdzieś spell_parm (); na przykład do funkcji gdzie się otwiera eq tabem?
Jak coś mam ikarusa i lego.

8
Skrypty / Zmiana parametrów przedmiotu w trakcie gry
« dnia: 2017-01-15, 23:53 »
Wiem o co chodzi, ale przy:
var C_Item slight;

slight = Hlp_IsItem (item, ItArScrollLight);
slight.text[2] = MANACOST_LIGHT;
wyskakuje błąd i wywala do pulpitu.

9
Skrypty / Zmiana parametrów przedmiotu w trakcie gry
« dnia: 2017-01-15, 23:11 »
Jeżeli jesteś bystry to zauważyłeś że już to zrobiłem i przy rzucaniu czarów działa jak trzeba. Problem jest tylko z wyświetlaniem tej zmiennej przy parametrach przedmiotu. Wyświetla pierwszą zmienną wrzuconą do
Cytuj
STARTUP_WORLD ()
i się nie zmienia. Już wiesz o co chodzi mistrzu? Na tym polega mój problem.

10
Skrypty / Zmiana parametrów przedmiotu w trakcie gry
« dnia: 2017-01-15, 22:19 »
Ma jakaś mądra głowa pomysł na to? Jak to zrobić? Może wystarczy tylko w odpowiednie miejsce wrzucić spell_parm ();!

11
Skrypty / Kula ognia jak w GII (Gothic I)
« dnia: 2017-01-15, 21:46 »
Nie wiem co jest grane męczę się już 2 godziny i ciągle działa żle! Chodzi o to że przeskakuje na następny poziom dopóki nie skończy się mana zamiast odpalić na 3 poziomie. OCB?

func int Spell_Logic_Fireball (var int manaInvested)
{
PrintDebugNpc (PD_MAGIC, "Spell_Logic_Fireball");
var int spelllevel;

/*
if (manaInvested ==(SPL_SENDCAST_FIREBALL*3)/10)
|| (manaInvested ==(SPL_SENDCAST_FIREBALL*5)/10)
|| (manaInvested ==(SPL_SENDCAST_FIREBALL*8)/10)
{ return SPL_NEXTLEVEL; };

if (manaInvested >= SPL_SENDCAST_FIREBALL)
{ return SPL_SENDCAST; };
*/

spell_parm ();

if (Npc_IsPlayer (self))
{

if (hero.attribute[ATR_MANA] >= MANACOST_FIREBALL)
{
hero.attribute[ATR_MANA] = (hero.attribute[ATR_MANA] - MANACOST_FIREBALL);

if (hero.attribute[ATR_MANA]<MANACOST_FIREBALL)
{
    return SPL_SENDCAST;
}
else
{
spelllevel = 1;
return SPL_NEXTLEVEL; //Lev1 erreicht
};
}
else if (hero.attribute[ATR_MANA] >= MANACOST_FIREBALL)
&& (spelllevel == 1)
{
hero.attribute[ATR_MANA] = (hero.attribute[ATR_MANA] - MANACOST_FIREBALL);

if (hero.attribute[ATR_MANA]<MANACOST_FIREBALL)
{
    return SPL_SENDCAST;
}
else
{
spelllevel = 2;
return SPL_NEXTLEVEL; //Lev2 erreicht
};
}
else if (hero.attribute[ATR_MANA] >= MANACOST_FIREBALL)
&& (spelllevel  == 2)
{
hero.attribute[ATR_MANA] = (hero.attribute[ATR_MANA] - MANACOST_FIREBALL);
return SPL_SENDCAST;
spelllevel = 3;
}
else if (hero.attribute[ATR_MANA]<MANACOST_FIREBALL)
{
return SPL_SENDSTOP;
};

};


return SPL_RECEIVEINVEST;
};

12
Skrypty / Kilka pytań (Gothic I)
« dnia: 2017-01-11, 20:39 »
Działa! Tak wgląda gotowy skrypt:

func int DMG_OnDmg(var int victimPtr, var int attackerPtr, var int dmg)
{
// Diese Funktion anpassen, wenn ihr den Schaden verändern wollt! 'dmg' ist der von Gothic berechnete Schaden.

//dmg = 10; ///jeder Angriff = 10 Schaden just testing

var c_npc slf; slf = _^(attackerptr);
var c_npc oth; oth = _^(victimPtr);
var int meleedamage;


var c_item tmpItm;
var c_item wpn;

var int wpnDmg;
       
    var int armRes;
If tmpItm.damagetype == DAM_EDGE { armRes = oth.protection[PROT_EDGE]; }
else if tmpItm.damagetype == DAM_BLUNT { armRes = oth.protection[PROT_BLUNT]; }
else if tmpItm.damagetype == DAM_POINT { armRes = oth.protection[PROT_POINT]; };

if (Npc_HasReadiedRangedWeapon(slf)) //Fernkampf  ist buggy
{

tmpItm = Npc_GetReadiedWeapon(slf);
wpn = Npc_GetEquippedRangedWeapon(slf);
wpnDmg = tmpItm.damageTotal;

meleedamage = ((wpnDmg + slf.attribute[ATR_DEXTERITY])-armRes);  /////testing ändern

}
else
{
tmpItm = Npc_GetReadiedWeapon(slf);
wpn = Npc_GetReadiedWeapon(slf);
wpnDmg = tmpItm.damageTotal;

meleedamage = wpnDmg ;  /////testing ändern
};

dmg = meleedamage;
return dmg;
};

func void _DMG_OnDmg()
{
EAX = DMG_OnDmg(ECX, MEM_ReadInt(MEM_ReadInt(ESP+548)+4), EAX);
};

func void InitDamage()
{
const int dmg = 0;
    if (dmg) { return; };
    HookEngineF(7567329, 6, _DMG_OnDmg);
    dmg = 1;
};

Oczywiście lecą propsy!
Teraz tylko muszę ogarnąć pozostałe rzeczy.

13
Skrypty / Kilka pytań (Gothic I)
« dnia: 2017-01-11, 15:33 »
Cytuj
  //Var c_npc slf; slf = attackerptr;
   //Var c_npc oth; slf = victimPtr;
Nie działa. Wywala błąd i wyrzuca do pulpitu.

To samo z tym drugim skryptem.

14
Skrypty / Kilka pytań (Gothic I)
« dnia: 2017-01-11, 13:15 »
Nie znam :(

Post połączony: 2017-01-11, 14:44
Trochę zmodyfikowałem skrypt, ale wiadomo że nie będzie działać. Musi być jakieś "połączenie" między tym, a skryptem który oblicza obrażenia, a wiadomo że nie ma go w zwykłych skryptach. A ja wogóle nie ogarniam Ikarusa. Zdaje sobie sprawe, że to forum jest do nauki, a nie wyręczania się ludzmi, ale proszę o pomoc. Podejrzewam, że tu wystarczy zmienić parę linijek. Dla kogoś ogarniętego to jest moment. Ja nie mam pojęcia od której strony to ugryźć.


func int DMG_OnDmg(var int victimPtr, var int attackerPtr, var int dmg)
{
// Diese Funktion anpassen, wenn ihr den Schaden verändern wollt! 'dmg' ist der von Gothic berechnete Schaden.

//dmg = 10; ///jeder Angriff = 10 Schaden just testing

//Var c_npc slf; slf = attackerptr;
//Var c_npc oth; slf = victimPtr;
var int meleedamage;

var c_item tmpItm; tmpItm = Npc_GetEquippedRangedWeapon(self);
var c_item wpn; wpn = Npc_GetEquippedRangedWeapon(self);

var int wpnDmg; wpnDmg = tmpItm.damageTotal;

if (Npc_HasReadiedRangedWeapon(self)) //Fernkampf  ist buggy
{
//var c_item wpn; wpn = Npc_GetEquippedRangedWeapon(self);
//var int rangecritchance;
    //if wpn2.flags & ITEM_BOW { rangecritchance = slf.HitChance[NPC_TALENT_BOW]; }
//else if wpn2.flags & ITEM_CROSSBOW { rangecritchance = slf.HitChance[NPC_TALENT_CROSSBOW]; };


meleedamage = (wpnDmg + self.attribute[ATR_DEXTERITY]);  /////testing ändern

};

dmg = meleedamage;
return dmg;
};


func void _DMG_OnDmg()
{
EDI = DMG_OnDmg(EBP, MEM_ReadInt(MEM_ReadInt(ESP+644)+8), EDI);
};

func void InitDamage()
{
const int dmg = 0;
if (dmg) { return; };
//HookEngineF(6736583/*0x66CAC7*/, 5, _DMG_OnDmg);
dmg = 1;
};

15
Skrypty / Kilka pytań (Gothic I)
« dnia: 2017-01-11, 13:03 »
W takim razie jak?

16
Skrypty / Kilka pytań (Gothic I)
« dnia: 2017-01-11, 12:17 »
pawbuj dokładnie o to chodzi symetrycznie jak broń do walki wręcz (pamiętaj że mówimy o Gothic 1 nie 2). Dzięki chłopaki powinienem sobie poradzić teraz.

17
Skrypty / Kilka pytań (Gothic I)
« dnia: 2017-01-10, 15:57 »
Naprawdę nikt nic nie wie?

18
Skrypty / Zmiana parametrów przedmiotu w trakcie gry
« dnia: 2017-01-01, 14:24 »
Nie działa niestety przy on_equip/on_unequip. Jeżeli chodzi o npc to wiem na pewno, że koszt będzie zmienny także dla nich, ale to nie będzie problemem. Wiesz może w jaki sposób to zrobić za pomocą ikarusa? Ogarniasz go?

Może wystarczy wrzucić spell_parm (); do funkcji gdzie otwiera się eq? Tylko która to?

19
Skrypty / Zmiana parametrów przedmiotu w trakcie gry
« dnia: 2017-01-01, 13:37 »

Mam problem mianowicie chciałem zastosować w swoim modzie zmienny kosztu mana przy runach/zwojach, ale nie działa tak jak trzeba. Chodzi o to że jeżeli chodzi o realny koszt to wszystko jest ok(podczas rzucania czaru), ale nie wyświetlają się prawidłowa wartość w eq. Działa tak że wyświetla się wartość z początku gry, bez uwzględnienia zmiennej.
INSTANCE ItArScrollLight (C_Item)
{
name = NAME_Spruchrolle;

mainflag = ITEM_KAT_RUNE;
flags = ITEM_MULTI;

value = 5;

visual = "ItAr_Scroll_32.3DS";
material = MAT_STONE;

spell_parm ();

spell = SPL_LIGHT;
cond_atr[2]    = ATR_MANA_MAX;
cond_value[2]  = SPL_SENDCAST_LIGHT;

description = "Światło";
//TEXT [0] = NAME_Mag_Circle; COUNT [0] = mag_circle;
TEXT [1] = NAME_Manakosten; COUNT [1] = SPL_SENDCAST_LIGHT;
//TEXT [2] = ""; COUNT [2] = ;
//TEXT [3] = ""; COUNT [3] = ;
//TEXT [4] = ""; COUNT [4] = ;
TEXT [5] = NAME_Value; COUNT [5] = value;
};
func void spell_parm ()
{
SPL_SENDCAST_LIGHT=10*100/((Npc_GetTalentValue(hero, NPC_TALENT_MAGE)/2)+100);

};

Mam nadzeje że rozumie cie o co chodzi?
I pytanie brzmi czy jest jakiś sposób by zmieniać parametry przedmiotu w trakcie gry?
Podkreślam, technicznie wszystko działa ok chodzi tylko o wartość w eq.

20
Skrypty / Kilka pytań (Gothic I)
« dnia: 2016-12-29, 17:23 »

Po pierwsze czy istnieje możliwość modyfikacji ceny SPRZEDAŻY u kupców za pomocą jakiejś zmiennej (nie ogólnej wartości)np. na zamiast 1/2 na 1/3 albo 1/5 wartości.

2. Czy istnieje możliwość zmiany tekstury nieba w trakcie dialogu.

3. Jak wiadomo podczas ataku z łuku do obrażeń nie jest dodawana zręczność w przeciwieństwie do ataku wręcz gdzie dodawana jest siła. Czy jest jakiś sposób żeby to zmienić?


Strony: [1] 2
Do góry