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

Problem z Invalid weapon id


Najlepsza odpowiedź Amaroq, 15.03.2016 21:58

#include <amxmodx>
#include <codmod>
#include <hamsandwich>
#include <cstrike>

#if !defined MAX_PLAYERS
	#define MAX_PLAYERS 32
#endif

#if !defined CSW_LAST_WEAPON
	#define CSW_LAST_WEAPON CSW_P90
#endif

new const nazwa[]   = "Szeregowy";
new const opis[]    = "Dostaje losowa bron co runde";
new const bronie    = 0;
new const zdrowie   = 5;
new const kondycja  = 5;
new const inteligencja = 0;
new const wytrzymalosc = 0;
 
new bool:ma_klase[MAX_PLAYERS+1];
new bron_gracza[MAX_PLAYERS+1];

new const g_iNotWeapons = (1<<2)|(1<<CSW_KNIFE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_HEGRENADE)|(1<<CSW_C4)
new const g_iDefaultWeapon[CsTeams] = {0, (1<<CSW_GLOCK18), (1<<CSW_USP), 0}

new const g_iMaxAmmo[CSW_LAST_WEAPON+1] = {0, 52, 0, 90, 1, 32, 1, 100, 90, 1, 120, 100, 100, 90, 90, 90, 100, 120, 30, 120, 200, 32, 90, 120, 90, 2, 35, 90, 90, 0, 100};
 
public plugin_init()
{
    register_plugin(nazwa, "1.0", "Webster");

    cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
    RegisterHam(Ham_Spawn, "player", "Resp", 1);
}
 
public cod_class_enabled(id)
{
    ma_klase[id] = true;
    Resp(id);
}
 
public cod_class_disabled(id)
{
    cod_take_weapon(id, bron_gracza[id]);
    bron_gracza[id] = 0;
    ma_klase[id] = false;
}
 
public Resp(id)
{
	if(ma_klase[id] && is_user_alive(id))
	{
		new iPlayerWeapon = bron_gracza[id];
		new CsTeams:csTeam = cs_get_user_team(id);
 
		if(iPlayerWeapon)
			cod_take_weapon(id, iPlayerWeapon);
		
		do
		{
			iPlayerWeapon = random_num(CSW_P228, CSW_LAST_WEAPON);
		} while(((1<<iPlayerWeapon) & g_iNotWeapons) || ((1<<iPlayerWeapon) & g_iDefaultWeapon[csTeam]))
 
		cod_give_weapon(id, iPlayerWeapon);
		cs_set_user_bpammo(id, iPlayerWeapon, g_iMaxAmmo[iPlayerWeapon]);
		
		bron_gracza[id] = iPlayerWeapon;
	}
	return HAM_IGNORED;
}
Przejdź do postu


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

#1 WeBsteR

    Wszechwidzący

  • Użytkownik

Reputacja: 57
Pomocny

  • Postów:297
  • Imię:dawid
  • Lokalizacja:Rzeszów
Offline

Napisano 15.03.2016 15:57

Witam serdecznie, ostatnio napisałem sobie klasę na codmod'a, która co rundę dostaje losowo broń. Klasa działa - tylko sypie errorami w logach.

.sma klasy:

#include <amxmodx>

#include <amxmisc>

#include <codmod>

#include <hamsandwich>

#include <cstrike>

#include <engine>



new const nazwa[]   = "Szeregowy";

new const opis[]    = "Dostaje losowa bron co runde";

new const bronie    = 0;

new const zdrowie   = 5;

new const kondycja  = 5;

new const inteligencja = 0;

new const wytrzymalosc = 0;



new bool:ma_klase[33];

new bron_gracza[33];



public plugin_init()

{

    register_plugin(nazwa, "1.0", "Webster");

    

    cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);

    RegisterHam(Ham_Spawn, "player", "Resp", 1);

}



public cod_class_enabled(id)

{

    ma_klase[id] = true;

    Resp(id);

}



public cod_class_disabled(id)

{

    cod_take_weapon(id, bron_gracza[id]);

    bron_gracza[id] = 0;

    ma_klase[id] = false;

}



public Resp(id)

{

    if(ma_klase[id])

    {

        if(!is_user_connected(id) || !is_user_alive(id))

            return PLUGIN_HANDLED;

        if(bron_gracza[id])

        {

            cod_take_weapon(id, bron_gracza[id]);

        }

        bron_gracza[id] = random_num(CSW_P228, CSW_P90);

        if(bron_gracza[id] == 2 || bron_gracza[id] == CSW_KNIFE || bron_gracza[id] == CSW_SMOKEGRENADE || bron_gracza[id] == CSW_FLASHBANG || bron_gracza[id] == CSW_HEGRENADE || bron_gracza[id] == CSW_VESTHELM || bron_gracza[id] == CSW_VEST || bron_gracza[id] == CSW_C4)

        {

            bron_gracza[id] = random_num(CSW_P228, CSW_P90);

        }

        cod_give_weapon(id, bron_gracza[id]);

        cs_set_user_bpammo(id, bron_gracza[id], 120); //linijka dajaca error logi

    }

    return PLUGIN_HANDLED;

}

