[C] DooM ARENA! (Launcher)

Sub-fórum especial para usuários que querem discutir/aprender programação, como as linguagens C/C++/C#, Java, HTML, e por aí vai...
Rico
Mensagens: 2354
Registrado em: Dom Set 10, 2006 11:49 am
Answers: 0
18
Localização: Atrás do DU0
Contato:

Mensagem por Rico »

Eu to pensando em fazer um resource para isso, fazer apenas uma telinha mostrando uma IMG e um espaço para mostrar o que o DOS mostraria, pra ficar bunitinho :)
ae fabio se preocupa em programar ele, e eu tento aprender o que eu to lendo aki no livro q catei :D
[xfire]p0br3[/xfire]
Futuro PC:

CPU: AMD Athlon x2 64Bits 7750 2.7GHz Black Edition
MoBo: Asus M2 ou M3.
VGA: XFX Geforce 9800 GTX 512MB ou 1GB/256Bits
HD: Seagate 1TB
PSU: ATX 600w REAIS
RAM: 4GB Ram DDR2 Kingstone @800MHz [2x2Gb]
Avatar do usuário
Fabio914
Mensagens: 1757
Registrado em: Dom Mai 21, 2006 4:38 pm
Answers: 0
18
Localização: Sampa/Sanca
Contato:

Mensagem por Fabio914 »

Doom ARENA v.0.3!

Já testei a versão 0.3 (daquele source) e está funfando tudo 100% (ao menos a parte de Windows está , pois a de Linux eu ainda não testei).

Segue aqui o download da ultima versão:
Download (RAR 1.3MB)

Esta versão conta com um pequeno mapa (que era pra ser o meu mapa do RU) deathmatch, vocês podem testar algumas das novas funções do launcher com ele , como a gravação de demos!

Changelog
- Pode-se carregar configs.
- Pode-se habilitar o modo open-gl para apenas aquela execução (se este já não estiver habilitado)
- E pode-se gravar e carregar demos (mesmo de jogos online)

Screenshot
Imagem


Com esta versão do Doom Arena já é possivel jogar os futuros mapas DM do D3onGZD online! :wink:
Projetos em andamento
the Core
Eclipse

Projetos parados
Doom 3 on GZDoom
FSD Project

PC
AMD Athlon 64 X2 5200+ (2x 2.6Ghz)
2GB RAM (2x 1GB DDR2)
240GB (160GB SATA + 80GB SATA)
XFX nVidia GeForce 8600 GT (600mhz 256mb)
Placa Mãe ASUS M2N4 SLI (2x PCI-E 16x SLI, 4x DDR2 800, nForce 4)
Fonte 500W reais (esqueci o nome da marca)
Monitor LG Flatron 19'' LCD
Avatar do usuário
Mathey Bu
Mensagens: 502
Registrado em: Seg Jul 21, 2008 11:18 am
Answers: 0
16
Localização: Decorate

Mensagem por Mathey Bu »

show o aplicativo vo passar para meus amigos vam adorar
Avatar do usuário
N3VERHOOD
Mensagens: 272
Registrado em: Dom Jan 20, 2008 3:27 pm
Answers: 0
17
Localização: Somewhere

Mensagem por N3VERHOOD »

hmmm
quem saiba um dia o DooM Arena chege as cabeça junto com o Zdaemon e o Skulltag

seria uma boa levar isso pra frente
Rico
Mensagens: 2354
Registrado em: Dom Set 10, 2006 11:49 am
Answers: 0
18
Localização: Atrás do DU0
Contato:

Mensagem por Rico »

Isso viro um CloseSource?
Passa o SourceCode plz!
Z1 Engine 10% para Linux \o/
[xfire]p0br3[/xfire]
Futuro PC:

CPU: AMD Athlon x2 64Bits 7750 2.7GHz Black Edition
MoBo: Asus M2 ou M3.
VGA: XFX Geforce 9800 GTX 512MB ou 1GB/256Bits
HD: Seagate 1TB
PSU: ATX 600w REAIS
RAM: 4GB Ram DDR2 Kingstone @800MHz [2x2Gb]
Rico
Mensagens: 2354
Registrado em: Dom Set 10, 2006 11:49 am
Answers: 0
18
Localização: Atrás do DU0
Contato:

Re: DooM ARENA! (Launcher)

Mensagem por Rico »

Fabio914 escreveu:Doom ARENA

