Announcement

Collapse
No announcement yet.

Jugando con el SDK

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Jugando con el SDK

    me disponia a cascarle las bolas a Manolo porque sabia que al menos el le habia entrado al SDK de Civ, pero ya que estamos lo pregunto a la comunidad.


    estaba probando el SDK para editar el core de Civ... es en C++ y mis memorias de ello se remontan a la epoca de la facu, alla hace mas de 10 años ...


    estoy editando el CvPlayer la función de addMessage y pretendo pasar un "wchar *" a un simple y mortar "char *"


    y no lo estoy logrando!! apenas logro pasar 4 carateres y ya... creo que es algun problema del manejo de punteros que hace el C++ y que no tengo claro como hacer..


    algun civero que este "fresco" con el C??

  • #2
    ¿El civ tiene un SDK?
    Cuando un dedo señala la luna, los tontos miran el dedo. (del Mayo francés)

    Comment


    • #3
      fiajte en el directorio CvGameCoreDLL de tu instalacion. estan todos los fuentes de C

      Comment


      • #4
        Gerar va a poder agregar una opción 'Quemar Banco' al juego.
        Indifference is Bliss

        Comment


        • #5


          De veras. ¡Están los fuentes de C! ¡Qué raro! Supongo que no estarán TODOS.

          Néstor me dio una idea interesante

          Lástima que mi C está más oxidado que la tolaspi de Magno
          Cuando un dedo señala la luna, los tontos miran el dedo. (del Mayo francés)

          Comment


          • #6
            Yo tengo bastante fresco el C, pero la biblioteca wchar.h no la manejo.

            Por lo que he leído, el tipo de datos wchar es un entero corto (16 bits), mientras que el clásico char son sólo 8 bits. Seguramente ahí esté la clave. Tendría que ver el fragmento de código en cuestión.
            "Son españoles... los que no pueden ser otra cosa" (Cánovas del Castillo)
            "España es un problema, Europa su solución" (Ortega y Gasset)
            The Spanish Civilization Site
            "Déjate llevar por la complejidad y cabalga sobre ella" - Niessuh, sabio cívico

            Comment


            • #7
              Originally posted by jasev View Post
              Yo tengo bastante fresco el C, pero la biblioteca wchar.h no la manejo.

              Por lo que he leído, el tipo de datos wchar es un entero corto (16 bits), mientras que el clásico char son sólo 8 bits. Seguramente ahí esté la clave. Tendría que ver el fragmento de código en cuestión.


              he intentado de todo un poco.. pero mas por intuicion que por conocimiento.

              algo asi fue uno de las n pruebas

              m_listGameMessages.push_back(message);
              message2 = message;
              pszDescription = message.getDescription( );
              const wchar* wapi;
              wapi = pszDescription.GetCString(); // aqui tengo un wchar *

              int i = 0;
              char * api; // e intento pasarlo a un char *
              while wapi[i] != '\0')
              {
              api[i] = (CHAR)wapi[i];
              ++i;
              }


              esto aveces me devuelve 4 carateres del wapi y otras veces cancela por acceso denegado , algun puntero no inicializado o algo asi...

              tambien intente usar la WideCharToMultiByte que encontre por algun foro.. pero ni idea de los n parametros que tiene y solo logro por resultado un "Í"

              Comment


              • #8


                Vamos a ver: el problema es que el puntero a char que has creado es... eso, un puntero. No es una tabla. Tienes que reservar memoria para la tabla de caracteres.

                char api[N];

                o

                char *api;
                api = new char [N];
                /* sólo en C++ */

                o

                char *api;
                api = (char *) malloc (N*sizeof(char));
                /* C o C++ */

                Las dos últimas opciones son dinámicas, esto es, en lugar de N puedes poner una función, como por ejemplo strlen(wapi). La primera es estática, N ha de ser una constante lo bastante grande para albergar la cadena.

                Dicho esto, lo mismo se puede aplicar al wapi. A falta de conocer la interfaz de la función GetCString es probable que tampoco estés reservando la memoria y eso también provoque un problema.
                "Son españoles... los que no pueden ser otra cosa" (Cánovas del Castillo)
                "España es un problema, Europa su solución" (Ortega y Gasset)
                The Spanish Civilization Site
                "Déjate llevar por la complejidad y cabalga sobre ella" - Niessuh, sabio cívico

                Comment


                • #9
                  gracias! justo en el clave...

                  ahora me acuerdo porque era que odiaba al C ...

                  Comment


                  • #10
                    Originally posted by Magno_uy View Post
                    gracias! justo en el clave...

                    ahora me acuerdo porque era que odiaba al C ...
                    Señor (Ritchie), perdónalo porque no sabe lo que dice...
                    "Son españoles... los que no pueden ser otra cosa" (Cánovas del Castillo)
                    "España es un problema, Europa su solución" (Ortega y Gasset)
                    The Spanish Civilization Site
                    "Déjate llevar por la complejidad y cabalga sobre ella" - Niessuh, sabio cívico

                    Comment

                    Working...
                    X