zatruta broń 20436 66

O temacie

Autor mass1500

Zaczęty 31.12.2011 roku

Wyświetleń 20436

Odpowiedzi 66

mass1500

mass1500

Użytkownicy
posty149
Propsy11
ProfesjaGracz
  • Użytkownicy
ma ktoś pomysł jak zrobić zatruty miecz który ma na przykład 10% szans na zatrucie myśle że można coś pokombionwać w B_asssess_damage

z góry dzięki za pomoc
 

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.

Bogdan Zwei

zatruta broń
#1 2011-12-31, 15:30(Ostatnia zmiana: 2011-12-31, 15:31)
Według mnie to trzeba byłoby zrobić Tick_Tock'a, w którym będzie co jakiś czas odbierało życie, bo w sposób AI_StartState nie da rady, ponieważ przeciwnik nie będzie się ruszał.
 
: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.

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy

RafalBudzis

zatruta broń
#2 2011-12-31, 15:33(Ostatnia zmiana: 2011-12-31, 15:35)
Ja zrobił bym tak:
- robisz powiedzmy 5 zmiennych C_NPC
- przy zatruciu przypisujesz (pustą zmienną C_NPC/już nie zatrutego NPC) do NPC uderzonego
- i przypisujesz przykładowo do aivar[49] tej postaci liczbę 50

- w Tick Tocku zabierasz HP jeżeli dany NPC ma aivar większy od jeden przy okazji zmniejszasz aivar o jeden zeby zatrucie się kończyło

mass1500

mass1500

Użytkownicy
posty149
Propsy11
ProfesjaGracz
  • Użytkownicy

mass1500

zatruta broń
#3 2011-12-31, 15:34(Ostatnia zmiana: 2011-12-31, 15:38)
a wie ktoś może jak zrobić takiego tik toka

edit///////////////////////////////
//////////////////////////////////

Rafał możesz to jakoś jaśniej wytłumaczyć?
 

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy

RafalBudzis

zatruta broń
#4 2011-12-31, 15:46(Ostatnia zmiana: 2012-04-10, 21:05)
Co do tick_tocka masz tutaj
http://themodders.org/index.php?/topic/89-wywolywanie-skryptu-co-xx-czyli-wywolanie-skryptu-co-18-sekundy/

zaraz dopisze szczegóły

robisz w storyglobals 5 zmiennych

var C_NPC zatruty1;
var C_NPC zatruty2;
var C_NPC zatruty3;
var C_NPC zatruty4;
var C_NPC zatruty5;

w startup przypisujesz do nich swoją postać

zatruty1 = hero;
zatruty2 = hero;
zatruty3 = hero;
zatruty4 = hero;
zatruty5 = hero;

Robisz funkcje która będzie uruchamiana przy uderzeniach mieczem (poszukaj tutoriala o mieczach runicznych bo zamiast efektu bedziesz wywoływał to)

if (zatruty1.aivar[49] == 0 ) {
zatruty1 = other;
zatruty1.aivar[49] = 50;
}else if (zatruty2.aivar[49] == 0 ) {
zatruty2 = other;
zatruty2.aivar[49] = 50;
}else if (zatruty3.aivar[49] == 0 ) {
zatruty3 = other;
zatruty3.aivar[49] = 50;
}else if (zatruty4.aivar[49] == 0 ) {
zatruty4 = other;
zatruty4.aivar[49] = 50;
}else if (zatruty5.aivar[49] == 0 ) {
zatruty5 = other;
zatruty5.aivar[49] = 50;
};


a w TickTock

if (zatruty1.aivar[49] != 0 ) {
zatruty1.attribute[ATR_HITPOINTS]=zatruty1.attribute[ATR_HITPOINTS]-2;//odejmowanie 2 punktów HP
zatruty1.aivar[49]=zatruty1.aivar[49]-1;//odliczanie
};

if (zatruty2.aivar[49] != 0 ) {
zatruty2.attribute[ATR_HITPOINTS]=zatruty2.attribute[ATR_HITPOINTS]-2;//odejmowanie 2 punktów HP
zatruty2.aivar[49]=zatruty2.aivar[49]-1;//odliczanie
};

if (zatruty3.aivar[49] != 0 ) {
zatruty3.attribute[ATR_HITPOINTS]=zatruty3.attribute[ATR_HITPOINTS]-2;//odejmowanie 2 punktów HP
zatruty3.aivar[49]=zatruty3.aivar[49]-1;//odliczanie
};

if (zatruty4.aivar[49] != 0 ) {
zatruty4.attribute[ATR_HITPOINTS]=zatruty4.attribute[ATR_HITPOINTS]-2;//odejmowanie 2 punktów HP
zatruty4.aivar[49]=zatruty4.aivar[49]-1;//odliczanie
};

