Reklama
Strona 2 z 2 PierwszaPierwsza 12
Pokazuje wyniki od 16 do 19 z 19

Temat: [7.92][C++] Inventory item odbija obrażenia

  1. #16
    Avatar karQt
    Data rejestracji
    2006
    Posty
    52
    Siła reputacji
    19

    Domyślny

    O a ja sie zastanawiałem co powoduje crash ;) Nie mówcie że skryp do dupy, wystarczy gdzieniegdzie if'a dodać i będzie działac ;D

    Jak coś wymyślę to podrzucę

  2. #17
    Avatar Aragornik
    Data rejestracji
    2007
    Posty
    19
    Siła reputacji
    0

    Domyślny

    I co teraz działa?
    WOC

  3. Reklama
  4. #18
    Chojrak_

    Domyślny

    Cholera, nowymi archeologami zostaja Pimpeq i Aragornik ;x

  5. #19
    Avatar Pimpeq
    Data rejestracji
    2006
    Położenie
    :D
    Wiek
    31
    Posty
    39
    Siła reputacji
    0

    Domyślny

    Początek skryptu jest dobry, ale dalej to już masakra ;/ piszę od nowa kod :

    W pliku game.cpp:
    Pod:
    Kod:
    bool Game::combatChangeHealth(CombatType_t combatType, Creature* attacker, Creature* target,
        int32_t healthChange, bool checkDefense /* = false */, bool checkArmor /* = false */)
    {
        const Position& targetPos = target->getPosition();
    Dodajemy:

    Kod:
    double returnDamage = 0;

    Pod
    Kod:
    damage = std::min(target->getHealth(), damage);
                if(damage > 0){
    dodajemy

    Kod:
    
    
    if(target->getPlayer()){
                         Player *player = target->getPlayer();                               
                                             
                         Item* item = player->getInventoryItem(SLOT_HEAD);
                         if(item){                                                   
                              const ItemType& head = Item::items[item->getID()];
                              if(head.abilities.returnDamage != 0){                        
                                  returnDamage += head.abilities.returnDamage;                    
                              }                                                                         
                         }
                         
                         item = player->getInventoryItem(SLOT_NECKLACE);
                         if(item){                                                   
                              const ItemType& neck = Item::items[item->getID()];
                              if(neck.abilities.returnDamage != 0){                        
                                  returnDamage += neck.abilities.returnDamage;                    
                              }                                                                         
                         }
                         
                         item = player->getInventoryItem(SLOT_ARMOR);
                         if(item){                                                   
                              const ItemType& armor = Item::items[item->getID()];
                              if(armor.abilities.returnDamage != 0){                        
                                  returnDamage += armor.abilities.returnDamage;                    
                              }                                                                         
                         }
                         
                         item = player->getInventoryItem(SLOT_LEGS);
                         if(item){                                                   
                              const ItemType& legs = Item::items[item->getID()];
                              if(legs.abilities.returnDamage != 0){                        
                                  returnDamage += legs.abilities.returnDamage;                    
                              }                                                                         
                         }
                         
                         item = player->getInventoryItem(SLOT_FEET);
                         if(item){                                                   
                              const ItemType& feet = Item::items[item->getID()];
                              if(feet.abilities.returnDamage != 0){                        
                                  returnDamage += feet.abilities.returnDamage;                    
                              }                                                                         
                         }
                         
                         item = player->getInventoryItem(SLOT_RING);
                         if(item){                                                   
                              const ItemType& ring = Item::items[item->getID()];
                              if(ring.abilities.returnDamage != 0){                        
                                  returnDamage += ring.abilities.returnDamage;                    
                              }                                                                         
                         }
                         
                         item = player->getInventoryItem(SLOT_LEFT);
                         if(item){                                                   
                              const ItemType& left = Item::items[item->getID()];
                              if(left.abilities.returnDamage != 0){                        
                                  returnDamage += left.abilities.returnDamage;                    
                              }                                                                         
                         }        
    
                         item = player->getInventoryItem(SLOT_RIGHT);
                         if(item){                                                   
                              const ItemType& right = Item::items[item->getID()];
                              if(right.abilities.returnDamage != 0){                        
                                  returnDamage += right.abilities.returnDamage;                    
                              }                                                                         
                         }    
                    returnDamage /= 100;                 
    }
                    if(!(int)(returnDamage*damage) == 0){
    if(attacker){
                            attacker->drainHealth(target, combatType, (int)(returnDamage*damage));
    }}

    I pod
    Kod:
    std::stringstream ss;
    ss << damage;
    addMagicEffect(list, targetPos, hitEffect);
    addAnimatedText(list, targetPos, textColor, ss.str());
    Dodajemy

    Kod:
    if(attacker){
    ss.str("");            
    if(!(int)(returnDamage*damage) == 0){
            ss << (int)(returnDamage*damage); 
    const Position& attackerPos = attacker->getPosition();
    
            addMagicEffect(list, attackerPos, NM_ME_DRAW_BLOOD);
            addAnimatedText(list, attackerPos, TEXTCOLOR_ORANGE,"-" + ss.str()); 
    }
    
    }
    Odświeżyłem temat, bo teraz gdy zdobyłem wiedzę i umiejętności, nareszcie udało mi się przepisać ten kod tak, by działał bez crashów.

    DZIAŁA! MOŻNA DODAWAĆ.
    Już dawno miałem na niego ochotę na moim ots ;]
    Ostatnio zmieniony przez Pimpeq : 25-06-2009, 22:39

    Interpreter lua ;) Sprawdź swoje skrypty bez odpalania otsa :P http://grzyby.no-ip.info/lua.exe

Reklama

Informacje o temacie

Użytkownicy przeglądający temat

Aktualnie 1 użytkowników przegląda ten temat. (0 użytkowników i 1 gości)

Podobne tematy

  1. 149Rp ,odbija sie po stracie eq
    Przez Skup Postaci w dziale Tibia
    Odpowiedzi: 9
    Ostatni post: 04-04-2013, 05:14
  2. Odpowiedzi: 24
    Ostatni post: 10-09-2012, 16:39
  3. Odpowiedzi: 25
    Ostatni post: 30-05-2010, 14:33
  4. Czy UE ma na każdej kratce takie same obrażenia ?
    Przez Shaolin Drex w dziale Tibia
    Odpowiedzi: 24
    Ostatni post: 28-02-2007, 16:54

Zakładki

Zakładki

Zasady postowania

  • Nie możesz pisać nowych tematów
  • Nie możesz pisać postów
  • Nie możesz używać załączników
  • Nie możesz edytować swoich postów
  •