Rpg²S Forum uses cookies. Read the Privacy Policy for more info. To remove this message, please click the button to the right:    I accept the use of cookies

Vai al contenuto

Rpg²S Forum uses cookies. Read the Privacy Policy for more info. To remove this message, please click the button to the right:    I accept the use of cookies

Screen Contest #90

Kamikun






  • Si prega di effettuare il log in prima di rispondere
Win32API [RGSS]

    ProGM
  • Sacro portatore del GM

  • Rpg²S Admin
  • Rens: 95
  • 1
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 3447 messaggi
  • Sesso:Maschio
  • Abilità:Maestro

#1 Inviato 04 May 2007 - 13:51 PM

Win32API



1) Cosa sono?
Sono un metodo usato per richiamare in ruby delle funzioni di una DLL (Dynamic-link library) e integrarle nel proprio programma/gioco.

2)Perché si usano?
essenzialmente perché richiamando le funzioni delle DLL di windows si può fare quasi tutto: gestione grafica, audio, gestione di finestre, avvisi, accesso a internet, controllo tasti, ecc...

3)Ma se sono così potenti, perché vengono usate così poco?
perché sono allo stesso tempo utili, numerose e incasinate alla follia: hanno una sintassi difficile, scomoda e con poca documentazione (per ruby è totalmente assente, se non qualche articolo qui e là). Questo obbliga ad sfruttarle solo come ultima risorsa.

4)Come funzionano?
la sintassi è questa:
# impostazione della dll
api = Win32API.new("DLL", "funzione", quanti e che tipo di valori vanno passati, tipo di output)
#richiamo del comando
api.call(valori da passare)
-DLL è il nome della dll (ma va)
-"funzione" è il comando da richiamare
-"quanti e che tipo di valori vanno passati": il tipo di valori si identifica grazie a delle sigle ( P = stringa, I = numero intero, L = espressione, V = valore vuoto, usato per l'output )
per esempio se dovessimo passare una stringa e un numero scriveremo "PI"
- tipo di output è il valore che la dll restituirà: funziona allo stesso modo, solo che ne può essere restituito solo uno (ovviamente)
un esempio:
@@mltmd = Win32API.new('winmm', "mciSendString","PPII","I")
@@mltmd.call("open filename alias test", "null", 0, 0)

ecco un elenco rapido delle dll più usate:
KERNEL32.DLL -> funzioni base, di basso livello, come la gestione dei task, memoria, controllo tasti
USER32.DLL -> gestione delle finestre, dei messaggi d'errore ecc...
GDI32.DLL -> tutto ciò che ha a che fare con l'output dei dispositivi
COMDLG.DLL, LZ32.DLL, VERSION.DLL -> Supporto per le finestre di dialogo comuni, la compressione dei file e il controllo della versione. In alcuni casi sono accessibili direttamente in altri è necessario ricorrere alla APIGID32.DLL
ODBC32.DLL -> fornisce un API standard per diversi tipi di DataBase.
COMCTL32.DLL -> Implementa il nuovo gruppo di controlli delle finestre (elenco ad albero, ecc.)
MAPI32.DLL -> permette di operare sulla posta elettronica.
NETAPI.DLL ->Funzioni di accesso e controllo delle reti.
WINMM.DLL -> Funzionalità multimediali di un sistema. (riproduzione filmati, musiche ecc...) (NON SUPPORTA DVX)

per documentazione (incompleta e incomprensibile ^^):
http://www.microsoft...dn/default.mspx
4)Come capirci qualcosa e semplificare l'utilizzo
di solito per semplificare l'utilizzo delle dll ai comuni mortali (ma anche a se stessi, per evitare di riscrivere tutto il casino ogni volta) di solito si creano delle classi o dei moduli che fanno corrispondere i loro metodi a funzioni richiamate con le api.
un esempio:
Spoiler


P.S. scusate imprecisioni, ho imparato un po' a tentativi xD

Progetti:

 best adventure game 2017

https://github.com/ProGM

 

Crea anche tu il tuo gioco per Game Boy!

Spoiler


    marigno
  • Erunamo è il mio amoVe :*.

  • Utenti Speciali
  • Rens: 146
  • 0
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 2589 messaggi
  • Sesso:Maschio
  • Provenienza:Parma
  • Abilità:Adepto

#2 Inviato 04 May 2007 - 19:44 PM

