Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie
Dodatek

Klasy dostają bronie .

Dodatek

  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
12 odpowiedzi w tym temacie

#1 KariiO

    Super Hero

  • Power User

Reputacja: 396
Wszechpomocny

  • Postów:1 133
  • GG:
  • Imię:Korneliusz
  • Lokalizacja:Cieszyn
Offline

Napisano 30.12.2010 02:55

Dodatek ma za zadanie dawać bronie...oczywiście jakie chcemy i ile chcemy , można dodać dwie bronie główne i owszem bd. się je dwie posiadało równocześnie...z większą ilością nie cudowałem :)

Ok więc zaczynamy szukając :
#include <csx>
Dodajemy pod:
#include <hamsandwich>

Pod tabelą expa diablo dajemy(przykład):

new class_weapons[9] = {
		(1<<CSW_KNIFE),							// NONE
		(1<<CSW_P90)|(1<<CSW_USP)|(1<<CSW_KNIFE),				// Mag
		(1<<CSW_XM1014)|(1<<CSW_DEAGLE)|(1<<CSW_KNIFE),		// Mnich
		(1<<CSW_MP5NAVY)|(1<<CSW_KNIFE),							// Paladyn
		(1<<CSW_USP)|(1<<CSW_KNIFE),			// Zabojca
		(1<<CSW_AWP)|(1<<CSW_KNIFE),							// Nekromanta
		(1<<CSW_AUG)|(1<<CSW_KNIFE),				// Barbarzynca
		(1<<CSW_DEAGLE)|(1<<CSW_KNIFE),						// Ninja
		(1<<CSW_M3)|(1<<CSW_KNIFE)		// Lowca
}


[9] - tu zmieniamy tylko dziewiątkę jeżeli mamy więcej lub mniej klas...zliczamy je a następnie wpisuje razem z klasą NONE.

Jeżeli chcemy bronie dla nowej klasy to zaczynamy w ten sposób że za ostatnim (1<<CSW_KNIFE) dajemy przecinek. Wygląda to tak:
new class_weapons[10] = {
		(1<<CSW_KNIFE),							// NONE
		(1<<CSW_P90)|(1<<CSW_USP)|(1<<CSW_KNIFE),				// Mag
		(1<<CSW_XM1014)|(1<<CSW_DEAGLE)|(1<<CSW_KNIFE),		// Mnich
		(1<<CSW_MP5NAVY)|(1<<CSW_KNIFE),							// Paladyn
		(1<<CSW_USP)|(1<<CSW_KNIFE),			// Zabojca
		(1<<CSW_AWP)|(1<<CSW_KNIFE),							// Nekromanta
		(1<<CSW_AUG)|(1<<CSW_KNIFE),				// Barbarzynca
		(1<<CSW_DEAGLE)|(1<<CSW_KNIFE),						// Ninja
		(1<<CSW_M3)|(1<<CSW_KNIFE),		// Lowca
		(1<<CSW_GLOCK18)|(1<<CSW_KNIFE)			// TwojKlasa
}
W tym przypadku ostatnia klasa dostanie glocka...

