←  Pytania dotyczące pluginów

AMXX.pl: Support AMX Mod X i SourceMod

»

Pytanie dotyczące sklepu

  • +
  • -
NAVIK - zdjęcie NAVIK 20.10.2016

Witaj jak stworzyć kupno modelu w sklepie . Piszę tu poniewaz nie mogę znaleźć pomocy w dokumentacji

mam następujący kod 

		case 0:
		{
			if(kasa >= 10)
			{
				cod_set_user_coins(id, kasa-10);
				cs_set_user_model( index, "v_blackwhite.mdl");
				client_print(id, print_chat, "[COD:MW] Kupiles Skina!");
			}
			else
				client_print(id, print_chat, "[COD:MW] Zapomnij, masz za malo hajsu!");
		}

Lecz ta funkcja mi nie działa jaka funkcja odpwieda za zmiane modela broni? 

Odpowiedz

  • +
  • -
NEQU# - zdjęcie NEQU# 20.10.2016

Nie jestem w tym dobry, ale zakładam że musisz stworzyć funkcję bool, np.
 
pod includami dodaj
 
new bool:kupil_skina[33] 
 
		case 0:
		{
			if(kasa >= 10)
			{
				cod_set_user_coins(id, kasa-10);
				cs_set_user_model( index, "v_blackwhite.mdl");
				client_print(id, print_chat, "[COD:MW] Kupiles Skina!");
			}
			else
				client_print(id, print_chat, "[COD:MW] Zapomnij, masz za malo hajsu!");
		}

zamień na

		case 0:
		{
			if(kasa >= 10 && !kupil_skina[id])
			{
				cod_set_user_coins(id, kasa-10);
				kupil_skina[id] = true
				podmianaskina(id)
				client_print(id, print_chat, "[COD:MW] Kupiles Skina!");
			}
			else
				client_print(id, print_chat, "[COD:MW] Zapomnij, masz za malo hajsu!");
		}

i gdzieś na dole dodaj

public podmianaskina(id)
{
	if(kupil_skina[id])
	{
	cs_set_user_model( index, "v_blackwhite.mdl");
	}
}

Nie wiem czy zadziała, ale może chociaż pomoże Ci to rozwiązać twój problem.

 


Użytkownik NEQU# edytował ten post 20.10.2016 14:04
Odpowiedz

  • +
  • -
NAVIK - zdjęcie NAVIK 20.10.2016

 

Nie jestem w tym dobry, ale zakładam że musisz stworzyć funkcję bool, np.
 
pod includami dodaj
 
new bool:kupil_skina[33] 
 
		case 0:
		{
			if(kasa >= 10)
			{
				cod_set_user_coins(id, kasa-10);
				cs_set_user_model( index, "v_blackwhite.mdl");
				client_print(id, print_chat, "[COD:MW] Kupiles Skina!");
			}
			else
				client_print(id, print_chat, "[COD:MW] Zapomnij, masz za malo hajsu!");
		}

zamień na

		case 0:
		{
			if(kasa >= 10 && !kupil_skina[id])
			{
				cod_set_user_coins(id, kasa-10);
				kupil_skina[id] = true
				podmianaskina(id)
				client_print(id, print_chat, "[COD:MW] Kupiles Skina!");
			}
			else
				client_print(id, print_chat, "[COD:MW] Zapomnij, masz za malo hajsu!");
		}

i gdzieś na dole dodaj

public podmianaskina(id)
{
	if(kupil_skina[id])
	{
	cs_set_user_model( index, "v_blackwhite.mdl");
	}
}

Nie wiem czy zadziała, ale może chociaż pomoże Ci to rozwiązać twój problem.

 

Niestety nie trybi 

Odpowiedz

  • +
  • -
RomanHardcor - zdjęcie RomanHardcor 20.10.2016

Ty chcesz zmienić model broni czy postaci?

Bo jeśli postaci to natyw dobry ale źle użyty.

Np jeśli model postaci ma nazwę model321 to musi on być umieszczony w /models/player/model321/model321.mdl 

Ale używamy to wtedy już tak cs_set_user_model(id, "model321"); ponieważ już jakby to powiedzieć... Samo ustala ścieżkę od /models/player/nazwamodelu/nazwamodelu.mdl

I nie piszemy w tym natywie końcówki .mdl

 

Natomiast jeśli mówimy o modelu broni robimy to np ja sobie tak zrobiłem w vipie.

Ten kod umieściłem sobie na samej górze a niżej wytłumaczę Ci jak poprawnie zrobić by zmieniało.

Oczywiście możesz sobie ścieżkę od razu do kodu wprowadzić ;P

new const MDL_P_LOM[]  = "models/vip/p_lom.mdl";
new const MDL_V_LOM[]  = "models/vip/v_lom.mdl";
entity_set_string(id, EV_SZ_viewmodel, MDL_V_LOM);   // Odpowiada za zmiane modelu widzianego z 1 osoby
entity_set_string(id, EV_SZ_weaponmodel, MDL_P_LOM); // Odpowiada za zmiane modelu widzianego z 3 osoby

Niby mógłbyś umieścić owy kod w swoim sklepie ale nie do końca będzie działać bo jeśli ktoś zmieni broń i z powrotem na tą broń gdzie ma być zmieniony model to będzie podstawowy model ustawiony.

A więc robimy tak, dopisujesz ten kod w funkcji plugin_init

register_event("CurWeapon", "event_modele", "be", "1=1") //Ten event wychwytuje moment zmiany broni

I tworzysz sobie funkcje event_modele może się u Ciebie nazywać inaczej to tylko przykład.

Załóżmy że mam na górze stworzoną zmienną stałą czyli coś takiego.

