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
 

Status VIP w tabeli


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
34 odpowiedzi w tym temacie

#1 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 07.07.2011 16:48

Dla vipów wystarczy argument wiadomości ScoreAttrib zsumować binarnie z liczbą 4, czyli statusem VIP.
Nie potrzebne są żadne inne akcje, gdyż:
  • Nie ma możliwości, aby żywi terroryści widzieli status VIPa w tabeli, podobnie jak żywi CT nie widzą, kto ma Bombę.
  • ScoreAttrib wysyła się jako sumę binarną flag, co jest istotą całego rozwiązania i pozwala na taką prostotę działania.
  • Priorytety flag układają się następująco:
  • W pierwszej kolejności brana jest pod uwagę flaga DEAD, jeśli gracz nie żyje, to wyświetla się status DEAD w tabeli
  • W drugiej kolejności zastosowanie ma flaga BOMB, co gwarantuje, że o ile któryś z Terrorystów posiada bombę, to jego towarzysze zawsze się o tym dowiedzą z tabeli
  • W trzeciej kolejności dopiero brana jest pod uwagę flaga VIP, jeśli i jej nie ma, to dopiero wtedy pole w tabeli pozostaje puste, ostatecznie priorytety układają się rosnąco
Do plugin_init dodajemy
register_message(get_user_msgid("ScoreAttrib"), "g_VipStatus");

Do kodu pluginu dodajemy funkcję
public g_VipStatus(){
new id=get_msg_arg_int(1);
if(is_user_alive(id) && get_user_flags(id) & ADMIN_LEVEL_H){
set_msg_arg_int(2, ARG_BYTE, get_msg_arg_int(2)|4);
}
}
Przykład dla flagi "t", oczywiście ADMIN_LEVEL_H można zamienić na inną flagę vipa.

Swój kod pozwoliłem sobie dodać do pierwszego postu, gdyż stary kod mierzwiego działał nieprawidłowo.
Nie uwzględniał on statusu posiadania bomby. Wszelkie inne kody także mają swoje wady. Najlepszy z tych
niepoprawnych kodów nie pokazuje statustu "Bomb" dla osób, które podniosą pakę po jej wcześniejszym upuszczeniu.

Ograniczenia

Żywi terroryści nie będą widzieli statustu Vipa.
Nie jest to błąd kodu, lecz ograniczenie po stronie silnika gry u graczy.

Nie ma możliwości ominięcia tego ograniczenia podobnie, jak żywi CT nie widzą statustu "Bomb".


Starą dyskusję w tym temacie pozostawiam poniżej tego postu jako Archiwalną.

#2 mierzwi

    Banned

  • Zbanowany

Reputacja: 235
Wszechwidzący

  • Postów:651
  • Lokalizacja:Polska
Offline

Napisano 07.07.2011 17:09

Często szukana funkcja, czyli VIP w tabeli.
#include <amxmodx>

#define VIP_FLAG			  ADMIN_LEVEL_A

#define SCOREATTRIB_DEAD		  (1 << 0)
#define SCOREATTRIB_VIP 		(1 << 2)

new g_MsgScoreAttrib = 0;

public plugin_init()
{
	register_plugin("", "", "");
	
	g_MsgScoreAttrib = get_user_msgid("ScoreAttrib");
	
	register_message(g_MsgScoreAttrib, "messageScoreAttrib");
	
	// Add your code here...
}

public messageScoreAttrib(iMsgID, iDest, iReceiver)
{  
	new iPlayer = get_msg_arg_int(1);
	
	if(is_user_connected(iPlayer) && (get_user_flags(iPlayer) & VIP_FLAG))  
		set_msg_arg_int(2, ARG_BYTE, is_user_alive(iPlayer) ? SCOREATTRIB_VIP : SCOREATTRIB_DEAD);
	
}
Pytania, problemy można pisać w temacie.

jeśli masz fejsa i chcesz mi pomóc to wejdź tutaj: Zaproś kumpla by lubił nasz sklep | Facebook

na pewno jakoś C się odwdzięczę!


#3 stepdub

    Profesjonalista

  • Użytkownik

Reputacja: 43
Pomocny

  • Postów:207
  • Lokalizacja:Kobyłka
