Pokaż wiadomości

Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.


Pokaż wątki - chicken

Strony: [1] 2
1
Narzędzia / G1/G2 Console Hacker
« dnia: 2015-06-12, 16:29 »
Witam.
Napisałem w C++ program, który włącza/wyłącza konsole kodów do Gothica 1/2.
Wystarczy odpalić program a potem Gothica, następnie nie trzeba się nim przejmować.
SS:

Link:
https://www.dropbox.com/s/2kh4ek13dpfsgeg/Gothic%20Console%20Hacker.exe?dl=0

2
Narzędzia / Gothic Sourcer v3.15
« dnia: 2015-05-29, 17:48 »
Wyszła nowa wersja Gothic Sourcera.
Tym razem kompiluje skrypty nawet z Ikarusem.
Link: http://worldofplayers.ru/threads/38318/

3
Próbuję uruchomić plik GothicMod.exe z parametrem -game:Mod.ini w celu rozruchu jakiegoś moda, ale nie chce działać.
Po prostu odpala się zwykły Gothic.
Wie ktoś w czym problem?

4
Skrypty / Zmiana funkcji onState bez spacera.
« dnia: 2015-03-25, 14:30 »
Dobre zastosowanie przy masowych monologach.
func void ChangeMobOnState(var string mobName, var string function) {
var zCArray arr; arr = _^(MEM_SearchAllVobsByName(mobName));
var oCMobInter mob;

var int arrNum; arrNum = 1;
var int loop; loop = MEM_StackPos.position;

if (arrNum <= arr.numInArray) {
mob = _^(MEM_ReadIntArray(arr.array, arrNum));
mob.onStateFuncName = function;
arrNum += 1;

MEM_StackPos.position = loop;
};

if (arr.array) {
MEM_ArrayFree(arr.array);
};
MEM_Info(ConcatStrings(ConcatStrings("A ", IntToString(arrNum)), " mobs have changed onState function"));
};

I np. w Init_Swiata:
ChangeOnState("NazwaMobaLubCzegoTam",  "NazwaFunkcji");
Coś dla leniwych

5
Gry / [Wspólne granie] Worms: Armageddon
« dnia: 2015-02-12, 17:09 »

Który chce z miszczem przegrać?

6
Skrypty / Crash, G1 Ikarus
« dnia: 2015-02-11, 20:38 »
Ktoś wie czym jest spowodowany crash?
Skrypt:
Print(IntToString(STR_IndexOf(MEM_GetCommandLine(), "-GAME:")));Log:

Skrypt ten ma na celu pobrać nazwę .ini używanego moda.

7
Na początku tworzymy jakiś obiekt, np. plane. Przechodzimy w tryb edycji ( TAB ), potem mapujemy, tzw. UV Mapping ( U ) i wybieramy Unwrap. Robimy po to, aby rozłożyć siatkę na texturę.
Spoiler
Teraz dodajemy mu domyślną texturę. Czyli przechodzimy w tryb widoku UV/Image editor ( SHIFT + F10 ), na dole obok ikonki pliku wciskamy NEW, a potem OK i gotowe.
Spoiler

