CollyxDLL

Gex, Dll, DyLib, Js e ogni tipo di estensione per GameMaker
Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

CollyxDLL

Messaggio da Jak »

Ora sistemo il topic. Come consigliato da maz faccio un topic qua per parlarne ora che sono finite specialmente perchè ho intenzione di fare un'esempio per un'utilizzo su platform e un programma di modellazione.
Per ora leggete qua mentre riorganizzo il messaggio:
http://gmitalia.altervista.org/gmi_foru ... vettoriali
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: CollyxDLL

Messaggio da maz85 »

Mi serve un articoletto sulla tua DLL con un qualche esempio di codice per la rivista. :zip:

Avatar utente
CaMpIoN
Membro super
Messaggi: 684
Iscritto il: 17/11/2009, 16:20
Specialità: Programmatore
Uso: GM:Studio 1.4 Master
Contatta:

Re: CollyxDLL

Messaggio da CaMpIoN »

E magari, un'esempio in codice per fare le mesh, non dal file txt, ma da GM.
Giochi da me creati:
Spoiler
Immagine

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

Re: CollyxDLL

Messaggio da Jak »

CaMpIoN ha scritto:E magari, un'esempio in codice per fare le mesh, non dal file txt, ma da GM.
Manuale-2.2)mesh
Cè l'elenco delle funzioni.
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
CaMpIoN
Membro super
Messaggi: 684
Iscritto il: 17/11/2009, 16:20
Specialità: Programmatore
Uso: GM:Studio 1.4 Master
Contatta:

Re: CollyxDLL

Messaggio da CaMpIoN »

Ecco come creo la mesh:

Create event obj_control:

Codice: Seleziona tutto

sw=sprite_get_width(spr_square)
sh=sprite_get_height(spr_square)
init()
global.mesh=create_new_mesh(4,4)
set_mesh_vertex(global.mesh,1,0,0)
set_mesh_vertex(global.mesh,2,sw,0)
set_mesh_vertex(global.mesh,3,sw,sh)
set_mesh_vertex(global.mesh,4,0,sh)
set_mesh_line(global.mesh,1,1,2,"")
set_mesh_line(global.mesh,2,2,3,"")
set_mesh_line(global.mesh,3,3,4,"")
set_mesh_line(global.mesh,4,4,1,"")
set_mesh_box_type(global.mesh,false)
Lo sprite 50x50 sarebbe il quadrato per creare la piattaforma, quando avvio il gioco mi esce questo strano, stranissimo errore, credo che manchi qualcosa sul mio pc non so':
Spoiler
---------------------------
GM .Net Layer: Unhandled Exception
---------------------------
There has been an unhandled exception in the DLL called by the "GM .Net Layer". This probably not error created by the "GM .Net Layer". The following trace is available:

System.Reflection.TargetInvocationException: Eccezione generata dalla destinazione di una chiamata. ---> System.ArgumentOutOfRangeException: Index non compreso nell'intervallo. Richiesto valore non negativo e minore della dimensione dell'insieme.

Nome parametro: index

in System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource)

in System.ThrowHelper.ThrowArgumentOutOfRangeException()

in System.Collections.Generic.List`1.get_Item(Int32 index)

in CollyxDLL.Arrays.SetMeshLine(Double meshindex, Double lineindex, Double v1, Double v2, String mat)

--- Fine dell'analisi dello stack dell'eccezione interna ---

in System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)

in System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)

in System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)

in System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)

in System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)

in System.Type.InvokeMember(String name, BindingFlags invokeAttr, Binder binder, Object target, Object[] args)

in FuncReal(Double class_handle, SByte* funcname)

When seeking support, please contact the creater of the program and copy the complete error message. Press Ctrl+C to copy the message. Press Ok to continue or press Cancel to exit the application.
---------------------------
OK Annulla
---------------------------
Edit: Il problema persiste solo quando creo le linee della mesh, creando solo i vertici mi esce solo una volta e poi non mi funziona, premetto che provando l'esempio platform da te fornito, funziona perfettamente, quindi escludo che manchi qualcosa, il problema è mio, cosa avrò sbagliato?
Giochi da me creati:
Spoiler
Immagine

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

Re: CollyxDLL

Messaggio da Jak »

Non ho letto bene l'errore ma credo che sia per il fatto che tu sei partito dall'indice "1".
Essendo in realtà un'array che contiene dati prova a partire dall'indice "0".
Questo dovrebbe contare sia per i vertici che per le linee.
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
CaMpIoN
Membro super
Messaggi: 684
Iscritto il: 17/11/2009, 16:20
Specialità: Programmatore
Uso: GM:Studio 1.4 Master
Contatta:

Re: CollyxDLL

Messaggio da CaMpIoN »

Ma quale indice?
Quindi dovrei partire da 0, 3 vertici e 3 linee da scrivere?
Giochi da me creati:
Spoiler
Immagine

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

Re: CollyxDLL

Messaggio da Jak »

CaMpIoN ha scritto:Ma quale indice?
Quindi dovrei partire da 0, 3 vertici e 3 linee da scrivere?
No, funziona come un'array.
Tu hai ad esempio 4 vertici:
vertice 0
vertice 1
vertice 2
vertice 3
e non
vertice 1
vertice 2
vertice 3
vertice 4
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
CaMpIoN
Membro super
Messaggi: 684
Iscritto il: 17/11/2009, 16:20
Specialità: Programmatore
Uso: GM:Studio 1.4 Master
Contatta:

Re: CollyxDLL

Messaggio da CaMpIoN »

Ok adesso l'errore non ce piu, ma mi funziona al contrario, quanto collide fa quello che dovrebbe fare quando non collide. xD

Il codice nel pers in end step è questo:

Codice: Seleziona tutto

sw=sprite_width
sh=sprite_height
vspeed+=0.1;
var lenght,lenght2,lenght3;
lenght=check_ray_collision_refer_all(270,x+sw/2,y);
lenght2=check_ray_collision_refer_all(270,x-sw/2,y);
lenght3=max(lenght,lenght2)
if (lenght3<16)
{
    y-=16-lenght3;
    vspeed=0;
}
if (lenght3<=16.1 && keyboard_check_pressed(vk_up))
{
    vspeed=-4;
}
lenght=check_ray_collision_refer_all(90,x+sw/2,y);
lenght2=check_ray_collision_refer_all(90,x-sw/2,y);
lenght3=max(lenght,lenght2)
if (lenght3<16)
{
    y+=16-lenght3;
    vspeed=0;
}
lenght=check_ray_collision_refer_all(180,x,y+sh/2);
lenght2=check_ray_collision_refer_all(180,x,y-sh/2);
lenght3=max(lenght,lenght2)
if (lenght3<10)
{
    x+=10-lenght3;
}

lenght=check_ray_collision_refer_all(0,x,y+sh/2);
lenght2=check_ray_collision_refer_all(0,x,y-sh/2);
lenght3=max(lenght,lenght2)
if (lenght3<10)
{
    x-=10-lenght3;
}
In step invece:

Codice: Seleziona tutto

if !(keyboard_check(vk_left) || keyboard_check(vk_right))
{
    hspeed=0;
}
if (hspeed=0)
{
    image_speed=0;
    image_index=0;
}
else
{
    image_speed=0.5;
}
if (hspeed>0)
{
    image_xscale=1;
}
if (hspeed<0)
{
    image_xscale=-1;
}
if (keyboard_check(vk_left)) {
hspeed=-2;
}
if (keyboard_check(vk_right)) {
hspeed=+2;
}
Giochi da me creati:
Spoiler
Immagine

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

Re: CollyxDLL

Messaggio da Jak »

Ricordati che il raggio restituisce una distanza dal muro quindi il tutto deve funzionare solo se sei sufficientemente distante.

Codice: Seleziona tutto

if (lenght3<=16.1 && keyboard_check_pressed(vk_up))
{
    vspeed=-4;
}
Questo ad esempio setta la vspeed sono quando sei preticamente attaccato al muro.
Spoiler
se vuoi saperla tutta ho notato che è eccessivamente complicata la mia dll. La sto rifacendo fatta mooolto più facile :twisted:
Ma ci vorrà un bel po.
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
CaMpIoN
Membro super
Messaggi: 684
Iscritto il: 17/11/2009, 16:20
Specialità: Programmatore
Uso: GM:Studio 1.4 Master
Contatta:

Re: CollyxDLL

Messaggio da CaMpIoN »

veramente questo codice l'ho preso dal tuo esempio :P
Giochi da me creati:
Spoiler
Immagine

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

Re: CollyxDLL

Messaggio da Jak »

CaMpIoN ha scritto:veramente questo codice l'ho preso dal tuo esempio :P
Ah già XD. avevo letto left anzichè up. :lol:
Visto che mi sto un po incasinando mi dici cosa hai cambiato del mio esempio? così facciamo prima.
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
CaMpIoN
Membro super
Messaggi: 684
Iscritto il: 17/11/2009, 16:20
Specialità: Programmatore
Uso: GM:Studio 1.4 Master
Contatta:

Re: CollyxDLL

Messaggio da CaMpIoN »

Allora ho cambiato i valori dei controlli delle collisioni, il tuo controllo alla x è x+7.9 e x-7.9, quelle mio x+sprite_width/2 e x-sprite_width/2, poi ho cambiato anche il controllo alla y, il tuo è y+15.9 e y-15.9, il mio y+sprite_height/2 e y-sprite_height/2.
Giochi da me creati:
Spoiler
Immagine

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

Re: CollyxDLL

Messaggio da Jak »

CaMpIoN ha scritto:Allora ho cambiato i valori dei controlli delle collisioni, il tuo controllo alla x è x+7.9 e x-7.9, quelle mio x+sprite_width/2 e x-sprite_width/2, poi ho cambiato anche il controllo alla y, il tuo è y+15.9 e y-15.9, il mio y+sprite_height/2 e y-sprite_height/2.
Ecco, allora io avevo messo 7.9 15.9 ecc per un motivo: il pg si incastrava :lol:
Considerando che il pg nell'esempio sia un 32x32 regolati di conseguenza, vai un po a tentativi insomma :lol:
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
CaMpIoN
Membro super
Messaggi: 684
Iscritto il: 17/11/2009, 16:20
Specialità: Programmatore
Uso: GM:Studio 1.4 Master
Contatta:

Re: CollyxDLL

Messaggio da CaMpIoN »

Si, ma si deve trovare un modo anche per questo, mi raccomando per una nuova versione ;), ah in chat ti avevo consigliato di fare un tutorial per piani inclinati della DLL, ormai un gioco platform senza piani inclinati, non è piu un gioco.
Giochi da me creati:
Spoiler
Immagine

Avatar utente
Feschio
Membro d'elite
Messaggi: 1476
Iscritto il: 02/07/2010, 8:19
Contatta:

Re: CollyxDLL

Messaggio da Feschio »

In teoria un platform non dovrebbe avere piani inclinati essendo appunto "platform".
Valta Korpiklaani! Finlandia Rulez
Nix ha scritto:Lego, tu piaccono alle rosse pescie dimezza cotte?

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

Re: CollyxDLL

Messaggio da maz85 »

Piattaforma, perchè no piattaforme inclinate?

Avatar utente
CaMpIoN
Membro super
Messaggi: 684
Iscritto il: 17/11/2009, 16:20
Specialità: Programmatore
Uso: GM:Studio 1.4 Master
Contatta:

Re: CollyxDLL

Messaggio da CaMpIoN »

Perchè feschio tu avresti un'altra definizione unica per giochi di piattaforme inclinate, un platform sono giochi come quelli di mario bros che bene saprai, che si muovono su una piattaforma e che siano in 3a persona, almeno penso, quindi possono avere piattaforme inclinate, piattaforme mobili, fisse ecc..
Giochi da me creati:
Spoiler
Immagine

Avatar utente
Feschio
Membro d'elite
Messaggi: 1476
Iscritto il: 02/07/2010, 8:19
Contatta:

Re: CollyxDLL

Messaggio da Feschio »

Io personalmente considerò come platform puri quei giochi esattamente come Suppamario con le varie piattaforme su cui saltare etc. generalmente un gioco con terreno inclinato non ha altre piattaforme su cui saltare etc.
Valta Korpiklaani! Finlandia Rulez
Nix ha scritto:Lego, tu piaccono alle rosse pescie dimezza cotte?

Avatar utente
CaMpIoN
Membro super
Messaggi: 684
Iscritto il: 17/11/2009, 16:20
Specialità: Programmatore
Uso: GM:Studio 1.4 Master
Contatta:

Re: CollyxDLL

Messaggio da CaMpIoN »

Piano inclinato, terreno inclinato, non sono altro che piattaforme... anche una scala su cui salire, è una piattaforma...
Giochi da me creati:
Spoiler
Immagine

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 34 ospiti