Zanim cokolwiek zrobicie, przeczytajcie post od początku do końca, aby nie było problemów. W razie wątpliwości pytać.Poprawiłem swój programik o możliwość zmieniania katalogów za pomocą pliku *.ini.
UWAGA!!! NIE PONOSZĘ ŻADNEJ ODPOWIEDZIALNOŚCI ZA UŻYTKOWANIE PROGRAMU. KORZYSTANIE Z PROGRAMU NA WŁASNĄ ODPOWIEDZIALNOŚĆ. PROGRAM GŁÓWNIE KOPIUJE I USUWA PLIKI.
UWAGA2!!! WSZYSTKIE ZAMIESZCZONE TU PROGRAMY TO PROGRAMY KONSOLOWE.
No, po małym wstępie, czyli zastraszeniu

odnośnik do programu (a także źródło programu i przykładowy plik konfig.ini):
http://www.sendspace.com/file/byt5voProgram nie ma prawa nic złego zrobić, jeśli w pliku konfig.ini dostanie poprawne dane.
Co robi program? Program ma za zadanie zastąpić stare pliki GOTHIC.DAT, OUINFO.INF, OU.BIN i OU.CSL z katalogu zlote_wrota* nowymi utworzonymi przez Spacera (a także usunąć te nowe po skopiowaniu). Dodatkowo usuwa plik zw_test.mod, a także uruchamia się automatycznie program GothicVDFS.
*oczywiście można zmienić katalog na np. mojmod
Jak napisać taki program w języku C? Lepiej nie pisać, tylko użyć plików wsadowych
Pliki wsadowe:
http://www.sendspace.com/file/emtvemDziałanie właściwie takie same, jak w programie napisanym w C.
@echo off
REM usuwanie plików z katalogu naszego moda
DEL "F:\Program Files\JoWood\Gothic II\zlote_wrota\_WORK\DATA\SCRIPTS\Content\Cutscene\OU.BIN"
DEL "F:\Program Files\JoWood\Gothic II\zlote_wrota\_WORK\DATA\SCRIPTS\Content\Cutscene\OU.CSL"
DEL "F:\Program Files\JoWood\Gothic II\zlote_wrota\_WORK\DATA\SCRIPTS\_COMPILED\GOTHIC.DAT"
DEL "F:\Program Files\JoWood\Gothic II\zlote_wrota\_WORK\DATA\SCRIPTS\_COMPILED\OUINFO.INF"
REM kopiowanie plików z katalogu głównego Gothica do katalogu naszego moda
COPY "F:\Program Files\JoWood\Gothic II\_Work\data\Scripts\_compiled\GOTHIC.DAT" "F:\Program Files\JoWood\Gothic II\zlote_wrota\_WORK\DATA\SCRIPTS\_COMPILED\GOTHIC.DAT"
COPY "F:\Program Files\JoWood\Gothic II\_Work\data\Scripts\_compiled\OUINFO.INF" "F:\Program Files\JoWood\Gothic II\zlote_wrota\_WORK\DATA\SCRIPTS\_COMPILED\OUINFO.INF"
COPY "F:\Program Files\JoWood\Gothic II\_Work\data\Scripts\Content\Cutscene\OU.BIN" "F:\Program Files\JoWood\Gothic II\zlote_wrota\_WORK\DATA\SCRIPTS\Content\Cutscene\OU.BIN"
COPY "F:\Program Files\JoWood\Gothic II\_Work\data\Scripts\Content\Cutscene\OU.CSL" "F:\Program Files\JoWood\Gothic II\zlote_wrota\_WORK\DATA\SCRIPTS\Content\Cutscene\OU.CSL"
REM usuwanie plików z katalogu głównego moda i paczki z modem
DEL "F:\Program Files\JoWood\Gothic II\_Work\data\Scripts\_compiled\GOTHIC.DAT"
DEL "F:\Program Files\JoWood\Gothic II\_Work\data\Scripts\_compiled\OUINFO.INF"
DEL "F:\Program Files\JoWood\Gothic II\_Work\data\Scripts\Content\Cutscene\OU.BIN"
DEL "F:\Program Files\JoWood\Gothic II\_Work\data\Scripts\Content\Cutscene\OU.CSL"
DEL "F:\Program Files\JoWood\Gothic II\Data\modvdf\zw_test.mod"
REM uruchamianie GothicVDFS
start "F:\Program Files\JoWood\Gothic II\_Work\tools\VDFS\GothicVDFS.exe" .\start.vm
exit
W pliku wsadowym należy ręcznie dostosować nazwy katalogów do swoich. Plik start.vm odpowiada za to, aby przekazać parametry do programu GothicVDFS. Wtedy wystarczy kliknąć build volume, aby utworzyć paczkę z modem
Możliwe że Windows będzie się pytał przez jaki program uruchomić start.vm. Należy wtedy wybrać program GothicVDFS.Jeśli ktoś jest ciekaw, jak takie coś napisać w C:
// *****************************************************************************
// *** Autor: Adanos ***
// *** Nazwa programu: Ułatwiacz ***
// *** Nazwa pliku: got_zw.c ***
// *** Wersja: 2010-07-17 ***
// *** Język: C ***
// *** Napisano w: Code::Blocks 8.02 ***
// *****************************************************************************
// *****************************************************************************
// *** Usuwanie i kopiowanie plików ***
// *****************************************************************************
// *****************************************************************************
// *** Głównym zadaniem programu jest pobranie odpowiednich wartośći z pliku ***
// *** konfig.ini i wykonaniu operacji kopiowania, usuwania i otwarcia plików***
// *** w celu automatyzacji czynności związanych z tworzeniem "paczek" ***
// *** z modami do jednej z dwóch pierwszych części gry Gothic. ***
// *****************************************************************************
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
FILE *fp; //zmienna globalna
char* czytaj_wiersz(char tablica[])
{
char c;
int i = 0;
int k = 0;
c = getc(fp);
for (i=1; i<1000 && (c = (char)getc(fp))!=EOF && c!='\n';i++)
{
tablica[i] = c;
}
tablica[i] = '\0'; //zakańcza tablicę znaków
if (tablica != "")
while ((int)tablica[k++] != 61); //pomiń znak, dopóki nie napotkasz znaku równości
//else tablica = "pusta";
i = k;
while ((int)tablica[i++] == 32) //usuń wszystkie zbędne spacje od indeksu k tablicy
k++;
while ((int)tablica[i++] != '\0') //zamień komentarz na białe znaki, a raczej usuń z tablicy
{
if ((int)tablica[i] == 47)
tablica[i] = '\0';
}
return &tablica[k];
}
int main()
{
char c;
int j = 0;
char t[1000];
char t2[1000];
char t3[1000];
char t4[1000];
char t5[1000];
char t6[1000];
char t7[1000];
char t8[1000];
char t9[1000];
char t10[1000];
char t11[1000];
char t12[1000];
char *help[10];
help[0] = t; //katalog naszego moda, plik OU.BIN
help[1] = t2; //katalog naszego moda, plik OU.CSL
help[2] = t3; //katalog naszego moda, plik GOTHIC.DAT
help[3] = t4; //katalog naszego moda, plik OUINFO.INF
help[4] = t5; //katalog Gothica, plik GOTHIC.DAT
help[5] = t6; //katalog Gothica, plik OUINFO.INF
help[6] = t7; //katalog Gothica, plik OU.BIN
help[7] = t8; //katalog Gothica, plik OU.CSL
help[8] = t9; //paczka z modem
help[9] = t10; //GothicVDFS
//help[10] = t11;
//help[11] = t12;
char *sciezka[10];
fp = fopen("konfig.ini","r"); //otwarcie pliku konfig.ini
/*
czyta wiersze dopóki nie przypisze tablicy sciezka wszystkich (niepustych) wartości lub do napotkania końca pliku
*/
while ((j<10) && (c = (char)getc(fp))!=EOF)
{
sciezka[j] = czytaj_wiersz(help[j]);
j++;
}
fclose(fp); //zamyka plik konfig.ini
/*for (int i = 0; i<j; i++)
{
printf("%s \n", sciezka[i]);
printf("------------------- \n");
}*/
//printf("Dlugosc=%d",strlen(sciezka[0]));
DeleteFile(sciezka[0]); //katalog naszego moda, plik OU.BIN - usuwanie
DeleteFile(sciezka[1]); //katalog naszego moda, plik OU.CSL - usuwanie
DeleteFile(sciezka[2]); //katalog naszego moda, plik GOTHIC.DAT - usuwanie
DeleteFile(sciezka[3]); //katalog naszego moda, plik OUINFO.INF - usuwanie
CopyFile(sciezka[4], sciezka[2], 1); //kopiowanie Gothic.dat z katalogu Gothica do katalogu moda
CopyFile(sciezka[5], sciezka[3], 1); //kopiowanie Gothic.dat z katalogu Gothica do katalogu moda
CopyFile(sciezka[6], sciezka[0], 1); //kopiowanie OU.BIN z katalogu Gothica do katalogu moda
CopyFile(sciezka[7], sciezka[1], 1); //kopiowanie OU.CSL z katalogu Gothica do katalogu moda
DeleteFile(sciezka[4]); //katalog Gothica, plik GOTHIC.DAT -usuwanie
DeleteFile(sciezka[5]); //katalog Gothica, plik OUINFO.INF -usuwanie
DeleteFile(sciezka[6]); //katalog Gothica, plik OU.BIN -usuwanie
DeleteFile(sciezka[7]); //katalog Gothica, plik OU.CSL -usuwanie
DeleteFile(sciezka[8]); //paczka z modem -usuwanie
ShellExecute(NULL, "open", sciezka[9], "", "", 0); //uruchamia GothicVDFS
return 0;
}
Możliwe że nie jest idealny, ale inaczej nie umiałem napisać.
Kilka uwag do programu napisanego w języku C:- w pliku konfig.ini mogą być tylko
jednowierszowe odstępy
- komentarz może być tylko na końcu
niepustego wiersza, komentarz to dwie ukośne kreski
// w komentarzu
nie może wystąpić znak nowego wiersza, czyli ENTER, stąd tylko komentarze jednowierszowe
- program konsolowy, uruchamiasz, wykonuje się i włącza się GothicVDFS
- i chyba tyle uwag, jak sobie coś przypomnę, to dopiszę ;)
Jeśli macie jakieś pytania, sugestie, komentarze, to piszcie śmiało ;)