A oto jakie error logi klasa sypie:

L 03/15/2016 - 14:12:46: Start of error session.

L 03/15/2016 - 14:12:46: Info (map "de_dust2_2x2") (file "addons/amxmodx/logs/error_20160315.log")

L 03/15/2016 - 14:12:46: [CSTRIKE] Invalid weapon id 29

L 03/15/2016 - 14:12:46: [AMXX] Displaying debug trace (plugin "codclass_szeregowy.amxx")

L 03/15/2016 - 14:12:46: [AMXX] Run time error 10: native error (native "cs_set_user_bpammo")

L 03/15/2016 - 14:12:46: [AMXX]    [0] codclass_szeregowy_3224612.sma::Resp (line 56)

czasami jeszcze do tych logów jest dodane:

[CSTRIKE] Invalid weapon id 2

i

[CSTRIKE] Invalid weapon id 0

Mniej więcej wiem na czym polega błąd, tylko nie mam już pomysłu jak go naprawić. Przy losowaniu broni co rundę ustawiam na "stało" 120 naboi amunicji w każdej broni, gdyż też nie wiedziałem jak dodać, aby każda broń posiadała "swój własny magazynek", lecz to nie jest mój największy problem. Problem leży w tym jak zrobić np. jeżeli wylosuje kose/granaty/c4/tarcze to aby losowało drugi raz i jak wtedy wylosuje "normalną" broń to wtedy dawało tą amunicje.

 

Jak usunąć powyższy błąd? Proszę o pomoc.

 

Pozdrawiam.


  • +
  • -
  • 0
Zabijaka Gryps to mój autorytet!

#2 vanillah

    nie wiem

  • Użytkownik

Reputacja: 125
Zaawansowany

  • Postów:324
  • GG:
  • Lokalizacja:Polska
Offline

Napisano 15.03.2016 16:15

możesz to wstawić w formacie pliku?


  • +
  • -
  • 0

Wykonam pluginy, paczki (amxx) kontakt GG: 32263742, Steam: https://steamcommuni...om/id/vankillah

Multi-Head.pl


#3 WeBsteR

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 57
Pomocny

  • Postów:297
  • Imię:dawid
  • Lokalizacja:Rzeszów
Offline

Napisano 15.03.2016 16:31

W formacje pliku:

 

Załączone pliki


  • +
  • -
  • 0
Zabijaka Gryps to mój autorytet!

#4 vanillah

    nie wiem

  • Użytkownik

Reputacja: 125
Zaawansowany

  • Postów:324
  • GG:
  • Lokalizacja:Polska
Offline

Napisano 15.03.2016 16:41

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

new const nazwa[]   = "Szeregowy";
new const opis[]    = "Dostaje losowa bron co runde";
new const bronie    = 0;
new const zdrowie   = 5;
new const kondycja  = 5;
new const inteligencja = 0;
new const wytrzymalosc = 0;

new bool:ma_klase[33];
new bron_gracza[33];

public plugin_init()
{
	register_plugin(nazwa, "1.0", "Webster");
	
	cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
	RegisterHam(Ham_Spawn, "player", "Resp", 1);
}

public cod_class_enabled(id)
{
	ma_klase[id] = true;
	Resp(id);
}

public cod_class_disabled(id)
{
	cod_take_weapon(id, bron_gracza[id]);
	bron_gracza[id] = 0;
	ma_klase[id] = false;
}

public Resp(id)
{
	if(ma_klase[id])
	{
		if(!is_user_connected(id) || !is_user_alive(id))
			return PLUGIN_HANDLED;
		if(bron_gracza[id])
		{
			cod_take_weapon(id, bron_gracza[id]);
		}
		bron_gracza[id] = random_num(CSW_P228, CSW_P90);
		if(bron_gracza[id] == 2 || bron_gracza[id] == CSW_KNIFE || bron_gracza[id] == CSW_SMOKEGRENADE || bron_gracza[id] == CSW_FLASHBANG || bron_gracza[id] == CSW_HEGRENADE || bron_gracza[id] == CSW_VESTHELM || bron_gracza[id] == CSW_VEST || bron_gracza[id] == CSW_C4)
		{
			bron_gracza[id] = random_num(CSW_P228, CSW_P90);
		}
		cod_give_weapon(id, bron_gracza[id]);

		if(bron_gracza[id] == CSW_P90)
			cs_set_user_bpammo(id, CSW_P90, 100);			
		
		if(bron_gracza[id] == CSW_P228)
			cs_set_user_bpammo(id, CSW_P228, 52);
		
	}
	return PLUGIN_HANDLED;
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par }
*/

  • +
  • -
  • 0

