Skocz do zawartości

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

Licznik przeżytych rund ?


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

#1 ELOS

    No i pozamiatane ;*

  • Power User

Reputacja: 145
Zaawansowany

  • Postów:703
  • GG:
  • Imię:Kamil
  • Lokalizacja:Będzin
Offline

Napisano 27.08.2011 22:28

Jak zrobić licznik przeżytych rund planowałem coś zrobić typu
do rundę dodaje nam przetrwal[id] ++ a w deathmsq gdy zabiją nas przetrwal[id] == 0 czy podziała coś takiego?
  • +
  • -
  • 0

[Aktualizacja 22.01.2015] GunXpMod 2.7.4

http://wklej.to/vlMW7


#2 Nomaf

    Wszechpomocny

  • Użytkownik

Reputacja: 157
Profesjonalista

  • Postów:344
  • GG:
  • Imię:Mateusz
  • Lokalizacja:Polska
Offline

Napisano 27.08.2011 22:31

Powinno zadziałać.
  • +
  • -
  • 0

#3 ELOS

    No i pozamiatane ;*

  • Autor tematu
  • Power User

Reputacja: 145
Zaawansowany

  • Postów:703
  • GG:
  • Imię:Kamil
  • Lokalizacja:Będzin
Offline

Napisano 27.08.2011 22:34

Czy mógł by mi ktoś do tego deathmsq zrobić bo z tego cięki jestem ; p

public DeathMsg()
{
new headshot,attacker=read_data(1);
if(!is_user_connected(attacker))
return PLUGIN_CONTINUE;
 
headshot=read_data(3);
 
fragi[attacker]++;
if(headshot) HS[attacker]++;
 
new weapon[64]
read_data(4,weapon,sizeof weapon - 1)
 
if(equal(weapon, "knife")){
Knife[attacker]++;
if(headshot) KnifeHS[attacker]++;
}
 
if(equal(weapon, "grenade"))
HE[attacker]++;
 
if(equal(weapon, "m3"))
M3[attacker]++;
 
if(equal(weapon, "deagle"))
Deagle[attacker]++;
 
//SprawdzCzyItem(attacker)
 
return PLUGIN_CONTINUE;
}
a jeżeli się do tego nie da to poproszę w innym deathmsq.
  • +
  • -
  • 0

[Aktualizacja 22.01.2015] GunXpMod 2.7.4

http://wklej.to/vlMW7


#4 Nomaf

    Wszechpomocny

  • Użytkownik

Reputacja: 157
Profesjonalista

  • Postów:344
  • GG:
  • Imię:Mateusz
  • Lokalizacja:Polska
Offline

Napisano 27.08.2011 22:38

Nie deathmsq, a deathmsg, mała poprawka ;)
public DeathMsg() -> public DeathMsg(id)

I dodaj na koniec kodu przed return PLUGIN_CONTINUE:
przetrwal[id] = 0

  • +
  • -
  • 1

#5 ELOS

    No i pozamiatane ;*

  • Autor tematu
  • Power User

Reputacja: 145
Zaawansowany

  • Postów:703
  • GG:
  • Imię:Kamil
  • Lokalizacja:Będzin
Offline

Napisano 28.08.2011 09:14

Czy dobrze jest zrobione ?
zmienna
new przetrwal[33]
Kod DeathMsg
public DeathMsg(id)
{
new headshot,attacker=read_data(1);
if(!is_user_connected(attacker))
return PLUGIN_CONTINUE;
headshot=read_data(3);
fragi[attacker]++;
if(headshot) HS[attacker]++;
new weapon[64]
read_data(4,weapon,sizeof weapon - 1)
if(equal(weapon, "knife")){
Knife[attacker]++;
if(headshot) KnifeHS[attacker]++;
}
if(equal(weapon, "grenade"))
HE[attacker]++;
if(equal(weapon, "m3"))
M3[attacker]++;
if(equal(weapon, "deagle"))
Deagle[attacker]++;
//SprawdzCzyItem(attacker)
przetrwal[id] = 0;
return PLUGIN_CONTINUE;
}
I tu taki kod do nowa runda
public plugin_init() {
    	register_event("HLTV", "Nowa_Runda", "a", "1=0", "2=0")
}
public Nowa_Runda()
{
   	przetrwal[id] ++
}

Mam nadzieje że dobrze ; /
  • +
  • -
  • 0

[Aktualizacja 22.01.2015] GunXpMod 2.7.4

