mirror of
https://github.com/ZDoom/Raze.git
synced 2024-11-15 17:01:28 +00:00
Set union ['] and difference [;] for sector selection in Mapster32; probably fix for crash on clipshape-init; replace tabs in doc/build*.txt with three spaces.
git-svn-id: https://svn.eduke32.com/eduke32@1728 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
a633e8baa6
commit
07ecd3eede
7 changed files with 5653 additions and 5584 deletions
|
@ -122,6 +122,7 @@ extern char lastpm16buf[156];
|
||||||
void getpoint(int32_t searchxe, int32_t searchye, int32_t *x, int32_t *y);
|
void getpoint(int32_t searchxe, int32_t searchye, int32_t *x, int32_t *y);
|
||||||
int32_t getpointhighlight(int32_t xplc, int32_t yplc, int32_t point);
|
int32_t getpointhighlight(int32_t xplc, int32_t yplc, int32_t point);
|
||||||
void update_highlight();
|
void update_highlight();
|
||||||
|
void update_highlightsector();
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#define DEFAULT_GAME_EXEC "eduke32.exe"
|
#define DEFAULT_GAME_EXEC "eduke32.exe"
|
||||||
|
|
|
@ -153,6 +153,7 @@ static int32_t fillist[640];
|
||||||
|
|
||||||
static int32_t mousx, mousy;
|
static int32_t mousx, mousy;
|
||||||
int16_t prefixtiles[16] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
|
int16_t prefixtiles[16] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
|
||||||
|
uint8_t hlsectorbitmap[MAXSECTORS>>3]; // show2dsector is already taken...
|
||||||
|
|
||||||
/*
|
/*
|
||||||
static char scantoasc[128] =
|
static char scantoasc[128] =
|
||||||
|
@ -445,9 +446,7 @@ int32_t app_main(int32_t argc, const char **argv)
|
||||||
}
|
}
|
||||||
|
|
||||||
k = clipmapinfo_load("_clipshape0.map");
|
k = clipmapinfo_load("_clipshape0.map");
|
||||||
if (k==0)
|
if (k>0)
|
||||||
initprintf("Loaded sprite clipping map.\n");
|
|
||||||
else if (k>0)
|
|
||||||
initprintf("There was an error loading the sprite clipping map (status %d).\n", k);
|
initprintf("There was an error loading the sprite clipping map (status %d).\n", k);
|
||||||
|
|
||||||
for (i=0; i<MAXSECTORS; i++) sector[i].extra = -1;
|
for (i=0; i<MAXSECTORS; i++) sector[i].extra = -1;
|
||||||
|
@ -1315,6 +1314,7 @@ static void duplicate_selected_sectors()
|
||||||
newnumwalls += sector[highlightsector[i]].wallnum;
|
newnumwalls += sector[highlightsector[i]].wallnum;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Bmemset(hlsectorbitmap, 0, sizeof(hlsectorbitmap));
|
||||||
for (i=0; i<highlightsectorcnt; i++)
|
for (i=0; i<highlightsectorcnt; i++)
|
||||||
{
|
{
|
||||||
// first, make red lines of old selected sectors, effectively
|
// first, make red lines of old selected sectors, effectively
|
||||||
|
@ -1330,12 +1330,15 @@ static void duplicate_selected_sectors()
|
||||||
|
|
||||||
// Then, highlight the ones just copied.
|
// Then, highlight the ones just copied.
|
||||||
// These will have all walls whited out.
|
// These will have all walls whited out.
|
||||||
highlightsector[i] = numsectors+i;
|
j = numsectors + i;
|
||||||
|
hlsectorbitmap[j>>3] |= (1<<(j&7));
|
||||||
}
|
}
|
||||||
|
|
||||||
numsectors = newnumsectors;
|
numsectors = newnumsectors;
|
||||||
numwalls = newnumwalls;
|
numwalls = newnumwalls;
|
||||||
|
|
||||||
|
update_highlightsector(); // must be after numsectors = newnumsectors
|
||||||
|
|
||||||
newnumwalls = -1;
|
newnumwalls = -1;
|
||||||
newnumsectors = -1;
|
newnumsectors = -1;
|
||||||
|
|
||||||
|
@ -1396,6 +1399,19 @@ void update_highlight()
|
||||||
highlightcnt = -1;
|
highlightcnt = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void update_highlightsector()
|
||||||
|
{
|
||||||
|
int32_t i;
|
||||||
|
|
||||||
|
highlightsectorcnt = 0;
|
||||||
|
for (i=0; i<numsectors; i++)
|
||||||
|
if (hlsectorbitmap[i>>3]&(1<<(i&7)))
|
||||||
|
highlightsector[highlightsectorcnt++] = i;
|
||||||
|
|
||||||
|
if (highlightsectorcnt==0)
|
||||||
|
highlightsectorcnt = -1;
|
||||||
|
}
|
||||||
|
|
||||||
void overheadeditor(void)
|
void overheadeditor(void)
|
||||||
{
|
{
|
||||||
char buffer[80], *dabuffer, ch;
|
char buffer[80], *dabuffer, ch;
|
||||||
|
@ -1448,12 +1464,12 @@ void overheadeditor(void)
|
||||||
enddrawing(); //}}}
|
enddrawing(); //}}}
|
||||||
|
|
||||||
pag = 0;
|
pag = 0;
|
||||||
highlightcnt = -1;
|
|
||||||
cursectorhighlight = -1;
|
cursectorhighlight = -1;
|
||||||
lastpm16time = -1;
|
lastpm16time = -1;
|
||||||
|
|
||||||
ovh_whiteoutgrab();
|
ovh_whiteoutgrab();
|
||||||
|
|
||||||
|
highlightcnt = -1;
|
||||||
Bmemset(show2dwall, 0, sizeof(show2dwall)); //Clear all highlights
|
Bmemset(show2dwall, 0, sizeof(show2dwall)); //Clear all highlights
|
||||||
Bmemset(show2dsprite, 0, sizeof(show2dsprite));
|
Bmemset(show2dsprite, 0, sizeof(show2dsprite));
|
||||||
|
|
||||||
|
@ -1777,9 +1793,10 @@ void overheadeditor(void)
|
||||||
|
|
||||||
numwalls = tempint;
|
numwalls = tempint;
|
||||||
|
|
||||||
if (highlightsectorcnt > 0)
|
if (highlightsectorcnt >= 0)
|
||||||
for (i=0; i<highlightsectorcnt; i++)
|
for (i=0; i<numsectors; i++)
|
||||||
fillsector(highlightsector[i],2);
|
if (hlsectorbitmap[i>>3]&(1<<(i&7)))
|
||||||
|
fillsector(i,2);
|
||||||
|
|
||||||
if (keystatus[0x2a]) // FIXME
|
if (keystatus[0x2a]) // FIXME
|
||||||
{
|
{
|
||||||
|
@ -1809,7 +1826,7 @@ void overheadeditor(void)
|
||||||
if (joinsector[0] >= 0)
|
if (joinsector[0] >= 0)
|
||||||
col = editorcolors[11];
|
col = editorcolors[11];
|
||||||
|
|
||||||
if (keystatus[0x36] && !eitherCTRL) // RSHIFT
|
if ((keystatus[0x36] || keystatus[0xb8]) && !eitherCTRL) // RSHIFT || RALT
|
||||||
{
|
{
|
||||||
if (keystatus[0x27] || keystatus[0x28]) // ' and ;
|
if (keystatus[0x27] || keystatus[0x28]) // ' and ;
|
||||||
{
|
{
|
||||||
|
@ -2486,6 +2503,8 @@ void overheadeditor(void)
|
||||||
{
|
{
|
||||||
if (highlightsectorcnt == 0)
|
if (highlightsectorcnt == 0)
|
||||||
{
|
{
|
||||||
|
int32_t add=keystatus[0x28], sub=(!add && keystatus[0x27]), setop=(add||sub);
|
||||||
|
|
||||||
getpoint(highlightx1,highlighty1, &highlightx1,&highlighty1);
|
getpoint(highlightx1,highlighty1, &highlightx1,&highlighty1);
|
||||||
getpoint(highlightx2,highlighty2, &highlightx2,&highlighty2);
|
getpoint(highlightx2,highlighty2, &highlightx2,&highlighty2);
|
||||||
|
|
||||||
|
@ -2494,6 +2513,9 @@ void overheadeditor(void)
|
||||||
if (highlighty1 > highlighty2)
|
if (highlighty1 > highlighty2)
|
||||||
swaplong(&highlighty1, &highlighty2);
|
swaplong(&highlighty1, &highlighty2);
|
||||||
|
|
||||||
|
if (!setop)
|
||||||
|
Bmemset(hlsectorbitmap, 0, sizeof(hlsectorbitmap));
|
||||||
|
|
||||||
for (i=0; i<numsectors; i++)
|
for (i=0; i<numsectors; i++)
|
||||||
{
|
{
|
||||||
startwall = sector[i].wallptr;
|
startwall = sector[i].wallptr;
|
||||||
|
@ -2508,11 +2530,23 @@ void overheadeditor(void)
|
||||||
if (bad == 1) break;
|
if (bad == 1) break;
|
||||||
}
|
}
|
||||||
if (bad == 0)
|
if (bad == 0)
|
||||||
highlightsector[highlightsectorcnt++] = i;
|
{
|
||||||
|
if (sub)
|
||||||
|
{
|
||||||
|
hlsectorbitmap[i>>3] &= ~(1<<(i&7));
|
||||||
|
for (j=sector[i].wallptr; j<sector[i].wallptr+sector[i].wallnum; j++)
|
||||||
|
{
|
||||||
|
if (wall[j].nextwall >= 0)
|
||||||
|
checksectorpointer(wall[j].nextwall,wall[j].nextsector);
|
||||||
|
checksectorpointer((int16_t)j, i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
hlsectorbitmap[i>>3] |= (1<<(i&7));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (highlightsectorcnt <= 0)
|
|
||||||
highlightsectorcnt = -1;
|
|
||||||
|
|
||||||
|
update_highlightsector();
|
||||||
ovh_whiteoutgrab();
|
ovh_whiteoutgrab();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3997,6 +4031,7 @@ SKIP:
|
||||||
}
|
}
|
||||||
|
|
||||||
newnumwalls = -1;
|
newnumwalls = -1;
|
||||||
|
Bmemset(hlsectorbitmap, 0, sizeof(hlsectorbitmap));
|
||||||
highlightsectorcnt = -1;
|
highlightsectorcnt = -1;
|
||||||
|
|
||||||
Bmemset(show2dwall, 0, sizeof(show2dwall));
|
Bmemset(show2dwall, 0, sizeof(show2dwall));
|
||||||
|
@ -4009,6 +4044,7 @@ SKIP:
|
||||||
if (k == 0)
|
if (k == 0)
|
||||||
{
|
{
|
||||||
deletesector((int16_t)i);
|
deletesector((int16_t)i);
|
||||||
|
Bmemset(hlsectorbitmap, 0, sizeof(hlsectorbitmap));
|
||||||
highlightsectorcnt = -1;
|
highlightsectorcnt = -1;
|
||||||
|
|
||||||
Bmemset(show2dwall, 0, sizeof(show2dwall));
|
Bmemset(show2dwall, 0, sizeof(show2dwall));
|
||||||
|
@ -4149,6 +4185,9 @@ nextmap:
|
||||||
Bstrcpy(boardfilename, selectedboardfilename);
|
Bstrcpy(boardfilename, selectedboardfilename);
|
||||||
|
|
||||||
highlightcnt = -1;
|
highlightcnt = -1;
|
||||||
|
Bmemset(show2dwall, 0, sizeof(show2dwall)); //Clear all highlights
|
||||||
|
Bmemset(show2dsprite, 0, sizeof(show2dsprite));
|
||||||
|
|
||||||
sectorhighlightstat = -1;
|
sectorhighlightstat = -1;
|
||||||
newnumwalls = -1;
|
newnumwalls = -1;
|
||||||
joinsector[0] = -1;
|
joinsector[0] = -1;
|
||||||
|
@ -4242,9 +4281,10 @@ CANCEL:
|
||||||
|
|
||||||
if (ch == 'Y' || ch == 'y')
|
if (ch == 'Y' || ch == 'y')
|
||||||
{
|
{
|
||||||
|
Bmemset(hlsectorbitmap, 0, sizeof(hlsectorbitmap));
|
||||||
highlightsectorcnt = -1;
|
highlightsectorcnt = -1;
|
||||||
highlightcnt = -1;
|
|
||||||
|
|
||||||
|
highlightcnt = -1;
|
||||||
//Clear all highlights
|
//Clear all highlights
|
||||||
Bmemset(show2dwall, 0, sizeof(show2dwall));
|
Bmemset(show2dwall, 0, sizeof(show2dwall));
|
||||||
Bmemset(show2dsprite, 0, sizeof(show2dsprite));
|
Bmemset(show2dsprite, 0, sizeof(show2dsprite));
|
||||||
|
@ -4311,6 +4351,7 @@ CANCEL:
|
||||||
updatenumsprites();
|
updatenumsprites();
|
||||||
if ((numsectors+highlightsectorcnt > MAXSECTORS) || (numwalls+j > MAXWALLS) || (numsprites+k > MAXSPRITES))
|
if ((numsectors+highlightsectorcnt > MAXSECTORS) || (numwalls+j > MAXWALLS) || (numsprites+k > MAXSPRITES))
|
||||||
{
|
{
|
||||||
|
Bmemset(hlsectorbitmap, 0, sizeof(hlsectorbitmap));
|
||||||
highlightsectorcnt = -1;
|
highlightsectorcnt = -1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -4353,6 +4394,9 @@ CANCEL:
|
||||||
}
|
}
|
||||||
|
|
||||||
highlightcnt = -1;
|
highlightcnt = -1;
|
||||||
|
Bmemset(show2dwall, 0, sizeof(show2dwall)); //Clear all highlights
|
||||||
|
Bmemset(show2dsprite, 0, sizeof(show2dsprite));
|
||||||
|
|
||||||
sectorhighlightstat = -1;
|
sectorhighlightstat = -1;
|
||||||
newnumwalls = -1;
|
newnumwalls = -1;
|
||||||
joinsector[0] = -1;
|
joinsector[0] = -1;
|
||||||
|
@ -4380,18 +4424,22 @@ CANCEL:
|
||||||
{
|
{
|
||||||
if ((numsectors+highlightsectorcnt > MAXSECTORS) || (sector[MAXSECTORS-highlightsectorcnt].wallptr < numwalls))
|
if ((numsectors+highlightsectorcnt > MAXSECTORS) || (sector[MAXSECTORS-highlightsectorcnt].wallptr < numwalls))
|
||||||
{
|
{
|
||||||
|
Bmemset(hlsectorbitmap, 0, sizeof(hlsectorbitmap));
|
||||||
highlightsectorcnt = -1;
|
highlightsectorcnt = -1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//Re-attach sectors&walls
|
//Re-attach sectors&walls
|
||||||
|
Bmemset(hlsectorbitmap, 0, sizeof(hlsectorbitmap));
|
||||||
for (i=0; i<highlightsectorcnt; i++)
|
for (i=0; i<highlightsectorcnt; i++)
|
||||||
{
|
{
|
||||||
copysector((int16_t)(MAXSECTORS-highlightsectorcnt+i),numsectors,numwalls,0);
|
copysector((int16_t)(MAXSECTORS-highlightsectorcnt+i),numsectors,numwalls,0);
|
||||||
highlightsector[i] = numsectors;
|
hlsectorbitmap[numsectors>>3] |= (1<<(numsectors&7));
|
||||||
numwalls += sector[numsectors].wallnum;
|
numwalls += sector[numsectors].wallnum;
|
||||||
numsectors++;
|
numsectors++;
|
||||||
}
|
}
|
||||||
|
update_highlightsector();
|
||||||
|
|
||||||
//Re-attach sprites
|
//Re-attach sprites
|
||||||
while (m < MAXSPRITES)
|
while (m < MAXSPRITES)
|
||||||
{
|
{
|
||||||
|
|
|
@ -264,14 +264,19 @@ static void clipmapinfo_init()
|
||||||
clipmapinfo.numsectors = clipmapinfo.numwalls = 0;
|
clipmapinfo.numsectors = clipmapinfo.numwalls = 0;
|
||||||
clipmapinfo.sector=NULL;
|
clipmapinfo.sector=NULL;
|
||||||
clipmapinfo.wall=NULL;
|
clipmapinfo.wall=NULL;
|
||||||
|
|
||||||
|
numsectors = 0;
|
||||||
|
numwalls = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// loads the clip maps 0 through 9.
|
||||||
|
// this should be called before any real map is loaded.
|
||||||
int32_t clipmapinfo_load(char *filename)
|
int32_t clipmapinfo_load(char *filename)
|
||||||
{
|
{
|
||||||
int32_t i,k,w, px,py,pz;
|
int32_t i,k,w, px,py,pz;
|
||||||
int16_t ang,cs;
|
int16_t ang,cs;
|
||||||
|
|
||||||
char fn[BMAX_PATH];
|
char fn[BMAX_PATH], loadedwhich[32]={0}, *lwcp=loadedwhich;
|
||||||
int32_t slen, fi, fisec[10], fispr[10];
|
int32_t slen, fi, fisec[10], fispr[10];
|
||||||
int32_t ournumsectors=0, ournumwalls=0, ournumsprites=0, numsprites;
|
int32_t ournumsectors=0, ournumwalls=0, ournumsprites=0, numsprites;
|
||||||
|
|
||||||
|
@ -337,6 +342,14 @@ int32_t clipmapinfo_load(char *filename)
|
||||||
ournumsectors += numsectors;
|
ournumsectors += numsectors;
|
||||||
ournumwalls += numwalls;
|
ournumwalls += numwalls;
|
||||||
ournumsprites += numsprites;
|
ournumsprites += numsprites;
|
||||||
|
|
||||||
|
if (lwcp != loadedwhich)
|
||||||
|
{
|
||||||
|
*lwcp++ = ',';
|
||||||
|
*lwcp++ = ' ';
|
||||||
|
}
|
||||||
|
*lwcp++ = fi;
|
||||||
|
*lwcp = 0;
|
||||||
}
|
}
|
||||||
quickloadboard = 0;
|
quickloadboard = 0;
|
||||||
|
|
||||||
|
@ -346,6 +359,7 @@ int32_t clipmapinfo_load(char *filename)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// shrink
|
||||||
loadsector = Brealloc(loadsector, ournumsectors*sizeof(sectortype));
|
loadsector = Brealloc(loadsector, ournumsectors*sizeof(sectortype));
|
||||||
loadwall = Brealloc(loadwall, ournumwalls*sizeof(walltype));
|
loadwall = Brealloc(loadwall, ournumwalls*sizeof(walltype));
|
||||||
|
|
||||||
|
@ -621,6 +635,12 @@ int32_t clipmapinfo_load(char *filename)
|
||||||
Bfree(loadsprite); loadsprite=NULL;
|
Bfree(loadsprite); loadsprite=NULL;
|
||||||
Bfree(tempictoidx); tempictoidx=NULL;
|
Bfree(tempictoidx); tempictoidx=NULL;
|
||||||
|
|
||||||
|
// don't let other code be distracted by the temporary map we constructed
|
||||||
|
numsectors = 0;
|
||||||
|
numwalls = 0;
|
||||||
|
|
||||||
|
initprintf("Loaded clip map%s %s.\n", lwcp==loadedwhich+1?"":"s", loadedwhich);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7162,6 +7182,7 @@ int32_t loadboard(char *filename, char fromwhere, int32_t *daposx, int32_t *dapo
|
||||||
{
|
{
|
||||||
initprintf(OSD_ERROR "Map error: sprite #%d(%d,%d) with illegal picnum(%d). Map is corrupt!\n",i,sprite[i].x,sprite[i].y,sprite[i].picnum);
|
initprintf(OSD_ERROR "Map error: sprite #%d(%d,%d) with illegal picnum(%d). Map is corrupt!\n",i,sprite[i].x,sprite[i].y,sprite[i].picnum);
|
||||||
dq[dnum++] = i;
|
dq[dnum++] = i;
|
||||||
|
sprite[i].picnum = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9491,7 +9512,7 @@ int32_t lastwall(int16_t point)
|
||||||
|
|
||||||
//////////
|
//////////
|
||||||
|
|
||||||
static int32_t clipsprite_try(spritetype *spr, int32_t xmin, int32_t ymin, int32_t xmax, int32_t ymax)
|
static int32_t clipsprite_try(const spritetype *spr, int32_t xmin, int32_t ymin, int32_t xmax, int32_t ymax)
|
||||||
{
|
{
|
||||||
int32_t i,k,tempint1,tempint2;
|
int32_t i,k,tempint1,tempint2;
|
||||||
|
|
||||||
|
@ -9969,7 +9990,8 @@ int32_t clipmove(vec3_t *vect, int16_t *sectnum,
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
intx = goalx; inty = goaly;
|
intx = goalx; inty = goaly;
|
||||||
if ((hitwall = raytrace(vect->x, vect->y, &intx, &inty)) >= 0)
|
hitwall = raytrace(vect->x, vect->y, &intx, &inty);
|
||||||
|
if (hitwall >= 0)
|
||||||
{
|
{
|
||||||
lx = clipit[hitwall].x2-clipit[hitwall].x1;
|
lx = clipit[hitwall].x2-clipit[hitwall].x1;
|
||||||
ly = clipit[hitwall].y2-clipit[hitwall].y1;
|
ly = clipit[hitwall].y2-clipit[hitwall].y1;
|
||||||
|
@ -12148,7 +12170,7 @@ void draw2dscreen(int32_t posxe, int32_t posye, int16_t ange, int32_t zoome, int
|
||||||
if (totalclock & 16)
|
if (totalclock & 16)
|
||||||
pointsize++;
|
pointsize++;
|
||||||
}
|
}
|
||||||
else if ((highlightcnt > 0) && (editstatus == 1))
|
else //if (highlightcnt > 0)
|
||||||
{
|
{
|
||||||
if (show2dwall[i>>3]&pow2char[i&7])
|
if (show2dwall[i>>3]&pow2char[i&7])
|
||||||
{
|
{
|
||||||
|
@ -12193,7 +12215,7 @@ void draw2dscreen(int32_t posxe, int32_t posye, int16_t ange, int32_t zoome, int
|
||||||
{
|
{
|
||||||
if (totalclock & 32) col += (2<<2);
|
if (totalclock & 32) col += (2<<2);
|
||||||
}
|
}
|
||||||
else if ((highlightcnt > 0) && (editstatus == 1))
|
else // if (highlightcnt > 0)
|
||||||
{
|
{
|
||||||
if (show2dsprite[j>>3]&pow2char[j&7])
|
if (show2dsprite[j>>3]&pow2char[j&7])
|
||||||
if (totalclock & 32) col += (2<<2);
|
if (totalclock & 32) col += (2<<2);
|
||||||
|
|
|
@ -9860,9 +9860,7 @@ CLEAN_DIRECTORY:
|
||||||
}
|
}
|
||||||
|
|
||||||
i = clipmapinfo_load("_clipshape0.map");
|
i = clipmapinfo_load("_clipshape0.map");
|
||||||
if (i==0)
|
if (i>0)
|
||||||
initprintf("Loaded sprite clipping map.\n");
|
|
||||||
else if (i>0)
|
|
||||||
initprintf("There was an error loading the sprite clipping map (status %d).\n", i);
|
initprintf("There was an error loading the sprite clipping map (status %d).\n", i);
|
||||||
|
|
||||||
OSD_Exec("autoexec.cfg");
|
OSD_Exec("autoexec.cfg");
|
||||||
|
|
Loading…
Reference in a new issue