←  Problemy z pluginami

AMXX.pl: Support AMX Mod X i SourceMod

»

[ROZWIĄZANE] Nie podmienia modelu broni.

  • +
  • -
Black004 - zdjęcie Black004 03.03.2019

Tak jak w temacie. Jak to naprawić?

 

 

Dodam że w plugin_init()

 

Dodałem opcje:

Spoiler

Użytkownik Black004 edytował ten post 03.03.2019 10:42
Odpowiedz

  • +
  • -
Black004 - zdjęcie Black004 04.03.2019

@Ref
Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 04.03.2019

Co naprawić? Dajesz nam 0 info, a oczekujesz, że Ci ktoś pomoże...

Odpowiedz

  • +
  • -
Black004 - zdjęcie Black004 06.03.2019

Chciałbym zrobić sklep skinów za pieniądze, ale nie podmienia tych skinów. Mianowicie po wpisaniu komendy /1234 Otwiera się "public wyborskinKNIVE(id)"

 

Po wybraniu skina z menu on się nie podmienia z tym domyślnym skinem noża w cs.

 

" if(!sprawdz(id, 5)) return PLUGIN_HANDLED; " To sprawdza czy gracz ma określona ilość monet za skina.

Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 06.03.2019

new weapon = read_data(2);

read_data mozesz uzywac w eventach.

handler od menu to nie jest event..

 

zeby pobrac bron gracza uzyj: https://amxx.pl/doku...get-user-weapon

Odpowiedz

  • +
  • -
Black004 - zdjęcie Black004 06.03.2019

Teraz mam problem taki. Kiedy chce wybrać Bayonet lore. Nie podmienia mi tego skina, a karambita już tak. I do tego kiedy mam karambita i jak zmienię broń np. na glocka i znowu wezme kose to ten skin znika.

 

http://wklejto.pl/719607

Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 06.03.2019

Kod dawaj jako załącznik, bądź wstawke w odpowiednich tagach w poście (jesli kod nie jest przydługawy)

 

Co do tematu.

Musisz sobie zrobić zmienną, która Ci trzyma info o tym jaki skin ma gracz. I wtedy w curweapon robisz switcha z read_data i podmieniasz model. Ewentualnie możesz skorzystać z lepszej metody, którą wstawiam do tego posta. Mój kod podmienia modele, ale ideę powinieneś załapać.

#include <amxmodx>
#include <cstrike>
#include fakemeta
#include hamsandwich

#define m_pPlayer 41

public plugin_init()
{
	register_plugin("Modele", "1.0", "riviT")

	RegisterHam(Ham_Item_Deploy, "weapon_ak47", "fwHamItemDeployPost", 1)
	RegisterHam(Ham_Item_Deploy, "weapon_m4a1", "fwHamItemDeployPost", 1)
	RegisterHam(Ham_Item_Deploy, "weapon_awp", "fwHamItemDeployPost", 1)
}
 
public plugin_precache()
{
	precache_model("models/vip/v_ak47vip.mdl");
	precache_model("models/vip/v_m4a1vip2.mdl");
	precache_model("models/vip/v_awp.mdl");
}
 
public fwHamItemDeployPost(ent)
{
	static id;
	id = get_pdata_cbase(ent, m_pPlayer, 4);
	
	if(!is_user_alive(id)) return;
	
	if(get_user_flags(id) & ADMIN_LEVEL_H){ //vip
		switch(cs_get_weapon_id(ent))
		{
			case CSW_M4A1: set_pev(id, pev_viewmodel2, "models/vip/v_m4a1vip2.mdl")
			case CSW_AK47: set_pev(id, pev_viewmodel2, "models/vip/v_ak47vip.mdl")
			case CSW_AWP: set_pev(id, pev_viewmodel2, "models/vip/v_awp.mdl")
		}
	}else{ //zwykly gracz
		switch(cs_get_weapon_id(ent))
		{
			case CSW_M4A1: set_pev(id, pev_viewmodel2, "models/vip/v_m4a1vip2.mdl")
			case CSW_AK47: set_pev(id, pev_viewmodel2, "models/vip/v_ak47vip.mdl")
			case CSW_AWP: set_pev(id, pev_viewmodel2, "models/vip/v_awp.mdl")
		}
	}

}
	

Odpowiedz

  • +
  • -
Black004 - zdjęcie Black004 07.03.2019

Coś takiego? 

 

Spoiler
W plugin init dodałem 
Spoiler
 
I zrobilem zmienną:
Spoiler
 
Pewnie coś źle zrobiłem, ponieważ nie działa w ogóle dawania skina :/
Odpowiedz

  • +
  • -
Black004 - zdjęcie Black004 08.03.2019

@Ref
Odpowiedz

  • +
  • -
Black004 - zdjęcie Black004 09.03.2019

@Ref...

Odpowiedz

  • +
  • -
Black004 - zdjęcie Black004 09.03.2019

Dobra dałem sobie rade z modelami... Mógłby ktoś powiedzieć jak ustawić żeby gracz płacił za ten model chodzi mi tylko gdzie to wstawić:

if(!sprawdz(id, <tutaj ma być cena za skin>)) return PLUGIN_HANDLED;

Próbowałem zrobić to tak:

new const noz_cena[][32]=
{
	"0",
	"1",
	"1"
	
};

