Proszę o kod i wytłumaczenie (jak się będzie Ci chciało się pisać wytłumaczenie
![;)](https://amxx.pl/public/style_emoticons/default/wink.png)
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.
|
Napisano 29.08.2012 01:36
DarkGL to mój autorytet.
skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować
Napisano 29.08.2012 15:31
if(g_bZabawa)
{
new iPlayers[ 32 ], iNum, InneGangi;
get_players( iPlayers, iNum );
new iPlayer;
{
for( new i = 0; i < iNum; i++ )
{
iPlayer = iPlayers[ i ];
if( iPlayer == iKiller )
continue;
if( ((g_iGrupa[ iKiller ] != g_iGrupa[ iPlayer ]) || (g_iGrupa[iKiller] == g_iGrupa[iPlayer] && g_iGrupa[iKiller] == -1)) && is_user_alive(iPlayer))
{
InneGrupy++
}
}
if(InneGrupy == 0)
Koniec(iKiller)
}
}
public Koniec(killer)
{
if(g_iGrupa[ killer ] == -1)
{
new szName[32]
get_user_name(killer, szName, 31)
client_print(0, print_chat, "Jeden wygral")
}
else
{
new aData[ GrupaInfo ]
ArrayGetArray( g_aGrupy, g_iGrupa[ killer ], aData );
client_print(0, print_chat, "Wygrala jakas druzyna")
// nagrody
}
g_bZabawa = false
}
DarkGL to mój autorytet.
skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować
Napisano 29.08.2012 17:24
Napisano 29.08.2012 17:38
Użytkownik K!113r edytował ten post 29.08.2012 17:39
DarkGL to mój autorytet.
skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować
Napisano 29.08.2012 18:00
if(g_bZabawa){
new iPlayers[ 32 ], iNum;
get_players( iPlayers, iNum );
new iPlayer,licz_graczy,licz_grupe;
for( new i = 0; i < iNum; i++ )
{
iPlayer = iPlayers[i];
if(is_user_alive(iPlayer))
continue;
if(iPlayer == iKiller)
continue;
licz_graczy++
if(licz_graczy==1)
Koniec(iKiller,1)
if(g_iGrupa[iKiller] == g_iGrupa[iPlayer])
licz_grupe++
}
if(licz_graczy==licz_grupe)
Koniec(iKiller,2)
}
public Koniec(killer,mode)
{
if(mode==1)
{
new szName[32]
get_user_name(killer, szName, 31)
client_print(0, print_chat, "Jeden wygral")
}
else
{
new aData[ GrupaInfo ]
ArrayGetArray( g_aGrupy, g_iGrupa[ killer ], aData );
client_print(0, print_chat, "Wygrala jakas druzyna")
// nagrody
}
g_bZabawa = false
}
Użytkownik Stachuu :D ?? edytował ten post 29.08.2012 18:01
Napisano 29.08.2012 18:43
DarkGL to mój autorytet.
skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować
Napisano 29.08.2012 20:53
public DeathMsg(){
new KID = read_data(1);
new VID = read_data(2);
if(g_bZabawa)
{
new iLol;
for(new i = 1; i <= get_maxplayers(); i++){
if(i == KID)
continue;
if(get_user_team(i) != 1)
continue;
if(g_iGrupa[i] == -1)
iLol++;
}
if(iLol == 0)
client_print(id, print_chat, "0 graczy w grupie -1");
if(iLol == 1)
client_print(id, print_chat, "ostatni gracz w grupie -1");
}
Użytkownik Kubaczek <3 edytował ten post 29.08.2012 20:54
Napisano 29.08.2012 21:31
DarkGL to mój autorytet.
skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować
Napisano 29.08.2012 22:16
Napisano 29.08.2012 23:19
DarkGL to mój autorytet.
skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować
Napisano 29.08.2012 23:37
public DeathMsg(){
new KID = read_data(1);
new VID = read_data(2);
if(g_bZabawa)
{
new grupaUjemna;
new grupaPierwsza;
for(new i = 1; i <= get_maxplayers(); i++){
if(i == KID)
continue;
if(get_user_team(i) != 1)
continue;
switch(g_iGrupa[i])
{
case -1: grupaUjemna++;
case 1: grupaPierwsza++;
}
}
}
Napisano 30.08.2012 00:13
DarkGL to mój autorytet.
skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować
Napisano 30.08.2012 10:37
Napisano 30.08.2012 11:17
DarkGL to mój autorytet.
skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować
Napisano 01.09.2012 09:51
DarkGL to mój autorytet.
skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować
Napisano 03.09.2012 00:55
#include <amxmodx>
#include <hamsandwich>
new g_iGrupa[33];
new g_maxPlayers; // maxymalna liczba graczy
public plugin_init() {
register_plugin("last group detect", "0.1", "benio101");
RegisterHam(Ham_Killed, "player", "Ham_Killed_Post", 1); // rejestrujemy zdarzenie zabojstwa
// dlaczego 1 na końcu? ponieważ chcemy zarejestrować wykonane już zabójstwo
// hook Ham_Killed z 0 na końcu może zostać zablokowany poprzez zwrócenie HAM_SUPERCEDE
// wówczas do zabójstwa nie dojdzie, a my go i tak wykryjemy. Dlatego istotna jest ta jedynka.
}
public plugin_cfg(){
// pobranie maxymalnej liczby graczy na serwerze
// (tak - to w uproszczeniu tzw. liczba slotów)
g_maxPlayers=get_maxplayers();
}
public Ham_Killed_Post(vid, kid){
// vid - victim id - id ofiary (zabitego)
// kid - killer id - id zabojcy
new groups[33]; // tutaj bedziemy przechowywac numery grup pozostalych zyjacych terrorystow
// grup nie moze byc wiecej niz 33, wiec taki ustawimy jej rozmiar
new groupsNum=0; // tutaj bedziemy przechowywac liczbe tych grup w tablicy groups[]
for(new id=1; id<g_maxPlayers; ++id){
// dla kazdego gracza...
// numery graczy to od 1 do g_maxPlayers wlacznie
if(
is_user_alive(id) && // jesli zyje
get_user_team(id)==1 // i jest terrorysta (1 - TT, 2 - CT, 3 - Spect, 0 - Unassigned)
){
groups[groupsNum]=g_iGrupa[id]; // dodajemy grupe gracza do tablicy grup
++groupsNum; // zwiekszamy liczbe wpisow w tablicy
}
}
// teraz mamy pelna tablice groups[groupsNum] wypelniona grupami zyjacych terrorystow
if(groupsNum==0){
// to oznacza, ze nie ma juz zadnego zyjacego terrorysty
// nie wiem, co w tym wypadku zamierzasz zrobic, ale kod wklep wlasnie tutaj
return PLUGIN_CONTINUE; // poki co, nie zrobimy w takim wypadku absolutnie nic
} else {
// zyje przynajmniej jeden terrorysta, wiec przejdzmy do sprawdzania
new group; // tutaj bedziemy przechowywac id pierwszej napotkanej grupy
// jesli kolejna napotkana grupa bedzie inna, niz pierwsza, to oznacza
// ze mamy do czynienia z kilkoma grupami, wiec mozemy przerwac dzialanie
// jesli natomiast grupa jest taka sama, to jesli id grupy == -1, to
// oznacza, ze mamy kilka osob bez grupy, w przeciwnym wypadku to musi
// byc czlonek tej samej, pierwszej grupy, wiec idziemy wszystko jest ok
group=groups[0]; // no i pobieramy wartosc pierwszej grupy z tablicy grup
for(new i=1; i<groupsNum; ++i){
// przeszukujemy kolejne wartosci tablicy groups[groupsNum]
// pomijajac pierwsza, ktora zapisana jest jako zmienna group
if(groups[i]!=group){
// no wlasnie, grupy sa inne, czyli mozemy przerwac dalsze zwracanie
// to nie jest jeszcze ten moment, ktorego szukamy, gdyz musza
// istniec przynajmniej 2 rozne grupy (albo grupa + brak grupy)
return PLUGIN_CONTINUE;
}
// grupy sa takie same, wiec sprawdzmy, czy grupa ta nie jest grupa o id=-1
// czyli, czy nie mamy do czynienia z kilkoma zyjacymi terrorystami bez grupy
if(group==-1){
// jesli grupa wynosi -1, to nie jest jeszcze ten moment
// ktorego szukamy, wiec mozemy przerwac dalsze sprawdzanie
// gryz mamy przynajmniej 2 zyjacych terrorystow bez grupy
return PLUGIN_CONTINUE;
}
// jesli doszlismy az tutaj, to grupa musi byc taka sama
// (wczesniej nie spelniony warunek if(groups[i]!=group))
// oraz grupa musi byc rozna od -1, czyli jest to grupa
// tym samym mozemy pozwolic na przejscie do kolejnego sprawdzania
// az w koncu dojdziemy (lub nie) do konca wykonywania petli for
}
// jesli tutaj doszlismy, to oznacza, ze nastapil wlasnie ten moment,
// kiedy pozostala ostatnia grupa zywych terrorystow lub ostatni terrorysta
// bez grupy, a pod zmienna kid kryje sie id zabojcy, teraz mozna wreszcie wykonac:
Koniec(kid);
}
return PLUGIN_CONTINUE;
}
Napisano 04.09.2012 20:44
DarkGL to mój autorytet.
skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować
Napisano 04.09.2012 20:47
0 użytkowników, 1 gości, 0 anonimowych