←  Szukam pluginu

AMXX.pl: Support AMX Mod X i SourceMod

»

szukam broni blokada broni dla tt

  • +
  • -
ToTylkoKasia's Photo ToTylkoKasia 24.08.2015

Cześć.

Szukam pluginu, który ma za zadanie wprowadzić blokadę używania wszystkich broni dla tt ( zombie ) na serwer BaseBuilder.

Nie chodzi o działka, czy inne takie rzeczy tylko bronie, np. Ak47.

Quote

  • +
  • -
NoLiFeR's Photo NoLiFeR 25.08.2015

ham_deploy * + strip_weapons ;)

Quote

  • +
  • -
Asiap's Photo Asiap 25.08.2015

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

#define GetBlock(%0)	g_iBitBlockedWeapons & (1<<(%0 & 31))
#define SetBlock(%0)	g_iBitBlockedWeapons |= (1<<(%0 & 31))
#define ClearBlock(%0)	g_iBitBlockedWeapons &= ~(1<<(%0 & 31))

new g_iBitBlockedWeapons;

public plugin_init()
{
	register_plugin("Block Weapons", "1.0", "asiap");

	RegisterHamPlayer(Ham_Spawn, "SpawnPlayer");

	new szBlockTouchGun[][] = {
		"armoury_entity", "weaponbox", "weapon_shield"
	};

	for(new i; i < sizeof szBlockTouchGun; i++)
	{
		RegisterHam(Ham_Touch, szBlockTouchGun[i], "TouchGun");
	}

	new szName[24];
	for(new i = CSW_P228; i <= CSW_P90; i++)
	{
		if(!(1<<CSW_KNIFE & 1<<i) && get_weaponname(i, szName, 23))
		{
			RegisterHam(Ham_Item_Deploy, szName, "ItemDeploy", 1);
		}
	}
}

public client_disconnect(id)
{
	if(~GetBlock(id))
	{
		return;
	}
	ClearBlock(id);
}

public SpawnPlayer(id)
{
	switch(get_user_team(id)) {
		case 1:
		{
			if(~GetBlock(id))
			{
				SetBlock(id);
			}
		}
		case 2:
		{
			if(GetBlock(id))
			{
				ClearBlock(id);
			}
		}
	}
}

public ItemDeploy(iEnt)
{
	new iPlayer;
	if(~GetBlock((iPlayer = get_pdata_cbase(iEnt, 41, 4))) != 1) return;

	engclient_cmd(iPlayer, "weapon_knife");
}

public TouchGun(iEnt, id)
{
	if(!is_user_alive(id) || ~GetBlock(id))
	{
		return HAM_IGNORED;
	}
	return HAM_SUPERCEDE;
}

lub
 

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

#define GetBlock(%0)	g_iBitBlockedWeapons & (1<<(%0 & 31))
#define SetBlock(%0)	g_iBitBlockedWeapons |= (1<<(%0 & 31))
#define ClearBlock(%0)	g_iBitBlockedWeapons &= ~(1<<(%0 & 31))

new g_iBitBlockedWeapons;

public plugin_init()
{
	register_plugin("Block Weapons", "1.0", "asiap");

	register_event("TeamInfo", "TeamInfo", "a");
	register_event("WeapPickup", "WeapPickup", "be", "1!29");
}

public client_disconnect(id)
{
	if(~GetBlock(id))
	{
		return;
	}
	ClearBlock(id);
}

public TeamInfo()
{
	new szTeam[2], iPlayer = read_data(1);
	read_data(2, szTeam, 1);

	switch(szTeam[0])
	{
		case 't':
		{
			if(~GetBlock(iPlayer))
			{
				SetBlock(iPlayer);
			}
		}
		case 'c':
		{
			if(GetBlock(iPlayer))
			{
				ClearBlock(iPlayer);
			}
		}
	}
}

public WeapPickup(id)
{
	new iWeapon = read_data(1);
	new szWeapon[24];
	get_weaponname(iWeapon, szWeapon, 23);

	new iEnt;
	while((iEnt = engfunc(EngFunc_FindEntityByString, iEnt, "classname", szWeapon)) && pev(iEnt, pev_owner) != id)
	{
	}

	if(!iEnt)
	{
		return;
	}

	ExecuteHam(Ham_Weapon_RetireWeapon, iEnt);

	if(ExecuteHam(Ham_RemovePlayerItem, id, iEnt))
	{
		ExecuteHam(Ham_Item_Kill, iEnt);
		set_pev(id, pev_weapons, pev(id, pev_weapons) & ~(1<<iWeapon));
	}
}

Edited by Asiap, 25.08.2015 03:27.
Quote

  • +
  • -
ToTylkoKasia's Photo ToTylkoKasia 25.08.2015

A czy mogłabyś mi podać pliki do pobrania tego? amxx i sma

Quote

  • +
  • -
Asiap's Photo Asiap 25.08.2015

wklej na https://www.amxmodx....webcompiler.cgina to duze pole

a w tym mniejszym podaj nazwe pluginu i nacisnij compile ;)

ukarze sie link do pobrania pliku amxx

Quote

  • +
  • -
ToTylkoKasia's Photo ToTylkoKasia 25.08.2015

No o tym wiem, bym tak zrobiła, ale..

 

