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

2 rzeczy - jak zrobić?


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

#1 ^Grzyboo

    Wszechobecny

  • Użytkownik

Reputacja: 246
Wszechwidzący

  • Postów:461
  • Imię:Grzyboo
  • Lokalizacja:Tak
Offline

Napisano 24.04.2011 17:49

Witam,
Jak zrobić takie coś?

1.
if(gracz jest ostatnim żyjącym terrorystą)
{
cośtam
}


2.
if(gracz zabił 2 osoby jednym granatem)
{
cośtam
}

Za każdą pomoc byłbym wdzięczny
  • +
  • -
  • 0

#2 Muzzi

    Guru

  • Przyjaciel

Reputacja: 228
Wszechwidzący

  • Postów:772
  • Lokalizacja:Kraków
Offline

Napisano 24.04.2011 19:10

1. Może coś takiego ?
Dodaj to do zmiennych globalnych

new tt=0


A to jest funkcja która sprawdza ilu jest tt.

public ostatni_terro(){

tt=0
new iPlayers[32], iNum
get_players(iPlayers, iNum)
for(new id=1; id<iNum; id++)
{
if (!is_user_alive(id)|| get_user_team(id)!=1) continue
tt++
}
return tt;
}

Masz gotowe.
Aby sprawdzić czy jest ostatni tt

if(ostatni_terro() == 1){
code...
}

Użytkownik Muzzi edytował ten post 24.04.2011 19:16

  • +
  • -
  • 1

#3 Knopers

    Nie patrz tak na mnie !

  • Przyjaciel

Reputacja: 588
Wszechwiedzący

  • Postów:2 013
  • GG:
  • Steam:steam
  • Imię:Mateusz
  • Lokalizacja:Cz-wa
Offline

Napisano 24.04.2011 19:58

jak chcesz trochę bardziej rozbudowaną funkcję to proszę :P
//Team 1 - TT, Team 2 - CT
stock get_last_alive(team)
{
new iIlosc = 0, id;
for(new i = 1; i < 33; i++)
{
if(!is_user_connected(i) || !is_user_alive(i) || get_user_team(i) != team) continue;
if(++iIlosc > 1) break;
id = i;
}
if(iIlosc > 1 || iIlosc < 1) return -1;
return id;
}

Możesz wybrać team który ma sprawdzać dodatkowo zwraca ci ID ostatniego, w przeciwnym razie -1

Co do drugiego to tablica globalna + zliczanie ilości zabić dla każdego gracza z granata a potem sprawdzenie czy ma >= 2 :P (proste xD)
Sorki źle przeczytałem, może być troszkę trudniej xD
  • +
  • -
  • 1

#4 ^Grzyboo

    Wszechobecny

  • Autor tematu
  • Użytkownik

Reputacja: 246
Wszechwidzący

  • Postów:461
  • Imię:Grzyboo
  • Lokalizacja:Tak
Offline

Napisano 24.04.2011 20:22

Dzięki, co do drugiego nie spotkałem się z czymś podobnym. Nie mam na czym się wzorować.
Czy dałoby radę wytłumaczyć?
  • +
  • -
  • 0

#5 Knopers

    Nie patrz tak na mnie !

  • Przyjaciel

Reputacja: 588
Wszechwiedzący

  • Postów:2 013
  • GG:
  • Steam:steam
  • Imię:Mateusz
  • Lokalizacja:Cz-wa
Offline

Napisano 24.04.2011 21:02

W sumie trochę roboty z tym było, nie testowane. Działa to tak że jeśli 2 gracze zostaną zabici w tym samym czasie (ew. +- 1s różnicy w czasie zabicia) z granata to zostaje to zaliczone jako podwójne zabicie z granata.
#include <amxmodx>

new bool:gbGrenadeKills[33] = {false};
new giLastGrenadeKill[33] = {0};
public plugin_init()
{
register_plugin("", "Unknow", "Knopers");
register_event("DeathMsg", "DeathMsg", "a");
}
public client_authorized(id)
{
gbGrenadeKills[id] = false;
giLastGrenadeKill[id] = 0;
}
public DeathMsg()
{
new id = read_data(1);
new weapon[64];
read_data(4, weapon, 63);
if(equal(weapon, "grenade"))
{
if(giLastGrenadeKill[id] == 0)
giLastGrenadeKill[id] = get_systime();
else
{
static temp = get_systime() - giLastGrenadeKill[id];
if(temp == 1 || temp == 0) //Margines 1s powinien wystarczyć ;)
{
gbGrenadeKills[id] = true;
giLastGrenadeKill[id] = 0;
}
else
{
gbGrenadeKills[id] = false;
giLastGrenadeKill[id] = 0;
}
}
}
}

jeśli potem chcesz sprawdzić czy gracz zabił 2 z jednego granata to wykonujesz if'a tak :
if(gbGrenadeKills[id])
{
//Kod
}

  • +
  • -
  • 1




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

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