Zabieranie pancerzy postacią i rozkładanie zwłok (3 dniowy cykl) 8514 5

O temacie

Autor RafalBudzis

Zaczęty 5.12.2010 roku

Wyświetleń 8514

Odpowiedzi 5

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy
Pomoce przy tworzeniu
http://themodders.org/index.php?topic=12139.msg121726#msg121726
http://themodders.org/index.php?topic=12178.msg122053#msg122053


Robię na przykładzie Necka w G1


Najpierw wybieramy pancerz i robimy z niego 2 przedmioty :
- pancerz bez mainflag zbroi (aby dało się go zabrać) zbroja fałszywka
- przedmiot z flags=ITEM_MULTI|ITEM_MISSION (aby postać nam nie znikała przy rozkładaniu)

przedmiot1:

INSTANCE GRD_ARMOR_Lmam(C_Item)
{
name = "Lekka zbroja Strażnika";

mainflag = ITEM_KAT_NF;//aby dało się zabrac
flags = 0;

protection [PROT_EDGE] = 45;
protection [PROT_BLUNT] = 45;
protection [PROT_POINT] = 5;
protection [PROT_FIRE] = 20;
protection [PROT_MAGIC] = 0;

value = VALUE_GRD_ARMOR_L;
wear = WEAR_TORSO;
visual = "grdl.3ds";
visual_skin = 0;
material = MAT_LEATHER;

description = name;
TEXT[1] = NAME_Prot_Edge; COUNT[1] = protection [PROT_EDGE];
TEXT[2] = NAME_Prot_Point; COUNT[2] = protection [PROT_POINT];
TEXT[3] = NAME_Prot_Fire; COUNT[3] = protection [PROT_FIRE];
TEXT[4] = NAME_Prot_Magic; COUNT[4] = protection [PROT_MAGIC];
TEXT[5] = NAME_Value; COUNT[5] = value;
};

przedmiot2:

INSTANCE nie_znikaj(C_Item)
{
name = "Magia Avallacha ^^ ";

mainflag = ITEM_KAT_ARMOR;//aby nie dało sie zabrać z ekwipunku
flags = ITEM_MULTI|ITEM_MISSION;//aby postać nie znikała (czyli to co Avallach nazwał magią (na pewno wie o co chodzi ale nie chciało mu się tłumaczyć :) ) po prostu itemy MISSION ze względu na swoją wagę nie mogą być skasowane)

value = VALUE_VLK_ARMOR_L;

wear = WEAR_TORSO;
 
visual = "vlkl.3ds";
visual_skin = 0;
material = MAT_LEATHER;

};


jak mamy przedmioty dajemy je naszej postaci która posiada pancerz

CreateInvItem (self, GRD_ARMOR_Lmam);
CreateInvItem (self, nie_znikaj);

jakby ktoś nie zajarzył dajemy je do Neka

do Story_Globals.d to
var int dzien;a do Startup.d to
dzien=0;będzie to nasza zmienna czasu na razie przypisujemy 0 żeby zachować neutralność bo nie ma dnia 0 w późniejszych krokach przypiszemy właściwy dzien


teraz idziemy dalej aby to wszystko działało trzeba zrobić skrypt który będziemy wywoływać co jakiś określony czas np.1-2 sek
jak zrobić uruchamianie naszego skryptu??

Pomoc jest tutaj
http://themodders.org/index.php?/topic/89-wywolywanie-skryptu-co-xx-czyli-wywolanie-skryptu-co-18-sekundy/