Hoje a tarde eu não estava com nada melhor pra fazer então eu desenvolvi um pequeno launcher para DOS que , assim como o ZDL , executa wads em modos offline e online. Ele é um programinha muito util pra quem deseja jogar online com GZDoom e ZDoom e tem dificuldades com isso.

Hj de tarde também não tinha coisa melhor para fazer. Então eu pensei: eu já atualizei meu Linux, ele está perfeito para programação, acho que vou voltar ao projeto meio que esquecido por alguns, mas não por mim!

Como eu sei que ninguém aqui usa Linux, e eu hávia prometido uma versão para Linux. Aqui está!
<pre>

Código: Selecionar todos

#include <stdio>
#include <stdlib>

// DOOM ARENA! v.0.2
// Criado por Fabio914
// Versão Linux: R1c0

int main()
{
    char sp[20]; // source port
    char players[10]; //numero de jogadores 1 - offline 2 ou mais , online
    char host[10]; //modo de operação : cliente ou servidor
    char mode[10]; //deathmatch 1 , coop/sp 0
    char srvip[50]; //ip do servidor
    char iwad[20]; //iwad
    char pwad01[20]; //pwad
    char pwad02[20];
    char pwad03[20];
    char pwad04[20];
    char warp[20]; //warp
    char optimized[10]; //otimização
    char time[10]; //timelimit
    char skill[10]; //skill
    char frag[10]; //fraglimit
    

    char fvar[50];
    char svar[50];
    int i=0;
    

printf("**      ****   ****  ***   *** \n");
printf("* **   *    * *    * *  * *  * \n");
printf("*  **  *    * *    * *   **  * \n");
printf("*    * *    * *    * *       * \n");
printf("*    * *    * *    * *  * *  * \n");
printf("*    * *    * *    * *  ***  * \n");
printf("*    * *    * *    * *  * *  * \n");
printf("*  **   ****   ****  *  * *  * \n");
printf("* **                  * * *  * \n");
printf("**                     *  *  * \n");
printf("*                          * * \n");
printf("                            ** \n \n");

    printf("Doom ARENA Launcher! v.0.2\nBy Fabio914\nLinux Version by R1c0");
    FILE *fp;
    fp = fopen("gen.txt","r");
    if (fp == NULL)
    {
        printf("Error : Error while reading file!\n\n");
        exit(2);
    }
    while(fscanf(fp,"%s %s",fvar,svar)!=EOF)
    {
    if(strcmp(fvar,"sourceport")==0)
    {
        strcpy(sp,svar);
        i++;
    }
    else if(strcmp(fvar,"players")==0)
    {
        strcpy(players,svar);
        i++;
    }
     else if(strcmp(fvar,"host")==0)
     {
        strcpy(host,svar);
        i++;
    }
    else if(strcmp(fvar,"serverip")==0)
    {
        strcpy(srvip,svar);
        i++;
    }
    else if(strcmp(fvar,"mode")==0)
    {
        strcpy(mode,svar);
        i++;
    }
    else if(strcmp(fvar,"iwad")==0)
    {
        strcpy(iwad,svar);
        i++;
    }
    else if(strcmp(fvar,"pwad01")==0)
    {
        strcpy(pwad01,svar);
        i++;
    }
    else if(strcmp(fvar,"pwad02")==0)
    {
        strcpy(pwad02,svar);
        i++;
    }
    else if(strcmp(fvar,"pwad03")==0)
    {
        strcpy(pwad03,svar);
        i++;
    }
    else if(strcmp(fvar,"pwad04")==0)
    {
        strcpy(pwad04,svar);
        i++;
    }
    else if(strcmp(fvar,"opt")==0)
    {
        strcpy(optimized,svar);
        i++;
    }
    else if(strcmp(fvar,"timelimit")==0)
    {
        strcpy(time,svar);
        i++;
    }
    else if(strcmp(fvar,"warp")==0)
    {
        strcpy(warp,svar);
        i++;
    }
    else if(strcmp(fvar,"skill")==0)
    {
        strcpy(skill,svar);
        i++;
    }
    else if(strcmp(fvar,"fraglimit")==0)
    {
        strcpy(frag,svar);
        i++;
    }

    else if (i == 15)
    {
        break;

    }
}
    
   fclose(fp);


    //Escrevendo Script
    FILE *fd;
    fd = fopen("run_me.sh","w");
    printf("\nStatus : Generating SCRIPT");   

    fprintf(fd,"./%s",sp);
    fprintf(fd," -iwad %s",iwad);
    fprintf(fd," -file %s %s %s %s ",pwad01,pwad02,pwad03,pwad04);
    if (strcmp(skill,"0")==0 || strcmp(skill,"1")==0 || strcmp(skill,"2")==0 || strcmp(skill,"3")==0 || strcmp(skill,"4")==0 )
    {
       fprintf(fd," -skill %s ",skill);
    }
    if (strcmp(players,"2")==0 || strcmp(players,"3")==0 || strcmp(players,"4")==0)
    {
        if (strcmp(host,"0")==0 && strcmp(optimized,"0")==0)
        fprintf(fd," -join %s",srvip);
        else if (strcmp(host,"0")==0 && strcmp(optimized,"1")==0)
        fprintf(fd," -join %s -dup 2 -netmode 1",srvip);
        else if (strcmp(host,"1")==0 && strcmp(optimized,"0")==0)
        fprintf(fd," -host %s",players);
        else if (strcmp(host,"1")==0 && strcmp(optimized,"1")==0)
        fprintf(fd," -host %s -dup 2 -netmode 1",players);
    }
    if(strcmp(mode,"1")==0)
    fprintf(fd," -deathmatch -nomonsters +set sv_cheats 1");

    if(strcmp(warp,"none")!=0)
    fprintf(fd," -warp %s",warp);

    if(strcmp(time,"none")!=0)
    fprintf(fd," -timer %s",time);

    if(strcmp(frag,"none")!=0 && strcmp(frag,"0")!=0)
    fprintf(fd," +set fraglimit %s",frag);

    fclose(fd);

    printf("\nStatus : SCRIPT generated!");
    system("./run_me.sh");
    printf("\nStatus : Finished!\n");

    exit(1);
}
</pre>

