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 133 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, 0 gości, 0 anonimowych