Si però se non si sa creare le DLL non è molto utile :(.
Comunque, che dire, bravo ^^.

    ProGM
  • Sacro portatore del GM

  • Rpg²S Admin
  • Rens: 95
  • 1
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 3447 messaggi
  • Sesso:Maschio
  • Abilità:Maestro

#3 Inviato 04 May 2007 - 19:53 PM

ma l'hai letto xD? le dll usi quelle di windows, mica le crei ^^
in effetti però non è chiaro, perchè non ho finito ^^

Progetti:

 best adventure game 2017

https://github.com/ProGM

 

Crea anche tu il tuo gioco per Game Boy!

Spoiler


    Erunamo
  • Utente avanzato

  • Utenti
  • Rens: 2
  • 0
  • StellettaStellettaStelletta
  • 454 messaggi
  • Sesso:Maschio
  • Provenienza:Terlizzi (BA)
  • Abilità:Novizio

#4 Inviato 05 May 2007 - 17:43 PM

E se uso Linux?

Hoplà.


    ProGM
  • Sacro portatore del GM

  • Rpg²S Admin
  • Rens: 95
  • 1
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 3447 messaggi
  • Sesso:Maschio
  • Abilità:Maestro

#5 Inviato 05 May 2007 - 19:09 PM

eh, ci avevo pensato anche io... se usi linux non sono sicuro che emuli tutto per bene... prova, no?
comunque se l'emulatore è tale dovrebbe poterlo fare ^^

Progetti:

 best adventure game 2017

https://github.com/ProGM

 

Crea anche tu il tuo gioco per Game Boy!

Spoiler


    Lestat
  • Utente sottopagato

  • Utenti
  • Rens: 10
  • 0
  • StellettaStellettaStelletta
  • 219 messaggi
  • Sesso:Maschio
  • Provenienza:Salem
  • Abilità:Esperto

#6 Inviato 06 May 2007 - 10:05 AM

si dovrebbe!
Comunque la programmazione tramite DLL è una vera seccatura.
Cmq buon tutorial PRO

Immagine inserita


Invece di cercare la tua strada nel buio, Raven, attendi l'alba


Yes I'd have to say I like my privacy!
And did you know you're on closed circuit TV?
So smile at me!





<div style="margin:20px;margin-top:5px" "="">

Spoiler




Il Manifesto del Making Italiano
SALVIAMO IL MAKING ITALIANO!!


Dopo un test dei nostri esperti (Alato, Blake e havana24) abbiamo scoperto che ad interesse risponde interesse: cioè se voi dimostrate di essere interessati a ciò che creano gli altri, questi saranno stimolati a continuare a creare! E' un concetto semplice ma estremamente sottovalutato, basta vedere quanti topic di bei giochi sono caduti nel dimenticatoio e sono stati cagati solo da poche persone (prendiamo per esempio il fantastico gioco di Vech che vi invito a vedere nella sezione RM2k).
Perciò quello che dobbiamo fare è: leggere, leggere, leggere, postare, postare, postare! E questo non significa postare a caso, ma leggere per bene il progetto di qualcuno, le domande poste, le creazioni grafiche e musicali, e fare dei post in cui si propongano miglioramenti, si critichino le brutture, si esaltino le bellezze, si aiutino gli oppressi etc etc
BASTA AL MAKING ITALIANO CHE VA A ROTOLI! DIAMOCI UNA SVEGLIATA!!
Per dimostrarvi ciò che sto esponendo vi riporto che la volta in cui abbiamo provato (io, Blake e havah) a fare una cosa di questo genere, c'è costata un pomeriggio ma il giorno dopo abbiamo ottenuto il numero massimo di utenti online mai raggiunto!!! Ma soprattutto ciò significa che l'interesse riguardo al making era stato, almeno momentaneamente, risvegliato!!
Voi pensate che eravamo solo in 3 a cercare tutti i topic e ravvivarli (con sincerità e senza i soliti falsi "Oh che bello.", ma anche con critiche per lavori incompleti o assurdi) e abbiamo ottenuto quel grande risultato: se lo facessimo tutti non sarebbe una cosa potentissima?!?
BASTA ALLE SOLITE BANALI DISCUSSIONI SULLA DECADENZA DEI GIOCHI!! FACCIAMOLI STI GIOCHI!!!
Chi è contrario a questa cosa, può pure continuare così ma è una persona che col making non ha nulla a che fare, ma chi crede nel making inizi ora, immediatamente a seguire questa linea di pensiero!

Ma chi è d'accordo, chi davvero ci tiene al making, incolli questo Manifesto nella propria firma!! Mettete anche voi questa firma!!

    Broly88
  • Utente avanzato

  • Utenti
  • Rens: 37
  • 0
  • StellettaStellettaStelletta
  • 317 messaggi
  • Sesso:Maschio
  • Provenienza:Ovunque ci sia una scia di sangue e una lama solitaria...
  • Abilità:Novizio

#7 Inviato 07 May 2007 - 12:28 PM

Sarà pure una seccatura, ma quando riesce rulla di brutto!!
Il mondo è il cancro... Io la cura...

Il mio sport preferito:
Gli altri --> (T_T#)O==(^_^Q) <-- IO

I miei alias:
Immagine inserita
-----------------------------------------------------
Immagine inserita
-----------------------------------------------------
Immagine inserita

Broly88's
Immagine inserita Immagine inserita
Flame Dancer the level 99 Charizard!



Immagine inserita Immagine inserita

    Lestat
  • Utente sottopagato

  • Utenti
  • Rens: 10
  • 0
  • StellettaStellettaStelletta
  • 219 messaggi
  • Sesso:Maschio
  • Provenienza:Salem
  • Abilità:Esperto

#8 Inviato 09 May 2007 - 10:08 AM

E' che windows si capisce solo lui! >_>

Immagine inserita


Invece di cercare la tua strada nel buio, Raven, attendi l'alba


Yes I'd have to say I like my privacy!
And did you know you're on closed circuit TV?
So smile at me!





<div style="margin:20px;margin-top:5px" "="">

Spoiler




Il Manifesto del Making Italiano
SALVIAMO IL MAKING ITALIANO!!


Dopo un test dei nostri esperti (Alato, Blake e havana24) abbiamo scoperto che ad interesse risponde interesse: cioè se voi dimostrate di essere interessati a ciò che creano gli altri, questi saranno stimolati a continuare a creare! E' un concetto semplice ma estremamente sottovalutato, basta vedere quanti topic di bei giochi sono caduti nel dimenticatoio e sono stati cagati solo da poche persone (prendiamo per esempio il fantastico gioco di Vech che vi invito a vedere nella sezione RM2k).
Perciò quello che dobbiamo fare è: leggere, leggere, leggere, postare, postare, postare! E questo non significa postare a caso, ma leggere per bene il progetto di qualcuno, le domande poste, le creazioni grafiche e musicali, e fare dei post in cui si propongano miglioramenti, si critichino le brutture, si esaltino le bellezze, si aiutino gli oppressi etc etc
BASTA AL MAKING ITALIANO CHE VA A ROTOLI! DIAMOCI UNA SVEGLIATA!!
Per dimostrarvi ciò che sto esponendo vi riporto che la volta in cui abbiamo provato (io, Blake e havah) a fare una cosa di questo genere, c'è costata un pomeriggio ma il giorno dopo abbiamo ottenuto il numero massimo di utenti online mai raggiunto!!! Ma soprattutto ciò significa che l'interesse riguardo al making era stato, almeno momentaneamente, risvegliato!!
Voi pensate che eravamo solo in 3 a cercare tutti i topic e ravvivarli (con sincerità e senza i soliti falsi "Oh che bello.", ma anche con critiche per lavori incompleti o assurdi) e abbiamo ottenuto quel grande risultato: se lo facessimo tutti non sarebbe una cosa potentissima?!?
BASTA ALLE SOLITE BANALI DISCUSSIONI SULLA DECADENZA DEI GIOCHI!! FACCIAMOLI STI GIOCHI!!!
Chi è contrario a questa cosa, può pure continuare così ma è una persona che col making non ha nulla a che fare, ma chi crede nel making inizi ora, immediatamente a seguire questa linea di pensiero!

Ma chi è d'accordo, chi davvero ci tiene al making, incolli questo Manifesto nella propria firma!! Mettete anche voi questa firma!!

    Broly88
  • Utente avanzato

  • Utenti
  • Rens: 37
  • 0
  • StellettaStellettaStelletta
  • 317 messaggi
  • Sesso:Maschio
  • Provenienza:Ovunque ci sia una scia di sangue e una lama solitaria...
  • Abilità:Novizio

#9 Inviato 09 May 2007 - 19:48 PM

Mai frase fu più veritiera...
Il mondo è il cancro... Io la cura...

Il mio sport preferito:
Gli altri --> (T_T#)O==(^_^Q) <-- IO

I miei alias:
Immagine inserita
-----------------------------------------------------
Immagine inserita
-----------------------------------------------------
Immagine inserita

Broly88's
Immagine inserita Immagine inserita
Flame Dancer the level 99 Charizard!



Immagine inserita Immagine inserita

    ProGM
  • Sacro portatore del GM

  • Rpg²S Admin
  • Rens: 95
  • 1
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 3447 messaggi
  • Sesso:Maschio
  • Abilità:Maestro

#10 Inviato 09 May 2007 - 19:59 PM

per me non si capisce neanche da solo, visto come funzionano bene i programmi microsoft Oo

comunque domani lo finisco il tut...

Progetti:

 best adventure game 2017

https://github.com/ProGM

 

Crea anche tu il tuo gioco per Game Boy!

Spoiler


    Dexter92
  • Nuovo Arrivato

  • Utenti
  • Rens: 0
  • 0
  • Stelletta
  • 22 messaggi
  • Sesso:Maschio
  • Provenienza:Torino
  • Abilità:Apprendista

#11 Inviato 24 January 2014 - 15:07 PM

Ciao!

Mi stavo chiedendo se è possibile scoprire il nome delle funzioni contenute nella dll, per poterle importare in un progetto...

 

Sempre ammesso che non esista un modo per "caricare" direttamente l'intera dll. Dubito però che questo sia possibile...

Un esempio di facile comprensione riguarda RPG maker. Potrebbe aver definito:

class Bitmap
  def fill_rect(*params)
    rgss = Win32API.new("RGSS301", altri parametri)
    rgss.call(*params)
  end
end

Continuando a considerare questo caso, è possibile trovare i parametri da passare a Win32API.new per chiamare la funzione della dll che corrisponde al metodo fill_rect della classe Bitmap?



    ProGM
  • Sacro portatore del GM

  • Rpg²S Admin
  • Rens: 95
  • 1
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 3447 messaggi
  • Sesso:Maschio
  • Abilità:Maestro

#12 Inviato 25 January 2014 - 04:35 AM

Fammi capire. Questa cosa come vorresti usarla?

Vuoi usare funzioni di RGSS3 su una versione di RPG Maker precedente?

 

Temo che questo cmq non sia possibile :\


Progetti:

 best adventure game 2017

https://github.com/ProGM

 

Crea anche tu il tuo gioco per Game Boy!

Spoiler


    Dexter92
  • Nuovo Arrivato

  • Utenti
  • Rens: 0
  • 0
  • Stelletta
  • 22 messaggi
  • Sesso:Maschio
  • Provenienza:Torino
  • Abilità:Apprendista

#13 Inviato 25 January 2014 - 10:49 AM

Sì, più o meno...

In realtà avevo visto questa pagina che mi ha incuriosito! Stavo pensando, se fosse stato possibile richiamare le singole funzioni dalle dll, di poter usare librerie "incrociate", andando a selezionare il meglio da ognuna.

 

Peccato però che non sia possibile =(



    ProGM
  • Sacro portatore del GM

  • Rpg²S Admin
  • Rens: 95
  • 1
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 3447 messaggi
  • Sesso:Maschio
  • Abilità:Maestro

#14 Inviato 25 January 2014 - 11:02 AM

Figata quell'articolo! Ci provai anni fa tra rpgmaker VX e rpgmaker XP con scarsi risultati (non riuscivo a far combaciare la lettura di tileset, visto che il VX ha i tileset quadrettosi :\ ) .

 

Ibridare la DLL la vedo sinceramente dura, non so neanche se siano compatibili. Magari è anche fattibile richiamare funzioni di una tramite Win32Api, ma chi ti dice che effettivamente le bitmap dell'rgss3 siano compatibili con quelle delle versioni precedenti? Potrebbero aver cambiato formato e struttura interna. Non conoscendone la struttura interna dovresti andare a tentoni, e secondo me non ne vale la pena. Piuttosto quello che mi hai linkato mi sembra la soluzione più percorribile...


Progetti:

 best adventure game 2017

https://github.com/ProGM

 

Crea anche tu il tuo gioco per Game Boy!

Spoiler


    Dexter92
  • Nuovo Arrivato

  • Utenti
  • Rens: 0
  • 0
  • Stelletta
  • 22 messaggi
  • Sesso:Maschio
  • Provenienza:Torino
  • Abilità:Apprendista

#15 Inviato 25 January 2014 - 15:48 PM

Ah ok... Per tentoni non è mai una buona via...

 

Ma volendo si potrebbe provare almeno un tentativo? Così se non riesce lascio perdere definitivamente xD



    ProGM
  • Sacro portatore del GM

  • Rpg²S Admin
  • Rens: 95
  • 1
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 3447 messaggi
  • Sesso:Maschio
  • Abilità:Maestro

#16 Inviato 26 January 2014 - 02:32 AM

Per analizzare la DLL e cercare di scovare i punti di accesso puoi provare a usare tool tipo Resource Hacker (un po' vecchiotto) o meglio PE Explorer (che è a pagamento ma ha una versione di prova)


Progetti:

 best adventure game 2017

https://github.com/ProGM

 

Crea anche tu il tuo gioco per Game Boy!

Spoiler


    Dexter92
  • Nuovo Arrivato

  • Utenti
  • Rens: 0
  • 0
  • Stelletta
  • 22 messaggi
  • Sesso:Maschio
  • Provenienza:Torino
  • Abilità:Apprendista

#17 Inviato 26 January 2014 - 18:38 PM

Ok, ho provato ad aprire la RGSS301.dll con PE explorer... Questo è il risultato che ho ottenuto:

Spoiler

Ho preso uno screenshot della funzione RGSSInitialize3... Però come si può tentare di capire cosa fa? Immagino che l'informazione sia contenuta negli indirizzi da 100035E0 a 100035FF...



    ProGM
  • Sacro portatore del GM

  • Rpg²S Admin
  • Rens: 95
  • 1
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 3447 messaggi
  • Sesso:Maschio
  • Abilità:Maestro

#18 Inviato 26 January 2014 - 21:35 PM

Tentare di capire cosa fa dubito, piuttosto cerca se esistono i nomi espliciti delle funzioni che ti servono. Ad esempio le funzionalità di bitmap.

Potrebbe trovarsi ad esempio sotto una voce tipo RGSSBitmap.

A quel punto puoi tentare di chiamare il punto d'accesso trovato dal ruby ed accedervi.

I parametri... Devi praticamente tirare ad indovinare, o tentare di intuirli dal codice decompilato. Il punto è che non ho la benché minima idea di che formato dovresti usare per passarli :\

Dovresti leggerti qualcosa sulla comunicazione con le DLL su windows.

In ogni caso continuo ad essere fortemente dubbioso sul fatto che possano mai essere compatibili :\

 

Non voglio abbatterti, ma penso sia un lavoro che richiede una non indifferente competenza tecnica o un notevole consumo di tempo per acquisire tale competenza XD


Progetti:

 best adventure game 2017

https://github.com/ProGM

 

Crea anche tu il tuo gioco per Game Boy!

Spoiler


    KenzaMe92
  • Maker Svogliata

  • Utenti
  • Rens: 25
  • 2
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 1765 messaggi
  • Sesso:Femmina
  • Provenienza:Dalla strada a metà tra Immaginario e Fantasia
  • Abilità:Esperto

#19 Inviato 29 January 2014 - 21:56 PM

Già che siamo in tema, avrei una domanda, sto cercando di fare una dll per interagire con la scheda video, come la faccio riconoscere a VXAce? sarebbe il mio tentativo di anti-lag usando la gpu per la grafica, l'spu per la musica e la cpu per gli eventi e gli script.


Modificato da KenzoMe92, 29 January 2014 - 21:57 PM.

Nuovi progetti:

00oVI6.gif SvsJAL.png  vgnoJt.png  YT3YHP.pngfcCbvW.pnggifnatale1.png
Come allegare immagini al forum  Bottega  Rise of The Hero 
869.png250d-79e61bdc7724a730c12102387964d19e04arol.gif 1321.png
Script

Spoiler

Tutorial

Spoiler

Spoiler da guardare se vi interessano
Spoiler

MANIFESTO DEL MAKING ITALIANO
Spoiler

    Guardian of Irael
  • Coniglietto Rosso

  • Rpg²S Admin
  • Rens: 195
  • 19
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 58427 messaggi
  • Sesso:Maschio
  • Provenienza:Bagnaia (Viterbo)
  • Abilità:Apprendista


#20 Inviato 30 January 2014 - 13:32 PM

 

sarebbe il mio tentativo di anti-lag usando la gpu per la grafica, l'spu per la musica e la cpu per gli eventi e gli script.

Credo sia una cosa abbastanza complessa da fare con la semplice dll, considera che uno dei problemi più grossi quello di rpgmaker che non si basa sulla scheda grafica, se ci riesci hai vinto tutto XD

^ ^


(\_/)
(^ ^) <----coniglietto rosso, me!     
(> <)

 
Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^
 
KdUDtQt.png disponibile su Google Play, qui i dettagli! ^ ^
 
FwnGMI3.png completo! Giocabile online, qui i dettagli! ^ ^  
 
REVERIE : : RENDEZVOUS (In allenamento per apprendere le buone arti prima di cominciarlo per bene ^ ^) Trovate i dettagli qui insieme alla mia intervista (non utilizzerò più rpgmaker) ^ ^

Spoiler





  • Feed RSS