DLL per GM in C#

Discussioni sui sistemi operativi, programmi e tools.
Rispondi
Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

DLL per GM in C#

Messaggio da Jak »

Vorrei fare una dll per GM in C#(è il linguaggio che conosco meglio). E' possibile farla? E come?(tipi di variabili da usare, codici particolari ecc)
Ultima domanda. E' possibile memorizzare le informazioni tramite la dll?
Vorrei che GM passasse dei dati alla dll ma poi questa li tenesse in memoria per velocizzare il tutto (se no tanto varrebbe fare tutto con GM in qualche modo, ma preferirei di no).
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Nix
GMI Advanced
Messaggi: 2437
Iscritto il: 26/12/2008, 18:14
Uso: GM:Studio 2
Contatta:

Re: DLL per GM in C#

Messaggio da Nix »

http://gmitalia.altervista.org/portale/ ... age&pid=19

questo è per vb.net, ma basta cambiare delle parole:

Codice: Seleziona tutto

Public Function Messaggio(ByVal caption As String, ByVal testo As String) As Double
        Messaggio = MsgBox(testo, MsgBoxStyle.OkOnly, caption)
    End Function

Codice: Seleziona tutto

		public double Messaggio(string caption, string testo)
		{
			MessageBox.Show(testo, caption, MessageBoxButtons.OK);
			return 0;
		}

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: DLL per GM in C#

Messaggio da Jak »

Nix ha scritto:http://gmitalia.altervista.org/portale/ ... age&pid=19

questo è per vb.net, ma basta cambiare delle parole:

Codice: Seleziona tutto

Public Function Messaggio(ByVal caption As String, ByVal testo As String) As Double
        Messaggio = MsgBox(testo, MsgBoxStyle.OkOnly, caption)
    End Function

Codice: Seleziona tutto

public double Messaggio(string caption, string testo)
{
 return MessageBox.Show(testo, MessageBoxButtons.OK, caption);
}
Avevo visto che c'era in VB ma non ero sicuro che si potesse fare anche in C#
Comunque se creo degli oggetti con delle variabili o degli array posso ricordare queste informazioni? Come ho già detto vorrei immagazzinare molti dati(sarebbe lentissimo se non li immagazzinasse la dll).
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Nix
GMI Advanced
Messaggi: 2437
Iscritto il: 26/12/2008, 18:14
Uso: GM:Studio 2
Contatta:

Re: DLL per GM in C#

Messaggio da Nix »

Jak ha scritto:Avevo visto che c'era in VB ma non ero sicuro che si potesse fare anche in C#
Comunque se creo degli oggetti con delle variabili o degli array posso ricordare queste informazioni? Come ho già detto vorrei immagazzinare molti dati(sarebbe lentissimo se non li immagazzinasse la dll).
crei due funzioni... una che memorizza i dati nella dll e una che li prende...

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: DLL per GM in C#

Messaggio da Jak »

Ecco un'altra domanda (che sta nel topic dopotutto). Io ho dei metodi come questo

public CalculateMatrixSum(Matrix matriceout, Matrix matrice1, Matrix matrice2)
{
//qui i vari calcoli
}

in questo funzione devo indicare le varie istanze della classe Matrix, il tutto vorrei gestirlo da gm. Il problema è che con questa dll di supporto http://gmc.yoyogames.com/index.php?showtopic=317121 posso usare solo double e string come argomenti. Avete qualche idea per trovare il sistema di poter indicare l'indice della matrice?
Sto pensando agli array multidimensionali ma viene fuori un casino :fapensare:
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
maz85
Admin
Messaggi: 8287
Iscritto il: 07/02/2004, 15:57
Specialità: Nientologo
Località: Oblio
Contatta:

Re: DLL per GM in C#

Messaggio da maz85 »

Che argomenti devi passare?
Fai così:

Codice: Seleziona tutto

public function passaquestoaquello(argomento as string) as string{
              //prendiamo argomento che è fatto così "1,2323,ciao,hey,34.3"
              //lo suddividiamo in vari pezzi e lo passiamo alla funzione "quello", insomma quella che ci interessa
              quellafunzioneprincipale(arg1,arg2,arg3);

}

public function quellafunzioneprincipale(arg1 as int, arg2 as object, ...){
             //fai
}
Comunque un indice può essere anche un double, se da rogne lo casti all'interno della DLL.

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: DLL per GM in C#

Messaggio da Jak »

Non ho capito molto bene il funzionamento Ma nel momento in cui creo una nuova classe il suo tipo è la classe stessa, non può essere un valore numerico...
Per quanto riguarda castarlo all'interno della dll non ho idea di come fare. Ho pensato di usare gli array ma non posso usare quelli dinamici perchè anche loro hanno problemi di tipo e non vorrei fare un'array gigantesco già dall'inizio.
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
maz85
Admin
Messaggi: 8287
Iscritto il: 07/02/2004, 15:57
Specialità: Nientologo
Località: Oblio
Contatta:

Re: DLL per GM in C#

Messaggio da maz85 »

Scusa, ma quando tu crei un'istanza di una classe per riferirsi a questa istanza serve un id.
Il suo tipo è la classe certo, ma quello che lo identifica è un id.
Non lo hai messo magari nella creazione della classe (boh, non so come funga il c#), quindi devi implementarlo nella dichiarazione della creazione così puoi riferirti ad essa.

Tipo un array di oggetti:

Codice: Seleziona tutto

oggettivari(n)

Codice: Seleziona tutto

ReDim Preserve istanze(idnuovaistanza) 'ridimensiono l'array
istanze(idnuovaistanza) = New classe
Magari nel costruttore dichiarare l'id e inserire idnuovaistanza.

Quindi via GM gli dici beccami questa istanza ad indice 2323.

PS: ho scritto il codice a ricordo e in vb.net, ma penso si capisca.

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: DLL per GM in C#

Messaggio da Jak »

E' vero, l'indice dell'array, in quel modo basta che faccio un'array per ogni classe (visto che il tipo dell'array è lo stesso della classe che creo. Il tutto lo gestisco con un'array dinamico. Grazie maz, utile come sempre :cappa:
Non preoccuparti del VB perchè è molto simile al C#(e poi ho imparato a tradurlo e nell'eventualità uso il traduttore di linguaggi :mrgreen: ) quindi hai fatto bene.
Grazie ancora.
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: DLL per GM in C#

Messaggio da Jak »

Scusate il doppio post ma siamo ai limiti della stupidità umana(anzi del pc).
creo una classe ed un'array dinamico:

Codice: Seleziona tutto

public class Arrays
    {
        ArrayList matricies = new ArrayList(0);
        matricies.Add(new Vector);
    }
Ma visualC# mi dice "Errore 1 Token non valido '(' nella dichiarazione del membro della classe, della struttura o dell'interfaccia"
Ho anche copiato incollato codice da vari siti e mi da lo stesso errore per qualunque tipo di argomento nel metodo Add(ho provato con stringhe, integer, di tutto) che di tutti gli overload della classe Arraylist.
Non capisco perchè mi dia errore :confuso:
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Nix
GMI Advanced
Messaggi: 2437
Iscritto il: 26/12/2008, 18:14
Uso: GM:Studio 2
Contatta:

Re: DLL per GM in C#

Messaggio da Nix »

in C# quando usi new devi usare le parentesi... non è come vb che sono opzionali quando non ci sono parametri

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: DLL per GM in C#

Messaggio da Jak »

Sì, me l'ero dimenticato ma non è quello il problema. Come ho detto prima ho provato con vari tipi:

Codice: Seleziona tutto

public class Arrays
    {
        ArrayList matricies = new ArrayList(0);
        matricies.Add("ciao");
    }
Ma la situazione è la stessa...

EDIT: Risolto, dovevo fare il metodo della classe:

Codice: Seleziona tutto

public class Arrays
    {
        public Arrays()
        {
            ArrayList matricies = new ArrayList(0);
            matricies.Add(new Vector(4,7));
        }
    }
Adesso non mi da più errore :first:
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Nix
GMI Advanced
Messaggi: 2437
Iscritto il: 26/12/2008, 18:14
Uso: GM:Studio 2
Contatta:

Re: DLL per GM in C#

Messaggio da Nix »

da me funziona...
EDIT: :spat:

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: DLL per GM in C#

Messaggio da Jak »

Altro problema(sperando sia l'ultimo). Sto facendo un metodo che restituisce un valore:

Codice: Seleziona tutto

public double GetVector(double index, double date)
        {
            if (date == 0)
            {
                return vectors[(int) index].X;
            }
        }
vectors è l'array dinamico che uso ed il tipo dell'array è object(non è mio ma uno predefinito dell'arraylist). In quell'indice ho usato Add() per aggiungere una classe come ho scritto nei post precedenti. Il problema è che essendo di tipo object il tipo restituiti(e non Vector)non conosce le variabili che ho dato alla classe Vector e di conseguenza non funziona. Non ho trovato su internet il modo per indicare il tipo dell'arraylist o altre soluzioni. Questo dovrebbe essere l'ultimo problema in assoluto perchè dopo sono solo calcoli matematici ed if a manetta da fare quindi scusate se vi disturbo.
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: DLL per GM in C#

Messaggio da Jak »

Trovato il sistema!
Posso indicare il tipo dell'arraylist così:

Codice: Seleziona tutto

List<Vector> vectors = new List<Vector>(0);
In questo modo ho risolto :D
A quanto ho letto in giro però non è detto che l'array venga disposto nell'ordine corretto e ciò non andrebbe bene perchè calcolo l'indice con un index++;
Vedrò di trovare la soluzione e poi passo al sodo :twisted:
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
pontino
Admin
Messaggi: 947
Iscritto il: 17/09/2006, 21:30
Contatta:

Re: DLL per GM in C#

Messaggio da pontino »

Ti puoi creare un array di qualsiasi dimensione con qualsiasi tipo di classe/struttura

facendo (ad esempio con int)

Codice: Seleziona tutto

//buffer a lunghezza fissa
int[] p = new int[200];
//Lista dinamica
List<int> pippo = new List<int>();
//Lista dinamica con struttura chiave->valore
Dictionary<int, string> Lista_Di_Parole = new Dictionary<int, string>();
Per i Dictionary e le List l'ordine degli elementi equivale a quello dell'inserimento..
Naturalmente se utilizzi solamente la funzione .Add()
Altrimenti se usi .InsertAt() o .RemoveAt() è naturale che gli elementi con indice superiore vengano shiftati..
Jak ha scritto:Vorrei fare una dll per GM in C#(è il linguaggio che conosco meglio)
Sì vabbè.. :roll: Clicca qui che è meglio ;)
ਗੁਰੂ

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: DLL per GM in C#

Messaggio da Jak »

pontino ha scritto:
Jak ha scritto:Vorrei fare una dll per GM in C#(è il linguaggio che conosco meglio)
Sì vabbè.. :roll: Clicca qui che è meglio ;)
Ho detto che conosco meglio, non che conosco bene.
E comunque la conosco quella guida (che peraltro esiste anche in italiano).
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Nix
GMI Advanced
Messaggi: 2437
Iscritto il: 26/12/2008, 18:14
Uso: GM:Studio 2
Contatta:

Re: DLL per GM in C#

Messaggio da Nix »

ne esistono anche altre, come AB...C#

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 34 ospiti