Skocz do zawartości

  • Zaloguj korzystając z Facebooka Zaloguj korzystając z Twittera Zaloguj przez Steam Zaloguj poprzez Google      Logowanie »   
  • Rejestracja

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

Funkcja /me i najwiecej DMG pod koniec rundy


  • Zamknięty Temat jest zamknięty
20 odpowiedzi w tym temacie

#1 camilost

    ^ BotQ - STER.owiec ^

  • Power User

Reputacja: 430
Wszechobecny

  • Postów:968
  • GG:
  • Steam:steam
  • Imię:Kamil
  • Lokalizacja:Tychy
Offline

Napisano 29.07.2010 21:31

Witam.
Potrzebuję pluginu z funkcją /me (Wyświetla zadane obrażenia - DMG), nie chcę statsx, ponieważ ma on funkcje które nie są dla mnie przydatne.

Jeśli gracz napisze "/me" i zadał jakieś DMG, wyświetla mu się wiadomość:

Zadales dotychczas %d obrazen.

Jeśli nie zadał DMG:

na razie nie zadales obrazen przeciwnikowi.


Co rundę oczywiście ma się DMG restartować(zerować)

I jeszcze, aby pod koniec przed zerowaniem wyświetlało:

Najwiecej obrazen zadal %s (%d obrazen!).

Jeśli jest tylko 1 osoba grająca nie wyświetla ; p

PS. Najlepiej by było, aby inni gracze nie widzieli jak ktoś wpisał /me :P.

01 sierpień 2010 - 15:41:
Refresz.

03 sierpień 2010 - 13:55:
Refresz 2. Pls pomóżcie ^.^
  • +
  • -
  • 0

#2 Ortega

    mów mi Orti

  • Power User

Reputacja: 361
Wszechpomocny

  • Postów:640
  • GG:
  • Steam:steam
  • Imię:Marcin
  • Lokalizacja:Sosnowiec
Offline

Napisano 03.08.2010 14:08

Powinno działać ale ręki za to nie daję :F
#include < amxmodx >
#include < fakemeta >
#include < hamsandwich >

new Damage[33];
new Xdamage[33];

new g_playersnum;

new const PLUGIN_VERSION[] = "1.0";


public plugin_init() {
register_plugin("My Damage", PLUGIN_VERSION, "Ortega");

register_event( "HLTV", "NewRound", "a", "1=0", "2=0" );
register_logevent( "EndRound", 2, "1=Round_End" );

RegisterHam(Ham_TakeDamage, "player", "ForwardPlayerDmg", 1);

register_clcmd("say /me", "HookSay");
}

public ForwardPlayerDmg(iVictim, iInflictor, iAttacker, Float:fDamage, iDamageBits) {

Damage[iAttacker] = pev(iVictim, pev_dmg_take);

return Damage[iAttacker];
}

public HookSay(id) {
if(Damage[id]) {
client_print(id, print_chat, "Zadales dotychczas %d obrazen.", Damage[id]);
}
else client_print(id, print_chat, "na razie nie zadales obrazen przeciwnikowi.");

return PLUGIN_HANDLED;
}

public NewRound() {
for(new id = 0; id<33; id++) {
Damage[id] = 0;
}

g_playersnum = get_playersnum();
}

public EndRound( ) {
//while by G[o]Q ;)
new k = 0; while( Damage[k] = Xdamage[k] ) k++;

SortIntegers(Xdamage[k], 33, Sort_Descending);

for(new i = 0; i<33; i++) {

static szName[32];
get_user_name(i, szName, sizeof(szName)-1);

if( ( Xdamage[0] == Damage[i] ) && g_playersnum > 1 ) {
client_print(i, print_chat, "Najwiecej obrazen zadal %s (%i obrazen!).", szName[i], Xdamage[0] );
}
}
}

  • +
  • -
  • 0

#3 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1339
Godlike

  • Postów:3556
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 03.08.2010 16:11

Ortega ostatnia petla
if(!is_user_connected(i)) continue

public ForwardPlayerDmg(iVictim, iInflictor, iAttacker, Float:fDamage, iDamageBits) {
        
        Damage[iAttacker] +=fDamage // inaczej nikt nie bedzie miec wiekszego wyniku niz 100 hp na normalnym serverze
        
   
}

i pozbywasz sie fakemety + Damage zmien na Float zeby uniknac mismatcha przy kompilacji :D

03 sierpień 2010 - 17:12:
dodatkowo mozesz zatrzymac ostatnia petle jak juz znajdziez wynik - break :D

Użytkownik G[o]Q edytował ten post 03.08.2010 16:11

  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#4 camilost

    ^ BotQ - STER.owiec ^

  • Autor tematu
  • Power User

Reputacja: 430
Wszechobecny

  • Postów:968
  • GG:
  • Steam:steam
  • Imię:Kamil
  • Lokalizacja:Tychy
Offline

Napisano 03.08.2010 17:12

posibbly unintended assigment
new k = 0; while( Damage[k] = Xdamage[k] ) k++;
WTF? : D

GoQ weź pokaż cały poprawiony kod, ja WC. :D
  • +
  • -
  • 0

#5 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1339
Godlike

  • Postów:3556
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 03.08.2010 17:30

powinno byc

new k = 0; while(  Xdamage[k] = Damage[k] ) k+

warningiem sie nie przejmuj bo kompialtor mysli ze zle zrobiona petla :D
  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#6 camilost

    ^ BotQ - STER.owiec ^

  • Autor tematu
  • Power User

Reputacja: 430
Wszechobecny

  • Postów:968
  • GG:
  • Steam:steam
  • Imię:Kamil
  • Lokalizacja:Tychy
Offline

Napisano 03.08.2010 17:45


Ortega ostatnia petla

if(!is_user_connected(i)) continue

public ForwardPlayerDmg(iVictim, iInflictor, iAttacker, Float:fDamage, iDamageBits) {
        
        Damage[iAttacker] +=fDamage // inaczej nikt nie bedzie miec wiekszego wyniku niz 100 hp na normalnym serverze
        
   
}

i pozbywasz sie fakemety + Damage zmien na Float zeby uniknac mismatcha przy kompilacji :D

03 sierpień 2010 - 17:12:
dodatkowo mozesz zatrzymac ostatnia petle jak juz znajdziez wynik - break :D



Pokaż jak to ma wyglądać

PS. new k = 0; while( Xdamage[k] = Damage[k] ) k++? Bo bez jednego + mi 1 error wyskoczył +dodatkowy warning ^.^

03 sierpień 2010 - 19:21:
Ile zadałem DMG działa ale wyświetlanie kto zadał najwięcej nie działa.
public EndRound( ) {
	//while by G[o]Q ;)
	new k = 0; while( Xdamage[k] = Damage[k] ) k++;
	
	SortIntegers(Xdamage[k], 33, Sort_Descending);
	
	for(new i = 0; i<33; i++) {
		
		static szName[32];
		get_user_name(i, szName, sizeof(szName)-1);
		
		if( ( Xdamage[0] == Damage[i] ) && g_playersnum >= 2 ) {
			client_print(i, print_chat, "Najwiecej obrazen zadal %s (%i obrazen!).", szName[i], Xdamage[0] );
		}
	}
}

W sumie g_playersnum >= 2 to to samo jak > 1 xD Ale co tam tak sobie dałem ^.^ .

