Funkcja odpala się przy przywołaniu potwora, zamiast na każdego potwora (G2NK) 2844 8

O temacie

Autor Bogdan Zwei

Zaczęty 23.12.2014 roku

Wyświetleń 2844

Odpowiedzi 8

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Witam, postanowiłem dzisiaj zrobić zacną funkcję buffowania potworków w grze. Wszystko cacy, działa jak powinno. Potem po malutkich poprawkach (zmiana wartości buffów) patrzę, a potworki nie zmieniają swoich statów. Przyzywam zatem ścierwojada, zabijam go, ma on staty jakie powinny być po buffie. Idę do zrespawnowanego ścierwojada z samego początku nowej gry, ma staty standardowe.

func void BuffMonster (var C_NPC monster, var int value)
{
if (value == 0)
{ value = (hero.level * (100+monster.level))/100; };

if (Npc_GetDistToNpc(hero, monster) < 2500)
{
if (hero.level > monster.level) && (monster.attribute[ATR_HITPOINTS] > 0)
{
monster.level = hero.level;// + monster.level;
monster.attribute[ATR_STRENGTH] += value;
monster.attribute[ATR_DEXTERITY] += value;
monster.attribute[ATR_HITPOINTS_MAX] += value*(hero.level/20);
monster.attribute[ATR_HITPOINTS] += value*(hero.level/20);
Print (inttostring(value));

if (((monster.protection[PROT_BLUNT] + monster.protection[PROT_EDGE] + monster.protection[PROT_POINT]
+ monster.protection[PROT_FIRE] + monster.protection[PROT_MAGIC] + monster.protection[PROT_FLY]) / 6) < 135)
{
monster.protection [PROT_BLUNT] += monster.level;
monster.protection [PROT_EDGE] += monster.level;
monster.protection [PROT_POINT] += monster.level;
monster.protection [PROT_FIRE] += monster.level;
monster.protection [PROT_FLY] += monster.level;
monster.protection [PROT_MAGIC] += monster.level;
};
};
};
};

Funkcja działa tak:
BuffMonster (Scavenger, 0);Jeśli jest wartość "0", wartość wynosi (hero.level * (100+monster.level))/100, tak jak można zaobserwować w powyższym skrypcie. Co mogę zrobić, by to naprawić? Moim zdaniem skrypt powinien działać poprawnie, lecz nie działa.

Funkcja jest odpalana co klatkę w fukncji func void Buff()
{     BuffMonster (Scavenger, 0);       };

Startup:
FF_ApplyOnceExt (Buff, 0, -1);
 
:ok: zachęca do dalszej pomocy. Nie zapominaj o tym!

Prywatne wiadomości typu "Ej, pomocy" kasuję od razu. Od tego jest forum, a nie PW.

To me, defeat in anything is merely temporary, and its punishment is but an urge for me to greater effort to achieve my goal. Defeat simply tells me that something is wrong in my doing; it is a path leading to success and truth.

In order to realize our true self we must be willing to live without being dependent upon the opinion of others.

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio
Startup:
FF_ApplyOnceExt (Buff, 0, -1);
Mniej pisania i efekt taki sam FF_ApplyOnce(Buff);
Co mogę zrobić, by to naprawić?
Sposób 1.:
Sprawdzaj co klatkę, czy focusowany przez hero npc jest potworem, potem wywołuj funkcję BuffMonster.
Sposób 2.: co klatkęMEM_InitGlobalInst();
var zCListSort list; list = _^(MEM_World.voblist_npcs);
while (list.next);
list = _^(list.next);

if (list.data) {
var C_Npc npc; npc = _^(list.data);

if (npc.guild > GIL_SEPERATOR_HUM) {
BuffMonster(npc, 0);
};
};


Nie testowałem.

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Startup:
FF_ApplyOnceExt (Buff, 0, -1);
Mniej pisania i efekt taki sam FF_ApplyOnce(Buff);
Co mogę zrobić, by to naprawić?
Sposób 1.:
Sprawdzaj co klatkę, czy focusowany przez hero npc jest potworem, potem wywołuj funkcję BuffMonster.
Sposób 2.: co klatkęMEM_InitGlobalInst();
var zCListSort list; list = _^(MEM_World.voblist_npcs);
while (list.next);
list = _^(list.next);

if (list.data) {
var C_Npc npc; npc = _^(list.data);

if (npc.guild > GIL_SEPERATOR_HUM) {
BuffMonster(npc, 0);
};
};


Nie testowałem.


Właściwie to robiłem to poprzez sprawdzanie, czy target jest potworem i zmienianie poprzez nacelowanie, lecz co mi po tym, jak od innych npc potworki będą padały na hita jak zawsze...?
Jeśli pójdę z towarzyszem na grupkę potworów, jeden będzie "ulepszony", a reszta nie. Bez sensu.

Chyba, że twój skrypt sprawdza, czy potworek jest potworkiem i go ulepsza, to by było pomocne, ale bez używania nacelowania przeciwnika. Ogólnie to gotowców nie lubię, a jak już biorę to lubię mieć wytłumaczone, co jak działa.


Co do FF_Apply(), wolę mieć FF_ApplyOnceExt (), ponieważ jak potrzebuję, szybko zmieniam parametry i git majonez, nie przeszkadza to w niczym. Poza tym, wolę FF_ApplyOnceExt() od FF_Apply(), ponieważ nie przepadam za krótkimi nazwami.
 
:ok: zachęca do dalszej pomocy. Nie zapominaj o tym!

