←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Blokada kupna bronii

  • +
  • -
Maruda515 - zdjęcie Maruda515 24.03.2013

Witam! Proszę o pomoc. Nie wiem jak zastosować tutaj opcji "if". Ma to wyglądać tak: ktoś na np usp i w sklepie chcę kupić usp. Na czacie pokazuję się wiadomość " Nie możesz kupić usp ponieważ już posiadasz ta bron". Pomożecie?

Oto kod:


#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cstrike>

public plugin_init()
{
register_plugin("Sklep", "0.1", "Maruda")
register_clcmd("say /test", "cmd_test")
}
public cmd_test(id)
{
new menu = menu_create("Menu1", "menu1_handle")
menu_additem(menu, "Pistolety")
menu_additem(menu, "Shotguny")
menu_additem(menu, "Pistolety Maszynowe")
menu_additem(menu, "Strzelby")
menu_display(id, menu)
}
public menu1_handle(id, menu, item)
{
switch(item)
{
case 0: menu2(id)

case 1: menu3 (id)

case 2: menu4 (id)

case 3: menu5 (id)
}
}
public menu2(id)
{
new menu = menu_create("Pistolety", "menu2_handle")
menu_additem(menu, "Glock")
menu_additem(menu, "USP")
menu_additem(menu, "P228")
menu_additem(menu, "Deagle")
menu_additem(menu, "Fiveseven")
menu_additem(menu, "Elite")
menu_display(id, menu)
}
public menu2_handle(id, menu, item)
{
switch(item)
{
case 0:{
give_item(id, "weapon_glock18")
give_item(id,"ammo_9mm")
give_item(id,"ammo_9mm")
give_item(id,"ammo_9mm")
give_item(id,"ammo_9mm")
give_item(id,"ammo_9mm")
give_item(id,"ammo_9mm")
client_cmd(id, "slot1" );
client_cmd(id, "drop");
}
case 1:{
give_item(id, "weapon_usp")
give_item(id,"ammo_45acp")
give_item(id,"ammo_45acp")
give_item(id,"ammo_45acp")
client_cmd(id, "slot1" );
client_cmd(id, "drop");
}
case 2:{
give_item(id, "weapon_p228")
give_item(id,"ammo_357sig")
give_item(id,"ammo_357sig")
give_item(id,"ammo_357sig")
client_cmd(id, "slot1" );
client_cmd(id, "drop");
}
case 3:{
give_item(id, "weapon_deagle")
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")
client_cmd(id, "slot1" );
client_cmd(id, "drop");
}
case 4:{
give_item(id, "weapon_fiveseven")
give_item(id,"ammo_57mm")
give_item(id,"ammo_57mm")
give_item(id,"ammo_57mm")
give_item(id,"ammo_57mm")
give_item(id,"ammo_57mm")
client_cmd(id, "slot1" );
client_cmd(id, "drop");
}
case 5:{
give_item(id, "weapon_elite")
give_item(id,"ammo_9mm")
give_item(id,"ammo_9mm")
give_item(id,"ammo_9mm")
give_item(id,"ammo_9mm")
give_item(id,"ammo_9mm")
client_cmd(id, "slot1" );
client_cmd(id, "drop");
}
}
}