if (zatruty5.aivar[49] != 0 ) {
zatruty5.attribute[ATR_HITPOINTS]=zatruty5.attribute[ATR_HITPOINTS]-2;//odejmowanie 2 punktów HP
zatruty5.aivar[49]=zatruty5.aivar[49]-1;//odliczanie
};

mass1500

mass1500

Użytkownicy
posty149
Propsy11
ProfesjaGracz
  • Użytkownicy
a może mi ktoś takiego tik toka zrobić bo na moim kompie spacer sobie jaja robi i tylko się wkurwiam jak mam go włączyć
 

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy
Weź sobie świat z mojego otwartego projektu (wypakowujesz z paczki .mod świat .ZEN)
http://budzis.republika.pl/mody/Budzis_Skrypt_Mod.html

możesz też pobrać wszystkie skrypty mojej modyfikacji

Demonical Monk

Demonical Monk

Użytkownicy
posty145
Propsy152
  • Użytkownicy

Demonical Monk

zatruta broń
#7 2011-12-31, 17:13(Ostatnia zmiana: 2011-12-31, 17:13)
Zrobiłeś sobie 5 symboli, które w praktyce są wskaźnikami na to samo.

Mamy taki kod:
var C_NPC zatruty1;
var C_NPC zatruty2;

zatruty1 = hero;
zatruty2 = hero;

zatruty1.aivar[49] = 30;
zatruty2.aivar[49] = 50;

'zatruty1' i 'zatruty2' to w praktyce wskaźniki na 'hero'. Pytanie, ile będzie wynosić 'zatruty1.aivar[49]' po wykonaniu tego kodu? Jak odpowiesz '30' to masz wpiernicz.
 

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy

RafalBudzis

zatruta broń
#8 2011-12-31, 17:23(Ostatnia zmiana: 2011-12-31, 17:25)
wiadomo ze 50

var C_NPC zatruty1;//deklarujemy 1 zmienną
var C_NPC zatruty2;//deklarujemy 2 zmienną

zatruty1 = hero;//przypisujemy do niej postać
zatruty2 = hero;//przypisujemy do niej postać

zatruty1.aivar[49] = 30;//zmieniamy najpierw wartość aivar NASZEJ postaci na 30
zatruty2.aivar[49] = 50;//a potem zmieniamy wartość tego samego aivar`a na 50

Końcowy rezultat 50 Ale co to ma do mojego kodu ? przed przypisaniem wartości aivar`a przypisuje do mojej zmiennej NPC other czyli atakowanego i dopiero potem zmieniam aivar`a

hero przypisałem aby mieć wartość 0 czyli nie zatruty na początek

Demonical Monk

Demonical Monk

Użytkownicy
posty145
Propsy152
  • Użytkownicy

Demonical Monk

zatruta broń
#9 2011-12-31, 22:53(Ostatnia zmiana: 2011-12-31, 22:53)
Trzymanie tego w takiej formie to nie najlepszy pomysł. Co jak wpadnę w furię i będę sobie chciał zatruć pół miasta na szybko? Jest Ikarus, jest gtools, można to napisać po ludzku.
 

mass1500

mass1500

Użytkownicy
posty149
Propsy11
ProfesjaGracz
  • Użytkownicy
Trzymanie tego w takiej formie to nie najlepszy pomysł. Co jak wpadnę w furię i będę sobie chciał zatruć pół miasta na szybko? Jest Ikarus, jest gtools, można to napisać po ludzku.


a jak byś to napisał w ikarusie?
 


mass1500

mass1500

Użytkownicy
posty149
Propsy11
ProfesjaGracz
  • Użytkownicy
a jest jakaś możłiwość aby to zrobić bez tick tocka?
 

Sawik

Sawik

Moderator działu
Rebel
posty4772
Propsy3197
ProfesjaNierób
  • Moderator działu
  • Rebel
a jest jakaś możłiwość aby to zrobić bez tick tocka?
Jest używając LeGo. I jego FrameFunctions.
 
Życzę wam seksu analnego po stronie biernej.
Dropbox +500 mb na start
LowPoly
Wykonanie modelu niskopoligonowego to sztuka kompromisu. Nie jest to jedynie uproszczenie modelu wysokopoligonowego, ale głęboka modyfikacja oraz podejmowanie decyzji często zmieniających wygląd pierwotny obiektu, tak by przy najmniejszej ilości trójkątów uzyskać jak najwierniej odwzorowany kształt oryginału. Nie można też zapomnieć o tym iż musi nadal wyglądać przekonywająco i tak balansować by uzyskać efekt optymalny.

Podstawowym założeniem jest, że model nie powinien mieć zbędnych, niewidocznych dla gracza detali włączonych w geometrie. Większość obiektów jakie znajdują się w grze powinna prezentować się najlepiej z odległości około 3-5 metrów. Wszelkie detale, które zanikają, wydają się płaskie lub zlewają się z bryłą modelu należy uznać za zbędne i pozostawić je na normal mapie.

