exp za skrzynie by hookengine 946 10

O temacie

Autor pawbuj

Zaczęty 28.01.2017 roku

Wyświetleń 946

Odpowiedzi 10

pawbuj

pawbuj

Użytkownicy
posty1626
Propsy135
ProfesjaSkrypter
  • Użytkownicy

pawbuj

exp za skrzynie by hookengine
2017-01-28, 09:59(Ostatnia zmiana: 2017-01-28, 10:05)
mam problem ze skryptem, który zmienia kolor skrzyń (jak w g3) i daje za nie exp.

wywala mi nast. błąd jeżeli dodam printchestexp!.

http://ifotos.pl/zobacz/error-che_aeqppwh.jpg

Nie chcę tick tocków ani frame functions.




sam skrypt func void printchestxp ()//
{
//if  (chest_exp > 0)//(C_BodyStateContains (hero, BS_INVENTORY ))

//{
// Snd_Play ("Door_unlock");
//Snd_Play ("_STR_SOUND_PICKLOCK_UNLOCK");
Print ("Zamek został otwarty.");
//
PrintS_Ext(ConcatStrings ("Zamek został otwarty.",""),RGBA(0,255,255,120));

B_GiveXP(100);
//chest_exp = 0;


//};
};


func void Status_Chest()
{
   var oCNpc her; her = Hlp_GetNpc(hero);
   var oCMobContainer chest; chest = _^(her.focus_vob);
   var oCMobDoor Door; Door = _^(her.focus_vob);   
    var int col; var int ptr;
   
      if !(Hlp_Is_oCMobContainer(her.focus_vob) || Hlp_Is_oCMobDoor(her.focus_vob)){ return; };
      if !her.focus_vob { return; };
   
   if Hlp_Is_oCMobContainer(her.focus_vob)
   {       
        if (chest._oCMobLockable_bitfield & oCMobLockable_bitfield_locked)
        {
         zamkniety = 1;
         //chest._oCMobLockable_bitfield = oCMobLockable_bitfield_autoOpen;
         col = RGBAToZColor(255,0,0,255); //czerwony
         //Print("skrzynia zamknięta!");
        }
        else
        {
         col = RGBAToZColor(255,180,0,255); //Orange
         if (zamkniety == 1)   
         {
            zamkniety = 0;
            //Print("skrzynia otwarta!");     
            };
        };                       
        MEM_AssignContentInst (Chest,her.focus_vob);
        if (chest.containList_next > 0)
        && (zamkniety == 0)//jeżeli zawartośc skrzyni jest większa od 0
        {         
        col = RGBAToZColor(255,180,0,255); //Orange
        //
        printchestxp ();
        }
        else if (chest.containList_next == 0)
        && (zamkniety == 0)//jeżeli zawartośc skrzyni jest pusta
        {
         col = RGBAToZColor(255,255,255,255); //white 
        };   
   }
   else if Hlp_Is_oCMobDoor(her.focus_vob)
   {
      if (Door._oCMobLockable_bitfield & oCMobLockable_bitfield_locked)
      {
            //chest._oCMobLockable_bitfield = oCMobLockable_bitfield_autoOpen;
            col = RGBAToZColor(255,0,0,255); //Orange zły
            zamkniety = 1;
            //Print("drzwi zamknięta!");   
      }
      else
      {
      col = RGBAToZColor(255,255,255,255);
            if (zamkniety == 1)   
            {
            //Print("drzwi otwarta!");   
           
            zamkniety = 0;       
            };   
      };
         
   };
    ptr = MEM_Alloc(4);
    MEM_WriteInt(ptr, col);
    CALL_IntParam(ptr);
    CALL__thiscall(MEM_ReadInt(screen_offset), zCView_SetFontColor_offset);
    MEM_Free(ptr);
   
};     
 

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy537
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Uhm... Jeśli znasz angielski, to wiesz, że AssignContentInst zostało porzucone i zatąpione AssignInst. To jest twój cały błąd.
 
: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.

pawbuj

pawbuj

Użytkownicy
posty1626
Propsy135
ProfesjaSkrypter
  • Użytkownicy
wywala inny błąd

http://ifotos.pl/zobacz/error-che_aeqphnq.jpg

dałem tak