Offline

Napisano 29.07.2011 10:13

a może spróbować coś takiego? mi teoretycznie albo pokazuje wszystkich (TT i CT) VIP albo nie pokazuje nikogo
#include <amxmodx>
#include <amxmisc>

new g_szVIPMap;

public plugin_init()
{
register_plugin("", "", "");
register_event("ResetHUD", "ResetHUD", "be");

new szMapName[32];
get_mapname(szMapName, 31);

if (containi(szMapName, "as_") > -1) //sprawdza, czy mapa jest typu as_
g_szVIPMap = 1;
}

public ResetHUD(id)
{
set_task(0.5, "VIP", id + 6910);
}

public VIP(TaskID)
{
if (g_szVIPMap)
return PLUGIN_HANDLED; // blokuje plugin na mapach typu as

new id = TaskID - 6910;

if (is_user_admin(id)) //można zamienić na konkretne flagi
{
message_begin(MSG_ALL, get_user_msgid("ScoreAttrib"))
write_byte(id)
write_byte(4)
message_end()
}

return PLUGIN_HANDLED;
}

Użytkownik stepdub edytował ten post 29.07.2011 16:35

  • +
  • -
  • 0

#4 diablix

    emeryt

  • Przyjaciel

Reputacja: 507
Wszechwiedzący

  • Postów:663
  • GG:
  • Steam:steam
  • Imię:Daniel
  • Lokalizacja:Warszawa
Offline

Napisano 31.07.2011 12:22

Moim zdaniem pomysł funfla optymalniejszy;
W Twoim wysyłasz pełną wiadomość a on tylko edytuje argument wiadomości.
  • +
  • -
  • 0

#5 Mores

    Życzliwy

  • Użytkownik

Reputacja: 1
Nowy

  • Postów:39
  • GG:
  • Imię:Szymon
  • Lokalizacja:Chudow
Offline

Napisano 06.01.2012 21:42

Pójdzie tylko w oddzielnym pluginie.
  • +
  • -
  • 1

#6 Misiaczek ;c

    /dev/null

  • Moderator

Reputacja: 1 678
Godlike

  • Postów:2 496
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Halemba
Offline

Napisano 22.01.2012 18:59

Mozna to też tak oczywiście ;) bez 2 define dodatkowych :P

#include <amxmodx>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "MisieQ"

#define VIP ADMIN_IMMUNITY

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)

register_message(get_user_msgid("ScoreAttrib"), "msgScoreAttrib");
}

public msgScoreAttrib( const MsgId, const MsgType, const MsgDest )
{
static id;
id = get_msg_arg_int( 1 );

if( ( get_user_flags( id ) & VIP ) && !get_msg_arg_int( 2 ))
{
set_msg_arg_int( 2, ARG_BYTE, ( 1 << 2 ) );
}
}

  • +
  • -
  • 0

#7 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 553
Godlike

  • Postów:11 976
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 23.01.2012 18:20

Przy kodzie MisieQ nie będzie pokazało że gracz jest nieżywy
  • +
  • -
  • 0

#8 ASu

    Profesjonalista

  • Użytkownik

Reputacja: 129
Zaawansowany

  • Postów:159
  • Imię:Alan
Offline

Napisano 24.01.2012 18:48

A to ? ;P
#include <amxmodx>
#include <cstrike>

#define VIP_FLAG ADMIN_LEVEL_H

#define SCOREATTRIB_NONE     0
#define SCOREATTRIB_DEAD    (1<<0)
#define SCOREATTRIB_BOMB    (1<<1)
#define SCOREATTRIB_VIP     (1<<2)

public plugin_init()
{
    register_plugin("Vip Tabela", "0.1", "Drako")
   
    register_message(get_user_msgid("ScoreAttrib"), "MessageScoreAttrib");   
}