new const MDL_P_M4A1[]  = "models/Blantever/p_m4.mdl";
new const MDL_V_M4A1[]  = "models/Blantever/v_m4.mdl";

A w funkcji event_modele robimy coś takiego.

public event_modele(id)
{
	if(get_user_weapon(id) == CSW_M4A1 && ma_m4[id])
	{
        entity_set_string(id, EV_SZ_viewmodel, MDL_V_LOM);
        entity_set_string(id, EV_SZ_weaponmodel, MDL_P_LOM);
	}
}

Ten warunek oznacza, że wykona się funkcja niżej jeśli ma określoną broń i zmienna jest ustawiona na true a więc na górze pod bibliotekami dodajemy także zmienną.

new bool: ma_m4[33];

Oczywiście możesz sobie zmienić model innej broni, tutaj masz nazwy broni do warunku get_user_weapon oczywiście chodzi o te z przedrostkiem CSW_ czyli w kolumnie "name".

https://amxx.pl/topi...ive-item-speed/

 

Powodzenia, starałem się wytłumaczyć najlepiej jak umiem ;P

 

//EDIT

A i zapomniałem o najważniejszym, w case dajesz taki kod np jeśli zmienna nazywa się ma_m4.

ma_m4[id] = true;

Przykładowe użycie w pluginie zmiany modelu, np tutaj jest, że sprawdza na początku rundy kto ma 6 fragów lub więcej i ustawia wtedy zmienną na true czyli na 1.

Załączony plik  przyklad2.sma   742 bajtów   27 Ilość pobrań


Użytkownik RomanHardcor edytował ten post 20.10.2016 15:36
Odpowiedz

  • +
  • -
NAVIK - zdjęcie NAVIK 20.10.2016

Nakierowałeś mnie aczkolwiek stoje znów mam taki kod 

#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <cstrike>
#include <engine>

new gSoundShop[] = "cod/witajsklep.wav";

new bool:ma_m4[33];
new const MDL_P_M4A1[]  = "models/Blantever/p_m4.mdl";
new const MDL_V_M4A1[]  = "models/Blantever/v_m4.mdl";

native cod_set_user_coins(id, wartosc);
native cod_get_user_coins(id);

public plugin_init()
{
	register_clcmd("say /sklep", "cmd_menu");
	register_clcmd("say sklep", "cmd_menu");
	register_clcmd("say /shop", "cmd_menu");
	register_plugin("model", "1.0", "RomanHardcor");
	register_event("CurWeapon", "event_modele", "be", "1=1")
}

public cmd_menu(id)
{
	client_cmd(id,"spk %s",gSoundShop);
	if(is_user_alive(id))
	{
		menu_l1(id);
	}
	else
	{
		ColorChat(id, RED, "[INFO] Aby uzywac /sklepu musisz byc zywy!");
	}
	return PLUGIN_HANDLED;
}

stock menu_l1(id)
{
	new menu = menu_create("SKLEP By NiXeL", "menu_m4a1a");
	
	menu_additem(menu, "\r[M4A1] \ySkin do broni");//1
	menu_display(id, menu);
	client_cmd(id, "spk MUZYKA");
	
}

public menu_m4a1a(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return;
	}
	switch(item)
	{
		case 0:
		{
			if(is_user_alive(id))
				menu_m4a1(id);
		}
	}
	menu_destroy(menu);
}

stock menu_m4a1(id)
{
	new menu = menu_create("[M4A1] Skin do broni:", "menu_l2q_a");
	menu_additem(menu, "DragonKing \yKoszt: \r[10m]");//1
	menu_display(id, menu);
}

public event_modele(id)
{
	if(!is_user_alive(id) || !is_user_connected(id))
		return PLUGIN_CONTINUE;

	new kasa = cod_get_user_coins(id)
	case 0:
		{
		if(kasa >= 15)
		{
		cod_set_user_coins(id, kasa-15);
		if(get_user_weapon(id) == CSW_M4A1 && ma_m4[id])
		{
        entity_set_string(id, EV_SZ_viewmodel, MDL_V_M4A1);
        entity_set_string(id, EV_SZ_weaponmodel, MDL_P_M4A1);
		}
		client_print(id, print_chat, "[COD:MW] Kupiles skin!");
		}
		else
			client_print(id, print_chat, "[COD:MW] Zapomnij, masz za malo monet!");
}

błąd przy kompilacji przy linijce public event_modele(id)

Odpowiedz

  • +
  • -
RomanHardcor - zdjęcie RomanHardcor 20.10.2016

Powiem Ci szczerze, że nie zbyt ogarniam ten kod bo pełno stocków ale zaraz Ci zrobię taki przykładowy sklep i zaraz edytuję posta i Ci pokaże jak to ma wyglądać.

A coś Ty odwalił w event_modele to ja nie wiem :D

Miałeś dać w case menu z modelami  a kod event_modele nie ruszać dosłownie chyba że po to by zmienić broń gdzie ma się model zmienić.

Więc tak jak mówię, lookaj tutaj bo edytuje ten post ;P

Odpowiedz

  • +
  • -
RomanHardcor - zdjęcie RomanHardcor 20.10.2016

Przepraszam za post pod postem lecz nie mogę już edytować poprzedniego choć dużo czasu nie minęło.

Sprawdź to, pisane na szybko więc mogą się wkraść drobne błędy ale myślę że ogarniesz o co chodzi bo trochę źle żeś zrobił według tego mojego "poradnika".

Jak nie będziesz ogarniał to pisz a ja tymczasem idę do sklepu to odczytam jak wrócę ;)

Załączony plik  przyklad2.sma   2,09 KB   20 Ilość pobrań

Odpowiedz