←  Gotowe funkcje

AMXX.pl: Support AMX Mod X i SourceMod

»

Zmiana ilości naboi w magazynku

mierzwi - zdjęcie mierzwi 29.01.2012

Kod wycięty i sklejony w całość z pluginu Soccdoodcss, trochę zedytowany przeze mnie, w którym można zmienić maksymalną ilość naboi w magazynku danej broni.
Aby zmienić naboje znajdź funkcję max_clip i zmień liczbę przypisaną do danej broni:
max_clip(WeapID) /* Tu zwiekszamy naboje */
{
	new MaxClip = 0;
	
	switch(WeapID)
	{
		case CSW_P228 : MaxClip = 13;
			
		case CSW_SCOUT : MaxClip = 10;
			
		case CSW_HEGRENADE : MaxClip = 1;
			
		case CSW_XM1014 : MaxClip = 7;
			
		case CSW_C4 : MaxClip = 1;
			
		case CSW_MAC10 : MaxClip = 30;
			
		case CSW_AUG : MaxClip = 30;
			
		case CSW_SMOKEGRENADE : MaxClip = 1;
			
		case CSW_ELITE : MaxClip = 30;
			
		case CSW_FIVESEVEN : MaxClip = 20;
			
		case CSW_UMP45 : MaxClip = 25;
			
		case CSW_SG550 : MaxClip = 30;
			
		case CSW_GALI : MaxClip = 35;
			
		case CSW_FAMAS : MaxClip = 25;
			
		case CSW_USP : MaxClip = 12;
			
		case CSW_GLOCK18 : MaxClip = 20;
			
		case CSW_AWP : MaxClip = 10;
			
		case CSW_MP5NAVY : MaxClip = 30;
			
		case CSW_M249 : MaxClip = 100;
			
		case CSW_M3 : MaxClip = 8;
			
		case CSW_M4A1 : MaxClip = 30;
			
		case CSW_TMP : MaxClip = 30;
			
		case CSW_G3SG1 : MaxClip = 20;
			
		case CSW_FLASHBANG : MaxClip = 2;
			
		case CSW_DEAGLE	: MaxClip = 7;
			
		case CSW_SG552 : MaxClip = 30;
			
		case CSW_AK47 : MaxClip = 30;
			
		case CSW_P90 : MaxClip = 50;
			
		default: return PLUGIN_HANDLED;
	}
	return MaxClip;
}

Plugin w spoilerze :)
Spoiler

Użytkownik maslo edytował ten post 31.01.2012 22:13
Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 29.01.2012

A nie lepiej zrobić to za pomocą tablicy?
Odpowiedz

mierzwi - zdjęcie mierzwi 29.01.2012

A nie lepiej zrobić to za pomocą tablicy?

Ja to tylko edytowałem i wywaliłem niepotrzebny shit :>
Odpowiedz

goferek - zdjęcie goferek 29.01.2012

A dało by rade to przerobić tak aby dawało np: +10 ammo w magazynku dla vipa od określonej flagi ?
Odpowiedz

mierzwi - zdjęcie mierzwi 29.01.2012

A dało by rade to przerobić tak aby dawało np: +10 ammo w magazynku dla vipa od określonej flagi ?

Zapewne :)
Odpowiedz

  • +
  • -
ogieR8 - zdjęcie ogieR8 31.01.2012

Ej, mam bardzo ważne pytanie i pewnie odpowiedź przyda się nie tylko mi..
Jak użyję pętli takiej jak w nowej rundzie z ID, to zadziała to odpowiednio ? Bo chcę zrobić coś na takiej zasadzie :


case CSW_FAMAS: MaxClip = 25+quest_bonus_ammo[level_famas[id]];


new const quest_bonus_ammo[] = { 0, 1, 3, 5 }


Może działać, ale to jeszcze nie znaczy, że kod będzie dobry i w 100% sprawny.

Mi coś nie działa plugin.. Może ktoś go testował ? Sprawdzał ? Rano sprawdzę sam plugin, bo dziś go wsadziłem do mojego modka, żeby dodać skill broni, ale nie odpala ; /

Niestety.. Sam plugin bez wyciągania jego kodu też nie działa, na dodatek wyłączyłem wszystkie inne pluginy jakby wadziły.. Bez oabw, moduł odblokowany, więc po prostu plugin nie działa. A szkoda.. wielka. Zależy mi na dodatkowym ammo, zmniejszeniu czasu między przeładowaniem w AWP, jest na forum tutaj jedna funkcja do 'tego', ale tam przeładowuje szybciej po kliknięciu R, ale nie między pojedynczymi pociskami. Chciałbym, żeby z malutką wartością AWP działało prawie jak Auto-Lama, no ale cóż.. sam tego nie zrobie. I prosiłbym o naprawienie tego ;)
Użytkownik ogieR- edytował ten post 31.01.2012 00:23
Odpowiedz

mierzwi - zdjęcie mierzwi 31.01.2012

Nie wiem mi to działa, z ciekawości zaraz sam jeszcze raz sprawdzę ^^

@ EDIT: Tak, jednak był błąd w stocku którego nie zauważyłem haha :< Już zedytowałem pierwszy post i poprawiłem kod, + dla kolegi wyżej za czujność :D
Użytkownik maslo edytował ten post 31.01.2012 20:41
Odpowiedz

  • +
  • -
ogieR8 - zdjęcie ogieR8 31.01.2012

No byłbym bardzo wdzięczny :)

A mam takie pytanko.. Bo są rejestrowane eventy, ale są do nich flagi, i tu jest kłopot. Ja mam np w moim modzie :

register_event("DeathMsg","DeathMsg","ade")  


A Twój plugin ma :

register_event("DeathMsg", "evDeath", "a");


Jak widać flagi nie są te same, czyli nie wypada z publica evDeath do publica DeathMsg kopiować kod, gdyż flagi w przeniesionym kodzie będą inne niż te jakie Ty zaproponowałeś w swoim. Ale z drugiej strony mam rozterkęElo , czy nie zostawić tych dwóch eventów i w 2 zarejestrowane sposoby. Może troszkę chaotycznie, ale nie umiem tego opisać, a zawsze myślę jak to rozegrać..

1. Kopiować kod z 1 eventu do drugiego, ale za to flagi mogą być nie zgodne dla prawidłowości pluginu przeniesionego
2. Zarejestrować 2 eventy, ale tu minusem jest 'dubel'.

Z góry dzięki za wyjaśnienie tego i naprawienie pluginu.

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


Dzięki za plusa, ale dalej jest błąd przez Twoją nie uwagę ^^


#include
#include
#include


Zamień na:

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>


hehe.
Użytkownik ogieR- edytował ten post 31.01.2012 21:48
Odpowiedz

mierzwi - zdjęcie mierzwi 31.01.2012

Wyjaśnienie po ang: http://www.amxmodx.o...event&go=search
Na polski przekładając te literki to są flagi, każda flaga odpowiada jakiejś czynności, mały spis (nie wiem czy dobre tłumaczenie, anglik ze mnie nie jest):
"a" - Global Event // event na cały plug (?)
"b" - Event sent to a single target // wysyłany tylko do 1 osoby
"c" - Send only once when repeated to other players // wysyłane jest raz kiedy powtarza się dla innych graczy (?)
"d" - Only if sent to a dead player // działa jeśli wiadomość jest wysyłana do martwego gracza
"e" - Only if sent to an alive player // działa jeśli wiadomość jest wysyłana do żywego gracza
Odpowiedz

  • +
  • -
ogieR8 - zdjęcie ogieR8 01.02.2012

Co może być nie tak ? :|


max_clip(WeapID) { /* Tu zwiekszamy naboje */
new MaxClip = 0;
new plus[33];

for (new i=0; i < 33; i++) {
plus[i]=quest_ammo_bonus[level_rifle[i]];

switch(WeapID) {
case CSW_P228 : MaxClip = 13;
case CSW_SCOUT : MaxClip = 10;
case CSW_HEGRENADE : MaxClip = 1;
case CSW_XM1014 : MaxClip = 7;
case CSW_C4 : MaxClip = 1;
case CSW_MAC10 : MaxClip = 30;
case CSW_AUG : MaxClip = 30+plus[i];
case CSW_SMOKEGRENADE : MaxClip = 1;
case CSW_ELITE : MaxClip = 30;
case CSW_FIVESEVEN : MaxClip = 20;
case CSW_UMP45 : MaxClip = 25;
case CSW_SG550 : MaxClip = 30;
case CSW_GALI : MaxClip = 35+plus[i];
case CSW_FAMAS : MaxClip = 25+plus[i];
case CSW_USP : MaxClip = 12;
case CSW_GLOCK18 : MaxClip = 20;
case CSW_AWP : MaxClip = 10;
case CSW_MP5NAVY : MaxClip = 30;
case CSW_M249 : MaxClip = 100;
case CSW_M3 : MaxClip = 8;
case CSW_M4A1 : MaxClip = 30+plus[i];
case CSW_TMP : MaxClip = 30;
case CSW_G3SG1 : MaxClip = 20;
case CSW_FLASHBANG : MaxClip = 2;
case CSW_DEAGLE : MaxClip = 7;
case CSW_SG552 : MaxClip = 30+plus[i];
case CSW_AK47 : MaxClip = 30+plus[i];
case CSW_P90 : MaxClip = 50;

default: return PLUGIN_HANDLED;
}
}
return MaxClip;
}


new const quest_ammo_bonus[] = { 0, 5, 10, 15 }


?

Kompilować to się kompiluje, ale niestety kompilacja =/= poprawnie działający plugin.
Użytkownik ogieR- edytował ten post 01.02.2012 02:44
Odpowiedz

  • +
  • -