a więc przejdźmy do pisania samego skryptu który będziemy wywoływać

   
var C_NPC nekk; nekk = Hlp_GetNpc(GRD_282_Nek); //zmienna NPC przyda się w kolejnych krokach
//(if)jeśli mamy w ekwipunku fałszywkę
if (Npc_HasItems(hero, GRD_ARMOR_Lmam)>=1){
CreateInvItem (hero, GRD_ARMOR_L); //to utwórz prawdziwą
Npc_RemoveInvItem (hero, GRD_ARMOR_Lmam); //i usuń fałszywkę

//(if)jeżeli NEK NIE ma fałszywki (to jest po to jak by było więcej niż 1 NPC)
if (!Npc_HasItems(nekk, GRD_ARMOR_Lmam)>=1){
Mdl_SetVisualBody (nekk,"hum_body_Naked0", 0, 0,"Hum_Head_FatBald", 2,  1, -1); //usuwanie zbroi z wyglądu NPC
Npc_RemoveInvItem (nekk, GRD_ARMOR_L); //usuwanie właściwej zbroi NPC z ekwipunku
PrintScreen ("bez zbroji", -1,-1,"font_old_20_white.tga",2);
dzien=Wld_GetDay(); //dzień zabrania zbroi (rozpoczyna proces gnicia)
};

};

pierwsza cześć skryptu jeśli mamy do załatwienia 2 NPC kopiujemy drugi IF i wstawiamy go pod nim
czyli mamy już napisane w jaki sposób zabieramy zbroje to teraz nam został proces gnicia ja zrobiłem tylko 2 etapy szkielet a potem sama bryłka rudy zostająca po całej postaci

//1 dzień
if((dzien+1) == Wld_GetDay()){
Mdl_SetVisualBody (nekk,"Ske_Body3",DEFAULT,DEFAULT,"", DEFAULT, DEFAULT,-1); //zmiana w kościotrupa
PrintScreen ("trup", -1,-1,"font_old_20_white.tga",2);
};

//2 dzień
if((dzien+2) == Wld_GetDay()){

if (Npc_HasItems(nekk, nie_znikaj)>=1){
Npc_RemoveInvItem (nekk, nie_znikaj); //spowoduje usuniecie blokady usunięcia postaci
Wld_InsertItem (ItMiNugget, "LOCATION_15_IN_2"); //spowoduje pozostawienie bryłki rudy po postaci fajnie by było dać tam np. kosc goblina z G2 ;)
};
PrintScreen ("usun", -1,-1,"font_old_20_white.tga",2);
};

możemy zrobić ile chcemy etapów analogicznie do tego

http://pl.wikipedia.org/wiki/Analogia (w razie czego dla nie kumatych)

te 2 skrypty dajemy do
func void tick_tock()
{

};
chodź dla kumatych mała podpowiedz aby nie obciążać procka 2 cześć skryptu może powędrować do monologu spania ;)


Dziękuje za uwagę jeśli się przydało to daj łapkę do góry (Propsa)
zapraszam tez do odwiedzenie tematu mojej modyfikacji http://themodders.org/index.php?/topic/8801-sekrety-kolonii/
w razie kopiowania autora możecie podać przy używaniu w modach nic nie piszcie bo potem za dużo osób ma moje gg ;p

inż. Avallach

inż. Avallach

Administrator
posty7662
Propsy5238
NagrodyV
ProfesjaProgramista
  • Administrator
Kiedyś opisałem to na forum, i to w odpowiedzi na twój post gdzie zastanawiałeś się jak to zrobić (wcześniej próbowałeś innych, niedziałających sposobów). Mógłbyś chociaż napisać że nie jest to twój autorski pomysł (chyba że o sprawie zapomniałeś i wydawało ci się że wpadłeś na to niezależnie).

http://themodders.org/index.php?topic=8740.msg81097#msg81097


Cytat: Avallach link=topic=12187.msg81097#msg81097#msg81097#msg81097 date=1264946143
Stwórzcie "neutralny" item, wzorowany choćby na bryłce rudy i dajcie visual, nazwę, opis i cenę normalnej zbroi, scemename "MAPSEALED", on_state[0] na funkcję, która umieści w ekwipunku i założy normalną zbroję. Potem zróbcie takie coś dla każdej zbroi.

W GiveDeathInv dajcie warunki że jeśli NPC miał założoną TAKĄ zbroję to ma dostać TAKĄ niby-zbroję, i tak dla każdej zbroi.


Co do rozkładu zwłok, da się to zrobić DUŻO lepiej, bez tick tocka. Otóż wystarczy zamiast niego umieścić aktywator funkcji w B_RefreshArmor (uaktywniana codziennie o północy) i ewentualnie w PC_Sleep, na wypadek gdyby gracz te trzy dni przespał.

Jeśli chodzi o przedmiot "nieznikania", widzę że zauważyłeś że działa dzięki flags item_mission. Jednak znaleźć go może gracz przeszukujący zwłoki, co nieco psuje rozgrywkę. Lepiej byłoby dać tą właściwość jakiemuś popularnemu itemkowi, jak choćby bryłka rudy czy zbroja-fałszywka.

BTW, widzę że cały skrypt napisałeś pod kątem pojedynczego NPC. To także spore niedociągnięcie, odpowiednio wykorzystując ZS_Dead można by z powodzeniem zrobić wersję uniwersalną.

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy
Cytat: Avallach link=topic=12187.msg122139#msg122139#msg122139#msg122139 date=1291577310
Co do rozkładu zwłok, da się to zrobić DUŻO lepiej, bez tick tocka. Otóż wystarczy zamiast niego umieścić aktywator funkcji w B_RefreshArmor (uaktywniana codziennie o północy) i ewentualnie w PC_Sleep, na wypadek gdyby gracz te trzy dni przespał.

Cytuj
chodź dla kumatych mała podpowiedz aby nie obciążać procka 2 cześć skryptu może powędrować do monologu spania ;)
napisałem o tym :P

ale jeśli chodzi o B_RefreshArmor to znacznie lepszy pomysł ale o tej możliwości nie wiedziałem za słaby jestem w skryptach :P

Cytat: Avallach link=topic=12187.msg122139#msg122139#msg122139#msg122139 date=1291577310
Jeśli chodzi o przedmiot "nieznikania", widzę że zauważyłeś że działa cięgi flags item_mission. Jednak znaleźć go może gracz przeszukujący zwłoki, co nieco psuje rozgrywkę. Lepiej byłoby dać tą właściwość jakiemuś popularnemu itemkowi, jak choćby bryłka rudy czy zbroja-fałszywka.
Cytuj
INSTANCE nie_znikaj(C_Item)
{
        name                                    =       "Magia Avallacha ^^ ";

        mainflag                                =       ITEM_KAT_ARMOR;//aby nie dało sie zabrać z ekwipunku
        flags                                   =       ITEM_MULTI|ITEM_MISSION;//aby postać nie znikała (czyli to co Avallach nazwał magią (na pewno wie o co chodzi ale nie chciało mu się tłumaczyć :) ) po prostu itemy MISSION ze względu na swoją wagę nie mogą być skasowane)
czasem się nie zważa się na szczegóły item nie znikania ma mainflag zbroi żeby gracz go nie znalazł ;)



a o tym temacie to zapomniałem szczerze wtedy to ja was nie rozumiałem i się obraziłem po temacie ze nie daliście kodu xD byłem dzieciak jeszcze xD


Marid

Marid

Użytkownicy
Filozofia "xD"
posty657
Propsy256
Profesjabrak
  • Zbanowany
  • Filozofia "xD"
Zdejmowanie pancerza z martwiaka ? Dosyć dziwne podczas większej bitwy. Chodzimy i rozgrabiamy jak hiena poległych wrogów. Żartowałem - pomysł zajebisty. Oby tak dalej. Props.
 
"Philosophia. Znaczy po Grecku "miłość do mądrości". Myślisz, że teraz jeździlibyśmy mercami i beemkami gdyby nie Grecy? Albo gapili się w płaskie ekrany telewizorków plazmowych?"

Gotyk

Gotyk

Użytkownicy
posty101
Propsy67
  • Użytkownicy
Dobry pomysł :D  Napewno go wykorzystam w modzie :roll:  Autor tematu ma :ok:
 


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