dodatkowe bonusy po nałożeniu miecza 8782 21

O temacie

Autor pawbuj

Zaczęty 27.12.2009 roku

Wyświetleń 8782

Odpowiedzi 21

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
jak w temacie zrobiłem skrypt miecza. po nałożeniu ma zwiększać ochronę przed ostrzami i strzałami. robię wzorcowo na wzór amuletów i co ?    .... i guzik - nie działa.

poniiżej skrypt[codebox]   name             =   "Antyczny miecz bojowy";

   mainflag          =   ITEM_KAT_NF;
   flags             =   ITEM_SWD;   
   material          =   MAT_METAL;

   value             =   111;

   damageTotal         =    33;
   damagetype          =    DAM_EDGE;
   range             =     100;      

   cond_atr[2]         =    ATR_STRENGTH;
   cond_value[2]        =    13;
   visual             =   "ItMw_1H_Sword_04.3DS";

   description         = name;
   TEXT[0]         = "Broń, którą można naostrzyć.";
   TEXT[1]         = "Należała do kupca z Wysp Południowych.,";
   TEXT[2]            = NAME_Damage;               COUNT[2]   = damageTotal;
   TEXT[3]          = NAME_Str_needed;            COUNT[3]   = cond_value[2];
   TEXT[4]          = NAME_OneHanded;
   TEXT[5]            = NAME_Value;               COUNT[5]   = value;
   
   on_equip      =   Equip_ItMw_1H_Sword_99;
   on_unequip      =   UnEquip_ItMw_1H_Sword_99;
};


FUNC VOID Equip_ItMw_1H_Sword_99()
   {
      self.protection [PROT_EDGE] += 8;
      self.protection [PROT_BLUNT] += 8;
   };


   FUNC VOID UnEquip_ItMw_1H_Sword_99()
   {
      self.protection [PROT_EDGE] -= 8;
      self.protection [PROT_BLUNT] -= 8;
   };[/codebox]
 

Axel

Axel

Użytkownicy
Król Mount & Blade
posty244
Propsy2
  • Użytkownicy
  • Król Mount & Blade
Gdzie masz początek skryptu tzn instance?
 
Mount & Blade i Dofus wymiatają :D

Jeżeli ktoś gra w Dofusa niech napisze do mnie na pw !



Wie is ezel? Ik.

Item editor - M&B

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
sorry, nie wkleiłem[codebox]INSTANCE ItMw_1H_Sword_99 (C_Item)//
{   [/codebox]
 

jendrzejs

jendrzejs

Użytkownicy
posty586
Propsy31
Profesjabrak
  • Użytkownicy
A amulet/pierścien nie może ci wystarczyc ? Musi byc konkretnie miecz ?
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator

inż. Avallach
Administrator

dodatkowe bonusy po nałożeniu miecza
#4 2009-12-27, 19:37(Ostatnia zmiana: 2009-12-27, 19:42)
Przecież to banalne, tak jak w amuletach daj parametr on_equip i on_unequip ustawiony na funkcję która będzie ustawiała powiedzmy self.protection [PROT_EDGE] += 10;

//EDIT: Zaraz, przecież już tak masz! Więc w czym problem? Skrypt jest śmiesznie prosty i powinien działać bez problemu.

Pojawia ci się jakiś komunikat błędu przy nakładaniu tego miecza? Co się właściwie dzieje?
Proponuję w funkcji nakładania dodać funkcję PrintScreen z jakimkolwiek napisem. Jeśli się nie wyświetli, znaczy to że z jakiegoś powodu funkcja nie jest w ogóle czytana. A jeśli się wyświetli będzie to znaczyło że albo zmienna "self" jakimś cudem nie przechowuje instance postaci która zakłada miecz, albo po prostu obrona się poprawia, ale nie jest wyświetlana w oknie statystyk.

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
napis sie pojawia, ale obrona nie w menu statystyk.
 


pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
dobra udało się, ponizej skrypt jak to musi wyglądać :[codebox]FUNC VOID Equip_ItMw_1H_Sword_99()
   {
      
      self.protection [PROT_EDGE]    +=    10;
      self.protection [PROT_BLUNT] +=    10;
      self.protection [PROT_POINT] +=    10;
      self.protection [PROT_FIRE]  +=    0;
      self.protection [PROT_MAGIC] +=    0;
      };

   FUNC VOID UnEquip_ItMw_1H_Sword_99()
   {
      self.protection [PROT_EDGE]    -=       10;
      self.protection [PROT_BLUNT] -=    10;
      self.protection [PROT_POINT] -=    10;
      self.protection [PROT_FIRE]  -=    0;
      self.protection [PROT_MAGIC] -=    0;
      
   };[/codebox]żeby nie zakładać 2 posta, zapytam jak można zwiększyć obrązenia od danego miecza, np. po naostrzeniu? próbopwałem to zrobić w ten sposób, ale nic.[codebox]DAMAGETOTAL_ItMw_1H_Sword_99         +    11;[/codebox]
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator

inż. Avallach
Administrator

dodatkowe bonusy po nałożeniu miecza
#8 2009-12-27, 21:03(Ostatnia zmiana: 2009-12-27, 21:04)
dobra udało się, ponizej skrypt jak to musi wyglądać :[codebox]FUNC VOID Equip_ItMw_1H_Sword_99()
   {
      
      self.protection [PROT_EDGE]    +=    10;
      self.protection [PROT_BLUNT] +=    10;
      self.protection [PROT_POINT] +=    10;
      self.protection [PROT_FIRE]  +=    0;
      self.protection [PROT_MAGIC] +=    0;
      };

   FUNC VOID UnEquip_ItMw_1H_Sword_99()
   {
      self.protection [PROT_EDGE]    -=       10;
      self.protection [PROT_BLUNT] -=    10;
      self.protection [PROT_POINT] -=    10;
      self.protection [PROT_FIRE]  -=    0;
      self.protection [PROT_MAGIC] -=    0;
      
   };[/codebox]żeby nie zakładać 2 posta, zapytam jak można zwiększyć obrązenia od danego miecza, np. po naostrzeniu? próbopwałem to zrobić w ten sposób, ale nic.[codebox]DAMAGETOTAL_ItMw_1H_Sword_99         +    11;[/codebox]
Przecież nie ma czegoś takiego jak DAMAGETOTAL_ItMw_1H_Sword_99, chyba że sam definiowałeś gdzieś indziej.
Są dwa sposoby, jednego ci nie podam (:/ ), zresztą i tak nadaje się tylko dla broni unikatowych, które w grze występują tylko w jednym egzemplarzu, a drugi, w wielu sytuacjach o wiele lepszy to podmiana miecza na inny, różniący się tylko obrażeniami. Na dodatek możesz jeszcze robić to z prototypu (vide Szpon Beliara).

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
nie można tego zdefiniować za pomocą funkcji?

ej zawsze istnieje jakieś eleganckie rozwiązanie w każdej sytuacji :/  ;p
 

Axel

Axel

Użytkownicy
Król Mount & Blade
posty244
Propsy2
  • Użytkownicy
  • Król Mount & Blade
Przecież to jest proste i uniwersalne rozwiązanie , tak samo można zrobić np miecze runiczne.
 
Mount & Blade i Dofus wymiatają :D

Jeżeli ktoś gra w Dofusa niech napisze do mnie na pw !



Wie is ezel? Ik.

Item editor - M&B

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Spróbuj tak, ale głowy nie dam :/ damageTotal.ItMw_1H_Sword_99 +=10;

maciejG

maciejG

Użytkownicy
posty450
Propsy1
  • Użytkownicy
damageTotal.ItMw_1H_Sword_99 +=10;
Jeżeli już to ItMw_1H_Sword_99.damagetotal +=10;, ale na pewno nie działa.
 
Spoiler

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator

inż. Avallach
Administrator

dodatkowe bonusy po nałożeniu miecza
#13 2009-12-27, 21:28(Ostatnia zmiana: 2009-12-27, 21:55)
Spróbuj tak, ale głowy nie dam :P damageTotal.ItMw_1H_Sword_99 +=10;

Nawet gdyby działało to ostrzegałem, można używać tylko do mieczy które występują raz w grze. Dlatego przy niedużej liczbie planowanych możliwości "ulepszeń" proponuję zostać przy podmienieniu miecza na podobny ;)