Wykonam pluginy, paczki (amxx) kontakt GG: 32263742, Steam: https://steamcommuni...om/id/vankillah

Multi-Head.pl


#5 WeBsteR

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 57
Pomocny

  • Postów:297
  • Imię:dawid
  • Lokalizacja:Rzeszów
Offline

Napisano 15.03.2016 16:49

I niby w czym to ma mi pomóc?

Ty zrobiłeś, że da mi ammo tylko jeżeli albo będzie to P90 albo P228, a co z pozostałymi brońmi?

Przecież zrobiłem losowanie od najmniejszego id, czyli CSW_P228 do największego id, czyli CSW_P90.


  • +
  • -
  • 0
Zabijaka Gryps to mój autorytet!

#6 vanillah

    nie wiem

  • Użytkownik

Reputacja: 125
Zaawansowany

  • Postów:324
  • GG:
  • Lokalizacja:Polska
Offline

Napisano 15.03.2016 18:06

masz rację nie wiedziałem, że to na takiej zasadzie polega, możesz dopisać resztę w taki sam sposób, powinno wyeliminować błąd 


  • +
  • -
  • 0

Wykonam pluginy, paczki (amxx) kontakt GG: 32263742, Steam: https://steamcommuni...om/id/vankillah

Multi-Head.pl


#7 WeBsteR

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 57
Pomocny

  • Postów:297
  • Imię:dawid
  • Lokalizacja:Rzeszów
Offline

Napisano 15.03.2016 18:25

Tak, mógłbym dla każdej broni osobno to ustawić, lecz chce wiedzieć czy w inny sposób można to naprawić?


  • +
  • -
  • 0
Zabijaka Gryps to mój autorytet!

#8 Amaroq

    AMXX Contributor

  • Użytkownik

Reputacja: 304
Wszechpomocny

  • Postów:380
  • GG:
  • Steam:steam
  • Imię:Karol
  • Lokalizacja:Łódź
Offline

Napisano 15.03.2016 21:58   Najlepsza odpowiedź

#include <amxmodx>
#include <codmod>
#include <hamsandwich>
#include <cstrike>

#if !defined MAX_PLAYERS
	#define MAX_PLAYERS 32
#endif

#if !defined CSW_LAST_WEAPON
	#define CSW_LAST_WEAPON CSW_P90
#endif

new const nazwa[]   = "Szeregowy";
new const opis[]    = "Dostaje losowa bron co runde";
new const bronie    = 0;
new const zdrowie   = 5;
new const kondycja  = 5;
new const inteligencja = 0;
new const wytrzymalosc = 0;
 
new bool:ma_klase[MAX_PLAYERS+1];
new bron_gracza[MAX_PLAYERS+1];

new const g_iNotWeapons = (1<<2)|(1<<CSW_KNIFE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_HEGRENADE)|(1<<CSW_C4)
new const g_iDefaultWeapon[CsTeams] = {0, (1<<CSW_GLOCK18), (1<<CSW_USP), 0}

new const g_iMaxAmmo[CSW_LAST_WEAPON+1] = {0, 52, 0, 90, 1, 32, 1, 100, 90, 1, 120, 100, 100, 90, 90, 90, 100, 120, 30, 120, 200, 32, 90, 120, 90, 2, 35, 90, 90, 0, 100};
 
public plugin_init()
{
    register_plugin(nazwa, "1.0", "Webster");

    cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
    RegisterHam(Ham_Spawn, "player", "Resp", 1);
}
 
public cod_class_enabled(id)
{
    ma_klase[id] = true;
    Resp(id);
}
 
public cod_class_disabled(id)
{
    cod_take_weapon(id, bron_gracza[id]);
    bron_gracza[id] = 0;
    ma_klase[id] = false;
}
 
public Resp(id)
{
	if(ma_klase[id] && is_user_alive(id))
	{
		new iPlayerWeapon = bron_gracza[id];
		new CsTeams:csTeam = cs_get_user_team(id);
 
		if(iPlayerWeapon)
			cod_take_weapon(id, iPlayerWeapon);
		
		do
		{
			iPlayerWeapon = random_num(CSW_P228, CSW_LAST_WEAPON);
		} while(((1<<iPlayerWeapon) & g_iNotWeapons) || ((1<<iPlayerWeapon) & g_iDefaultWeapon[csTeam]))
 
		cod_give_weapon(id, iPlayerWeapon);
		cs_set_user_bpammo(id, iPlayerWeapon, g_iMaxAmmo[iPlayerWeapon]);
		
		bron_gracza[id] = iPlayerWeapon;
	}
	return HAM_IGNORED;
}

  • +
  • -
  • 1
Plugin informujący o zabiciu zakładnika (wysyła do admina na say nick gracza oraz zapisuje o tym logi) - Hostage Killer v1.3.3
DarkGL to mój autorytet.




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

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