E estou tentando melhorá-lo para que tenha apenas uma variável pwad que leia todos numa linha só. Fabio se puder ajudar :D

Traduzindo, to tentando deixar o programa mais leve do que já é e liberar mais pwads para o launcher. (Mais leve é menos memória alocada ou seja separada pro programa)

Caso alguém esteja interessado no programa já compilado aqui está

DOOM ARENA LINUX
Editado pela última vez por Rico em Qua Set 03, 2008 8:08 pm, em um total de 1 vez.
Avatar do usuário
Fabio914
Mensagens: 1757
Registrado em: Dom Mai 21, 2006 4:38 pm
Answers: 0
18
Localização: Sampa/Sanca
Contato:

Mensagem por Fabio914 »

Na verdade eu já tinha feito uma versão para Linux...

Código: Selecionar todos

#include <stdio>
#include <stdlib>

// DOOM ARENA! v.0.3 (linux version)

int main()
{
    char sp[20]; // source port
    char players[10]; //numero de jogadores 1 - offline 2 ou mais , online
    char host[10]; //modo de operação : cliente ou servidor
    char mode[10]; //deathmatch 1 , coop/sp 0
    char srvip[50]; //ip do servidor
    char iwad[20]; //iwad
    char pwad01[20]; //pwad
    char pwad02[20];
    char pwad03[20];
    char pwad04[20];
    char warp[20]; //warp
    char optimized[10]; //otimização
    char time[10]; //timelimit
    char skill[10]; //skill
    char frag[10]; //fraglimit
    char opengl[10]; //open-gl (apenas gzdoom)
    char cfg[20]; //config
    char demo[20]; //r para gravar , l para ler
    char demof[50]; //arquivo demo a ser lido ou gravado




    char fvar[50];
    char svar[50];
    int i=0;



printf("**      ****   ****  ***   *** \n");
printf("* **   *    * *    * *  * *  * \n");
printf("*  **  *    * *    * *   **  * \n");
printf("*    * *    * *    * *       * \n");
printf("*    * *    * *    * *  * *  * \n");
printf("*    * *    * *    * *  ***  * \n");
printf("*    * *    * *    * *  * *  * \n");
printf("*  **   ****   ****  *  * *  * \n");
printf("* **                  * * *  * \n");
printf("**                     *  *  * \n");
printf("*                          * * \n");
printf("                            ** \n \n");

    printf("Doom ARENA Launcher! v.0.3\nBy Fabio914\n");
    FILE *fp;
    fp = fopen("gen.txt","r");
    if (fp == NULL){
        printf("Error : Error while reading file!\n\n");
        exit(2);
    }

while(fscanf(fp,"%s %s",fvar,svar)!=EOF){
    if(strcmp(fvar,"sourceport")==0){
        strcpy(sp,svar);
        i++;
    }
    else if(strcmp(fvar,"players")==0){
        strcpy(players,svar);
        i++;
    }
     else if(strcmp(fvar,"host")==0){
        strcpy(host,svar);
        i++;
    }
    else if(strcmp(fvar,"serverip")==0){
        strcpy(srvip,svar);
        i++;
    }
    else if(strcmp(fvar,"mode")==0){
        strcpy(mode,svar);
        i++;
    }
    else if(strcmp(fvar,"iwad")==0){
        strcpy(iwad,svar);
        i++;
    }
    else if(strcmp(fvar,"pwad01")==0){
        strcpy(pwad01,svar);
        i++;
    }
    else if(strcmp(fvar,"pwad02")==0){
        strcpy(pwad02,svar);
        i++;
    }
    else if(strcmp(fvar,"pwad03")==0){
        strcpy(pwad03,svar);
        i++;
    }
    else if(strcmp(fvar,"pwad04")==0){
        strcpy(pwad04,svar);
        i++;
    }
    else if(strcmp(fvar,"opt")==0){
        strcpy(optimized,svar);
        i++;
    }
    else if(strcmp(fvar,"timelimit")==0){
        strcpy(time,svar);
        i++;
    }
    else if(strcmp(fvar,"warp")==0){
        strcpy(warp,svar);
        i++;
    }
    else if(strcmp(fvar,"skill")==0){
        strcpy(skill,svar);
        i++;
    }
    else if(strcmp(fvar,"fraglimit")==0){
        strcpy(frag,svar);
        i++;
    }
    else if(strcmp(fvar,"opengl")==0){
        strcpy(opengl,svar);
        i++;
    }
    else if(strcmp(fvar,"config")==0){
        strcpy(cfg,svar);
        i++;
    }
    else if(strcmp(fvar,"demo")==0){
        strcpy(demo,svar);
        i++;
    }
    else if(strcmp(fvar,"demof")==0){
        strcpy(demof,svar);
        i++;
    }
    else if (i == 19){
        break;
    }
}

    fclose(fp);

    //Escrevendo BAT
    FILE *fd;
    fd = fopen("run_me.sh","w");
    printf("\nStatus : Generating BAT");

    fprintf(fd,".\%s",sp);
    fprintf(fd," -iwad %s",iwad);
    fprintf(fd," -file %s -file %s -file %s -file %s ",pwad01,pwad02,pwad03,pwad04);
    if (strcmp(skill,"0")==0 || strcmp(skill,"1")==0 || strcmp(skill,"2")==0 || strcmp(skill,"3")==0 || strcmp(skill,"4")==0 ){
    fprintf(fd," -skill %s ",skill); }
    if (strcmp(players,"2")==0 || strcmp(players,"3")==0 || strcmp(players,"4")==0){
        if (strcmp(host,"0")==0 && strcmp(optimized,"0")==0)
        fprintf(fd," -join %s",srvip);
        else if (strcmp(host,"0")==0 && strcmp(optimized,"1")==0)
        fprintf(fd," -join %s -dup 2 -netmode 1",srvip);
        else if (strcmp(host,"1")==0 && strcmp(optimized,"0")==0)
        fprintf(fd," -host %s",players);
        else if (strcmp(host,"1")==0 && strcmp(optimized,"1")==0)
        fprintf(fd," -host %s -dup 2 -netmode 1",players);
    }
    if(strcmp(mode,"1")==0)
    fprintf(fd," -deathmatch -altdeath -nomonsters +set sv_cheats 1");

    if(strcmp(warp,"none")!=0)
    fprintf(fd," -warp %s",warp);

    if(strcmp(time,"none")!=0)
    fprintf(fd," -timer %s",time);

    if(strcmp(frag,"none")!=0 && strcmp(frag,"0")!=0)
    fprintf(fd," +set fraglimit %s",frag);

    if(strcmp(opengl,"1")==0 && strcmp(sp,"gzdoom")==0){
    fprintf(fd," -opengl");
    }

    if(strcmp(cfg,"none")!=0)
    fprintf(fd," -config %s",cfg);

    if(strcmp(demo,"r")==0){
    fprintf(fd," -record %s",demof);
    }
    else if(strcmp(demo,"l")==0){
    fprintf(fd," -playdemo %s",demof);
    }

    fclose(fd);

    printf("\nStatus : BAT generated!");
    system(".\run_me.sh");
    printf("\nStatus : Finished!");

    exit(1);


}
Alias , esse seu código está identico ao que eu tinha feito meses atrás... Veja ai em cima...
Projetos em andamento
the Core
Eclipse