http://wklej.to/vlMW7


#6 A może sma?

    Godlike

  • Power User

Reputacja: 547
Wszechwiedzący

  • Postów:1 464
  • Steam:steam
  • Imię:Tomasz
  • Lokalizacja:Polska
Offline

Napisano 28.08.2011 09:22

Ostatnie jest źle - nowa runda to event globalny - potrzebujesz walnąć pętelkę przez wszystkich graczy.
Jak ja to bym zrobił? Pominął bym DeathMsg, a po prostu na końcu rundy sprawdził czy gracz żyje, jeżeli tak to zmienna++, jeżeli nie to zmienna = 0
  • +
  • -
  • 0

#7 speedkill

    Godlike

  • Przyjaciel

Reputacja: 1 592
Godlike

  • Postów:2 733
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Prudnik
Offline

Napisano 28.08.2011 09:37

Tak jak mówi kolega wyżej masz tu tak powinno wyglądać
public Nowa_Runda(id)
{
for(new id=1;id<33;id++)
przetrwal[id] ++
}
Lub tak :
register_logevent("Koniec_Rundy", 2, "1=Round_End")
potem
public Koniec_Rundy(id)
{
for(new id=1;id<33;id++)
{
if(is_user_alive(id))
{
zmienna[id]++
}
else
{
zmienna[id] = 0
}
}
}

Użytkownik speedkill123 edytował ten post 28.08.2011 09:44

  • +
  • -
  • 1

If you can dream it, you can do it.


#8 A może sma?

    Godlike

  • Power User

Reputacja: 547
Wszechwiedzący

  • Postów:1 464
  • Steam:steam
  • Imię:Tomasz
  • Lokalizacja:Polska
Offline

Napisano 28.08.2011 10:03

Ewentualnie możesz zrobić licznik w pętli jako globalny, zmienną zwiększać na starcie rundy, a w DeathMsg sprawdzać czy licznik == victim, jeżeli tak to przetrwał[licznik] = 0; Dołączona grafika
Edit: Chociaż to trochę głupie rozwiązanie...

Użytkownik A może sma? edytował ten post 28.08.2011 10:04

  • +
  • -
  • 0

#9 ELOS

    No i pozamiatane ;*

  • Autor tematu
  • Power User

Reputacja: 145
Zaawansowany

  • Postów:703
  • GG:
  • Imię:Kamil
  • Lokalizacja:Będzin
Offline

Napisano 28.08.2011 10:53

Tak jak mówi kolega wyżej masz tu tak powinno wyglądać

public Nowa_Runda(id)
{
for(new id=1;id<33;id++)
przetrwal[id] ++
}
Lub tak :
register_logevent("Koniec_Rundy", 2, "1=Round_End")
potem
public Koniec_Rundy(id)
{
for(new id=1;id<33;id++)
{
if(is_user_alive(id))
{
zmienna[id]++
}
else
{
zmienna[id] = 0
}
}
}

Zamiast zmienna[id] dać przetrwał[id] ?
  • +
  • -
  • 0

[Aktualizacja 22.01.2015] GunXpMod 2.7.4

http://wklej.to/vlMW7


#10 A może sma?

    Godlike

  • Power User

Reputacja: 547
Wszechwiedzący

  • Postów:1 464
  • Steam:steam
  • Imię:Tomasz
  • Lokalizacja:Polska
Offline

Napisano 28.08.2011 10:57

Tak
  • +
  • -
  • 1

#11 Nomaf

    Wszechpomocny

  • Użytkownik

Reputacja: 157
Profesjonalista

  • Postów:344
  • GG:
  • Imię:Mateusz
  • Lokalizacja:Polska
Offline

Napisano 28.08.2011 17:35

W tym co podał speedkill, zmień:
for(new id=1;id<33;id++) -> for(new id=0;id<33;id++)

Inaczej będzie pomijać gracza, który jest pierwszy na serwerze ;)
  • +
  • -
  • 0

#12 Skull3D

    Wszechmogący

  • Zbanowany

Reputacja: 102
Zaawansowany

  • Postów:651
  • Imię:Andrzej
  • Lokalizacja:AMXX.PL
Offline

Napisano 28.08.2011 17:45

Ludzie, eventy i logeventy nie lapią id więc po co wam
public DeathMsg(id)
jak ma być
public DeathMsg()
+ pętla

#13 Nomaf

    Wszechpomocny

  • Użytkownik