Mam mniej klas co zrobić ? Bardzo podobnie sobie z tym radzimy , mianowicie za przedostatnim (1<<CSW_KNIFE) usuwamy przecnik przedostatnią linijkę całą kasujemy.Przykład:
new class_weapons[9] = {
		(1<<CSW_KNIFE),							// NONE
		(1<<CSW_P90)|(1<<CSW_USP)|(1<<CSW_KNIFE),				// Mag
		(1<<CSW_XM1014)|(1<<CSW_DEAGLE)|(1<<CSW_KNIFE),		// Mnich
		(1<<CSW_MP5NAVY)|(1<<CSW_KNIFE),							// Paladyn
		(1<<CSW_USP)|(1<<CSW_KNIFE),			// Zabojca
		(1<<CSW_AWP)|(1<<CSW_KNIFE),							// Nekromanta
		(1<<CSW_AUG)|(1<<CSW_KNIFE),				// Barbarzynca
		(1<<CSW_DEAGLE)|(1<<CSW_KNIFE),						// Ninja
		(1<<CSW_M3)|(1<<CSW_KNIFE)		// Lowca
}
Jeżeli to już mamy dogodnie ustawione szukamy:
public freeze_begin()
{
	freeze_ended = false
}
I dodajemy pod tym:
stock ham_give_weapon(id,weapon[])
{
    if(!equal(weapon,"weapon_",7)) return 0;

    new wEnt = engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,weapon));
    if(!pev_valid(wEnt)) return 0;

    set_pev(wEnt,pev_spawnflags,SF_NORESPAWN);
    dllfunc(DLLFunc_Spawn,wEnt);
    
    if(!ExecuteHamB(Ham_AddPlayerItem,id,wEnt))
    {
        if(pev_valid(wEnt)) set_pev(wEnt,pev_flags,pev(wEnt,pev_flags) | FL_KILLME);
        return 0;
    }

    ExecuteHamB(Ham_Item_AttachToPlayer,wEnt,id)
    return 1;
}
 
stock ham_strip_weapon(id,weapon[])
{
    if(!equal(weapon,"weapon_",7)) return 0;

    new wId = get_weaponid(weapon);
    if(!wId) return 0;

    new wEnt;
    while((wEnt = engfunc(EngFunc_FindEntityByString,wEnt,"classname",weapon)) && pev(wEnt,pev_owner) != id) {}
    if(!wEnt) return 0;

    if(get_user_weapon(id) == wId) ExecuteHamB(Ham_Weapon_RetireWeapon,wEnt);

    if(!ExecuteHamB(Ham_RemovePlayerItem,id,wEnt)) return 0;
    ExecuteHamB(Ham_Item_Kill,wEnt);

    set_pev(id,pev_weapons,pev(id,pev_weapons) & ~(1<<wId));

    return 1;
}

new weapon_name[31][]={"none","weapon_p228","weapon_shield","weapon_scout",
"weapon_hegrenade","weapon_xm1014","weapon_c4","weapon_mac10","weapon_aug",
"weapon_smokegrenade","weapon_elite","weapon_fiveseven","weapon_ump45",
"weapon_sg550","weapon_galil","weapon_famas","weapon_usp","weapon_glock18",
"weapon_awp","weapon_mp5navy","weapon_m249","weapon_m3","weapon_m4a1",
"weapon_tmp","weapon_g3sg1","weapon_flashbang","weapon_deagle","weapon_sg552",
"weapon_ak47","weapon_knife","weapon_p90"}

public dawanie_i_branie_broni(i)
{
	new weapons[32], num
	get_user_weapons(i, weapons, num)
	
	new weapon;
	for( new n = 0; n < num; n++ )
	{
		weapon = weapons[n]
		
		if( !(class_weapons[player_class[i]] & weapon) && weapon!=CSW_C4)
		{
			ham_strip_weapon(i,weapon_name[weapon])
		}
	}
	for( new n=1;n<31;n++)
	{
		if(class_weapons[player_class[i]] & (1<<n))
		{
			ham_give_weapon(i,weapon_name[n])
		}
	}
	
}

W public RoundStart() szukamy:
invisible_cast[i]=0

Dodajemy pod tym:
dawanie_i_branie_broni(i)

W select_class_menu znajdujemy:
give_knife(id)

I pod tym dodajemy:
if(is_user_alive(id)) dawanie_i_branie_broni(id)

To by było na tyle ^^ Myślę że komuś się przyda :)
  • +
  • -
  • 2

#2 GoldeN

    Wszechmogący

  • Zbanowany

Reputacja: 69
Pomocny

  • Postów:676
  • Imię:Kamil
  • Lokalizacja:DG
Offline

Napisano 30.12.2010 03:11

Hmm... Za dużo pisanie tym Twoim sposobem. ;]