Nie mam pojęcia jak zrobić z tej notatki plik .sma : P

Quote

  • +
  • -
Linux''s Photo Linux' 25.08.2015

No o tym wiem, bym tak zrobiła, ale..

 

Nie mam pojęcia jak zrobić z tej notatki plik .sma : P

 

Kopiujesz tekst do notatnika, klikasz "zapisz jako" i wpisujesz nazwe pliku. Na koncu dopisujesz ".sma" to tyle.

Quote

  • +
  • -
ToTylkoKasia's Photo ToTylkoKasia 25.08.2015

A no dobra, dziękuję bardzo :P

 

Quote

  • +
  • -
ToTylkoKasia's Photo ToTylkoKasia 25.08.2015

Przepraszam za 2 posty pod rząd, ale to co mi Asiap dałaś nie działa. Pierwszego się nie da skomplikować, a drugie na serwerze nie blokuje broni dla zm.

Dodam jeszcze że ma blookować wszystkie bronie oprócz noża.

Quote

  • +
  • -
Asiap's Photo Asiap 25.08.2015

dzialaja oby dwa kody

 

w pierwszym zamien

if(~GetBlock((iPlayer = get_pdata_cbase(iEnt, 41, 4))) != 1) return;

na

if(~GetBlock((iPlayer = get_pdata_cbase(iEnt, 41, 4)))) return;

Edited by Asiap, 25.08.2015 22:40.
Quote

  • +
  • -
ToTylkoKasia's Photo ToTylkoKasia 27.08.2015

Zamieniłam to i nadal nie można skomplikować. Wyślij cytowanym tekstem co mam wkleić.

Quote

  • +
  • -
NoLiFeR's Photo NoLiFeR 27.08.2015

#include amxmodx
#include fun
#include fakemeta

#define strip_user_weapons2(%0) strip_user_weapons(%0), set_pdata_int(%0, 116, 0) // Dziekujemy Cypisowi za kod :))

public plugin_init()
{
    register_plugin("Blokada broni dla tt","1.0","NoLiFeR")
    register_event("CurWeapon","CurWeapon","be", "1=1", "2!=29") //rejestruje wyciagniecie wszystkiego oprocz kosy TAK mozna to zrobic lepiej, lecz to jest najprostsza opcja.
}

public CurWeapon(id)
{
    if(get_user_team(id) == 1)
        strip_user_weapons2(id) // zabranie wszystkiego z wyjatkiem kosy
}

Edited by NoLiFeR, 27.08.2015 14:52.
Quote

  • +
  • -
Asiap's Photo Asiap 27.08.2015

nie uzywa sie eventu CurWeapon do takich celow....  :wstyd:

 

w zalaczniku jest sma i amxx mojego piewszego kodu Attached File  block_weapons.sma   1.37KB   136 downloads

Quote

  • +
  • -
Linux''s Photo Linux' 27.08.2015

nie uzywa sie eventu CurWeapon do takich celow....  :wstyd:

 

w zalaczniku jest sma i amxx mojego piewszego kodu attachicon.gifblock_weapons.sma

 

Nie minusuje sie innych, probujacych pomoc :facepalm:

Quote

  • +
  • -
NoLiFeR's Photo NoLiFeR 27.08.2015

Napisałem, ze są inne, wydajniejsze sposoby. lecz użyłem tego, ponieważ najprościej jest zrozumieć ten event...

Mów amatorowi o kanapce 

	for(new i = CSW_P228; i <= CSW_P90; i++)
	{
		if(i != CSW_KNIFE && get_weaponname(i, szName, 23))
		{
			RegisterHam(Ham_Item_Deploy, szName, "ItemDeploy", 1);
		}
	}

Chodzi o to, aby dana osoba zrozumiała dany przez Ciebie kod. jak on może wiedzieć że CSW_P228 jest pierwszym weaponem, a CSW_P90 ostatnim ._. ?
a tutaj       

if(i != CSW_KNIFE && get_weaponname(i, szName, 23))

Pobierasz nazwe broni w pętli okej... Amator nie zorientuje się dlaczego funkcje parametrów której używasz do zarejestrowania danego wydarzenia umieściłeś w warunku i będzie robił byki...

Plugin jest niejasno napisany, przez co może być źle interpretowany przez osoby nie znające się na rzeczy tak jak ty czy ja...

 


	if(~GetBlock((iPlayer = get_pdata_cbase(iEnt, 41, 4)))) return;

Co to za potwór... Skąd się wział... Potem mamy na forum tematy takiego typu.

Nie rzecz w tym, aby dać użytkownikowi gotowca... Trzeba powiedzieć mu dlaczego akurat tak zakodowałeś ten plugin...

Wtedy będzie on mógł pojąć pewne rzeczy, i w niektórych przypadkach samemu sobie poradzić.


Edited by NoLiFeR, 27.08.2015 19:05.
Quote

  • +
  • -
ToTylkoKasia's Photo ToTylkoKasia 27.08.2015

Sprawdze i powiem czy działają.


Edited by ToTylkoKasia, 27.08.2015 20:15.
Quote

  • +
  • -
ToTylkoKasia's Photo ToTylkoKasia 27.08.2015

Plugin Asi działa, dziękuje ;)

Quote