Projetos parados
Doom 3 on GZDoom
FSD Project

PC
AMD Athlon 64 X2 5200+ (2x 2.6Ghz)
2GB RAM (2x 1GB DDR2)
240GB (160GB SATA + 80GB SATA)
XFX nVidia GeForce 8600 GT (600mhz 256mb)
Placa Mãe ASUS M2N4 SLI (2x PCI-E 16x SLI, 4x DDR2 800, nForce 4)
Fonte 500W reais (esqueci o nome da marca)
Monitor LG Flatron 19'' LCD
Rico
Mensagens: 2354
Registrado em: Dom Set 10, 2006 11:49 am
Answers: 0
18
Localização: Atrás do DU0
Contato:

Mensagem por Rico »

eu juro que não copiei!
eu perdi minha tarde hj para passar, eu peguei a versão 0.2 e fiz para linux, tanto que se vc prestar atenção não há a variável opengl
entendeu?
foi tudo na unha :)
blz, mas minha proposta de fazer apenas uma variavel para as pwads espero que ainda esteja de pé!

vou tá compilando o novo código



Edit:
Erro 1
Ae Fabio, como eu sou rapido e tava com o professor (defensor de linux \o/) e programador C/C++ (e como o_O) mesmo o codigo sendo praticamente igual do windows ele mesmo assim não compila 100% mesmo tendo stdio e stdlib eles nao incluem alguns comandos como strcmp, strcpy, entao ele me falo, falto uma coisinha,