Fakt, iż gracz będzie w stanie podejść bliżej do obiektu i zobaczyć go z mniejszej niż 3m odległości nie powinno stanowić większego problemu, gdyż większą rolę odgrywają wtedy tekstury oraz dodatkowy detal zależny od materiału obiektu. To właśnie kompromis między wydajnością, a szczegółowością otoczenia.

Detal, którego nie widać z 3-5 metrów nie powinnien istnieć w geometrii modelu.
Krawędzie znajdujące się blisko siebie, które zlewają się z większej odległości należy uprościć do wspólnej płaszczyzny

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator

inż. Avallach
Administrator

zatruta broń
#14 2012-01-01, 11:27(Ostatnia zmiana: 2012-01-01, 11:28)
Strasznie mało wydajne, już lepiej gToolsem i od razu dać odpowiednie opóźnienie (liczone w sekundach powinno wystarczyć, co klatkę byłoby marnotrawstwem).
W każdym razie ticktocki (ze Spacera/LeGo/gToolsa) są potrzebne tylko jeśli chcesz rozłożyć obrażenia w czasie, jeśli nie, to możesz zrobić bez nich (ale co właściwie by ta trucizna miała wtedy robić?).

Sawik

Sawik

Moderator działu
Rebel
posty4772
Propsy3197
ProfesjaNierób
  • Moderator działu
  • Rebel
Avallach jest też funkcja FF_ApplyExt która działa z opóźnieniem działa to mniej więcej tak jak to co ty podałeś tylko że tam czas podajemy w milisekundach.
 
Życzę wam seksu analnego po stronie biernej.
Dropbox +500 mb na start
LowPoly
Wykonanie modelu niskopoligonowego to sztuka kompromisu. Nie jest to jedynie uproszczenie modelu wysokopoligonowego, ale głęboka modyfikacja oraz podejmowanie decyzji często zmieniających wygląd pierwotny obiektu, tak by przy najmniejszej ilości trójkątów uzyskać jak najwierniej odwzorowany kształt oryginału. Nie można też zapomnieć o tym iż musi nadal wyglądać przekonywająco i tak balansować by uzyskać efekt optymalny.

Podstawowym założeniem jest, że model nie powinien mieć zbędnych, niewidocznych dla gracza detali włączonych w geometrie. Większość obiektów jakie znajdują się w grze powinna prezentować się najlepiej z odległości około 3-5 metrów. Wszelkie detale, które zanikają, wydają się płaskie lub zlewają się z bryłą modelu należy uznać za zbędne i pozostawić je na normal mapie.

Fakt, iż gracz będzie w stanie podejść bliżej do obiektu i zobaczyć go z mniejszej niż 3m odległości nie powinno stanowić większego problemu, gdyż większą rolę odgrywają wtedy tekstury oraz dodatkowy detal zależny od materiału obiektu. To właśnie kompromis między wydajnością, a szczegółowością otoczenia.

Detal, którego nie widać z 3-5 metrów nie powinnien istnieć w geometrii modelu.
Krawędzie znajdujące się blisko siebie, które zlewają się z większej odległości należy uprościć do wspólnej płaszczyzny

mass1500

mass1500

Użytkownicy
posty149
Propsy11
ProfesjaGracz
  • Użytkownicy
nagle zaczął mi działać spacer ale to bez znaczenia chodzi o to że zrobiłem tak samo jak mówił tutek o tick tockach lecz nie wyświetla mi się żadna cyfra/cyfry na ekranie a tak przy okazji to chcaiłem się jeszcze zapytać co trzeba zrobić żeby monolog zaczął działać (chodzi o monolog do piły z drewnem) dałem funckje vobowi w spacerze napisałem zmienną w ai_constans i dałem jej równe 8 napisałem dialog do przedmitu (tylko opcje kończącą dialog bo narazie chce zobaczyć czy wogóle monolog działa)
 

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy
nagle zaczął mi działać spacer ale to bez znaczenia chodzi o to że zrobiłem tak samo jak mówił tutek o tick tockach lecz nie wyświetla mi się żadna cyfra/cyfry na ekranie

Świat trzeba zapisać z inną nazwą bo podmienianie plików czasem szwankuje.
Potem żeby wczytało nasz świat z folderu trzeba pozbyć się paczki ze światami (data/worlds.vdf) pozbyć można się jej na 3 sposoby
a) zmienić jej rozszerzenie dużo osób podaje ze zmieniamy na .disable ale jak zmienisz na .abc plik tez nie bedzie czytany
b) przenieść paczkę do innego folderu
c) usunąć ją z komputera