public menu3 (id)
{
new menu = menu_create("Shotguny", "menu3_handle")
menu_additem(menu, "XM1014")
menu_additem(menu, "M3")
menu_display(id,menu)
}
public menu3_handle(id, menu, item)
{
switch(item)
{
case 0:{
give_item(id,"weapon_xm1014")
give_item(id, "ammo_buckshot")
give_item(id, "ammo_buckshot")
give_item(id, "ammo_buckshot")
client_cmd(id, "slot1" );
client_cmd(id, "drop");

}
case 1:{
give_item(id,"weapon_m3")
give_item(id, "ammo_buckshot")
give_item(id, "ammo_buckshot")
give_item(id, "ammo_buckshot")
client_cmd(id, "slot1" );
client_cmd(id, "drop");
}
}
}
public menu5 (id)
{
new menu = menu_create("Strzelby", "menu5_handle")
menu_additem(menu, "Gali")
menu_additem(menu, "Famas")
menu_additem(menu, "Scout")
menu_additem(menu, "M4A1")
menu_additem(menu, "AK47")
menu_additem(menu, "AUG")
menu_additem(menu, "SG550")
menu_additem(menu, "AWP")
menu_display(id,menu)
}
public menu5_handle(id, menu, item)
{
switch(item)
{
case 0:{
give_item(id, "weapon_galil")
give_item(id,"ammo_556nato")
give_item(id,"ammo_556nato")
give_item(id,"ammo_556nato")
give_item(id,"ammo_556nato")
give_item(id,"ammo_556nato")
client_cmd(id, "slot1" );
client_cmd(id, "drop");
}
case 1:{
give_item(id, "weapon_famas")
give_item(id,"ammo_556nato")
give_item(id,"ammo_556nato")
give_item(id,"ammo_556nato")
give_item(id,"ammo_556nato")
give_item(id,"ammo_556nato")
client_cmd(id, "slot1" );
client_cmd(id, "drop");
}
case 2:{
give_item(id, "weapon_scout")
give_item(id,"ammo_762nato")
give_item(id,"ammo_762nato")
give_item(id,"ammo_762nato")
give_item(id,"ammo_762nato")
give_item(id,"ammo_762nato")
give_item(id,"ammo_762nato")
client_cmd(id, "slot1" );
client_cmd(id, "drop");
}
case 3:{
give_item(id, "weapon_m4a1")
give_item(id,"ammo_556nato")
give_item(id,"ammo_556nato")
give_item(id,"ammo_556nato")
give_item(id,"ammo_556nato")
give_item(id,"ammo_556nato")
give_item(id,"ammo_556nato")
give_item(id,"ammo_556nato")
client_cmd(id, "slot1" );
client_cmd(id, "drop");
}
case 4:{
give_item(id, "weapon_ak47")
give_item(id,"ammo_762nato")
give_item(id,"ammo_762nato")
give_item(id,"ammo_762nato")
give_item(id,"ammo_762nato")
give_item(id,"ammo_762nato")
give_item(id,"ammo_762nato")
give_item(id,"ammo_762nato")
client_cmd(id, "slot1" );
client_cmd(id, "drop");
}
case 5:{
give_item(id, "weapon_aug")
give_item(id,"ammo_556nato")
give_item(id,"ammo_556nato")
give_item(id,"ammo_556nato")
give_item(id,"ammo_556nato")
give_item(id,"ammo_556nato")
give_item(id,"ammo_556nato")
client_cmd(id, "slot1" );
client_cmd(id, "drop");
}
case 6:{
give_item(id, "weapon_sg550")
give_item(id,"ammo_556nato")
give_item(id,"ammo_556nato")
give_item(id,"ammo_556nato")
give_item(id,"ammo_556nato")
give_item(id,"ammo_556nato")
give_item(id,"ammo_556nato")
client_cmd(id, "slot1" );
client_cmd(id, "drop");
}
case 7:{
give_item(id, "weapon_awp")
give_item(id,"ammo_338magnum")
give_item(id,"ammo_338magnum")
give_item(id,"ammo_338magnum")
give_item(id,"ammo_338magnum")
give_item(id,"ammo_338magnum")
give_item(id,"ammo_338magnum")
give_item(id,"ammo_338magnum")
client_cmd(id, "slot1" );
client_cmd(id, "drop");
}
}
}
public menu4(id)
{
new menu = menu_create("Pistolety Maszynowe", "menu4_handle")
menu_additem(menu, "TMP")
menu_additem(menu, "MP5")
menu_additem(menu, "UMP45")
menu_additem(menu, "P90")
menu_display(id, menu)
}
public menu4_handle(id, menu, item)
{
switch(item)
{
case 0:{
give_item(id, "weapon_tmp")
give_item(id,"ammo_9mm")
give_item(id,"ammo_9mm")
give_item(id,"ammo_9mm")
give_item(id,"ammo_9mm")
give_item(id,"ammo_9mm")
}
case 1:{
give_item(id, "weapon_mp5navy")
give_item(id,"ammo_9mm")
give_item(id,"ammo_9mm")
give_item(id,"ammo_9mm")
give_item(id,"ammo_9mm")
give_item(id,"ammo_9mm")
give_item(id,"ammo_9mm")
give_item(id,"ammo_9mm")
}
case 2:{
give_item(id, "weapon_ump45")
give_item(id,"ammo_45acp")
give_item(id,"ammo_45acp")
give_item(id,"ammo_45acp")
give_item(id,"ammo_45acp")
give_item(id,"ammo_45acp")
give_item(id,"ammo_45acp")
}
}
}
Odpowiedz

  • +
  • -
K!113r - zdjęcie K!113r 24.03.2013

if(get_user_weapon(id) == CSW_USP)
// kod
Odpowiedz

  • +
  • -
Maruda515 - zdjęcie Maruda515 24.03.2013

Dodałem to przed każdy "give_item" i teraz wyrzuca mi każdą broń.

Dam wycinek z kodu:

//kod
switch(item)
{
case 0:{
{
if(get_user_weapon(id) == CSW_GALIL)
ColorChat (id, RED, "Nie mozesz tego zakupic, poniewaz posiadasz ta bron")
}
give_item(id, "weapon_galil")
give_item(id,"ammo_556nato")
give_item(id,"ammo_556nato")
give_item(id,"ammo_556nato")
give_item(id,"ammo_556nato")
give_item(id,"ammo_556nato")
client_cmd(id, "slot1" );
client_cmd(id, "drop");
}
//kod
Odpowiedz

  • +
  • -
K!113r - zdjęcie K!113r 24.03.2013

Bo nie blokujesz zdarzenia ani nic, wykonuje się kod po kolei, leci warunek a potem dalszy kod, niezależnie od warunku, te give_item() i tak dalej daj w else przy tym if'ie (na co Ci dodanie broni, potem amunicji a na końcu wyrzucenie tej broni :) )
Odpowiedz

  • +
  • -
Maruda515 - zdjęcie Maruda515 25.03.2013

A mógłbyś napisać gdzie to dać i jak? Troszkę nie obeznany w tym jestem
Odpowiedz

  • +
  • -
JabLuszko - zdjęcie JabLuszko 25.03.2013

Zrobiłeś sieczkę z nawiasami kwadratowymi { } - to się w ogóle kompiluje? ;)
U Ciebie powinno to wyglądać na zasadzie:

switch(item)
{
				// CIACH //
				case 1:{
					   if(get_user_weapon(id) == CSW_USP) {
							  // Gracz posiada bron
							  ColorChat (id, RED, "Nie mozesz tego zakupic, poniewaz posiadasz ta bron")
					   } else {
							   // Gracz nie posiada tej broni, wiec mu ja damy
							   give_item(id, "weapon_usp")
							   give_item(id,"ammo_45acp")
							   give_item(id,"ammo_45acp")
							   give_item(id,"ammo_45acp")
							   client_cmd(id, "slot1" );
							   client_cmd(id, "drop");
					   }
                }
                // CIACH //
} // to jest nawias kwadratowy od switch(item)


Swoją drogą po co Ci tam drop, który pewnego dnia może przestać działać na steamach? Zainteresuj się
http://amxx.pl/dokum...ip_user_weapons
http://amxx.pl/dokum...ip_user_weapons
Użytkownik JabLuszko edytował ten post 25.03.2013 16:17
Odpowiedz

  • +
  • -
Maruda515 - zdjęcie Maruda515 25.03.2013

Dzięki za odpowiedź ;) Jednakże to działa w 50 %, jeśli mam usp i chcę kupić usp to nie daje, jednak jak nie mam nic to daje i wyrzuca od razu
Odpowiedz

  • +
  • -
K!113r - zdjęcie K!113r 25.03.2013

Bo za to odpowiada te twoje drop? wywal

client_cmd(id, "slot1" );
client_cmd(id, "drop");

z Twojego kodu i będzie git, zresztą napisałem Ci o tym opisując dokładnie gdzie masz wkleić poprzedni kod.
Odpowiedz

  • +
  • -
Maruda515 - zdjęcie Maruda515 25.03.2013

Ale wtedy będę miał kilka broni np usp i dgl, a ja chciałbym, żeby dawało 1 broń i wywalało inną.
Odpowiedz

  • +
  • -
K!113r - zdjęcie K!113r 25.03.2013

albo usuń mu jedną konkretną, albo usuń mu wszystkie, daj nóż(+ ewentualna bomba) i broń którą chcesz mu dać. Jak usunąć bronie/broń? Polecam zapuszczenie żurawia w bibliotekę fun jak i też wyszukać w dokumentacji funkcji z "strip" w nazwie.
Odpowiedz

  • +
  • -
Maruda515 - zdjęcie Maruda515 25.03.2013

Czyli nie idzie usunąć tylko jednej broni( podmienić)
Odpowiedz

  • +
  • -
JabLuszko - zdjęcie JabLuszko 25.03.2013

Da radę, ale ani to optymalne, ani przydatne.
Do stripów już Ci linkowałem, jak chcesz KONIECZNIE zabrać mu jedną broń to powinieneś użyć czegoś w okolicach http://amxx.pl/topic...ip-user-weapon/ lub http://darkgl.amxx.p...broni-graczowi/
Usuń mu wszystkie bronie na początku rundy, potem daj nóż i niech sobie kupuje co chce - to jest "poprawne" podejście do tematu.
Odpowiedz

  • +
  • -
GwynBleidD - zdjęcie GwynBleidD 25.03.2013

[ ] <--- to jest nawias KWADRATOWY
{ } <--- to jest nawias KLAMROWY!!!

I nie widzę tutaj "sieczki" w nawiasach klamrowych.
Odpowiedz