Skillurile petului in descrierea cutiei

  • Autor subiect Ionut
  • Dată creare
  • Răspunsuri: Răspunsuri 5
  • Vizualizări: Vizualizări 2K
I

Ionut

he8YbpL.png


Salut.

Un prieten m-a rugat azi sa ii adaug skillurile peturilor in descrierea cutiei. A vazut asta pe nu stiu ce server si voia si el.
Cum sistemul asta are primele doua socketuri ocupate cu codul obiectului si nivelul petului, nu prea aveam unde sa mai pun si detaliile a trei skilluri intr-un singur socket ramas (presupunand ca aveti 3, cum e normal), asa ca m-am folosit de bitwise sa le adaug pe un singur socket. Da, 18 tipuri deferite de skilluri, 3 skilluri in total (17 x 3) pe un singur socket, intr-un singur numar.
De mentionat: s-ar putea ca codul vostru sa nu semene. Poate baiatul asta modificase sistemul sau ceva... nu stiu. Incercati sa-l adaptati si singuri.
Deasemenea, e facut pentru cei ce au numarul maxim de bonusuri pe un obiect de 7. Daca aveti esarfe si numarul maxim de bonusuri marit la 15, puteti lucra cu alea. Puteti adauga chiar si nivele la skilluri.

root/uitooltip.py
Cautati

Cod:
      if self.check_sigillo(itemVnum) or itemVnum == 55002:
       if attrSlot[0][1] != 0:
         self.AppendSpace(5)
         self.AppendTextLine("Level: "+str(metinSlot[1]), self.NORMAL_COLOR)
         self.AppendTextLine("Hp: +"+pointop(str(attrSlot[0][1]))+"%", self.SPECIAL_POSITIVE_COLOR)
         self.AppendTextLine("Def: +"+pointop(str(attrSlot[1][1]))+"%", self.SPECIAL_POSITIVE_COLOR)
         self.AppendTextLine("Atac: +"+pointop(str(attrSlot[2][1]))+"%", self.SPECIAL_POSITIVE_COLOR)
         self.AppendSpace(5)
         if itemVnum != 55002:
           days = (int(attrSlot[3][1])/60)/24
           hours = (int(attrSlot[3][1]) - (days*60*24)) / 60
           mins = int(attrSlot[3][1]) - (days*60*24) - (hours*60)
           self.AppendTextLine("Durata: %d Zile %d Ore %d Minute" % (days, hours, mins), self.SPECIAL_POSITIVE_COLOR)

Inlocuiti cu:

Cod:
      if self.check_sigillo(itemVnum):
       if attrSlot[0][1] != 0:
         self.AppendSpace(5)
         self.AppendTextLine("Nivel: "+str(metinSlot[1]), self.NORMAL_COLOR)
         self.AppendTextLine("HP: +"+pointop(str(attrSlot[0][1]))+"%", self.SPECIAL_POSITIVE_COLOR)
         self.AppendTextLine("Def: +"+pointop(str(attrSlot[1][1]))+"%", self.SPECIAL_POSITIVE_COLOR)
         self.AppendTextLine("Atac: +"+pointop(str(attrSlot[2][1]))+"%", self.SPECIAL_POSITIVE_COLOR)
         self.AppendSpace(5)
         if itemVnum != 55002:
           days = (int(attrSlot[3][1])/60)/24
           hours = (int(attrSlot[3][1]) - (days*60*24)) / 60
           mins = int(attrSlot[3][1]) - (days*60*24) - (hours*60)
           self.AppendTextLine("Durata: %d Zile %d Ore %d Minute" % (days, hours, mins), self.SPECIAL_POSITIVE_COLOR)
     elif itemVnum == 55002:
       if attrSlot[0][1] != 0:
         self.AppendSpace(5)
         self.AppendTextLine("Nivel: " + str(metinSlot[1]), self.NORMAL_COLOR)
         self.AppendTextLine("HP: +"+pointop(str(attrSlot[0][1]))+"%", self.SPECIAL_POSITIVE_COLOR)
         self.AppendTextLine("Def: +"+pointop(str(attrSlot[1][1]))+"%", self.SPECIAL_POSITIVE_COLOR)
         self.AppendTextLine("Atac: +"+pointop(str(attrSlot[2][1]))+"%", self.SPECIAL_POSITIVE_COLOR)
         self.AppendSpace(5)

         PET_FILE_NAME = "%s/pet_skill.txt" % app.GetLocalePath()
         petSkillInfo = pack_open(PET_FILE_NAME, "r").readlines()

         petSkillCount = 0

         if metinSlot[2] != 0:
           for skillNumber in range(1, len(petSkillInfo) + 1):
             if ((metinSlot[2]) & (1 << skillNumber)):
               petSkillTable = petSkillInfo[skillNumber-1][:-1].split("\t")
               self.AppendTextLine(petSkillTable[1], self.SPECIAL_POSITIVE_COLOR)
               petSkillCount += 1

         if petSkillCount == 0:
           self.AppendTextLine("Animalutul nu are skilluri.", self.SPECIAL_POSITIVE_COLOR)

game/src/char_item.cpp:
Cautati

Cod:
if (item->GetVnum() >= 55701 && item->GetVnum() <= 55704)

Si putin mai jos, inainte de prima linie de genul (vedeti ca sunt doua, inainte de PRIMA):
Cod:
DBManager::instance().DirectQuery("UPDATE new_petsystem SET id = %d WHERE id = %d", item2->GetID(), item->GetID());

Puneti asta

Cod:
               {
             char skillQuery[QUERY_MAX_LEN];
             snprintf(skillQuery, sizeof(skillQuery), "SELECT skill0, skill1, skill2 FROM new_petsystem WHERE id=%d", item->GetID());
             std::unique_ptr<SQLMsg> skillSQL(DBManager::instance().DirectQuery(skillQuery));

             long petSkills = 0;

             if (skillSQL->Get()->uiNumRows > 0)
             {
               MYSQL_ROW row = mysql_fetch_row(skillSQL->Get()->pSQLResult);

               for (int i = 0; i < 3; i++)
               {
                 int skill = 0;
                 str_to_number(skill, row[i]);

                 if (skill <= 0)
                   continue;

                 petSkills += 1 << skill;
               }
             }

             item2->SetSocket(2, petSkills);
           }

Daca primiti eroare legata de "unique_ptr", inlocuiti in codul meu cu "auto_ptr".

Sursa : Cataclismo
 
  • Like
Reacții: #TrC