@down: Wiem, wiem, jednak dotąd nie widziałem zastosowania tego w żadnym modzie. Zresztą jeszcze zanim odpisałeś zedytowałem posta na treść zniechęcającą do tego sposobu którą widać powyżej.

Radziłbym nie przeceniać przeciętnych skrypterów z forum, często nie mieli do czynienia z jakimkolwiek językiem programowania i nawet jeśli intuicyjnie domyślają się że jest coś podobnego (pomysł pawbuja z DAMAGETOTAL_ItMw_1H_Sword_99) to nie wiedzą że najpierw się określa obiekt, potem właściwość, a pomiędzy nimi musi być kropka :lol2:

Wiem że taka chęć zachowania pewnych rozwiązań dla siebie może wydawać się nieetyczna, aczkolwiek w momencie kiedy na to wpadłem, nie było zastosowane w żadnym modzie, wszędzie były podmiany na inny przedmiot, zresztą chyba nadal tak jest, podejrzewam że dopiero miecz runiczny w CZ będzie ewoluował przy użyciu tego właśnie sposobu.

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Cytuj
To właśnie to super tajne rozwiązanie o którym nie chciałem pisać 25.gif. A teraz wszyscy będą o nim wiedzieli 12.gif
Dlaczego nie chcesz się dzielić "tą wiedzą"? Jej znajomość jest wręcz... śmieszna. Każdy kto programuje/programował obiektowo notorycznie z tego korzysta.

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
[codebox]ItMw_1H_Sword_99.damagetotal +=10;[/codebox]

błędu nie wyrzuca, ale nie wiem czy obrażenia się zwiększyły - w statystyce miecza nic się nie zmienia, kiedy zakładam.
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator

inż. Avallach
Administrator

dodatkowe bonusy po nałożeniu miecza
#16 2009-12-27, 21:50(Ostatnia zmiana: 2009-12-27, 21:52)
Zdradzę i to i napiszę że musisz jeszcze w skrypcie "odświeżyć" linijkę opisu zawierającą info o damage. Po prostu nadajesz jej jeszcze raz normalną treść.
ItMw_1H_Sword_99.COUNT[2] = ItMw_1H_Sword_99.damageTotal;W ten sposób można w trakcie gry dynamicznie zmieniać dowolną właściwość przedmiotu czy NPC, tylko z plikiem 3ds, teksturą i przypisaniem w ekwipunku mogą być problemy.

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
[codebox]ItMw_1H_Sword_99.COUNT[2]   = 43;   [/codebox]

zrobiłem tak i działa .

czy można dla jednego miecza pomieszać kilka rodzajów damage tj NP: DAM_FLY i DAM_FIRE
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Spróbuj przypisać tak:
damagetype=DAM_FLY|DAM_FIRE
Oczywiście tj. do instancji przedmiotu.

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
oczywiście działa. DZIęKUJę ADANOSIE!!
 


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