Reputacja: 157
Profesjonalista

  • Postów:344
  • GG:
  • Imię:Mateusz
  • Lokalizacja:Polska
Offline

Napisano 28.08.2011 17:51

To wywal id z Deathmsg i daj na początek funkcji:
new id = read_data(1)
  • +
  • -
  • 0

#14 A może sma?

    Godlike

  • Power User

Reputacja: 547
Wszechwiedzący

  • Postów:1 464
  • Steam:steam
  • Imię:Tomasz
  • Lokalizacja:Polska
Offline

Napisano 28.08.2011 17:52

Rozwiązania są dwa:
Przy spawnie zwiększać przetrwał[id] o 1 (szynką)/Złapać event i puścić pętle (to akurat głupie - ktoś dołączy po rozpoczęciu rundy i mu nie doliczy przetrwal[id])
Zerować przy DeathMSG przetrwal[victim] = 0/Złapać event końca rundy i puścić pętle.

@Nomaf: A po co Ci id zabójcy?

Użytkownik A może sma? edytował ten post 28.08.2011 17:52

  • +
  • -
  • 0

#15 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 28.08.2011 17:56

W tym co podał speedkill, zmień:
for(new id=1;id<33;id++) -> for(new id=0;id<33;id++)

Inaczej będzie pomijać gracza, który jest pierwszy na serwerze Dołączona grafika

Tutaj się mylisz, przecież każdy gracz na serwerze ma id != 0.
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#16 Fili:P

    Godlike

  • Power User

Reputacja: 754
Guru

  • Postów:1 679
  • Imię:Darek
  • Lokalizacja:Warszawa
Offline

Napisano 28.08.2011 18:13

Dam ci cały kodzik:

new przetrwal[33];
public plugin_init()
{
register_plugin("a","b","c"); // zmien sobie na swojeregister_logevent("Koniec_Rundy", 2, "1=Round_End")
}
public Koniec_Rundy()
{
for(new i; i<33; i++)
{
is_user_alive(i)
{
przetrwal[i]++;
}
else
{
przetrwal[id]=0;
}
}
}


Sory za brak tabulacji.
  • +
  • -
  • 0

#17 Nomaf

    Wszechpomocny

  • Użytkownik

Reputacja: 157
Profesjonalista

  • Postów:344
  • GG:
  • Imię:Mateusz
  • Lokalizacja:Polska
Offline

Napisano 28.08.2011 18:14

@sebul Więc tak, pętla for ma trzy argumenty. Pierwszy się wykonuje - ok, id = 1. Później drugi - id jest mniejsze od 33 - ok. Teraz trzeci - wtedy id będzie równe 2. Następnie wykonuje się to co jest w klamrach.

@a może sma? Skull3D się czepiał, więc mu napisałem alternatywe do pętli. A tak wogóle to jest id ofiary ;)
  • +
  • -
  • 0

#18 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 28.08.2011 18:17

jeśli "++" jest przed id, to wtedy jest tak jak napisałeś, ale w przypadku, gdy te dwa plusiki są za id, to pierwsza pętla wykonuje się z id równym 1 ;]
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#19 Nomaf

    Wszechpomocny

  • Użytkownik

Reputacja: 157
Profesjonalista

  • Postów:344
  • GG:
  • Imię:Mateusz
  • Lokalizacja:Polska
Offline

Napisano 28.08.2011 18:28

To w takim razie petle chociażby w cod modzie i diablo modzie są błędne?
  • +
  • -
  • 0

#20 A może sma?

    Godlike

  • Power User

Reputacja: 547
Wszechwiedzący

  • Postów:1 464
  • Steam:steam
  • Imię:Tomasz
  • Lokalizacja:Polska
Offline

Napisano 28.08.2011 18:37

@sebul Więc tak, pętla for ma trzy argumenty. Pierwszy się wykonuje - ok, id = 1. Później drugi - id jest mniejsze od 33 - ok. Teraz trzeci - wtedy id będzie równe 2. Następnie wykonuje się to co jest w klamrach.

@a może sma? Skull3D się czepiał, więc mu napisałem alternatywe do pętli. A tak wogóle to jest id ofiary Dołączona grafika

read_data(1) = zabójca
read_data(2) = ofiara
read_data(3) = hedszot
read_data(4) = nazwa broni Dołączona grafika

Użytkownik A może sma? edytował ten post 28.08.2011 18:37

  • +
  • -
  • 0




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

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