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.
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.
|
Napisano 24.08.2015 20:22
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.
Napisano 25.08.2015 02:23
ham_deploy * + strip_weapons ![]()
Napisano 25.08.2015 03:09
#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));
}
}
Użytkownik Asiap edytował ten post 25.08.2015 03:27
Napisano 25.08.2015 11:02
A czy mogłabyś mi podać pliki do pobrania tego? amxx i sma
Napisano 25.08.2015 13:55
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
Napisano 25.08.2015 16:38
No o tym wiem, bym tak zrobiła, ale..
Nie mam pojęcia jak zrobić z tej notatki plik .sma : P
Napisano 25.08.2015 17:20
A no dobra, dziękuję bardzo ![]()
Napisano 25.08.2015 21:34
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.
Napisano 25.08.2015 22:37
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;
Użytkownik Asiap edytował ten post 25.08.2015 22:40
Napisano 27.08.2015 12:55
Zamieniłam to i nadal nie można skomplikować. Wyślij cytowanym tekstem co mam wkleić.
Napisano 27.08.2015 14:51
#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
}
Użytkownik NoLiFeR edytował ten post 27.08.2015 14:52
Napisano 27.08.2015 16:19
nie uzywa sie eventu CurWeapon do takich celow.... ![]()
w zalaczniku jest sma i amxx mojego piewszego kodu
block_weapons.sma 1,37 KB 161 Ilość pobrań
block_weapons.amxx
Napisano 27.08.2015 18:19
nie uzywa sie eventu CurWeapon do takich celow....
w zalaczniku jest sma i amxx mojego piewszego kodu
block_weapons.sma
Nie minusuje sie innych, probujacych pomoc ![]()
Napisano 27.08.2015 19:04
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ć.
Użytkownik NoLiFeR edytował ten post 27.08.2015 19:05
Napisano 27.08.2015 20:08
Sprawdze i powiem czy działają.
Użytkownik ToTylkoKasia edytował ten post 27.08.2015 20:15
Napisano 27.08.2015 21:37
Plugin Asi działa, dziękuje ![]()
0 użytkowników, 1 gości, 0 anonimowych