Znów zmieniamy tryb widoku, tym razem na 3D View ( Shift + F5 ) i dzielimy nasz plane ( subdivide ), wciskamy W i wybieramy subdivide, dzielimy tak z 5 razy, aby nasz obiekt miał więcej poligonów.
Spoiler
Plane powinien wyglądać tak:
Spoiler
Teraz przechodzimy w tryb Sculpt Mode, jest na samym dole.
Spoiler
i dodajemy jakieś wypuklenia. Wcześniej podzieliliśmy obiekt, aby było łatwiej. Ja u siebie zrobiłem tak:
Spoiler
Teraz przechodzimy w tryb Object Mode (wchodzimy tam, gdzie wybieraliśmy Sculpt Mode), tworzymy kolejnego plane (Shift + A), wybieramy Mesh, potem Plane.
Spoiler
Przesuwamy obiekty tak, aby ten wypukły był na górze, a płaski na dole pod spodem. Ew. można spróbować dać obydwa obiekty na te same współrzędne, aby się pokrywały. Innym wypadku normalka nie zadziała, będzie tylko niebieski obraz.
Zaznaczamy nasz nowy plane, wchodzimy w tryb edycji ( TAB), wciskamy U i znów Unwrap.
Następnie wciskamy Shift + F10, na samym dole jest ikonka pliku, naciskamy na nią i wybieramy naszą texturę.
Spoiler
Wchodzimy w tryb widoku 3D View ( Shift + F5 ) i wszystko powinno wyglądać tak:
Spoiler
Przechodzimy do okienka po prawej, gdzie jest zaznaczony aparacik i suwakiem zjeżdżamy na sam dół, powinniśmy mieć opcję Bake, rozwijamy ją:
Spoiler
Bake Mode zmieniamy na Normals, ponieważ tworzymy normal mapę.
Margin na 0, bo nasza siatka jest rozciągnięta na całą texturę, a nie na kawałek.
i zaznaczamy Selected to Activ, aby wypaliło normalkę naszego obiektu wysokiej rozdzielczości na obiekt niskiej rozdzielki.
Spoiler
Teraz dzielimy okno na pół:
Spoiler
Wciskamy i przytrzymujemy LPM na ten zakreskowany trójkąt, potem przesuwamy w lewo. Efekt:
Spoiler
W tym drugim oknie wchodzimy w tryb UV/Image Editor ( namierzamy kursorem na drugie okno i wciskamy Shift + F10 ).
Teraz zaznaczamy w pierwszym oknie nasz obiekt z góry, przytrzymujemy LShift i zaznaczamy obiekt pod spodem i wciskamy Bake.
I mamy gotową normal mapę.
Spoiler
Możemy teraz ustawić obiekty obok siebie.
Zaznaczamy nasz płaski obiekt, wchodzimy w zakładkę material i tworzymy nowy materiał.
Spoiler
Nic nie zmieniamy. Teraz przechodzimy do zakładki textures ( kwadrat jak szachownica, obok materials ) i tworzymy nową texturę wciskając NEW:
Spoiler

Po
Type zmieniamy na Image or Movie
Zjeżdżamy na dół i mamy takie coś:
Spoiler
Obok przycisku NEW wciskamy na ikonkę i wybieramy naszą normalkę.
Coordinates zmienamy na UV.
Rezultat:
Spoiler
Teraz rozwijamy zakładkę Image Sampling i zaznaczamy Normal Map.
Zjeżdżamy niżej aż do zakładki Influence:
Spoiler
Odznaczamy Color i zaznaczamy pierwsze pole w Geometry:
Spoiler
Interesuje nas to okienko ( włącza się go skrótem N )
Spoiler
Zjeżdżamy na dół, aż zobaczymy zakładkę DISPLAY.
Rozwijamy je i Shading zmieniamy na GLSL.
Spoiler
Przechodzimy kursorem do 1 okna i włączamy podgląd textur ( CTRL + Z ).
Wygląda to tak:
Spoiler
Mamy dwa identyczne obiekty, ale ten po prawej ma tylko 4 wierzchołki.
Oczywiście z boku będzie on płaski, ale z góry widać ładnie.
Tyle.
Jak są błędy, to krzyczeć.
Metoda bardzo przydatna do symulowania zagnieceń.

8
Materiały / LeGo Gothic 1
« dnia: 2014-11-12, 13:48 »
Tutaj jest link
Ostatnia aktualizacja: 05.05.15
https://www.dropbox.com/s/gyhu0bjpc6b684a/LeGo_G1.rar?dl=0


Inicjowanie:
Kolejność parsowania ( Gothic.src ):
_INTERN\Ikarus_Const_G1.d
_INTERN\EngineClasses_G1\*.d
_INTERN\Ikarus.d
_INTERN\Float.d
_INTERN\LeGo_G1\LeGo_G1.src
W startup.d w Init_World:
Lego_Init(LeGo_All);
Brakujące fjuczery to:
  • Plamy krwi - plam nie będzie, bo to syf
Tutaj jest wiki od twórców LeGo z G2:
http://lego.worldofplayers.de/?

Zachęcam do rozprzestrzeniania.

9
Skrypty / G2/G1 - nowa opcja w menu + bonus
« dnia: 2014-07-16, 20:39 »
Wybieramy jakieś menu. Menu korzysta z prototypu (C_MENU_DEF).
Np. ja wybrałem sobie w pliku 'Menu_Opt_Game.D' menu:
INSTANCE MENU_OPT_GAME(C_MENU_DEF)
Spoiler
{
   backpic         = MENU_BACK_PIC;
   
   items[0]      = "MENUITEM_GAME_HEADLINE";
            
   items[1]      = "MENUITEM_GAME_SUB_TITLES";
   items[2]      = "MENUITEM_GAME_SUB_TITLES_CHOICE";
   
   items[3]      = "MENUITEM_GAME_ANIMATE_WINDOWS";
   items[4]      = "MENUITEM_GAME_ANIMATE_WINDOWS_CHOICE";

   items[5]      = "MENUITEM_GAME_LOOKAROUND_INVERSE";
   items[6]      = "MENUITEM_GAME_LOOKAROUND_INVERSE_CHOICE";
   
   items[7]      = "MENUITEM_M";
   items[8]      = "MENUITEM_M_CHOICE";
   
   items[9]      = "MENUITEM_MSENSITIVITY";
   items[10]      = "MENUITEM_MSENSITIVITY_SLIDER";
   
   items[11]      = "MENUITEM_GAME_BLOOD";
   items[12]      = "MENUITEM_GAME_BLOOD_CHOICE";
            
   items[13]      = "MENUITEM_GAME_BACK";
   
   flags = flags | MENU_SHOW_INFO;
};
Zacznijmy od dodania nowego items, czyli zwykłego napisu. Tworzymy nową tablicę:
Cytuj
items[14] = "MENUITEM_GAME_DIFFICULTY"; // Ważne, żeby się nie powtarzały, "numer" tablicy również.
I tworzemy kolejną tablice, która będzie zawierała opcje do wyboru:
Cytuj
items[15] = "MENUITEM_GAME_DIFFICULTY_CHOICE";
Efekt:
Spoiler
INSTANCE MENU_OPT_GAME(C_MENU_DEF)
{
   backpic         = MENU_BACK_PIC;
   
   items[0]      = "MENUITEM_GAME_HEADLINE";
            
   items[1]      = "MENUITEM_GAME_SUB_TITLES";
   items[2]      = "MENUITEM_GAME_SUB_TITLES_CHOICE";
   
   items[3]      = "MENUITEM_GAME_ANIMATE_WINDOWS";
   items[4]      = "MENUITEM_GAME_ANIMATE_WINDOWS_CHOICE";

   items[5]      = "MENUITEM_GAME_LOOKAROUND_INVERSE";
   items[6]      = "MENUITEM_GAME_LOOKAROUND_INVERSE_CHOICE";
   
   items[7]      = "MENUITEM_M";
   items[8]      = "MENUITEM_M_CHOICE";
   
   items[9]      = "MENUITEM_MSENSITIVITY";
   items[10]      = "MENUITEM_MSENSITIVITY_SLIDER";
   
   items[11]      = "MENUITEM_GAME_BLOOD";
   items[12]      = "MENUITEM_GAME_BLOOD_CHOICE";
            
   items[13]      = "MENUITEM_GAME_BACK";
   
   items[14]      = "MENUITEM_GAME_DIFFICULTY";
   items[15]      = "MENUITEM_GAME_DIFFICULTY_CHOICE";

   
   flags = flags | MENU_SHOW_INFO;
};
Następnie dodajemy instancje do tego samego pliku gdzieś na dole, żeby napisy były widoczne:
Cytuj
INSTANCE MENUITEM_GAME_DIFFICULTY(C_MENU_ITEM_DEF)
{
   backpic      =   MENU_ITEM_BACK_PIC; // To jest obraz z tyłu napisu, nie ma textury
   text[0]      =   "Poziom trudności"; // Napis, który się wyświetla
   text[1]      =    "Poziom ciężkości gry."; // Komentarz, jest na samym dole menu
   posx      =   1000;   posy      =   MENU_START_Y + MENU_DY*6; // Pozycja względem osi X i Y
   dimx      =   4000;   dimy      =   750; // Wymiar względem osi X i Y
   onSelAction[0]   = SEL_ACTION_UNDEF; // niezdefiniowana akcja po wyborze
   flags         = flags | IT_EFFECTS_NEXT | IT_EXTENDED_MENU; // flagi ^^
};

Cytuj
instance MENUITEM_GAME_DIFFICULTY_CHOICE(C_MENU_ITEM_DEF)
{
backPic      =   MENU_CHOICE_BACK_PIC; // To jest obraz z tyłu napisu, nie ma textury
   type      =   MENU_ITEM_CHOICEBOX;   // To sprawia, że można wybierać opcje
   text[0]      =    "Łatwy|Normalny|Trudny"; // wiadomo, a jeśli chodzi o | , to jest operatory bitowy
   fontName   =   MENU_FONT_SMALL; // czcionka
   posx      = 5000;      posy      = MENU_START_Y + MENU_DY*6 + MENU_CHOICE_YPLUS; // Pozycja względem osi X i Y
   dimx       = 2000;      dimy       = MENU_CHOICE_DY; // Wymiar względem osi X i Y
   onChgSetOption   = "difficulty"; // Po zmianie opcji, wyznacza jej opcje
   onChgSetOptionSection = "GAME"; // Po zmianie opcji, wyznacza jej sekcje
   flags      = flags & ~IT_SELECTABLE; // znów operator bitowy & i ~(operator negacji bitowej)
   flags      = flags  | IT_TXT_CENTER | IT_EXTENDED_MENU; // wyśrodkowany
};
I mamy nowy napis! Życzę miłego bawienia się, rozmieszczania.
Teraz bonus(wymagany Ikarus i gothic fix 2.6):
Robimy nową funkcję:
Cytuj
func void MyOptFunc()
{
   if (Hlp_StrCmp(Mem_GetGothOpt("GAME","difficulty"), "0")) // Game i difficulty oznacza " patrz wyżej ", a 0 to zwracana wartość, ponieważ pierwszą opcją jest poziom ŁATWY, więc zwraca 0, kolejne następne zwracają o 1 więcej, a poprzednie o 1 mniej. Można jako pierwszą opcje w menu dać TRUDNY, wtedy też będzie zwracane 0, ale dla poziomu trudnego, a nie łatwego.
   {
      // poziom łatwy
   }
   else if(Hlp_StrCmp(Mem_GetGothOpt("GAME","difficulty"), "1"))
   {
      // poziom normalny
   }
   else if (Hlp_StrCmp(Mem_GetGothOpt("GAME","difficulty"), "2"))
   {
      // poziom trudny
   };
};
Wywołuj jak chcesz.
Ja zalecam tak( tylko g2 ):
Cytuj
Lego_Init(LeGo_FrameFunctions);
   if (!FF_Active(MyOptFunc)){
      FF_Apply(MyOptFunc);
   };
A jeśli chodzi o G1, to wszystko to samo, ale wywołujcie z np. Tick_tocka.
Tyle. Have a nice options. Życzę miłego bawienia się oraz, żeby działało ;p
Jak coś poprawić to krzyczeć.

Edit @down: No tak :facepalm:, takie podstawowe błędy :redface:. Ale ich nie poprawie, żeby zapamiętać, co źle zrobiłem i dla innych, jak mają takie same problemy.

10
Skrypty / Problem z nowym czarem
« dnia: 2014-01-26, 09:48 »
Otóż zrobiłem nowy czar na podstawie Ognistego Deszczu i jest małe "ale". Nie zadaje obrażeń żadnych. Musze do kogoś podejść na maxa żeby oberwał. Co może być nie tak? Nawet na obrazku jest pokazane, że nie zadaje dmg.
Wygląda on tak: (nie wiem jakie skrypty będą potrzebne :F po prostu piszczcie co chcecie zobaczyć)

const int SPL_Cost_Waterrain = 150;
const int SPL_Damage_Waterrain = 500;

instance Spell_Waterrain(C_Spell_Proto)
{
time_per_mana = 0;
damage_per_level = SPL_Damage_Waterrain;
damagetype = DAM_MAGIC;
targetCollectAlgo = TARGET_COLLECT_NONE;
};


func int Spell_Logic_Waterrain(var int manaInvested)
{
if(Npc_GetActiveSpellIsScroll(self) && (self.attribute[ATR_MANA] >= SPL_COST_SCROLL4))
{
return SPL_SENDCAST;
}
else if(self.attribute[ATR_MANA] >= SPL_Cost_Waterrain)
{
return SPL_SENDCAST;
}
else  // Brak many
{
return SPL_SENDSTOP;
};
};

func void Spell_Cast_Waterrain()
{
if(Npc_GetActiveSpellIsScroll(self))
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_COST_SCROLL4;
}
else
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_Waterrain;
};
self.aivar[AIV_SelectSpell] += 1;
};

Jako "mała" pomoc korzystałem z "http://themodders.org/index.php?topic=14783.0".

11
Skrypty / Gothic 1 - problemy z paskiem i inne
« dnia: 2014-01-01, 19:18 »
Jak wiadomo w g2 do rozpoczęcia akcji wystarczy wcisnąć lewy przycisk myszy. Ja chciałbym wprowadzić takie cuś do g1, ale nie wiem jak się zabrać do tego. Przydała by się mi wasza pomoc(mam ikarusa 1.2 najnowszy).
I takie pytanie poboczne: wiecie, że podczas celowania z broni dystansowej myszka zostaje "zablokowana" i pytanie brzmi czy można ją jakoś "odblokować".
I mam jeszcze taki jeden problem. Gdy próbuje stworzyć nowy pasek (Init_world) to wyskakuje mi coś takiego:

Mam g1, najnowszego ikarusa i najnowsze lego(to on tworzy pasek).

12
Skrypty / Problem z ikarusem
« dnia: 2013-12-30, 08:44 »
Do g1 mam ikarusa 1.2 i gdy spróbuję wywołać mojego tick_tocka(obojętnie jak) wywala mi DoStack! Na ikarusie 1.1.4 nie mam takich problemów, ale im nowszy tym lepszy. Jak się pozbyć tego problemu? Nie wiem czy to przydatne info, ale mam tick_tocka sprawdzanego co klatkę.
Strona do Ikarusa

13
Spacer / Efekt świetlny z g2
« dnia: 2013-12-27, 17:52 »
Jak wykonać taki oto efekt świetlny?

Chciałbym go wykorzystać do g1.
Widziałem go w czasie zapłaty w domkach.

14
Skrypty / Broń z efektem AOE(obszarowym)
« dnia: 2013-12-23, 21:33 »
Mam miecz runiczny, który wywołuje jakiś tam efekty czaru obszarowego. I nie wiem mam już pomysłów jak napisać taki skrypt, żeby raziło wszystkich wokół jakiegoś tam dystansu.
Wypaliłem się i nie mam pojęcia. Przydałyby się tylko i wyłącznie wskazówki.

15
MDS i animacje / Jak sie tworzylo .mms?
« dnia: 2013-11-06, 16:25 »
Pamieta ktos moze jak sie tworzylo plik z rozszerzeniem .mms? Pytam sie dlatego, ze chcialem zrobic ruszajaca sie flage.

16
Skrypty / Zepsute skrypty
« dnia: 2013-11-02, 18:27 »
Mam taki problem, ze przestaly dzialac monologi, a jeszcze nie dawno dzialaly :/ wiec jak to mam naprawic? -.-  :facepalm: czemu w tym g1 musi sie wszystko samo jebac...

17
Skrypty / Gdzie to się znajduje?
« dnia: 2013-10-07, 20:44 »
Otoz jak wiadomo podczas dialogu pod warstwa napisow pokazuje sie tak jakby czarny w pol przezroczysty prostokat i chcialbym sie dowiedziec gdzie to sie znajduje albo jak to wywolac do jakiegos tekstu np. Nowy wpis w dzienniku. Jak wiadomo te literki z tym prostokatem pojawiaja sie i znikaja plynnie i wlasnie mam taki zamiar zrobic do tekstu wyzej wymienionego. podejrzewam, ze to chyba Dialoggesture. Z tego co pamietam to chyba w czasie zaplaty takie bajery byly.
Cytuj
Ikarus :ok:
Twoja odpowiedz nic nie wnosi -.- jak bym o tym nie widzial...
I kolejne pytanie: bo chcialbym aby bylo mozna w g1 miec wiecej niz 10% na krytyka zeby sie uczyc do ilus tam % ale gdzie sa te limity napisane?

18
Skrypty / Skrypt sprawdzający
« dnia: 2013-09-24, 19:38 »
Wiec chcialbym zrobic skrypt ktory sprawdzalby ile nasz bohater ma czegos tam i wyswietlal ta ilosc na ekranie i dlatego prosze o wasza pomoc (najlepiej wskazowki)
Edit: Tutoriale  :facepalm: lepiej już nic nie pisz....

19
Skrypty / Problem z teksturami hełmów (gothic 1)
« dnia: 2013-09-21, 21:20 »
Więc mam 2 hełmy i dwie tekstury(jedna tekstura dla jednego hełmu) i gdy założe któryś hełm jako pierwszy to ten drugi hełm przejmuję tekstury pierwszego i pytanie brzmi co mam teraz zrobic/jak naprawić?

20
Skrypty / Problem ze skrzynią
« dnia: 2013-09-08, 19:07 »
Moglby mi ktos pomoc bo mam taki problem, ze znalazlem skrypt ktory polega na tym, ze gdy skrzynka jest pusta to skrzynkia zmiena nazwe na pusta skrzynia tak jak w gothic 3 ale gdy naceluje na skrzynie to wyskakuje dostack (wywoluje w tick tocku) wiec w czym problem?
Tutaj rowniez nasuwa mi się pytanie czy ten skrypt powinien byc wywolywany z tick tocka czy z init swiata w startupie? Oczywiscie nie hookuje tego skryptu.

Strony: [1] 2
Do góry