03 sierpień 2010 - 19:50:
/me działa ale pokazuje ile ostatnio zadałem obrażen (np. trafiłem w głowe to pokazuje tylko te ostatnie obrażenie (140) : D a nie dodaje tych pozostałych.
  • +
  • -
  • 0

#7 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1339
Godlike

  • Postów:3556
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 03.08.2010 19:13

najwiecej dmg dziala tylko

client_print(i
zmien na

client_print(0

  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#8 camilost

    ^ BotQ - STER.owiec ^

  • Autor tematu
  • Power User

Reputacja: 430
Wszechobecny

  • Postów:968
  • GG:
  • Steam:steam
  • Imię:Kamil
  • Lokalizacja:Tychy
Offline

Napisano 03.08.2010 19:42

A czemu pokazuje tylko zadane ostatnio obrażenie (jedno) np. jeśli strzele w klatkę (60hp) i później w Heada(140) to wyskakuje zadane obrażenie 140 ^^ (Jak wpisze /me)
  • +
  • -
  • 0

#9 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1339
Godlike

  • Postów:3556
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 03.08.2010 20:09

public ForwardPlayerDmg(iVictim, iInflictor, iAttacker, Float:fDamage, iDamageBits) {

        

        Damage[iAttacker] +=fDamage // inaczej nikt nie bedzie miec wiekszego wyniku niz 100 hp na normalnym serverze

        

   

}


  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#10 camilost

    ^ BotQ - STER.owiec ^

  • Autor tematu
  • Power User

Reputacja: 430
Wszechobecny

  • Postów:968
  • GG:
  • Steam:steam
  • Imię:Kamil
  • Lokalizacja:Tychy
Offline

Napisano 03.08.2010 20:24

Aha i takie coś wyskoczyło jak zamieniłem id na 0:
Spoiler


hehehe :D

SMA:
Spoiler

Użytkownik camilost edytował ten post 03.08.2010 20:26

  • +
  • -
  • 0

#11 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1339
Godlike

  • Postów:3556
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 03.08.2010 20:41

zamen all %d i %i na %f

oraz

new Damage[33];
new Xdamage[33];


na

new Float:Damage[33];
new Float:Xdamage[33];

  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#12 camilost

    ^ BotQ - STER.owiec ^

  • Autor tematu
  • Power User

Reputacja: 430
Wszechobecny

  • Postów:968
  • GG:
  • Steam:steam
  • Imię:Kamil
  • Lokalizacja:Tychy
Offline

Napisano 03.08.2010 20:47

Tag mismatch:
	SortIntegers(Xdamage[k], 33, Sort_Descending);

i
		Damage[id] = 0;


WTD, wiem że chdzi o te Xdamage i Damage, bo dodałem w float!? : D
Zamiennik mam zrobić?
new zadanedmg = Float:Damage[id]
a samo new Float:Damage na new Damage? :P dobrze kombinuję?

Użytkownik camilost edytował ten post 03.08.2010 20:54

  • +
  • -
  • 0

#13 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1339
Godlike

  • Postów:3556
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 03.08.2010 20:54

SortFloats(Xdamage[k], 33, Sort_Descending);

zamiast

SortIntegers(Xdamage[k], 33, Sort_Descending);

03 sierpień 2010 - 22:07:
nieeeee poprostu na samej gorze po new dodaj Float: i nic wiecej przed tymi dwoma funkcjami i zmien funkcje sortintegers na sortfloat

Użytkownik G[o]Q edytował ten post 03.08.2010 20:54

  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#14 camilost

    ^ BotQ - STER.owiec ^

  • Autor tematu
  • Power User

Reputacja: 430
Wszechobecny

  • Postów:968
  • GG:
  • Steam:steam
  • Imię:Kamil
  • Lokalizacja:Tychy
Offline

Napisano 03.08.2010 21:07

z tym drugi Tag mimatch zrobiłem: Damage[id] = 0.0; i odpuściło ^.^ Skoro float to float ^^

03 sierpień 2010 - 22:08:
Teraz kod wygląda tak:
Spoiler

  • +
  • -
  • 0

#15 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1339
Godlike

  • Postów:3556
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 03.08.2010 21:10

a jak z dzialaniem :?:
  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#16 camilost

    ^ BotQ - STER.owiec ^

  • Autor tematu
  • Power User

Reputacja: 430
Wszechobecny

  • Postów:968
  • GG:
  • Steam:steam
  • Imię:Kamil
  • Lokalizacja:Tychy
Offline

Napisano 03.08.2010 21:11

Nikogo nie ma na serwie już, muszę na botach sprawdzić : D

@EDIT:
Hmmm.. na botach: Ciągle pisze że jeszcze nie zadałem dmg ale to pewnie dlatego że na botach ^^
I dalej jest problem z:
Spoiler


Z tymi zerami to wiem jak sobie poradzić ^^ ale z tym spamem to nie xD

Może:
get_user_name(i, szName, sizeof(szName)-1);
zamienić na:
get_user_name(i, szName, sizeof szName - 1);
Pewnie się mylę xD bo to to samo teoretycznie.

@EDIT2:
Racja myliłem się xD

04 sierpień 2010 - 20:29:
Jak zlikwidować ten spam? : /
Wiem że trzeba jakoś wyłapać tego co ma najwięcej DMG, bo teraz tylko sortuje i wysyła spam posortowany ^^

Użytkownik camilost edytował ten post 03.08.2010 21:36

  • +
  • -
  • 0

#17 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1339
Godlike

  • Postów:3556
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 04.08.2010 20:36

for(new i = 0; i<33; i++) {

                

                static szName[32];

                get_user_name(i, szName, sizeof(szName)-1);

                

                if( ( Xdamage[0] == Damage[i] ) && g_playersnum > 1 ) {

                        client_print(0, print_chat, "Najwiecej obrazen zadal %s (%f obrazen!).", szName[i], Xdamage[0] );

                        break

                }

        }


  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#18 camilost

    ^ BotQ - STER.owiec ^

  • Autor tematu
  • Power User

Reputacja: 430
Wszechobecny

  • Postów:968
  • GG:
  • Steam:steam
  • Imię:Kamil
  • Lokalizacja:Tychy
Offline

Napisano 05.08.2010 00:17

No no już jest prawie cacy:

Najwiecej obrazen zadal Nazwa serwera@pukawka.p (0.000000 obrazen!)


Te .00 to mi zwisa na razie pozniej osune ale ze zle sortuje ;d
  • +
  • -
  • 0

#19 Ortega

    mów mi Orti

  • Power User

Reputacja: 361
Wszechpomocny

  • Postów:640
  • GG:
  • Steam:steam
  • Imię:Marcin
  • Lokalizacja:Sosnowiec
Offline

Napisano 05.08.2010 10:38

Do trzech razy sztuka ;)
#include < amxmodx >
#include < hamsandwich >

new Float:Damage[33];
new Float:Xdamage[33];

new g_playersnum;

new const PLUGIN_VERSION[] = "1.0";


public plugin_init() {
register_plugin("My Damage", PLUGIN_VERSION, "Ortega");

register_event( "HLTV", "NewRound", "a", "1=0", "2=0" );
register_logevent( "EndRound", 2, "1=Round_End" );

RegisterHam(Ham_TakeDamage, "player", "ForwardPlayerDmg", 1);

register_clcmd("say /me", "HookSay");
}

public ForwardPlayerDmg(iVictim, iInflictor, iAttacker, Float:fDamage, iDamageBits) {

Damage[iAttacker] += fDamage;
floatround(Damage[iAttacker], floatround_floor);
}

public HookSay(id) {
if(Damage[id]) {
client_print(id, print_chat, "Zadales dotychczas %d obrazen.", Damage[id]);
}
else client_print(id, print_chat, "na razie nie zadales obrazen przeciwnikowi.");

return PLUGIN_HANDLED;
}

public NewRound() {
for(new id = 0; id<33; id++) {
Damage[id] = 0.0;
Xdamage[id] = 0.0;
}

g_playersnum = get_playersnum();
}

public EndRound( ) {

new k = 0; while( Damage[k] == Xdamage[k] ) k++;

SortFloats(Xdamage[k], 33, Sort_Descending);

for(new i = 0; i<33; i++) {

static szName[32];
get_user_name(i, szName, sizeof(szName)-1);

floatround(Xdamage[i], floatround_floor);

if( ( Xdamage[0] == Damage[i] ) && g_playersnum > 1 ) {
client_print(0, print_chat, "Najwiecej obrazen zadal %s (%d obrazen!).", szName[i], Xdamage[0] );
break;
}
}
}

  • +
  • -
  • 0

#20 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1339
Godlike

  • Postów:3556
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 05.08.2010 11:59

public EndRound( ) {
        
        new k = 0; while( Xdamage[k] = Damage[k] ) k++;
        
        SortFloats(Xdamage[k], 33, Sort_Descending);
        
        for(new i = 0; i<33; i++) {
                
                static szName[32];
                get_user_name(i, szName, sizeof(szName)-1);
                
                floatround(Xdamage[i], floatround_floor);
                
                if( ( Xdamage[0] == Damage[i] ) && g_playersnum > 1 ) {
                        client_print(0, print_chat, "Najwiecej obrazen zadal %s (%d obrazen!).", szName[i], Xdamage[0] );
                        break;
                }
        }
}

hmm jak tak nie zadziala to polecam dodanie jakiegos debuga sobie zeby tablice wyswietlic cala albo cos :D
  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D




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

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