public MessageScoreAttrib(iMsgID, iDest, iReceiver)
{  
    new iPlayer = get_msg_arg_int(1);
    if(get_user_flags(iPlayer) & VIP_FLAG)
    {
        if(is_user_connected(iPlayer))
        {
            if(cs_get_user_team(iPlayer)==CS_TEAM_CT)
            {       
                set_msg_arg_int(2, ARG_BYTE, is_user_alive(iPlayer) ? SCOREATTRIB_VIP : SCOREATTRIB_DEAD);
            }
            else
            {
                set_msg_arg_int(2, ARG_BYTE, is_user_alive(iPlayer) ? SCOREATTRIB_VIP : SCOREATTRIB_BOMB);       
            }
        }
    }
}

  • +
  • -
  • 0

#9 Nakupenda.

    Not yet YODA

  • Użytkownik

Reputacja: 137
Zaawansowany

  • Postów:451
  • Imię:Paweł
  • Lokalizacja:Warszawa
Offline

Napisano 24.01.2012 19:05

co miałeś na celu?

Bedzie pokazywać że vip ma w Terro bombe jak jest martwy?

bez sensu troche
  • +
  • -
  • 0

#10 ASu

    Profesjonalista

  • Użytkownik

Reputacja: 129
Zaawansowany

  • Postów:159
  • Imię:Alan
Offline

Napisano 25.01.2012 00:27

Ja miałem to na serwie i umnie miały obie drużyny status VIP

I Nakupenda. tam jest funkcja jak gracz żyje a nie jak jest martwy.
  • +
  • -
  • 0

#11 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 553
Godlike

  • Postów:11 976
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 25.01.2012 01:41

Drako Nakupenda. ma rację

set_msg_arg_int(2, ARG_BYTE, is_user_alive(iPlayer) ? SCOREATTRIB_VIP : SCOREATTRIB_BOMB);
będzie powodować że kiedy gracz z tt będzie martwy to będzie widać jakby miał bobme ;)
  • +
  • -
  • 0

#12 ogury

    Banned

  • Zbanowany

Reputacja: 43
Pomocny

  • Postów:438
  • Lokalizacja:Internet
Offline

Napisano 25.01.2012 09:19

Ale dlaczego po przeniesieniu vipa na inny serwer przestaje pokazywać status w obu drużynach?

#13 ASu

    Profesjonalista

  • Użytkownik

Reputacja: 129
Zaawansowany

  • Postów:159
  • Imię:Alan
Offline

Napisano 25.01.2012 19:56

Nie wiem u mnie działało.
  • +
  • -
  • 0

#14 dasisdas

    Pomocny

  • Użytkownik

Reputacja: 7
Nowy

  • Postów:58
  • Imię:Sebastian
  • Lokalizacja:Polska
Offline

Napisano 25.01.2012 20:07

A jak to wgrać na serwer?
  • +
  • -
  • 0

#15 messik32

    Życzliwy

  • Użytkownik

Reputacja: 1
Nowy

  • Postów:24
  • GG:
  • Imię:Maciej
  • Lokalizacja:Słubice
Offline

Napisano 24.02.2012 16:12

Można zamiast VIP zrobić PREMIUM ??
  • +
  • -
  • 0

#16 Fili:P

    Godlike

  • Power User

Reputacja: 754
Guru

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

Napisano 24.02.2012 16:56

Nie da sie :]
  • +
  • -
  • 0

#17 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1 344
Godlike

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

Napisano 24.02.2012 18:35

mozna sprawdzić czy zwykla zamiana stringu przez orpheu nie pomoze ale to moglby byc napis max 4 literowy
  • +
  • -
  • 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 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 553
Godlike

  • Postów:11 976
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 24.02.2012 18:44

GoQ to jest ustawiane w plikach gracza
"Cstrike_DEAD"				"Dead"
"Cstrike_VIP"				"VIP"
"Cstrike_BOMB"				"Bomb"

  • +
  • -
  • 0

#19 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1 344
Godlike

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

Napisano 24.02.2012 19:05

no to nawet lepiej :D
  • +
  • -
  • -1
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

#20 ToRRent

    Czempion

  • Power User

Reputacja: 229
Wszechwidzący

  • Postów:861
  • Imię:Łukasz
  • Lokalizacja:Wrocław
Offline

Napisano 24.02.2012 19:13

A nie ma możliwości przechwycenia tych wartości po stronie serwera ? to jakim cudem np. plugin polski_cs przechwytuje wartości mimo że znajduje się po stronie gracza ?
  • +
  • -
  • 0




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

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