game maker
Gebruikersnaam:
Wachtwoord:
Home Info Forums Help
Welkom, Gast. Alsjeblieft inloggen of registreren.
De activerings e-mail gemist?
Pagina's: [1] 2 3 ... 10

 1 
 Gepost op: 8 Januari 2020, 04:37:04 
Gestart door The Figurehead - Laatste bericht door ericlegomeer
Het veranderen van je naam is mogelijk via deze route: http://www.game-maker.nl/forums/topic,73715.msg507006#msg507006
Het gaat via PM naar Maarten Baert. Hij was recent nog actief, maar mocht je totaal geen reactie krijgen dan kun je ook een PM naar mij sturen.

Het verwijderen van een account doen we liever niet aangezien het de leesbaarheid van de bestaande threads vermindert.

 2 
 Gepost op: 8 Januari 2020, 00:33:32 
Gestart door The Figurehead - Laatste bericht door The Figurehead
Hoe verander ik mijn naam of verwijder mijn account desnoods?


 3 
 Gepost op: 23 December 2019, 12:51:35 
Gestart door Piet Piraat - Laatste bericht door Piet Piraat
Hallo

Iemand hielp mij met een gevechtsysteem. Helaas heeft het een fout en ik kan het niet vinden en die persoon die mij hielp kan ik niet meer bereiken.

Het gaat om het volgende, ik heb een aantal instances die om beurten een aanval doen. Er zijn hero instances en 1 vijand obj met meerdere instances.

Elke hero instance en vijand instance krijgt een priority nummer. Zo krijgen de vijand instances 1, 3, 5 enz, en de hero instances 2, 4, 6, 8 enz.

Ik heb in een controller, als de room start deze code staan:

GML:
global.battle_queue = ds_priority_create();

global.hero_list = ds_list_create();

global.enemy_list = ds_list_create();

Nu heb ik in een alarm deze code staan:

GML:
if (ds_priority_size(global.battle_queue) > 0)
{
next_combatant = ds_priority_delete_min(global.battle_queue);
next_combatant.attack = true;
}
else
{
//Check the priority queue still exists
if (ds_exists(global.battle_queue, ds_type_priority) ) ds_priority_clear(global.battle_queue);
else global.battle_queue = ds_priority_create();

with obj_battle_objects
{
ds_priority_add(global.battle_queue, id, priority) //agility would be the priority of the object that gets added and whoever had the highest agility could go first
}

   next_combatant = ds_priority_delete_min(global.battle_queue);
   next_combatant.attack = true;
}

Als de code voor de strijd is afgelopen, dan start dat alarm en kijkt hij naar de volgende instance die aan de beurt is waarna de volgende instance weer een strijd levert. De strijd is een enkele slag met een wapen. Dus ombeurten doen de vijanden en heroes een slag totdat iemand dood is en zijn instance word gedstroyed.

Voor de heroes staat deze code in een script, omdat die dan maar 1 keer hoeft te worden getypt.

script voor de heroes:

GML:
if attack = true
{
ds_list_shuffle(global.enemy_list);
defender = global.enemy_list[| 0];

a_stats[hero_stats.strike] = a_stats[hero_stats.level] * 10 - (defender.a_stats[hero_stats.armour] + defender.a_stats[hero_stats.defense]);

if (a_stats[hero_stats.strike] <= ( (a_stats[hero_stats.level] * 2) - (defender.a_stats[hero_stats.armour] + defender.a_stats[hero_stats.defense]) ) ){
a_stats[hero_stats.strike] = (10 * irandom(a_stats[hero_stats.level]));
}

var damage = random_range(a_stats[hero_stats.strike]*0.25, a_stats[hero_stats.strike]);

axe = instance_create_depth(defender.x, defender.y, -120, obj_barbarian_hit_enemy);

hit = choose(true, true, true, false, false);

if hit = false
{
audio_play_sound(sound_sword_miss, false, 0);
}
if (hit == true)
{
audio_play_sound(sound_sword_hit, false, 0);
defender.a_stats[hero_stats.life] -= damage;
}

if defender.a_stats[hero_stats.life] < 1
{

ds_list_delete(global.enemy_list, defender);

if a_stats[hero_stats.xp] >= (a_stats[hero_stats.level]*10)+(sqr(a_stats[hero_stats.level])*5)
{
for (var i = hero_stats.level; i <= hero_stats.dexterity; i ++)
{
a_stats[i] += 1;
}
a_stats[hero_stats.life] += 10
a_stats[hero_stats.max_life] = a_stats[hero_stats.life]
a_stats[hero_stats.xp] = 0
}
a_stats[hero_stats.xp] += defender.a_stats[hero_stats.level]*a_stats[hero_stats.constitution]*global.dungeon_level
a_stats[hero_stats.gold] = defender.a_stats[hero_stats.level] * 5



if (ds_list_size(global.enemy_list) <= 0)
{
with obj_battle_objects
{
for (var i = 0; i < hero_stats.last; i ++)
{
global.hero_array[hero_index, i] = a_stats[i];
}
}
}
instance_destroy(defender);
}

obj_controller_vars.alarm[1]=40

attack = false
}

In het step event van de vijand staat dezelfde code alleen aangepast voor de vijand:

GML:
if attack = true
{
ds_list_shuffle(global.hero_list);

defender = global.hero_list[| 0];

a_stats[hero_stats.strike] = a_stats[hero_stats.level] * 10 - (defender.a_stats[hero_stats.armour] + defender.a_stats[hero_stats.defense]);

if (a_stats[hero_stats.strike] <= ( (a_stats[hero_stats.level] * 2) - (defender.a_stats[hero_stats.armour] + defender.a_stats[hero_stats.defense]) ) ){
a_stats[hero_stats.strike] = (10 * irandom(a_stats[hero_stats.level]));
}

var damage = random_range(a_stats[hero_stats.strike]*0.25, a_stats[hero_stats.strike]);

axe = instance_create_depth(defender.x, defender.y, -120, obj_barbarian_hit_enemy);



hit = choose(true, true, true, false, false);

if hit = false
{
audio_play_sound(sound_sword_miss, false, 0);
}

if (hit == true)
{
audio_play_sound(sound_sword_hit, false, 0);
defender.a_stats[hero_stats.life] -= damage;
}

if defender.a_stats[hero_stats.life] < 1
{

ds_list_delete(global.hero_list, defender);
if (ds_list_size(global.hero_list) <= 0)
{
//all the heroes died so do something?
}
instance_destroy(defender);
}

obj_controller_vars.alarm[1]=40

attack = false
}

Als nu een instance wordt destroyed gaat de code nog door totdat de instance die aan de beurt is, die inmiddels destroyed is, weer aan de beurt is en dan komt de error omdat die instance er niet meer is.

Wat ik ervan begijp is dat deze code:

GML:
ds_list_delete(global.hero_list, defender);

de instance verwijdert van de list omdat die destroyed is.

Maar toch krijg ik die error.

GML:
############################################################################################
FATAL ERROR in
action number 1
of Alarm Event for alarm 1
for object obj_controller_vars:

Unable to find any instance for object index '101750'
 at gml_Object_obj_controller_vars_Alarm_1 (line 7) -               next_combatant.attack = true;
############################################################################################
--------------------------------------------------------------------------------------------
stack frame is
gml_Object_obj_controller_vars_Alarm_1 (line 7)

Hieronder een gif hoe het eruit ziet.



Weet iemand hoe ik dit op kan lossen? Ik begrijp het geheel maar gedeeltelijk, helaas.


 4 
 Gepost op: 24 November 2019, 18:42:46 
Gestart door instantnoedel - Laatste bericht door la quiz
Beste Instantnoedel,

Wij hebben de game gespeeld en waren verrast door het leveldesign. Best wel groot en het switchen van de view was best vet gedaan! Jammer dat er geen bevredigend einde is. Na 5.30 hadden we eigenlijk wel wat willen weten over dat zwarte gat. Wellicht in het vervolg? Gekanteld

Mvg,
La Quiz

 5 
 Gepost op: 16 November 2019, 11:07:43 
Gestart door wwvar - Laatste bericht door wwvar
Je zou het expres kapot kunnen maken door PCSX2 te herinstalleren, zo weet je zeker dat DirectX de boosdoener is. Maar als een nieuwere installatie het probleem niet oplost is dit natuurlijk zonde.

Dat is waar maar ik kon dus geen nieuwe versie installeren, vreemd genoeg. Ik zou het dus liever niet expres terug verpesten want misschien duurt het dan nog 3 maanden voor ik weer een Windows update heb.

 6 
 Gepost op: 15 November 2019, 23:55:01 
Gestart door wwvar - Laatste bericht door Ceymoonie
Ik had weer een kleine windows update, en alles werkt terug. Dus ik kan niet testen of een bepaalde directX installatie het fixt, tot het weer kapot is.
Je zou het expres kapot kunnen maken door PCSX2 te herinstalleren, zo weet je zeker dat DirectX de boosdoener is. Maar als een nieuwere installatie het probleem niet oplost is dit natuurlijk zonde.

 7 
 Gepost op: 15 November 2019, 08:25:08 
Gestart door wwvar - Laatste bericht door wwvar
Ik had weer een kleine windows update, en alles werkt terug. Dus ik kan niet testen of een bepaalde directX installatie het fixt, tot het weer kapot is.

 8 
 Gepost op: 14 November 2019, 09:12:11 
Gestart door massimot - Laatste bericht door massimot
Het programma GameMaker bestaat inmiddels al 20 jaar. Om dit te vieren, mag je GameMaker dit weekend gratis (!) proberen en kun je meedoen aan een game jam met het toepasselijke thema 20.

Originele post: https://www.yoyogames.com/blog/541/gamemaker-s-20th-anniversary

 9 
 Gepost op: 12 November 2019, 11:09:24 
Gestart door JasperGameNOOB - Laatste bericht door mart
Wauw, gmchat moet terugkomen!

 10 
 Gepost op: 12 November 2019, 11:06:21 
Gestart door JasperGameNOOB - Laatste bericht door JasperGameNOOB
Jongens ik ga een volgende update uitvoeren!
Die komt ergens in 2022

Pagina's: [1] 2 3 ... 10 >
Powered by SMF 1.1.21 | SMF © 2006-2007, Simple Machines
www.game-maker.nl © 2003-2020 Nederlandse Game Maker Community