Shelvi - zdjęcie Shelvi 01.02.2012

Tylko co ci nie działa? Zapewne poustawiałeś daną ilość naboi i pewnie nie hula? Po prostu wystrzel 1 nabój i przeładuj np miałeś max 30 ustawiłeś na 100, więc gdy zaczniesz grę masz 30 wystrzelisz 1 nabój przeładujesz i masz 100 chociaż powinno od samego początku pokazywać 100

max_clip(WeapID) /* Tu zwiekszamy naboje */
{
	    new MaxClip = 0;
	   
	    switch(WeapID)
	    {
			    case CSW_P228 : MaxClip = 23;
			    case CSW_SCOUT : MaxClip = 60;
			    .....
			    default: return PLUGIN_HANDLED;
	    }
	    return MaxClip;
}
Mi się wydaje że wystarczy zmienić zawartość i będziesz miał więcej lecz działa to tak jak pisałem, że zmieni się po przeładowaniu
Odpowiedz

  • +
  • -
Stachuu :D ?? - zdjęcie Stachuu :D ?? 01.02.2012

to niech ustawia poprzez ham_ (wyciąganie broni) i powinno od razu ustawiac dobra wartosc .
Odpowiedz

mierzwi - zdjęcie mierzwi 01.02.2012

Co może być nie tak ? :|


max_clip(WeapID) { /* Tu zwiekszamy naboje */
new MaxClip = 0;
new plus[33];

for (new i=0; i < 33; i++) {
plus[i]=quest_ammo_bonus[level_rifle[i]];

switch(WeapID) {
case CSW_P228 : MaxClip = 13;
case CSW_SCOUT : MaxClip = 10;
case CSW_HEGRENADE : MaxClip = 1;
case CSW_XM1014 : MaxClip = 7;
case CSW_C4 : MaxClip = 1;
case CSW_MAC10 : MaxClip = 30;
case CSW_AUG : MaxClip = 30+plus[i];
case CSW_SMOKEGRENADE : MaxClip = 1;
case CSW_ELITE : MaxClip = 30;
case CSW_FIVESEVEN : MaxClip = 20;
case CSW_UMP45 : MaxClip = 25;
case CSW_SG550 : MaxClip = 30;
case CSW_GALI : MaxClip = 35+plus[i];
case CSW_FAMAS : MaxClip = 25+plus[i];
case CSW_USP : MaxClip = 12;
case CSW_GLOCK18 : MaxClip = 20;
case CSW_AWP : MaxClip = 10;
case CSW_MP5NAVY : MaxClip = 30;
case CSW_M249 : MaxClip = 100;
case CSW_M3 : MaxClip = 8;
case CSW_M4A1 : MaxClip = 30+plus[i];
case CSW_TMP : MaxClip = 30;
case CSW_G3SG1 : MaxClip = 20;
case CSW_FLASHBANG : MaxClip = 2;
case CSW_DEAGLE : MaxClip = 7;
case CSW_SG552 : MaxClip = 30+plus[i];
case CSW_AK47 : MaxClip = 30+plus[i];
case CSW_P90 : MaxClip = 50;

default: return PLUGIN_HANDLED;
}
}
return MaxClip;
}


new const quest_ammo_bonus[] = { 0, 5, 10, 15 }


?

Kompilować to się kompiluje, ale niestety kompilacja =/= poprawnie działający plugin.

W ogóle twój pomysł jest do bani xD Zrób tak żeby max_clip miało id czyli max_clip(id, WeapID) i tam dodaj na podstawie zmiennej :D
Odpowiedz

  • +
  • -
ogieR8 - zdjęcie ogieR8 01.02.2012

Jestem dziś trochę zakręcony i nie ogarnięty, mógłbyś mi to zrobić z tego kodu co tutaj podałem ? :D A ja zmykam bo nie ogarniam z rana na kacu, i wielkie dzięki jakbyś to jednak zrobił, + oczywiście będzie i Ci wyżej zaraz też dostaną. A co do segos.. wiem o tym, ale to w ogóle nie łapie większej ilości w magazynku.

Dobraa, mam. Nie wiem czego nie ogarnąłem. No akurat pomógł mi tylko maslo, wiec dostanie znowu +, ale za chęci Wam też dam, no niech będzie ;PPP
Użytkownik ogieR- edytował ten post 01.02.2012 14:08
Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 16.07.2012

Wiem, że autor jest zbanowany i trochę odkopię temat, ale w tej funkcji jest zwracane 1, dla broni, np. o id = 40, bo
#define PLUGIN_HANDLED		1	/* stop other plugins */

Jak już ktoś koniecznie chce używać tej funkcji, to powinna ona wyglądać tak
Spoiler
Odpowiedz

  • +
  • -
Pan PrO - zdjęcie Pan PrO 24.11.2012

Jest bug bo gdy mam full ammo to da się przeładowywać i ustawia standardowe ammo
Odpowiedz