Prywatne wiadomości typu "Ej, pomocy" kasuję od razu. Od tego jest forum, a nie PW.

To me, defeat in anything is merely temporary, and its punishment is but an urge for me to greater effort to achieve my goal. Defeat simply tells me that something is wrong in my doing; it is a path leading to success and truth.

In order to realize our true self we must be willing to live without being dependent upon the opinion of others.

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio
Cytuj
Chyba, że twój skrypt sprawdza, czy potworek jest potworkiem i go ulepsza, to by było pomocne, ale bez używania nacelowania przeciwnika.
Sposób 2 tak ma działać.
Wyszukuje wszystkich npc, jeśli jest potworem, to go ulepsza. Nie mam pojęcia czy działa, zajęło mi to 2 minuty.

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Nope, nie działa. Bym się znał na LeGo i Ikarusie, bym dał radę coś pokombinować, no ale niestety.
 
:ok: zachęca do dalszej pomocy. Nie zapominaj o tym!

Prywatne wiadomości typu "Ej, pomocy" kasuję od razu. Od tego jest forum, a nie PW.

To me, defeat in anything is merely temporary, and its punishment is but an urge for me to greater effort to achieve my goal. Defeat simply tells me that something is wrong in my doing; it is a path leading to success and truth.

In order to realize our true self we must be willing to live without being dependent upon the opinion of others.

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio
Zapomniałem zakończyć pętle :P
MEM_InitGlobalInst();
var zCListSort list; list = _^(MEM_World.voblist_npcs);
    while (list.next);
    list = _^(list.next);
    
    if (list.data) {
        var C_Npc npc; npc = _^(list.data);
        
        if (npc.guild > GIL_SEPERATOR_HUM) {
            BuffMonster(npc, 0);
        };
    };
    end;

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Zapomniałem zakończyć pętle :P
MEM_InitGlobalInst();
var zCListSort list; list = _^(MEM_World.voblist_npcs);
    while (list.next);
    list = _^(list.next);
   
    if (list.data) {
        var C_Npc npc; npc = _^(list.data);
       
        if (npc.guild > GIL_SEPERATOR_HUM) {
            BuffMonster(npc, 0);
            Print (npc.name);
        };
    };
    end;

Dodałem sobie Print (npc.name);, żeby wiedzieć, kogo funkcja ma na celowniku. Okazało się, że tylko i wyłącznie Orka wojownika, a cała reszta potworków ma staty bez zmian.
 
:ok: zachęca do dalszej pomocy. Nie zapominaj o tym!

Prywatne wiadomości typu "Ej, pomocy" kasuję od razu. Od tego jest forum, a nie PW.

To me, defeat in anything is merely temporary, and its punishment is but an urge for me to greater effort to achieve my goal. Defeat simply tells me that something is wrong in my doing; it is a path leading to success and truth.

In order to realize our true self we must be willing to live without being dependent upon the opinion of others.

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio
Więc przyjrzyjmy się Twojej funkcji i jej warunkom.
Jesteś pewny, że wszystkie spełnia? Np. ten:
Cytuj
      if (hero.level > monster.level) && (monster.attribute[ATR_HITPOINTS] > 0)
      {
         monster.level = hero.level;// + monster.level;
         monster.attribute[ATR_STRENGTH] += value;
         monster.attribute[ATR_DEXTERITY] += value;
         monster.attribute[ATR_HITPOINTS_MAX] += value*(hero.level/20);
         monster.attribute[ATR_HITPOINTS] += value*(hero.level/20);
   Print (inttostring(value));
         
   
      };
Wyświetla na ekranie value, ale nie zmienia atrybutów? Musisz użyć wtedy funkcji z pliku FLOAT.D
I zamiast tego:
(monster.attribute[ATR_HITPOINTS] > 0)można tak
(monster.attribute[ATR_HITPOINTS] != 0)

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Więc przyjrzyjmy się Twojej funkcji i jej warunkom.
Jesteś pewny, że wszystkie spełnia? Np. ten:
Cytuj
      if (hero.level > monster.level) && (monster.attribute[ATR_HITPOINTS] > 0)
      {
         monster.level = hero.level;// + monster.level;
         monster.attribute[ATR_STRENGTH] += value;
         monster.attribute[ATR_DEXTERITY] += value;
         monster.attribute[ATR_HITPOINTS_MAX] += value*(hero.level/20);
         monster.attribute[ATR_HITPOINTS] += value*(hero.level/20);
   Print (inttostring(value));
         
   
      };
Wyświetla na ekranie value, ale nie zmienia atrybutów? Musisz użyć wtedy funkcji z pliku FLOAT.D
I zamiast tego:
(monster.attribute[ATR_HITPOINTS] > 0)można tak
(monster.attribute[ATR_HITPOINTS] != 0)


Moja funkcja działa poprawnie, ale nie działa tylko i wyłącznie na potworki już zespawnowane na mapie.
Czyli mówisz, że użyć funkcji z Float.d, ok, ale której?
Przy okazji, napisałem, że twoja funkcja skupia się tylko na jednym potworku i nie przechodzi dalej. Czy aby na pewno to wina mojej funkcji...?
 
:ok: zachęca do dalszej pomocy. Nie zapominaj o tym!

Prywatne wiadomości typu "Ej, pomocy" kasuję od razu. Od tego jest forum, a nie PW.

To me, defeat in anything is merely temporary, and its punishment is but an urge for me to greater effort to achieve my goal. Defeat simply tells me that something is wrong in my doing; it is a path leading to success and truth.

In order to realize our true self we must be willing to live without being dependent upon the opinion of others.


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