AST (Agama Script Tools) 95887 188

O temacie

Autor Siemekk

Zaczęty 1.08.2016 roku

Wyświetleń 95887

Odpowiedzi 188

Elligon

Elligon

Użytkownicy
posty38
Propsy18
Profesjabrak
  • Zbanowany

Elligon

AST (Agama Script Tools)
#80 2017-06-12, 08:05(Ostatnia zmiana: 2017-06-12, 15:17)
Opcja wtyczki, która skompresuje/zbije wszystkie pliki konfiguracyjne dla nazw/przedmiotów (i nie tylko) w jednym (paru) pliku jak w Risen 1 i do tego w formacie .CSV dla szybkiej, i wygodnej edycji w np. OpenOffice?

Obecnie, w G1 i G2, jest to rozdrobnione i nieporęczne. To samo powtórzyli (Piranha Bytes) w Gothicu 3 i dopiero w Risenie 1 się zreflektowali, próbując to pospawać w coś większego; modowanie Risena 1 szło mi o niebo szybciej.

Srogo byłoby gdyby *absolutnie* wszystko było w jednym pliku, a nie jak teraz - OU.BIN/OU.CSL, OUINFO.INF, GOTHIC.DAT, a w środku dwa tysiące różnych skryptów rozbitych po pojedynczych plikach. Niech kolejna wersja przebuduje całe archiwum plików, których używa gra, tak aby wszystko było w paru plikach, a potem dzieli i mieli w RAMie czy coś.

PS. Można im to napisać po angielsku na tym forum (do którego prowadzi link do 1.003)? Tzn. czy to zrozumieją? Nie widziałem aby ktoś się tam udzielał w języku "your majesty's English".
 

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
Odpowiedzi od Gratt'a:
@Bogdan Zwei To idiotyczne. Rozszerzenia wdrożeniowe AST są wykonywane w sposób kanoniczny - 100% podobnie do silnika.
(это идиотизм. реализация расширений AST выполняется каноническим способом - 100% аналогично движку. ЕСЛИ им спичит работать на скриптах - там достаточно УЖЕ ГОТОВЫХ методов для простеньких решений. а если хотят модифицировать двиг скриптами - это диагноз.)

@Fabiosek (chyba) Sprawdziłem - żadnej różnicy.
(проверил у себя. никакой разницы.)

@Elligon Ciężko wyjaśnić więc w skrócie. Nie ma sensu, możliwe jednak że pojawi się możliwość rozbijania skryptów na kilka plików .DAT
(пускай засунут свои идеи себе в жопу. файловая система G2 хороша боле чем и я бы даже развивал тему разных DAT файлов отдельно для каждого мода и плагинов к ним.)

Wszyscy: Co byście chcieli? Więcej poradników, dokumentację po polsku? Etc.
 

P.S A Splash w szafie i nie ma psychy by mi dać bana.

Splash

Splash

Moderator
posty4211
Propsy3414
ProfesjaNierób
  • Moderator
Ja mam natomiast pytanie dotyczące tworzenia pluginów. Trzeba je kompilować do jakiegoś formatu?
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
Odpalasz Visual Studio, otwierasz gotowy Plugin, robisz co chcesz i na końcu kompilujesz. Jest on wyeksportowany jako .DLL, jednak aby go odpalić w INI moda dopisujesz takie coś:
[PLUGINS]
PluginList=Plugin ; Bez rozszerzenia
Zapomniałem dopisać, że sugestie dotyczą także tworzenia własnych wtyczek.
 

P.S A Splash w szafie i nie ma psychy by mi dać bana.

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
jak to w ogóle zainstalować?
 

Mark56

Mark56

Moderator
som veľký magič
posty1632
Propsy1846
ProfesjaAnimator
  • Moderator
  • som veľký magič
Ja czekam na wersje G1. Nie wiem co jest mozliwe z AST, nie wiem czego brakuje,bo go nie probowalem. Wiec trudno powiedziec.
 


Elligon

Elligon

Użytkownicy
posty38
Propsy18
Profesjabrak
  • Zbanowany

Elligon

AST (Agama Script Tools)
#86 2017-06-14, 14:31(Ostatnia zmiana: 2017-06-14, 14:50)
Musowo potrzebny jest podręcznik użytkownika, najlepiej po polsku, chociaż może być i po angielsku.

A teraz najpoważniejsze pytanie: czy aby dodać nową możliwość do wtyczki, muszę ją potem skompilować Javą, mając biblioteki SDK z DirectX 7 i 8? Jeśli tak to odpadam, bo to już za wysokie progi na mnie.

PS. Jako że potencjał jest znaczny, a z ruskimi modderami warto być na dobrej stopie, możesz powiedzieć Grattowi, że zrobię mu ekran startowy Agamy bez białych artefaktów w GIMPie w pięć minut, jeśli dostanę bazową bitmapę, którą chce tam mieć.
 

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
Start screen jest nie potrzebny, poza tym Gratt jest grafikiem więc zna się na takich rzeczach. Co do wtyczki to Visual Studio 2012 Ultimate + wszystkie aktualizacje, znajomość C++ i jedziesz.
@pawbuj kopiujesz AST.dll do Gothic\System\ dopisujesz do ini dll = AST.dll i jedziesz. Jednak AST na obecną chwilę jest tylko i wyłącznie pod gothic 2.
 

P.S A Splash w szafie i nie ma psychy by mi dać bana.

Splash

Splash

Moderator
posty4211
Propsy3414
ProfesjaNierób
  • Moderator
Koniecznie musi to być Visual Studio 2012?
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

Elligon

Elligon

Użytkownicy
posty38
Propsy18
Profesjabrak
  • Zbanowany
Czyli wszystko jest już w archiwum? Bardzo dobrze, zobaczymy czy na początek da się wyłączyć ten efekt lens distortion...
 

Halicor

Halicor

Użytkownicy
Hauptsturmfuhrer
posty365
Propsy57
ProfesjaNierób
  • Użytkownicy
  • Hauptsturmfuhrer
@Splash mi działało na VS15 lecz później z kompilatorem coś się zj*bało. Polecam jednak to co @Siemekk napisał.

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Mam takie pytanie; jak chcę się dopierdolić do jakieś funkcji systemowej, co powinienem zrobić? Jak na razie jeszcze nie zacząłem zabawy z AST, tylko pytam z ciekawości.

EDIT: Domyślam się, że C++ i własna DLL.
 
: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.

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
Zrobić Hook'a tak? C++ na pewno + PlugIn (gotowy wystarczy odpalić go w VC) Aby zrobić Hook należy użyć CInvoke<>
Przykład Hooka:
void __fastcall _UpdatePlayerStatus(oCGame*, void*);

CInvoke<void(__thiscall*)(oCGame*)>pUpdatePlayerStatus(0x006C3140, _UpdatePlayerStatus, IVK_AUTO);
void __fastcall _UpdatePlayerStatus(oCGame* _this, void*)
{
_this->UpdatePlayerStatus_AST();
// pUpdatePlayerStatus(_this); - wyłączona orginalna metoda
}
CInvoke<void(__thiscall*)(oCGame*)>pUpdatePlayerStatus(0x006C3140, _UpdatePlayerStatus, IVK_AUTO);

void - typ funkcji z adresu
__thiscall*  - wywołanie funkcji
oCGame* - W Ikarusie ECX - klasa do której należy metoda
pUpdatePlayerStatus - Pointer do orginalnej funkcji.
0x006C3140 - Adres zapisany szesnastkowo
_UpdatePlayerStatus - funkcja która jest wyzwalana podczas Hooka (zawsze jest to __fastcall z dodatkowym argumentem void*, po pointerze do klasy)
IVK_AUTO - typ najlepiej ustawić ten, ponieważ niektóre metody są użyte w AST.


W przyszłości zrobię jakiś tutorial, lecz to kiedy indziej.
 

P.S A Splash w szafie i nie ma psychy by mi dać bana.

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
Jeżeli ktoś chciałby mieć funkcję podobną do Init_Global(); to polecam użyć tego Hook'a.
void __fastcall _CallScriptInit(oCGame*);
CInvoke<void(__thiscall*)(oCGame*)>pCallScriptInit(0x006C1F60, _CallScriptInit, IVK_AUTO);
void __fastcall _CallScriptInit(oCGame* _this)
{
pCallScriptInit(_this);
}
 

P.S A Splash w szafie i nie ma psychy by mi dać bana.

Splash

Splash

Moderator
posty4211
Propsy3414
ProfesjaNierób
  • Moderator
Może laickie pytanie, ale jak zrobić funkcję, którą można wywołać z poziomu skryptów?
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
Miałem o tym robić poradnik w kolejnej części tutoriali, ale najpierw napiszę tutaj.
Aby wywołać funkcję która jest w skryptach, lub pobrać wartość jaką zawraca (funkcje typu int, string, float) Należy:
1) Zdobyć index tej funkcji w taki sposób:
int idx = parser->GetIndex("Nazwa funkcji");
2) Należy sprawdzić, czy index jest większy od 0 lub różny od -1. Oraz wywołać tą funkcję.
int idx = parser->GetIndex("Nazwa funkcji");
if(idx > 0)
parser->CallFunc(idx); //Jeżeli funkcja ma argumenty, to należy je podać po przecinku np. parser->CallFunc(idx, 12, "0", 0.12); (nie można podać argumentu który będzie np. obiektem klasy oCNpc.
3) Jeżeli w skryptach funkcja coś zawraca np. int'a należy pobrać wartość z wywołanej funkcji w następujący sposób:
//DllLoop
int idx = parser->GetIndex("Nazwa funkcji");
int ret_value;
if(idx > 0)
ret_value = *(int*)parser->CallFunc(idx);
screen->PrintCXY(ret_value);
W ten sposób jeżeli funkcja zawróci 1223132 to na ekranie wyświetli nam się ów liczba.
 

P.S A Splash w szafie i nie ma psychy by mi dać bana.

Splash

Splash

Moderator
posty4211
Propsy3414
ProfesjaNierób
  • Moderator
Chodzi mi o to, że chcę w pluginie zrobić własną funkcję, którą mógłbym potem wywoływać przez skrypty.
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
A rozumiem. Musisz zdefiniować funkcję zewnętrzną.
http://worldofplayers.ru/threads/39631/ 2.5
W wersji 003 nie musisz hookować, wystarczy, że dodasz część z parser->DefineExternal(...) do _cb_defineExternals. (Nie pamiętam jaki plik, więc musisz znaleźć go sam, chyba że później zedytuje posta)
 

P.S A Splash w szafie i nie ma psychy by mi dać bana.

Halicor

Halicor

Użytkownicy
Hauptsturmfuhrer
posty365
Propsy57
ProfesjaNierób
  • Użytkownicy
  • Hauptsturmfuhrer
Tak dla kogoś kto nie widział,
https://www.youtube.com/watch?v=BbR8V9Kse3Q

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
Czyli Gratt dał ten filmik jako publiczny. Metoda jest dość prosta i wygląda tak samo jak celowanie z AST.
 

P.S A Splash w szafie i nie ma psychy by mi dać bana.


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