Post połączony: 2017-01-28, 10:37
//MEM_AssignContentInst (Chest,her.focus_vob);
        MEM_AssignInst (Chest,her.focus_vob);
        if (chest.containList_next > 0)
        && (zamkniety == 0)//jeżeli zawartośc skrzyni jest większa od 0
        {         
        col = RGBAToZColor(255,180,0,255); //Orange
        //
       
        printchestxp ();
 

Siemekk

Siemekk

Złote Wrota
Cesarz
posty2143
Propsy1130
ProfesjaProgramista
  • Złote Wrota
  • Cesarz
Przecież to:
MEM_AssignContentInst (Chest,her.focus_vob);
To jest to samo co to:
var oCMobContainer chest; chest = _^(her.focus_vob);
Czyli MEM_AssignContentInst nie jest potrzebne.
 


Dodatkowo - odpłatnie pomagam przy zaawansowanych skryptach (AST, UNION, IKARUS).
Po więcej informacji zapraszam na PW na DISCORD.

pawbuj

pawbuj

Użytkownicy
posty1626
Propsy135
ProfesjaSkrypter
  • Użytkownicy

pawbuj

exp za skrzynie by hookengine
#4 2017-01-28, 11:52(Ostatnia zmiana: 2017-01-28, 12:02)
bez tego wywaliło do pulpitu.

http://ifotos.pl/z/aeqpnpp
 

Siemekk

Siemekk

Złote Wrota
Cesarz
posty2143
Propsy1130
ProfesjaProgramista
  • Złote Wrota
  • Cesarz
Tutaj mam stary skrypt ze skrzynek. Wypróbuj go. Podepnij tamten skrypt pod Focus_Names z LeGo.
Swoją drogą po co ci zmienna "Zamkniety" ?
 


Dodatkowo - odpłatnie pomagam przy zaawansowanych skryptach (AST, UNION, IKARUS).
Po więcej informacji zapraszam na PW na DISCORD.

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy537
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Pawbuj moduje G1, nie G2. Błąd jest w BR_Load itp.
 
: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.

pawbuj

pawbuj

Użytkownicy
posty1626
Propsy135
ProfesjaSkrypter
  • Użytkownicy

pawbuj

exp za skrzynie by hookengine
#7 2017-01-28, 12:22(Ostatnia zmiana: 2017-01-28, 13:32)
alternatywnie można spróbowac hookwać funckję odp. za otwarty ekwipunek.

adresy do g1 mam.

const int oCNpc__OpenInventory                      = 7057568; //0x6BB0A0 Hook: Quickslots | Hook:Inv
const int oCNpc__OpenInventory2                    = 7057813; // 6BB195

tylko nie bardzo wiem jak to skonstruować.

hookengine czy hookengineF

 

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy537
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Aha. Już wiem co źle robisz. Jest plik o nazwie G_PickLock czy coś podobnego. To odpowiada za otwieranie skrzyń wytrychem i nie tylko.
 
: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.

pawbuj

pawbuj

Użytkownicy
posty1626
Propsy135
ProfesjaSkrypter
  • Użytkownicy
Aha. Już wiem co źle robisz. Jest plik o nazwie G_PickLock czy coś podobnego. To odpowiada za otwieranie skrzyń wytrychem i nie tylko.
zjadłem na tym pliku zęby, widziałem inne fix mody i tego akurat w tym pliku nikt nie poprawił. np napis "zamek został otwarty" jak w oryginale nigdy sie nie wyświetlił.
 

Lehona

Lehona

Użytkownicy
posty196
Propsy188
  • Użytkownicy
I'm seeing some bad stuff here.

if (Chest.containList_next > 0)
containList_next is a pointer, and > and < mean nothing when used on pointers. Yes, in Daedalus they're treated the same as an integer (and thus comparing them is possible), but it can lead to nasty bugs. Why? Well, there's nothing stopping a pointer from having the MSB set - this will generally make it a negative number when treated as an integer and thus the check will fail. Compare directly to 0 if you want to check for existence.

You should probably remove commented lines of code (e.g. //Snd_Play ("Door_unlock"); and //Snd_Play ("_STR_SOUND_PICKLOCK_UNLOCK"); ), because it's stupidly hard to figure out what the code is doing if it's cluttered everywhere.
 
Unless specified otherwise, my posts are always about Gothic 2 Night of the Raven.


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