I tu by były ceny za noże i poźniej zrobić tak:

	for(new i = 0; i<sizeof noz_cena; i++){
	if(!sprawdz(id, noz_cena[i])) return PLUGIN_HANDLED;

Ale jest błąd podczas kompilacji właśnie w tym:

 

 

Argument type mismatch (argument 2)

 


Użytkownik Black004 edytował ten post 09.03.2019 23:51
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 10.03.2019

Pokaż tą funkcje Sprawdz
Odpowiedz

  • +
  • -
Black004 - zdjęcie Black004 10.03.2019

Pokaż tą funkcje Sprawdz

public sprawdz(id,jbpack){
	if (ilosc_jbpack[id] >= jbpack){
		ilosc_jbpack[id] -= jbpack
		return true;
	}
	if(ilosc_jbpack[id] < jbpack)
	{
		ColorChat(id, RED, "NIE MASZ TYLE DOLARÓW ABY TO KUPIĆ!");
		return false;
	}
	return PLUGIN_CONTINUE;
}
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 10.03.2019

Parametry to liczby a Ty próbujesz stringa/tablice ( ciąg znaków )
Skoro ceny to po prostu jakoś wartość zamien stringi na liczby tzn.

new const noz_cena[]=
{
	0,
	1,
	1
	
};
Odpowiedz

  • +
  • -
Black004 - zdjęcie Black004 10.03.2019

Teraz się powielają opcje z menu tak:

 

a3b448edf7343e0edbe27d279c307cf5_orig.jp

 

I gdzie powinna być cena jest jak widać "T$models/v_knife.mdl"

 

 

Kod:

public SkinKNIVE(id)
{ 
    {       
	new skin[64]
	new menu = menu_create("\wWybierz nóż","handle_menuKNIVE") 
	for(new i = 0; i<sizeof noz_skin; i++)
		for(new i = 0; i<sizeof noz_cena; i++)
	{
    formatex(skin, charsmax(skin), "%s%s  \w|	Cena: \w%s", (zmiana1[id]==i) ? "\r":"\y", noz_skin[i], noz_cena[i]);
    menu_additem(menu, skin);
    }
	menu_setprop(menu,MPROP_EXIT,MEXIT_ALL) 
	menu_display(id,menu,0)
	        return PLUGIN_HANDLED;
    }
}
 
public handle_menuKNIVE(id, menu, item){ 
	if (item == MENU_EXIT){ 
	menu_destroy(menu); 
	return PLUGIN_HANDLED;
	}
	for(new i = 0; i<sizeof noz_cena; i++){
	if(!sprawdz(id, noz_cena[i])) return PLUGIN_HANDLED;
	}
	zmiana1[id] = item;
	menu_destroy(menu); 
	return PLUGIN_HANDLED; 
}

Użytkownik Black004 edytował ten post 10.03.2019 16:58
Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 10.03.2019

Cena: \w%s

->

Cena: \w%i

Bo cena nie jest juz stringiem a intem

Odpowiedz

  • +
  • -
Black004 - zdjęcie Black004 10.03.2019

Cena: \w%s

->

Cena: \w%i

Bo cena nie jest juz stringiem a intem

 

 

Dzięki, działa. Natomiast dalej powiela się menu chodzi mi o to że ciągle się wyświetla to samo co w poprzednim poście, ale ceny już działą

 

 

A powiesz jeszcze jak zrobić informacje pomyślnie kupiłeś <tutaj nazwa skina>, lub kiedy gracz już go miał to Pomyślnie założyłeś <nazwa skina>


Użytkownik Black004 edytował ten post 10.03.2019 17:47
Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 10.03.2019

masz dwie pętle, są zbedne, wystarczy jedna

	for(new i = 0; i<sizeof noz_skin; i++)
		for(new i = 0; i<sizeof noz_cena; i++)

->

	for(new i = 0; i<sizeof noz_skin; i++)

+poformatuj sobie ładnie kod, bo bolą oczy jak się patrzy na niego

Odpowiedz

  • +
  • -
Black004 - zdjęcie Black004 13.03.2019

masz dwie pętle, są zbedne, wystarczy jedna

	for(new i = 0; i<sizeof noz_skin; i++)
		for(new i = 0; i<sizeof noz_cena; i++)

->

	for(new i = 0; i<sizeof noz_skin; i++)

+poformatuj sobie ładnie kod, bo bolą oczy jak się patrzy na niego

 

Dzięki, działa.

 

Skapnąłem się teraz że podczas kupowania skina potrzeba tyle kasy ile jest w tym:

 

new const noz_cena[]=
{
	0,
	11,
	2
	
};

Czyli jak wybiorę obojętnie jaki chce skin do kosy to i tak potrzeba 0+11+2 i to będzie 13. Ale zabiera nam tyle ile wynosi cena skina jakiego wybierzemy, ale za to żeby go kupić potrzebujemy 13 powiedzmy na to dolarów. A jak nie mamy tych 13 dolarów to plugin nam go w ogóle nie da jak to naprawić? Dam tu kawałek kodu pewnie tu jest błąd.

	for(new i = 0; i<sizeof noz_cena; i++){
	if(!sprawdz(id, noz_cena[i])) 	return PLUGIN_HANDLED;

Jakby co zmienna która pobiera jaki skin wybraliśmy to zmiana1[id]

Odpowiedz

  • +
  • -
Toldi - zdjęcie Toldi 13.03.2019

Jeżeli to ten public po wybraniu skina to zamień na to:

public handle_menuKNIVE(id, menu, item)
{ 
	if (item == MENU_EXIT){ 
		menu_destroy(menu); 
		return PLUGIN_HANDLED;
	}
	
	if(!sprawdz(id, noz_cena[item])){
		client_print(id, print_chat, "Nie stac cie na tego skina.");
		return PLUGIN_HANDLED;
	}
	
	client_print(id, print_chat, "Kupiles skin: %s", noz_skin[item]);
	zmiana1[id] = item;
	menu_destroy(menu); 
	return PLUGIN_HANDLED; 
}

Powinno pokazać też nazwę wybranego/kupionego skina.

Odpowiedz