Skocz do zawartości

Rekomendowane odpowiedzi

Mam problem z tablicami, przerobiłem je trochę, by działać na samych tablicach i nie musieć ich nadpisywać, wcześniej wyciągałem je i nadpisywałem, ale postanowiłem skrócić kod, lecz teraz przy strzale lub przeładowaniu, wartości nie chcą wskoczyć. Strzelę nie pobierze ammo, i nie mogę znowu strzelić, gdy zmienię broń na łuk, ciągle stara się przeładować (autoreload, a ammo ustawione na 5), Draw rysuje się że magazynek pistoletu spada na 0 i wraca do 5, a amunicja z EQ, pobiera się normalnie . Co zrobiłem źle?

EDIT: Naprawiłem problem strzelania, nie przyczaiłem, że alarm się nie wykona bo nie klikam przycisku...

dodałem linijkę na dół kodu

 

Czy kod się pierdzieli przez brak referencji? Zamiast zmieniać mi tablicę secweapon zmienia mi Weapon?
 


CREATE:
#region //Weapons
#region //Secondray Weapons
/* 
secweapon[,0] = "Metal Made Pistol"; //Nazwa Broni
secweapon[,1] = 0.3; //Szybkośc Strzelania * room_speed // 1 = 1sec;
secweapon[,2] = 1.5; //Szybkość Przeładowania * room_Speed // 1 = 1sec;
secweapon[,3] = 3; //Minimalna Penetracja Pancerza
secweapon[,4] = 8; //Maksymalna Penetracja Pancerza
secweapon[,5] = 2; //Typ Używanej Amunicji ////		9mm
secweapon[,6] = 0; //Ilość Amunicji w Magazynku
secweapon[,7] = 20; //Maksymalna Ilość Amunicji w Magazynku
*/


secweapon[0,0] = "EMPTY"; //Nazwa Broni
secweapon[0,1] = 0; //Szybkośc Strzelania * room_speed // 1 = 1sec;
secweapon[0,2] = 0; //Szybkość Przeładowania * room_Speed // 1 = 1sec;
secweapon[0,3] = 0; //Minimalna Penetracja Pancerza
secweapon[0,4] = 0; //Maksymalna Penetracja Pancerza
secweapon[0,5] = 0; //Typ Używanej Amunicji ////
secweapon[0,6] = 0; //Ilość Amunicji w Magazynku
secweapon[0,7] = 0; //Maksymalna Ilość Amunicji w Magazynku

secweapon[1,0] = "Wood Made Pistol"; //Nazwa Broni
secweapon[1,1] = 0.3; //Szybkośc Strzelania * room_speed // 1 = 1sec;
secweapon[1,2] = 2; //Szybkość Przeładowania * room_Speed // 1 = 1sec;
secweapon[1,3] = 3; //Minimalna Penetracja Pancerza
secweapon[1,4] = 5; //Maksymalna Penetracja Pancerza
secweapon[1,5] = 2; //Typ Używanej Amunicji ////		9mm
secweapon[1,6] = 5; //Ilość Amunicji w Magazynku
secweapon[1,7] = 15; //Maksymalna Ilość Amunicji w Magazynku

secweapon[2,0] = "Metal Made Pistol"; //Nazwa Broni
secweapon[2,1] = 0.3; //Szybkośc Strzelania * room_speed // 1 = 1sec;
secweapon[2,2] = 1.8; //Szybkość Przeładowania * room_Speed // 1 = 1sec;
secweapon[2,3] = 3; //Minimalna Penetracja Pancerza
secweapon[2,4] = 8; //Maksymalna Penetracja Pancerza
secweapon[2,5] = 2; //Typ Używanej Amunicji ////		9mm
secweapon[2,6] = 0; //Ilość Amunicji w Magazynku
secweapon[2,7] = 20; //Maksymalna Ilość Amunicji w Magazynku

secweapon[3,0] = "Normal Pistol"; //Nazwa Broni
secweapon[3,1] = 0.15; //Szybkośc Strzelania * room_speed // 1 = 1sec;
secweapon[3,2] = 1.7; //Szybkość Przeładowania * room_Speed // 1 = 1sec;
secweapon[3,3] = 5; //Minimalna Penetracja Pancerza
secweapon[3,4] = 10; //Maksymalna Penetracja Pancerza
secweapon[3,5] = 2; //Typ Używanej Amunicji ////		9mm
secweapon[3,6] = 0; //Ilość Amunicji w Magazynku
secweapon[3,7] = 25; //Maksymalna Ilość Amunicji w Magazynku

secweapon[4,0] = "Better Pistol"; //Nazwa Broni
secweapon[4,1] = 0.15; //Szybkośc Strzelania * room_speed // 1 = 1sec;
secweapon[4,2] = 1.5; //Szybkość Przeładowania * room_Speed // 1 = 1sec;
secweapon[4,3] = 7; //Minimalna Penetracja Pancerza
secweapon[4,4] = 12; //Maksymalna Penetracja Pancerza
secweapon[4,5] = 2; //Typ Używanej Amunicji ////		9mm
secweapon[4,6] = 0; //Ilość Amunicji w Magazynku
secweapon[4,7] = 30; //Maksymalna Ilość Amunicji w Magazynku

secweapon[5,0] = "Police Pistol"; //Nazwa Broni
secweapon[5,1] = 0.15; //Szybkośc Strzelania * room_speed // 1 = 1sec;
secweapon[5,2] = 1.5; //Szybkość Przeładowania * room_Speed // 1 = 1sec;
secweapon[5,3] = 8; //Minimalna Penetracja Pancerza
secweapon[5,4] = 14; //Maksymalna Penetracja Pancerza
secweapon[5,5] = 2; //Typ Używanej Amunicji ////		9mm
secweapon[5,6] = 0; //Ilość Amunicji w Magazynku
secweapon[5,7] = 25; //Maksymalna Ilość Amunicji w Magazynku

secweapon[6,0] = "Special Forces Pistol"; //Nazwa Broni
secweapon[6,1] = 0.15; //Szybkośc Strzelania * room_speed // 1 = 1sec;
secweapon[6,2] = 1.5; //Szybkość Przeładowania * room_Speed // 1 = 1sec;
secweapon[6,3] = 8; //Minimalna Penetracja Pancerza
secweapon[6,4] = 18; //Maksymalna Penetracja Pancerza
secweapon[6,5] = 3; //Typ Używanej Amunicji ////		5.56mm
secweapon[6,6] = 0; //Ilość Amunicji w Magazynku
secweapon[6,7] = 20; //Maksymalna Ilość Amunicji w Magazynku

secweapon[7,0] = "Metal Made Pistol"; //Nazwa Broni
secweapon[7,1] = 0.4; //Szybkośc Strzelania * room_speed // 1 = 1sec;
secweapon[7,2] = 2; //Szybkość Przeładowania * room_Speed // 1 = 1sec;
secweapon[7,3] = 15; //Minimalna Penetracja Pancerza
secweapon[7,4] = 25; //Maksymalna Penetracja Pancerza
secweapon[7,5] = 4; //Typ Używanej Amunicji ////		7.62mm
secweapon[7,6] = 0; //Ilość Amunicji w Magazynku
secweapon[7,7] = 10; //Maksymalna Ilość Amunicji w Magazynku

#endregion

#region //Primary Weapons
/*
primweapon[,0] = "Metal Made Pistol"; //Nazwa Broni
primweapon[,1] = 0.3; //Szybkośc Strzelania * room_speed // 1 = 1sec;
primweapon[,2] = 1.5; //Szybkość Przeładowania * room_Speed // 1 = 1sec;
primweapon[,3] = 3; //Minimalna Penetracja Pancerza
primweapon[,4] = 8; //Maksymalna Penetracja Pancerza
primweapon[,5] = 2; //Typ Używanej Amunicji ////		
primweapon[,6] = 0; //Ilość Amunicji w Magazynku
primweapon[,7] = 20; //Maksymalna Ilość Amunicji w Magazynku
*/

primweapon[0,0] = "EMPTY"; //Nazwa Broni
primweapon[0,1] = 0; //Szybkośc Strzelania * room_speed // 1 = 1sec;
primweapon[0,2] = 0; //Szybkość Przeładowania * room_Speed // 1 = 1sec;
primweapon[0,3] = 0; //Minimalna Penetracja Pancerza
primweapon[0,4] = 0; //Maksymalna Penetracja Pancerza
primweapon[0,5] = 0; //Typ Używanej Amunicji ////
primweapon[0,6] = 0; //Ilość Amunicji w Magazynku
primweapon[0,7] = 0; //Maksymalna Ilość Amunicji w Magazynku

primweapon[1,0] = "BOW"; //Nazwa Broni
primweapon[1,1] = 1; //Szybkośc Strzelania * room_speed // 1 = 1sec;
primweapon[1,2] = 1; //Szybkość Przeładowania * room_Speed // 1 = 1sec;
primweapon[1,3] = 5; //Minimalna Penetracja Pancerza
primweapon[1,4] = 15; //Maksymalna Penetracja Pancerza
primweapon[1,5] = 1; //Typ Używanej Amunicji ////		Arrows
primweapon[1,6] = 0; //Ilość Amunicji w Magazynku
primweapon[1,7] = 1; //Maksymalna Ilość Amunicji w Magazynku

primweapon[2,0] = "Small PM"; //Nazwa Broni
primweapon[2,1] = 0.1; //Szybkośc Strzelania * room_speed // 1 = 1sec;
primweapon[2,2] = 2; //Szybkość Przeładowania * room_Speed // 1 = 1sec;
primweapon[2,3] = 5; //Minimalna Penetracja Pancerza
primweapon[2,4] = 12; //Maksymalna Penetracja Pancerza
primweapon[2,5] = 2; //Typ Używanej Amunicji ////		9mm
primweapon[2,6] = 0; //Ilość Amunicji w Magazynku
primweapon[2,7] = 30; //Maksymalna Ilość Amunicji w Magazynku

primweapon[3,0] = "Rifle 74"; //Nazwa Broni
primweapon[3,1] = 0.3; //Szybkośc Strzelania * room_speed // 1 = 1sec;
primweapon[3,2] = 1.5; //Szybkość Przeładowania * room_Speed // 1 = 1sec;
primweapon[3,3] = 3; //Minimalna Penetracja Pancerza
primweapon[3,4] = 8; //Maksymalna Penetracja Pancerza
primweapon[3,5] = 4; //Typ Używanej Amunicji ////		7.62mm
primweapon[3,6] = 0; //Ilość Amunicji w Magazynku
primweapon[3,7] = 30; //Maksymalna Ilość Amunicji w Magazynku

#endregion

#region //Special Weapons
/*
specweapon[,0] = "Metal Made Pistol"; //Nazwa Broni
specweapon[,1] = 0.3; //Szybkośc Strzelania * room_speed // 1 = 1sec;
specweapon[,2] = 1.5; //Szybkość Przeładowania * room_Speed // 1 = 1sec;
specweapon[,3] = 3; //Minimalna Penetracja Pancerza
specweapon[,4] = 8; //Maksymalna Penetracja Pancerza
specweapon[,5] = 2; //Typ Używanej Amunicji ////		9mm
specweapon[,6] = 0; //Ilość Amunicji w Magazynku
specweapon[,7] = 20; //Maksymalna Ilość Amunicji w Magazynku
*/

specweapon[0,0] = "EMPTY"; //Nazwa Broni
specweapon[0,1] = 0; //Szybkośc Strzelania * room_speed // 1 = 1sec;
specweapon[0,2] = 0; //Szybkość Przeładowania * room_Speed // 1 = 1sec;
specweapon[0,3] = 0; //Minimalna Penetracja Pancerza
specweapon[0,4] = 0; //Maksymalna Penetracja Pancerza
specweapon[0,5] = 0; //Typ Używanej Amunicji ////
specweapon[0,6] = 0; //Ilość Amunicji w Magazynku
specweapon[0,7] = 0; //Maksymalna Ilość Amunicji w Magazynku

specweapon[1,0] = "Wood Rifle"; //Nazwa Broni
specweapon[1,1] = 1; //Szybkośc Strzelania * room_speed // 1 = 1sec;
specweapon[1,2] = 2; //Szybkość Przeładowania * room_Speed // 1 = 1sec;
specweapon[1,3] = 8; //Minimalna Penetracja Pancerza
specweapon[1,4] = 25; //Maksymalna Penetracja Pancerza
specweapon[1,5] = 3; //Typ Używanej Amunicji ////		9mm
specweapon[1,6] = 0; //Ilość Amunicji w Magazynku
specweapon[1,7] = 10; //Maksymalna Ilość Amunicji w Magazynku

specweapon[2,0] = "Pipe Pump"; //Nazwa Broni
specweapon[2,1] = 1; //Szybkośc Strzelania * room_speed // 1 = 1sec;
specweapon[2,2] = 1; //Szybkość Przeładowania * room_Speed // 1 = 1sec;
specweapon[2,3] = 3; //Minimalna Penetracja Pancerza
specweapon[2,4] = 8; //Maksymalna Penetracja Pancerza
specweapon[2,5] = 2; //Typ Używanej Amunicji ////		9mm
specweapon[2,6] = 0; //Ilość Amunicji w Magazynku
specweapon[2,7] = 5; //Maksymalna Ilość Amunicji w Magazynku

#endregion


#region //Ammunition
/*
ammunition[,0] = "EMPTY"; //Nazwa Amunicji
ammunition[,1] = 0; //Ilość Posiadana
ammunition[,2] = 0; //Max Ilość Posiadania
ammunition[,3] = 0; //Penetracja
ammunition[,4] = 0; //Minimalna Ilość DMG
ammunition[,5] = 0; //Maksymalna Ilość DMG
ammunition[,6] = 0; //Szybkość Pocisku
*/

ammunition[0,0] = "EMPTY"; //Nazwa Amunicji
ammunition[0,1] = 0; //Ilość Posiadana
ammunition[0,2] = 0; //Max Ilość Posiadania
ammunition[0,3] = 0; //Penetracja
ammunition[0,4] = 0; //Minimalna Ilość DMG
ammunition[0,5] = 0; //Maksymalna Ilość DMG
ammunition[0,6] = 0; //Szybkość Pocisku

ammunition[1,0] = "Arrows"; //Nazwa Amunicji
ammunition[1,1] = 5; //Ilość Posiadana
ammunition[1,2] = 50; //Max Ilość Posiadania
ammunition[1,3] = 20; //Penetracja
ammunition[1,4] = 10; //Minimalna Ilość DMG
ammunition[1,5] = 25; //Maksymalna Ilość DMG
ammunition[1,6] = 30; //Szybkość Pocisku

ammunition[2,0] = "9mm"; //Nazwa Amunicji
ammunition[2,1] = 50; //Ilość Posiadana
ammunition[2,2] = 100; //Max Ilość Posiadania
ammunition[2,3] = 5; //Penetracja
ammunition[2,4] = 5; //Minimalna Ilość DMG
ammunition[2,5] = 15; //Maksymalna Ilość DMG
ammunition[2,6] = 50; //Szybkość Pocisku

ammunition[3,0] = "5.56mm"; //Nazwa Amunicji
ammunition[3,1] = 50; //Ilość Posiadana
ammunition[3,2] = 100; //Max Ilość Posiadania
ammunition[3,3] = 10; //Penetracja
ammunition[3,4] = 10; //Minimalna Ilość DMG
ammunition[3,5] = 20; //Maksymalna Ilość DMG
ammunition[3,6] = 60; //Szybkość Pocisku

ammunition[4,0] = "7.62mm"; //Nazwa Amunicji
ammunition[4,1] = 50; //Ilość Posiadana
ammunition[4,2] = 100; //Max Ilość Posiadania
ammunition[4,3] = 15; //Penetracja
ammunition[4,4] = 15; //Minimalna Ilość DMG
ammunition[4,5] = 30; //Maksymalna Ilość DMG
ammunition[4,6] = 70; //Szybkość Pocisku

ammunition[5,0] = "Shotgun Shell"; //Nazwa Amunicji
ammunition[5,1] = 10; //Ilość Posiadana
ammunition[5,2] = 100; //Max Ilość Posiadania
ammunition[5,3] = 5; //Penetracja
ammunition[5,4] = 5; //Minimalna Ilość DMG
ammunition[5,5] = 15; //Maksymalna Ilość DMG
ammunition[5,6] = 30; //Szybkość Pocisku

#endregion

canshot = true; //Mogę Strzelać
canuneq = true; // Mogę Wyrzucić Broń