Po pierwsze po jaką cholerę Ninji dajesz Deagle'a? ;d
Po drugie, patrz na mój sposób:

Na koniec:

public daj_bronie(id)
{
switch(player_class[id])
{
case Mag: give_item(id, "weapon_p90");
case Mnich: give_item(id, "weapon_xm1014");
case Paladyn: give_item(id, "weapon_mp5navy");
case Zabojca: give_item(id, "weapon_usp");
case Nekromanta: give_item(id, "weapon_awp");
case Barbarzynca: give_item(id, "weapon_aug");
case Ninja: give_item(id, "weapon_knife");
case Lowca: give_item(id, "weapon_m3");
}
}


W select_class_menu znajdujemy:

	give_knife(id)


I pod tym dodajemy:

daj_bronie(id);


W RoundStart() za pierwszą pętlą:

daj_bronie(i);



Ofc. Jeżeli ktoś chce więcej broni dla jednej klasy to musi sobie to objąć w osobne klamry. ;)

Ewentualnie zamiast robić nową funkcje "daj_bronie" zawartość tego można wrzucić do RoundStart().

Użytkownik GoldeNx3 edytował ten post 30.12.2010 03:18


#3 KariiO

    Super Hero

  • Autor tematu
  • Power User

Reputacja: 396
Wszechpomocny

  • Postów:1 133
  • GG:
  • Imię:Korneliusz
  • Lokalizacja:Cieszyn
Offline

Napisano 31.12.2010 14:52

Pisałem że to był tylko przykład ^^
Mój sposób też usuwa bronie z podłogi ;]
  • +
  • -
  • 0

#4 Kaleka

    Wszechwidzący

  • Użytkownik

Reputacja: 108
Zaawansowany

  • Postów:237
  • GG:
  • Imię:Eryk
  • Lokalizacja:Łódź
Offline

Napisano 08.01.2011 14:30

Łatwiejszy sposób owiele:

W public roundstart znajdz
		if(player_class[i] == Nekromanta) g_haskit[i]=1


Nad tym dodaj

if (player_class[i] == Nazwa_Klasy){
fm_give_item(i, "weapon_m4a1")
give_item(i,"ammo_556nato")
give_item(i,"ammo_556nato")
give_item(i,"ammo_556nato")
}

  • +
  • -
  • 1

reklama.png

pluginyCOD.pl  Perki i klasy oraz dodatki do codmoda!

 


#5 GoldeN

    Wszechmogący

  • Zbanowany

Reputacja: 69
Pomocny

  • Postów:676
  • Imię:Kamil
  • Lokalizacja:DG
Offline

Napisano 08.01.2011 16:01

Łatwiejszy sposób owiele:

W public roundstart znajdz

		if(player_class[i] == Nekromanta) g_haskit[i]=1


Nad tym dodaj

if (player_class[i] == Nazwa_Klasy){
fm_give_item(i, "weapon_m4a1")
give_item(i,"ammo_556nato")
give_item(i,"ammo_556nato")
give_item(i,"ammo_556nato")
}



Łtawiejszy sposób Twego łatwiejszego kodu: ;F

		if(player_class[i] == Nekromanta) g_haskit[i]=1




if (player_class[i] == Nazwa_Klasy){
fm_give_item(i, "weapon_m4a1")
cs_set_user_bpammo(id, CSW_M4A1, 90)
}


Po drugie nasze funkcje uwzględniają wszystkie klasy, a Twoim sposobem trzeba się pierdzielić i za każdym razem dodawać.

#6 sharkowy

    Lokalna anomalia sejsmiczna o nieustalonej genezie.

  • Przyjaciel

Reputacja: 113
Zaawansowany

  • Postów:1 981
Offline

Napisano 09.01.2011 21:28

GoldeN, zrobiłem Twoim sposobem i podczas kompilacji wyskoczył następujący błąd:

syntax error in the expression, or invail function call


O co kaman ?
  • +
  • -
  • 0

#7 KariiO

    Super Hero

  • Autor tematu
  • Power User

Reputacja: 396
Wszechpomocny

  • Postów:1 133
  • GG:
  • Imię:Korneliusz
  • Lokalizacja:Cieszyn
Offline

Napisano 09.01.2011 23:05

Spróbuj to:
cs_set_user_bpammo(id, CSW_M4A1, 90)
Na to:
cs_set_user_bpammo(i, CSW_M4A1, 90)

  • +
  • -
  • 1

#8 GoldeN

    Wszechmogący

  • Zbanowany

Reputacja: 69
Pomocny

  • Postów:676
  • Imię:Kamil
  • Lokalizacja:DG
Offline

Napisano 09.01.2011 23:21

GoldeN, zrobiłem Twoim sposobem i podczas kompilacji wyskoczył następujący błąd:

syntax error in the expression, or invail function call


O co kaman ?


Nie wiem, sprawdziłem, mnie wszystko działa.

#9 strikepremium

    Zaawansowany

  • Zbanowany

Reputacja: 2
Nowy

  • Postów:101
  • Imię:czak
  • Lokalizacja:swww
Offline

Napisano 17.01.2011 19:51

GoldeN działa !

#10 cesik

    Zaawansowany

  • Zbanowany

Reputacja: 0
Nowy

  • Postów:129
  • Imię:Dawid
  • Lokalizacja:KIELCE
Offline

Napisano 18.02.2011 04:25

public RoundStart(){
	for (new i=0; i < 33; i++){
if (player_class[i] == Mag){
fm_give_item(i, "weapon_m4a1")
give_item(i,"ammo_556nato")
give_item(i,"ammo_556nato")
give_item(i,"ammo_556nato")
}


	if(player_class[i] == Nekromanta)
        odrodzenie[i] = 3
else
		odrodzenie[i] = 0
	naswietlony[i] = 0
		used_item[i] = false
		DemageTake1[i]=1
		count_jumps(i)
		give_knife(i)
		JumpsLeft[i]=JumpsMax[i]
		RemoveFlag(i,Flag_Rot)

		if(player_class[i] == Nekromanta) g_haskit[i]=1
		else g_haskit[i]=0
		
		golden_bulet[i]=0
		
		invisible_cast[i]=0
		
		ultra_armor[i]=0
		
		num_shild[i]=5+floatround(player_intelligence[i]/10.0,floatround_floor)

		
		set_renderchange(i)
		if(is_user_connected(i)&&player_item_id[i]==66)
		{
			changeskin(i,0) 
		}
	}
		
	kill_all_entity("throwing_knife")
	
	Bot_Setup()		
	ghost_check = false
	check_class()
	use_addtofullpack = false
}



OK poradzilem sobie dziala
tylko moglby mi ktos powiedziec czy odradzanie bedzie dzialac poprawnie ?

Użytkownik cesik edytował ten post 18.02.2011 07:51


#11 FreZZy

    Guru

  • Zbanowany

Reputacja: 210
Profesjonalista

  • Postów:716
  • GG:
  • Imię:Paweł
  • Lokalizacja:Wwa
Offline

Napisano 18.02.2011 13:38

tak

#12 dasiek

    Nie wiem, nie znam się, nie orientuję się, zarobiony jestem.

  • Junior Admin

Reputacja: 2 077
Godlike

  • Postów:5 706
  • Imię:Adaś
  • Lokalizacja:No teraz trochę dalej od WWy
Offline

Napisano 18.02.2011 15:04

miałem podobny pomysł bo jest dobry jest ta równowaga ^^
  • +
  • -
  • 0

#13 Karmi1

    Pomocny

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:61
  • Lokalizacja:Gdańsk
Offline

Napisano 04.04.2012 18:19

To ja mam pytanko. Jak sposobem Kariio dawać też amunicję do broni?
  • +
  • -
  • 0





Również z jednym lub większą ilością słów kluczowych: Dodatek

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych