Użytkownik Eha'y dnia czwartek, 30 września 2010, 21:31 napisał
Sorry, zapomniałem się zalogować
. To u góry to ja pisałem xD
Mam taki jeden problem (tak, tak... znowu...
). Otóż tworzę sobie wilkołaki, ale chciałbym, żeby było tak jak w tych mitach/legendach/czy co to jest. Chodzi mi o to, że chcę aby tylko broń ze srebra mogła je ranić (w wersji 1.69 w właściwościach przedmiotu jest takie coś, jak "materiał"). Jeśli nie da się tak zrobić, to może być, że tylko broń o określonej etykiecie/ResRefie może je ranić. Proszę o pomoc. 
Najprościej,aby uzyskać ten efekt wyposaż tego wilkołaka w jakiś dowolny przedmiot,np może być skóra i daj odporność na wszystkie obrażenia np 20.Skrypt umieść w skryptach potwora OnPhysicalAttacked.
void main()
{
object Gracz = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC); // Lub GetLastAttacker();
if (GetIsObjectValid(Gracz) == TRUE && GetDistanceToObject(Gracz) < 3.0)
if (GetTag(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,Gracz)) == "SrebrnyMiecznaWilkolaki")
{
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(d20(2),DAMAGE_TYPE_POSITIVE),OBJECT_SELF); //Obrazenia do ustalenia
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_DIVINE),OBJECT_SELF);
}
}
Widać,że skrypcik jest banalnie prościutki.
Rzecz jasna,że obrażenia muszą być większe od odporności.Wykonałem podobne zdarzenie,lecz troszkę inaczej rozwiązałem,a w Twoim przypadku boję się jednak o synchronizację.Jak ten pomysł nie przypadnie do gustu,to jest drugie rozwiązanie,które można zrobić na kilka sposobów,a to jeden z nich przy następnych sam pogłówkuj.
Robisz jw,tylko z tą różnicą,że generujesz osobny przedmiot na obrażenia niech będą pazury.
void main()
{
object Gracz = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC);
object Pazury = GetItemPossessedBy(OBJECT_SELF,"OdpornoscEnPoz");
if (GetIsObjectValid(Gracz) == TRUE && GetDistanceToObject(Gracz) < 3.0)
if (GetTag(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,Gracz)) == "SrebrnyMiecznaWilkolaki")
{
DestroyObject(Pazury);
AddItemProperty(DURATION_TYPE_TEMPORARY,ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_POSITIVE,IP_CONST_DAMAGEBONUS_2d12),GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,Gracz),22.1); // Obrazenia do ustalenia
Jak widać też nie jest skomplikowany,tylko z tą różnicą,że zamieszczasz OnHeartbeat i pamiętaj o jednym serce bije co jedną rundę czyli 6 sekund takie może mieć maksymalne opóźnienie.
[Dodano po 18 godzinach]
Użytkownik Eha'y dnia sobota, 2 października 2010, 18:55 napisał
No byłbym wdzięczny za taki samouczek.
Przyznaję się lojalnie,że już wcześniej czytałem,żeby nie strzępić języka po próżnicy przygotowałem już ogólny zarys i muszę się też pochwalić,iż znalazłem kilka tłumaczeń CDP,odnośnie naszego tematu.Trzeba zarazem zaznaczyć,że to jednak będzie samouczek(żebyśmy się dobrze zrozumieli) i Ty masz się uczyć,a nie dostawać gotowce na wszystkie nurtujące Cię problemy.W każdej grze samouczek też nie wyczerpuje dogłębnie tematu,chodzi tylko o ogólne panujące zasady.Pobieżnie przygotowałem i okazuje się,że pierwsza lekcja może zająć conajmniej 700 linijek,więc chyba nie wyobrażasz sobie,że tutaj będzie zamieszczony,więc podaj jakiś pomysł.Chyba orientujesz się - zresztą napisałem od kiedy mam ten internet(no teraz już upłynęło kilka dni),to w tym temacie jestem jeszcze bardziej zielony,aniżeli Ty w skryptach,więc coś wymyśl,aja biorę się do roboty.
PS
Może "Lionel"a "zgwałć" (tylko nie tak dosłownie,lepiej już Mu piwo postaw )widać,że jest kumaty i może pomoże.