Código: Selecionar todos

#include <string>
isso faz com que inclua tudo :D

Erro 2
vc inverteu as barras, mesmo que vc axe q eh inutil e nao faz diferença, no linux FAZ SIM, vou dar um exemplo pq!
Uma pasta com nome : lol e outra com LOL são pastas totalmente diferentes. entao de uma barra '\' e '/' faz diferença

então acerta seu código \o
[xfire]p0br3[/xfire]
Futuro PC:

CPU: AMD Athlon x2 64Bits 7750 2.7GHz Black Edition
MoBo: Asus M2 ou M3.
VGA: XFX Geforce 9800 GTX 512MB ou 1GB/256Bits
HD: Seagate 1TB
PSU: ATX 600w REAIS
RAM: 4GB Ram DDR2 Kingstone @800MHz [2x2Gb]
Rico
Mensagens: 2354
Registrado em: Dom Set 10, 2006 11:49 am
Answers: 0
18
Localização: Atrás do DU0
Contato:

Mensagem por Rico »

desculpem consegui bugar o php :P
[xfire]p0br3[/xfire]
Futuro PC:

CPU: AMD Athlon x2 64Bits 7750 2.7GHz Black Edition
MoBo: Asus M2 ou M3.
VGA: XFX Geforce 9800 GTX 512MB ou 1GB/256Bits
HD: Seagate 1TB
PSU: ATX 600w REAIS
RAM: 4GB Ram DDR2 Kingstone @800MHz [2x2Gb]
Avatar do usuário
Fabio914
Mensagens: 1757
Registrado em: Dom Mai 21, 2006 4:38 pm
Answers: 0
18
Localização: Sampa/Sanca
Contato:

Mensagem por Fabio914 »

R1c0 escreveu:Erro 2
vc inverteu as barras, mesmo que vc axe q eh inutil e nao faz diferença, no linux FAZ SIM, vou dar um exemplo pq!
Uma pasta com nome : lol e outra com LOL são pastas totalmente diferentes. entao de uma barra '\' e '/' faz diferença

então acerta seu código \o
Mas em que trecho faltam as barras?
Projetos em andamento
the Core
Eclipse

Projetos parados
Doom 3 on GZDoom
FSD Project

PC
AMD Athlon 64 X2 5200+ (2x 2.6Ghz)
2GB RAM (2x 1GB DDR2)
240GB (160GB SATA + 80GB SATA)
XFX nVidia GeForce 8600 GT (600mhz 256mb)
Placa Mãe ASUS M2N4 SLI (2x PCI-E 16x SLI, 4x DDR2 800, nForce 4)
Fonte 500W reais (esqueci o nome da marca)
Monitor LG Flatron 19'' LCD