co trzeba zrobić żeby monolog zaczął działać (chodzi o monolog do piły z drewnem) dałem funckje vobowi w spacerze napisałem zmienną w ai_constans i dałem jej równe 8 napisałem dialog do przedmitu (tylko opcje kończącą dialog bo narazie chce zobaczyć czy wogóle monolog działa)

To samo co u góry pewnie wczytujesz oryginalny świat z paczki ale jeśli nie to inne wskazówki.

Pokaż ten monolog bo może być tak ze ustawiłeś parametr zagadywania na TRUE jeśli tak postać sama do siebie zagada i zakończy dialog. Dialog koniec nie jest dobry do testów ;)

Może być tak ze funkcje nie właściwie podałeś w spacerze powinieneś wpisać
OnStateFunc:nazwa_funkcji a w skryptach funkcja powinna mieć w nazwie _S1
func void nazwa_funkcji_s1(){
...

maciejh

maciejh

Rzeka
posty779
Propsy258
ProfesjaScenarzysta
  • Rzeka

maciejh
Rzeka

zatruta broń
#18 2012-01-05, 15:45(Ostatnia zmiana: 2012-01-05, 15:46)
a tak przy okazji to chcaiłem się jeszcze zapytać  co trzeba zrobić żeby monolog zaczął działać (chodzi o monolog do piły z  drewnem) dałem funckje vobowi w spacerze napisałem zmienną w  ai_constans i dałem jej równe 8 napisałem dialog do przedmitu (tylko  opcje kończącą dialog bo narazie chce zobaczyć czy wogóle monolog  działa)



A dałeś, że że dialog wykonuje PC_Hero?
 

mass1500

mass1500

Użytkownicy
posty149
Propsy11
ProfesjaGracz
  • Użytkownicy
nie wiem co jest nie tak przeniosłem wysztkie światy z folderu data (tak dla pewności) i nie działa ani tick tock ani monolog co dziwniejsze tak dla testu usunąłem parę vobów ze świata żeby zobaczyć czy wczytuje mi się poprawny świat i po wczytaniu świata vobów nie było czyli świat się wczytuje dobry, a więc problem leży w skryptach pytanie tylko gdzie oto moje skrypty


do monologu
Spoiler
var int bow;
var int crossbow;


FUNC VOID SAWWEAPON ()
{
        var C_NPC her;  her = Hlp_GetNpc(PC_Hero);
       
        if  (Hlp_GetInstanceID(self)==Hlp_GetInstanceID(her))
        {      
                self.aivar[AIV_INVINCIBLE]=TRUE;
                PLAYER_MOBSI_PRODUCTION =      MOBSI_SAWWEAPON;
                Ai_ProcessInfos (her);
        };
};


//==============================================================
//==============================================================
//=============================KONIEC===========================
//==============================================================
//==============================================================
INSTANCE PC_SaWWeapon_End (C_Info)
{
        npc            = PC_Hero;
   nr            = 999;
   condition      = PC_sawWeapon_End_Condition;
   information      = PC_sawWeapon_End_Info;
   permanent      = TRUE;
   description      = DIALOG_ENDE;
};

FUNC INT PC_sawWeapon_End_Condition ()
{

   if (PLAYER_MOBSI_PRODUCTION == MOBSI_SAWWEAPON)
        {      
                return TRUE;
        };
};

FUNC VOID PC_sawWeapon_End_Info()
{
        B_ENDPRODUCTIONDIALOG ();
};
Spoiler
const int   MOBSI_SawWeapon               = 8;

(nie chciałem kopiować całego pilku ai_constans dlatego skopiwałem tylko tą linijke bo tylko ją dopisałem

do tick tocka
Spoiler
   var int minitime;
func void tick_tock()
{
        PrintScreen (inttostring(minitime/10), minitime%100,minitime%100,"FONT_OLD_20_WHITE.TGA",2);
        minitime=minitime+1;
};
Spoiler
FUNC VOID INIT_NewWorld()
{
   Wld_SendTrigger("TICK_TOCK");  
  B_InitMonsterAttitudes ();
   B_InitGuildAttitudes();
   B_InitNpcGlobals ();
   
   B_ENTER_NEWWORLD ();
   
   // ------- Diebesgilde abtöten ------
   if (Diebesgilde_Verraten)
   && (Andre_Diebesgilde_aufgeraeumt != TRUE)
   {
      if (!Npc_IsDead(Cassia))
      || (!Npc_IsDead(Jesper))
      || (!Npc_IsDead(Ramirez))
      {
         B_KillNpc(VLK_447_Cassia);
         B_KillNpc(VLK_446_Jesper);
         B_KillNpc(VLK_445_Ramirez);
         Andre_Diebesgilde_aufgeraeumt = TRUE;
      };
   };

(jak coś to tylko w tej funckji coś dopisałem)
 


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