Weapon = secweapon;		//Wybieranie Tablicy secweapon, primweapon, specweapon
SecSlot = 1;			//Slot Broni 1 = Secondary
PrimSlot = 1;			//Slot Broni 2 = Primary
SpecSlot = 0;			//Slot Broni 3 = Special
ActualSlot = 0;			//Aktualnie używany slot; 0 = Sceondary, 1 = Primary, 2 = Special
WeaponSlot = 0;			//Broń W Danym Slocie
WeaponName = "";		//Nazwa Broni
ReloadSpeed = 0;		//Czas Przeładowania Broni;
ReloadSpeedMax = 0;		//Czas Przeładowania Broni Max;
ShotSpeed = 0;			//Szybkość Strzelania;
ActualAmmo = 0;			//Aktualnie przypisana Amunicja
WeaponSprite = 0;		//Rysowanie Sprita broni
WeaponIndex = 0;		//Image_Index Sprite Broni
MaxWeaponAmmo = 0;		//Maxymalna ilość ammo w broni (maxmag);
WeaponMinArmorPen = 0;	//Minimalna Penetracja Panerza
WeaponMaxArmorPen = 0;	//Maksymalna Penetracja Pancerza
AmmoPenetration = 0;	//Penetracja Ammunicji
MinAmmoDMG = 0;			//Min DMG Amunicji
MaxAmmoDMG = 0;			//Max DMG Amunicji
MaxEqAmmo = 0;			//Max Ammo w EQ
AmmoName = "";			//Nazwa Amunicji
AmmoSpeed = 0;			//Szybkosc Amunicji
sspd = 0;				//Timer Strzelania
rspeed = 0;				//Timer Reloadu
canreload = true;
reload = false;
reloadend = false;


recoil = 0; // Recoil Broni
moverecoilend = 0; // Końcowy Recoil
moverecoil = 0; //Recoil Podczas ruchu 0 = Stoje, 1 = Idę, 2 = Bignę, 3 = Sprintuję;



dmg = 0;
ap = 0;
alldmg = 0;

STEP:

if global.pausegame == false && myDead == false{

//Wybieranie Slotu Broni
if reload == false{
if keyboard_check_pressed(ord("1")){
	ActualSlot = 0;
}
if keyboard_check_pressed(ord("2")){
	ActualSlot = 1;
}
if keyboard_check_pressed(ord("3")){
	ActualSlot = 2;
}
}

//Wybieranie Broni
if (ActualSlot == 0)
{
	//Przypisanie warotści których nie trzeba nadpisywać
	Weapon = secweapon;
	WeaponSlot = SecSlot;							//Przypisanie broni do slotu;
	WeaponSprite = 1;								//Przypisanie Sprite Broni 1 = s_SceWeaponSprite
} else {
	if (ActualSlot == 1)
	{
		Weapon = primweapon;
		WeaponSlot = PrimSlot;							//Przypisanie broni do slotu;
		WeaponSprite = 2;
	} else {
		if (ActualSlot == 2)
		{
			Weapon = specweapon;
			WeaponSlot = SpecSlot;							//Przypisanie broni do slotu;
			WeaponSprite = 3;
		}
	}
}

/* 
secweapon[,0] = "Metal Made Pistol"; //Nazwa Broni
secweapon[,1] = 0.3; //Szybkośc Strzelania * room_speed // 1 = 1sec;
secweapon[,2] = 1.5; //Szybkość Przeładowania * room_Speed // 1 = 1sec;
secweapon[,3] = 3; //Minimalna Penetracja Pancerza
secweapon[,4] = 8; //Maksymalna Penetracja Pancerza
secweapon[,5] = 2; //Typ Używanej Amunicji ////		9mm
secweapon[,6] = 0; //Ilość Amunicji w Magazynku
secweapon[,7] = 20; //Maksymalna Ilość Amunicji w Magazynku

ammunition[,0] = "EMPTY"; //Nazwa Amunicji
ammunition[,1] = 0; //Ilość Posiadana
ammunition[,2] = 0; //Max Ilość Posiadania
ammunition[,3] = 0; //Penetracja
ammunition[,4] = 0; //Minimalna Ilość DMG
ammunition[,5] = 0; //Maksymalna Ilość DMG
ammunition[,6] = 0; //Szybkość Pocisku
*/

	ActualAmmo = Weapon[WeaponSlot,5];					//Przypisanie typu ammunicji;
	ReloadSpeed = Weapon[WeaponSlot,2]*room_speed;		//Przypisanie szybkości przeładowania;
	ReloadSpeedMax = Weapon[WeaponSlot,2]*room_speed;	//Przypisanie Maxymalnej szybkości przeładowania;
	ShotSpeed = Weapon[WeaponSlot,1];					//Przypisanie szybkości strzelania;
	WeaponName = Weapon[WeaponSlot,0];					//Przypisanie Nazwy Broni
	MaxWeaponAmmo = Weapon[WeaponSlot,7];				//Przypisanie Maksymalnej ilości Ammo w Broni
	WeaponMinArmorPen = Weapon[WeaponSlot,3];			//Przypisanie Minimalnej Penetracji Pocisku Przez Broń
	WeaponMaxArmorPen = Weapon[WeaponSlot,4];			//Przypisanie Maksymalnej Penetracji Pocisku Przez Broń
	WeaponIndex = WeaponSlot;							//Przypisanie Indexu Sprite Broni
	
	MinAmmoDMG = ammunition[ActualAmmo,4];				//Przypisanie Minimalnego DMG z Amunicji
	MaxAmmoDMG = ammunition[ActualAmmo,5];				//Przypisanie Maksymalnego DMG z Amunicji
	AmmoPenetration = ammunition[ActualAmmo,3];			//Pryzpisanie Penetracji Pancerza z Amunicji
	MaxEqAmmo = ammunition[ActualAmmo,2];				//Przypisanie Maksymalnej ilości Ammo w EQ
	AmmoName = ammunition[ActualAmmo,0];				//Przypisanie Nazwy Amunicji
	AmmoSpeed = ammunition[ActualAmmo,6];
	
#region // LOSOWANIE SZANSY NA TRAFIENIE DANEJ CZĘŚCI CIAŁA PATRZĄC NA PROSZUANIE SIĘ POSTACI
if movement == true{
	if imwalk == true{ // jezeli ide na shift
		headproc = 60;
		torsproc = 30;
		armproc = 20;
		legproc = 10;
		missproc = 0;
	}
	
	if imrun == true { // jezeli sprintuje
		headproc = 97;
		torsproc = 70;
		armproc = 50;
		legproc = 40;
		missproc = 0;
	}
	
	if imrunn == true{ // jezeli truchtam
		headproc = 80;
		torsproc = 55;
		armproc = 40;
		legproc = 20;
		missproc = 0;
	}
} else {  // jezeli stoje
		headproc = 50;
		torsproc = 25;
		armproc = 15;
		legproc = 5;
		missproc = 0;
}

	randomize() // upewniamy się że seed będzie losowy i da losowe wyniki
	procent = irandom(100);
	
	//Zawsze domyślnie nie trafisz
bodyshot = 6;

//Ale jesli procent bedzie dobry to trafisz przynajmniej to
if procent > legproc { //wieksze od 10
	bodyshot = round(irandom_range(4,5));
}

//A jak bedzie lepszy to już to trafisz.
if procent > armproc { //wieksze od 25
	bodyshot = round(irandom_range(2,3));
	//Ten warunek jak się spełni to nadpisze poprzednią zmianę "bodyshot" więc nie musisz się martwić o sprawdzanie Min-max
}

if procent > torsproc { //wieksze od 30
	bodyshot = 1;
}

if procent > headproc { //wieksze od 90
	bodyshot = 0;
}

#endregion
//recoil = 0; // recoil
//moverecoilmin = -1; // zmieniajaca wartosc na -
//moverecoilend = 0; // koncowy recoil
//moverecoil = 0; // stan recoilu = 0, jak stoi, 1 jak idzie, 2 jak truchta, 3 jak biegnie;
recoil = random_range(-5,5);
moverecoilend = (moverecoil * recoil) / global.recoilskill;

dmg = round(irandom_range(MinAmmoDMG,MaxAmmoDMG));
ap = round(irandom_range(WeaponMinArmorPen,WeaponMaxArmorPen));

if global.expmenu == false
{
	
#region	//SHOT CODE

		if mouse_check_button(mb_left)
		{
			if canshot == true && reload == false
			{
				if global.UnAmmo == false
				{
					if Weapon[WeaponSlot,6] > 0
					{
						canshot = false;
						alldmg = ((dmg + ap) + AmmoPenetration);
						if WeaponName = "BOW"{
							inst = instance_create_layer(x,y,"Instances",o_arrow);
							inst.speed = AmmoSpeed;
							inst.spdd = AmmoSpeed;
							inst.direction = direction;
							inst.image_angle = direction;
							inst.ap = ap;
							inst.dmg = alldmg;
							inst.bshot = bodyshot;
							global.lastdmg = alldmg;
							sspd = ShotSpeed;
							Weapon[WeaponSlot,6] -= 1;	
						} else {
							shel = instance_create_layer(x,y,"Instances",o_shell);
							inst = instance_create_layer(x,y,"Instances",o_bullet);
							inst.speed = AmmoSpeed;
							inst.spdd = AmmoSpeed;
							inst.direction = direction + moverecoilend;
							inst.image_angle = direction + + moverecoilend;
							inst.ap = ap;
							inst.dmg = alldmg;
							inst.bshot = bodyshot;
							sspd = ShotSpeed;
							Weapon[WeaponSlot,6] -= 1;
						}
					}
				} else {
					//if global unammo = true	
					canshot = false;
						alldmg = ((dmg + ap) + AmmoPenetration);
						if WeaponName = "BOW"{
							inst = instance_create_layer(x,y,"Instances",o_arrow);
							inst.speed = AmmoSpeed;
							inst.spdd = AmmoSpeed;
							inst.direction = direction;
							inst.image_angle = direction;
							inst.ap = ap;
							inst.dmg = alldmg;
							inst.bshot = bodyshot;
							global.lastdmg = alldmg;
							sspd = ShotSpeed;	
						} else {
							shel = instance_create_layer(x,y,"Instances",o_shell);
							inst = instance_create_layer(x,y,"Instances",o_bullet);
							inst.speed = AmmoSpeed;
							inst.spdd = AmmoSpeed;
							inst.direction = direction + moverecoilend;
							inst.image_angle = direction + + moverecoilend;
							inst.ap = ap;
							inst.dmg = alldmg;
							inst.bshot = bodyshot;
							sspd = ShotSpeed;
						}
				}
			}
		}

	if canshot = false && reload = false{
		if sspd > 0{
			sspd -= 1;	
		} else {
			canshot = true;	
		}

#endregion

#region	//RELOAD CODE

/* 
secweapon[0,0] = "Metal Made Pistol"; //Nazwa Broni
secweapon[0,1] = 0.3; //Szybkośc Strzelania * room_speed // 1 = 1sec;
secweapon[0,2] = 1.5; //Szybkość Przeładowania * room_Speed // 1 = 1sec;
secweapon[0,3] = 3; //Minimalna Penetracja Pancerza
secweapon[0,4] = 8; //Maksymalna Penetracja Pancerza
secweapon[0,5] = 2; //Typ Używanej Amunicji ////		9mm
secweapon[0,6] = 0; //Ilość Amunicji w Magazynku
secweapon[0,7] = 20; //Maksymalna Ilość Amunicji w Magazynku

ammunition[0,0] = "EMPTY"; //Nazwa Amunicji
ammunition[0,1] = 0; //Ilość Posiadana
ammunition[0,2] = 0; //Max Ilość Posiadania
ammunition[0,3] = 0; //Penetracja
ammunition[0,4] = 0; //Minimalna Ilość DMG
ammunition[0,5] = 0; //Maksymalna Ilość DMG
ammunition[,6] = 0; //Szybkość Pocisku
*/


if (WeaponName = "BOW") // JEZE BRON TO ŁUK
{
	if (canreload == true)
	{ // JEZELI MOGĘ PRZEŁADOWAĆ
		if ((Weapon[WeaponSlot,6] < MaxWeaponAmmo) && (ammunition[ActualAmmo,1] > 0)) // JEŻELI AMMO JEST MNIEJSZE OD MAX AMMO I EQ AMMO JEST WIEKSZE OD 0
		{
			canshot = false; // NIE MOGE STRZELIC
			canreload = false; // NIE MOGE PRZELADOWAC
			reload = true; // PRZELADOWANIE
			rspeed = ReloadSpeed; // SZYBKOSC PRZELADOWANIA
		}
	}
} else { // JEZELI NIE JEST LUKIEM
	if keyboard_check_pressed(ord("R"))
	{
		if (canreload == true){
			if (ammunition[ActualAmmo,1] > 0)
			{
				if (Weapon[WeaponSlot,6] < MaxWeaponAmmo)
				{
					canshot = false;
					canreload = false;
					reload = true;
					rspeed = ReloadSpeed;
					var mage;
					mage = instance_create_layer(x,y,"Instances",o_Mag);
					mage.mag = ActualAmmo;
				}
			}
		}
	}
}

if reload == true
{
	show_debug_message("PRZELADOWYWUJE");
	show_debug_message("rspeed: "+string(rspeed));
	if rspeed > 0{
		rspeed -= 1;
		show_debug_message("rspeed -= 1");
		show_debug_message("rspeed: "+string(rspeed));
	} else {
		reloadend = true;
		show_debug_message("rspeed: "+string(rspeed));
		show_debug_message("END RELOAD");
	}
}

if reloadend == true
{
	show_debug_message("RELOAD END = TRUE");
	/* 
secweapon[0,0] = "Metal Made Pistol"; //Nazwa Broni
secweapon[0,1] = 0.3; //Szybkośc Strzelania * room_speed // 1 = 1sec;
secweapon[0,2] = 1.5; //Szybkość Przeładowania * room_Speed // 1 = 1sec;
secweapon[0,3] = 3; //Minimalna Penetracja Pancerza
secweapon[0,4] = 8; //Maksymalna Penetracja Pancerza
secweapon[0,5] = 2; //Typ Używanej Amunicji ////		9mm
secweapon[0,6] = 0; //Ilość Amunicji w Magazynku
secweapon[0,7] = 20; //Maksymalna Ilość Amunicji w Magazynku

ammunition[0,0] = "EMPTY"; //Nazwa Amunicji
ammunition[0,1] = 0; //Ilość Posiadana
ammunition[0,2] = 0; //Max Ilość Posiadania
ammunition[0,3] = 0; //Penetracja
ammunition[0,4] = 0; //Minimalna Ilość DMG
ammunition[0,5] = 0; //Maksymalna Ilość DMG
ammunition[,6] = 0; //Szybkość Pocisku
*/
	var a;
	a = MaxWeaponAmmo - Weapon[WeaponSlot,6]; // a = maxammo (30) - ammo w magazynku (25) == 5 ammo do doadania;
	show_debug_message("A = "+string(a));
	if ammunition[ActualAmmo,1] > a
	{ // jeżeli ammo w eq jest wieksze od a(5) teraz jest 100 wiec jest wieksze 100 > 5
		show_debug_message("Ilosc ammo > a");
		Weapon[WeaponSlot,6] += a; // dodaj 5 ammo
		show_debug_message("DODAJ AMMO DO MAG");
		ammunition[ActualAmmo,1] -= a; // odejmij 5 ammo
		show_debug_message("ODEJMIJ AMMO Z EQ");
	} else { // jeżeli ammo w eq jest mniejsze od a(5) (np 3) dodaj reszte naboi z eq
		Weapon[WeaponSlot,6] += ammunition[ActualAmmo,1];
		show_debug_message("DODAJRESZTE AMMO");
		ammunition[ActualAmmo,1] = 0;
		show_debug_message("USTAWIA EQAMMO NA 0");
	}
		
	
	reloadend = false;
	show_debug_message("RELOAD END = FALSE");
	reload = false;
	show_debug_message("RELOAD = FALSE");
	canreload = true;
	show_debug_message("CANRELOAD = TRUE");
	canshot = true;	
	show_debug_message("CANSHOT = TRUE");
}
#endregion

#endregion
} //global.Expmenu == false;   end
} //global.pausegame = false && mydead == false;  end

 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Okej zrobiłem ten kod na teście. Nadpisuje mi tablicę Weapon zamiast specweapon itd. Brak referencji. Czyli dalej jest nadpisywana zmienna Weapon. -.-

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

A debugger próbowałeś ? :D

  • Lubię (+1) 1

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
Dnia 22.06.2020 o 10:25, gnysek napisał:

A debugger próbowałeś ? :D

Tak, ale jakoś znaleźć dalej nie mogłem 🤣 ale w końcu przypomniało mi się, że chyba nawet Ty zwracałeś mi uwagę na brak referencji w GM, chciałem zrobić mechanikę na skróty, więc dalej nadpisywało mi zmienną weapon, wszystko naprawione, wystarczyło dodać kilka linijek kodu 😁😁

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

W 2.3 są referencje i nawet ktoś zgłosił z tym buga, że jak nazwa zmiennej jest argumentem funkcji, to się dzieją przez to jaja

 

function test(a) {
  global.c = -1;
  show_debug_message(a);
}

 
global.c = 5
test(global.c); // zwraca... -1, oczywiście to naprawią do premiery

 

Także ostrzegam, że to co mówiłem wkrótce nie będzie do końca prawdą ;)

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się tutaj.

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×