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
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.
|
Guest Message by DevFuse
2 rzeczy - jak zrobić?
Temat rozp.
^Grzyboo
, 24.04.2011 17:49
4 odpowiedzi w tym temacie
#1
Napisano 24.04.2011 17:49
#2
Napisano 24.04.2011 19:10
1. Może coś takiego ?
Dodaj to do zmiennych globalnych
A to jest funkcja która sprawdza ilu jest tt.
Masz gotowe.
Aby sprawdzić czy jest ostatni tt
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
#3
Napisano 24.04.2011 19:58
jak chcesz trochę bardziej rozbudowaną funkcję to proszę
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 (proste )
Sorki źle przeczytałem, może być troszkę trudniej
//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
Sorki źle przeczytałem, może być troszkę trudniej
#4
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ć?
Czy dałoby radę wytłumaczyć?
#5
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.
jeśli potem chcesz sprawdzić czy gracz zabił 2 z jednego granata to wykonujesz if'a tak :
#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
}
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych