Skocz do zawartości

  • Zaloguj korzystając z Facebooka Zaloguj korzystając z Twittera Zaloguj przez Steam Zaloguj poprzez Google      Logowanie »   
  • Rejestracja

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
HideNSeek

problem z vipem

hidenseek

Najlepsza odpowiedź juzekbuzek233, 25.10.2017 15:50

Jeżeli dodaje modele dla vipa to czy coś jeszcze muszę zmieniać oprócz wrzuceniu ich do odpowiedniego folderu?

Skoro: 

public plugin_precache(){
precache_model("models/player/VipCT/VipCT.mdl");
precache_model("models/player/VipTT/VipTT.mdl"); 

No to w cstrike/player/ robie dwa foldery i wrzucam do niego dwa inne modele o zmienionej nazwie na VipCT.mdl

Np. ten model https://gamebanana.com/skins/149786

Mimo to modele nie ulegają zmianie... 

Coś jeszcze powinienem zrobić?

Przejdź do postu


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

#1 juzekbuzek233

    Zaawansowany

  • Użytkownik

Reputacja: 6
Nowy

  • Postów:103
  • Lokalizacja:GRB
Offline

Napisano 16.10.2017 15:11

Witam,

za pomocą generatora vipa stworzyłem podstawowego vipa:

20 dodatkowych hp na starcie,

2 granaty tylko dla TT

dodatkowe hp za kille

prefix przed nickiem.

 

Problem polega na tym, że po wgraniu .amxx i .sma na server w logach serwera występuje problem z tym pluginem. 

Oczywiście .amxx do plugins, a .sma do scripting. 

vip.amxx dopisałem do plugins.ini

 

.amxx z generatora vipa, ale próbowałem także z lokalnego kompilatora.

 

Zapis z logów:

10/16/2017 - 15:36:49: [AMXX] Invalid Plugin (plugin "vip.amxx")

 

i nic więcej nie ma...

 

Ma ktoś jakiś pomysł? Wrzucam .sma w załączniku.

 

Załączone pliki


  • +
  • -
  • 0

#2 wacho

    Pomocny

  • Użytkownik

Reputacja: 15
Początkujący

  • Postów:63
  • GG:
  • Imię:Jakub
Offline

Napisano 16.10.2017 16:50

https://amxx.pl/topi...ilacja-lokalna/

 

Skompiluj lokalnie powinno pomóc :) 


  • +
  • -
  • 0

#3 juzekbuzek233

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 6
Nowy

  • Postów:103
  • Lokalizacja:GRB
Offline

Napisano 16.10.2017 20:48

Przecież napisałem, że tak też zrobiłem i nic to nie zmieniło :/ 


  • +
  • -
  • 0

#4 juzekbuzek233

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 6
Nowy

  • Postów:103
  • Lokalizacja:GRB
Offline

Napisano 17.10.2017 19:01

L 10/17/2017 - 19:28:40: Start of error session.
L 10/17/2017 - 19:28:40: Info (map "kz_longjumps2") (file "addons/amxmodx/logs/error_20171017.log")
L 10/17/2017 - 19:28:40: [AMXX] Invalid Plugin (plugin "vip.amxx")
 
Ma ktoś jakiś pomysł ;) ?
 
 

  • +
  • -
  • 0

#5 juzekbuzek233

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 6
Nowy

  • Postów:103
  • Lokalizacja:GRB
Offline

Napisano 19.10.2017 08:51

Serio nikt nie ma żadnego pomysłu ; / ?


  • +
  • -
  • 0

#6 Toldi

    Wszechpomocny

  • Użytkownik

Reputacja: 61
Pomocny

  • Postów:319
  • Lokalizacja:wies
Offline

Napisano 19.10.2017 09:13

Jaka wersja amxx? Plugin może też być uszkodzony. Próbowałeś zrobić go od nowa?


  • +
  • -
  • 0

#7 aSik

    ✓ Wyimaginowany Jednorożec ✓

  • Power User

Reputacja: 243
Wszechwidzący

  • Postów:966
  • Imię:Robert
  • Lokalizacja:Wrocław
Offline

Napisano 19.10.2017 11:52

Błąd Invalid plugin informuje o tym, że serwer go nie znajduje.

Opcje:

Vip.amxx pojawia się w plugins.ini, ale nie ma go w cstrike/addons/amxmodx/plugins

Odwrotność powyższego, jest w plugins, ale nie pojawia się w plugins.ini

 

A przynajmniej taki był problem, kiedy mi się zapomniało dopisać go do ini ;>


  • +
  • -
  • 0

Nie dołączam do żadnej sieci, nie pomagam z tworzeniem paczek, nie napisze pluginów od zera, za zero.


#8 juzekbuzek233

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 6
Nowy

  • Postów:103
  • Lokalizacja:GRB
Offline

Napisano 19.10.2017 15:25

Jaka wersja amxx? Plugin może też być uszkodzony. Próbowałeś zrobić go od nowa?

Robiłem kilka razy w generatorze. Raz zrobiłem i wgrałem wersje z generatora, następnym razem sam skompilowałem. Nic to nie dało.

Jak mam sprawdzić wersję amxx, bo troche mi się zapomniało :P ?  Chyba, że chodzi  o "AMX Mod X Configuration Fileecho Executing".

 

 

 

Błąd Invalid plugin informuje o tym, że serwer go nie znajduje.

Opcje:

Vip.amxx pojawia się w plugins.ini, ale nie ma go w cstrike/addons/amxmodx/plugins

Odwrotność powyższego, jest w plugins, ale nie pojawia się w plugins.ini

 

A przynajmniej taki był problem, kiedy mi się zapomniało dopisać go do ini ;>

vip.amxx jest w cstrike/addons/amxmodx/plugins

vip.sma jest w cstrike/addons/amxmodx/scripting

 

w plugins.ini równiez jest dopisany:

admin.amxx
admin_sql.amxx
adminchat.amxx
admincmd.amxx
adminhelp.amxx
adminslots.amxx
adminvote.amxx
antiflood.amxx
antyfps.amxx
cmdmenu.amxx
imessage.amxx
karaoke.amxx
mapchooser.amxx
mapsmenu.amxx
menufront.amxx
miscstats.amxx
multilingual.amxx
nextmap.amxx
pausecfg.amxx
plmenu.amxx
pluginmenu.amxx
precache.amxx
restmenu.amxx
roundtime.amxx
scrollmsg.amxx
stats_logging.amxx
statscfg.amxx
statsx.amxx
telemenu.amxx
timeleft.amxx
uq_jumpstats.amxx
uq_jumpstats_tops.amxx
vip.amxx

EDIT:

Usunąłem te pliki i zrobiłem od nowa vipa w generatorze. Pobrałem tylko plik .sma i chciałem skompilować za pomocą https://amxx.pl/sour...ce-kompilator/ 

i wyskakuje: 

Nie udało się skompilować twojego pluginu!
Przeczytaj poniższe błędy:

Wystąpił nieznany błąd (126)

Postanowiłem więc zrobić za pomocą: https://www.sourcemo...t/compiler.php 

tutaj wyskoczyło coś takiego:

Your plugin failed to compile! Read the errors below:
SourcePawn Compiler 1.7.1
Copyright (c) 1997-2006 ITB CompuPhase
Copyright (c) 2004-2014 AlliedModders LLC

/groups/sourcemod/upload_tmp/textD7koAH.sp(0) : fatal error 182: cannot read from file: "/groups/sourcemod/upload_tmp/textD7koAH.sp"

Kurde... wie ktoś o co chodzi? Kilka dni wcześniej jak też zrobiłem w generatorze i oddzielnie skompilowałem to kompilacja wychodziła poprawnie, ale miałem ten błąd w logach. Teraz to nie mogę nawet skompilować :/

 

HELP 


Użytkownik juzekbuzek233 edytował ten post 19.10.2017 15:42

  • +
  • -
  • 0

#9 aSik

    ✓ Wyimaginowany Jednorożec ✓

  • Power User

Reputacja: 243
Wszechwidzący

  • Postów:966
  • Imię:Robert
  • Lokalizacja:Wrocław
Offline

Napisano 19.10.2017 19:04

Próbujesz kompilować plugin amxx w kompilatorze sourcemod...

Skompiluj go lokalnie, to powinno pomóc, jeśli zrobisz to w odpowiedni sposób.


  • +
  • -
  • 1

Nie dołączam do żadnej sieci, nie pomagam z tworzeniem paczek, nie napisze pluginów od zera, za zero.


#10 juzekbuzek233

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 6
Nowy

  • Postów:103
  • Lokalizacja:GRB
Offline

Napisano 19.10.2017 20:00

Wcześniej na tym kompilatorze: https://amxx.pl/kompilator/ wyskakiwało 

Nie udało się skompilować twojego pluginu!
Przeczytaj poniższe błędy:

Wystąpił nieznany błąd (126)

teraz spróbowałem skompilować znowu ten sam plik .sma i już kompilacja się powiodła. Niestety, ale po wgraniu plików na serwer nadal występuje problem w logach...


  • +
  • -
  • 0

#11 juzekbuzek233

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 6
Nowy

  • Postów:103
  • Lokalizacja:GRB
Offline

Napisano 19.10.2017 22:02

Dobra już ogarnąłem to. Teraz jest inny problem. Zrobiłem trochę innego vipa, a mianowicie dodałem także opcje z komendą /vips na czacie oraz statusem VIP w tabeli.

Jednakże przy zmianie kodu .sma aby nie bugowało czatu i normalnie VIPY mogły pisać wyskakuje mi błąd przy kompilacji.

 

509817d318c19.png

 

Kod .sma

#include <amxmodx>
#include <colorchat>
#include <cstrike>
#include <fun>
#include <hamsandwich>

forward amxbans_admin_connect(id);

new Array:g_Array, bool:g_Vip[33];

new const g_Langcmd[][]={"say /vips","say_team /vips","say /vipy","say_team /vipy"};

public plugin_init(){
	register_plugin("VIP Ultimate", "12.3.0.2", "benio101 & speedkill");
	RegisterHam(Ham_Spawn, "player", "SpawnedEventPre", 1);
	register_event("DeathMsg", "DeathMsg", "a");
	register_message(get_user_msgid("ScoreAttrib"), "VipStatus");
	g_Array=ArrayCreate(64,32);
	for(new i;i<sizeof g_Langcmd;i++){
		register_clcmd(g_Langcmd[i], "ShowVips");
	}
	register_message(get_user_msgid("SayText"),"handleSayText");
}
public client_authorized(id){
	if(get_user_flags(id) & 262144 == 262144){
		client_authorized_vip(id);
	}
}
public client_authorized_vip(id){
	g_Vip[id]=true;
	new g_Name[64];
	get_user_name(id,g_Name,charsmax(g_Name));
	
	new g_Size = ArraySize(g_Array);
	new szName[64];
	
	for(new i = 0; i < g_Size; i++){
		ArrayGetString(g_Array, i, szName, charsmax(szName));
		
		if(equal(g_Name, szName)){
			return 0;
		}
	}
	ArrayPushString(g_Array,g_Name);
	
	return PLUGIN_CONTINUE;
}
public client_disconnect(id){
	if(g_Vip[id]){
		client_disconnect_vip(id);
	}
}
public client_disconnect_vip(id){
	g_Vip[id]=false;
	new Name[64];
	get_user_name(id,Name,charsmax(Name));
	
	new g_Size = ArraySize(g_Array);
	new g_Name[64];
	
	for(new i = 0; i < g_Size; i++){
		ArrayGetString(g_Array, i, g_Name, charsmax(g_Name));
		
		if(equal(g_Name,Name)){
			ArrayDeleteItem(g_Array,i);
			break;
		}
	}
}
public SpawnedEventPre(id){
	if(g_Vip[id]){
		if(is_user_alive(id)){
			SpawnedEventPreVip(id);
		}
	}
}
public SpawnedEventPreVip(id){
	set_user_health(id, get_user_health(id)+20);
	if(get_user_team(id)==1){
		new sgnum=(user_has_weapon(id,CSW_SMOKEGRENADE)?cs_get_user_bpammo(id,CSW_SMOKEGRENADE):0);
		give_item(id, "weapon_smokegrenade");
		++sgnum;
		cs_set_user_bpammo(id, CSW_SMOKEGRENADE, 2);
	}
}
public DeathMsg(){
	new killer=read_data(1);
	new victim=read_data(2);
	
	if(is_user_alive(killer) && g_Vip[killer] && get_user_team(killer) != get_user_team(victim)){
		DeathMsgVip(killer,victim,read_data(3));
	}
}
public DeathMsgVip(kid,vid,hs){
	set_user_health(kid, min(get_user_health(kid)+(hs?15:10),120));
}
public VipStatus(){
	new id=get_msg_arg_int(1);
	if(is_user_alive(id) && g_Vip[id]){
		set_msg_arg_int(2, ARG_BYTE, get_msg_arg_int(2)|4);
	}
}
public ShowVips(id){
	new g_Name[64],g_Message[192];
	
	new g_Size=ArraySize(g_Array);
	
	for(new i = 0; i < g_Size; i++){
		ArrayGetString(g_Array, i, g_Name, charsmax(g_Name));
		
		add(g_Message, charsmax(g_Message), g_Name);
		
		if(i == g_Size - 1){
			add(g_Message, charsmax(g_Message), ".");
		}
		else{
			add(g_Message, charsmax(g_Message), ", ");
		}
	}
	ColorChat(id,GREEN,"^x03Vipy ^x04na ^x03serwerze: ^x04%s", g_Message);
	return PLUGIN_CONTINUE;
}
public client_infochanged(id){
	if(g_Vip[id]){
		new szName[64];
		get_user_info(id,"name",szName,charsmax(szName));
		
		new Name[64];
		get_user_name(id,Name,charsmax(Name));
		
		if(!equal(szName,Name)){
			ArrayPushString(g_Array,szName);
			
			new g_Size=ArraySize(g_Array);
			new g_Name[64];
			for(new i = 0; i < g_Size; i++){
				ArrayGetString(g_Array, i, g_Name, charsmax(g_Name));
				
				if(equal(g_Name,Name)){
					ArrayDeleteItem(g_Array,i);
					break;
				}
			}
		}
	}
}
public plugin_end(){
	ArrayDestroy(g_Array);
}
public handleSayText(msgId,msgDest,msgEnt){	

    new id = get_msg_arg_int(1);
    
    if(!is_user_connected(id))
	return PLUGIN_CONTINUE;
    
    new szTmp[192], szTmp2[192];
    get_msg_arg_string(2, szTmp, charsmax(szTmp));
    
    new szPrefix[64] = "^x04[~VIP~]"; // Tutaj zmieniamy prefix VIP'a.
    
    if(!equal(szTmp,"#Cstrike_Chat_All")){
        add(szTmp2, charsmax(szTmp2), "^x01");
        add(szTmp2, charsmax(szTmp2), szPrefix);
        add(szTmp2, charsmax(szTmp2), " ");
        add(szTmp2, charsmax(szTmp2), szTmp);
    }
    else
	{
        new szPlayerName[64];
        get_user_name(id, szPlayerName, charsmax(szPlayerName));
        
        get_msg_arg_string(4, szTmp, charsmax(szTmp));
        set_msg_arg_string(4, "");
    
        add(szTmp2, charsmax(szTmp2), "^x01");
        add(szTmp2, charsmax(szTmp2), szPrefix);
        add(szTmp2, charsmax(szTmp2), "^x03 ");
        add(szTmp2, charsmax(szTmp2), szPlayerName);
        add(szTmp2, charsmax(szTmp2), "^x01 :  ");
        add(szTmp2, charsmax(szTmp2), szTmp)
    }
    
    set_msg_arg_string(2, szTmp2);
    
    return PLUGIN_CONTINUE;
}
public amxbans_admin_connect(id){
	client_authorized(id);
}

Ktoś coś ogarnia co by tu trzeba było zmienić żeby śmigało? Jak coś to przy kompilacji na kompie mi to wywala... 

 

PS. Problem jest jak dodaje komende /vips na czat, przy opcji z wyświetlaniem vipów w motd nie ma żadnych problemów.


Użytkownik juzekbuzek233 edytował ten post 19.10.2017 22:13

  • +
  • -
  • 0

#12 juzekbuzek233

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 6
Nowy

  • Postów:103
  • Lokalizacja:GRB
Offline

Napisano 21.10.2017 14:55

Ktoś coś?

W sumie tamto nie jest największy problem... 

 

W kodzie .sma musiałem zmienić linijkę public handleSayText(msgId,msgDest,msgEnt) bo był błąd s1 s2 na czacie, gdy vipy pisały.

Więc zmieniłem 

public handleSayText(msgId,msgDest,msgEnt){
	new id = get_msg_arg_int(1);
	
	if(is_user_connected(id) && g_Vip[id]){
		new szTmp[256],szTmp2[256];
		get_msg_arg_string(2,szTmp, charsmax(szTmp))
		
		new szPrefix[64] = "^x04[VIP]";
		
		if(!equal(szTmp,"#Cstrike_Chat_All")){
			add(szTmp2,charsmax(szTmp2),szPrefix);
			add(szTmp2,charsmax(szTmp2)," ");
			add(szTmp2,charsmax(szTmp2),szTmp);
		}
		else{
			add(szTmp2,charsmax(szTmp2),szPrefix);
			add(szTmp2,charsmax(szTmp2),"^x03 %s1^x01 :  %s2");
		}
		set_msg_arg_string(2,szTmp2);
	}
	return PLUGIN_CONTINUE;
}

na taki zapis:

public handleSayText(msgId,msgDest,msgEnt){	

    new id = get_msg_arg_int(1);
    
    if(!is_user_connected(id))
	return PLUGIN_CONTINUE;
    
    new szTmp[192], szTmp2[192];
    get_msg_arg_string(2, szTmp, charsmax(szTmp));
    
    new szPrefix[64] = "^x04[~VIP~]"; // Tutaj zmieniamy prefix VIP'a.
    
    if(!equal(szTmp,"#Cstrike_Chat_All")){
        add(szTmp2, charsmax(szTmp2), "^x01");
        add(szTmp2, charsmax(szTmp2), szPrefix);
        add(szTmp2, charsmax(szTmp2), " ");
        add(szTmp2, charsmax(szTmp2), szTmp);
    }
    else
	{
        new szPlayerName[64];
        get_user_name(id, szPlayerName, charsmax(szPlayerName));
        
        get_msg_arg_string(4, szTmp, charsmax(szTmp));
        set_msg_arg_string(4, "");
    
        add(szTmp2, charsmax(szTmp2), "^x01");
        add(szTmp2, charsmax(szTmp2), szPrefix);
        add(szTmp2, charsmax(szTmp2), "^x03 ");
        add(szTmp2, charsmax(szTmp2), szPlayerName);
        add(szTmp2, charsmax(szTmp2), "^x01 :  ");
        add(szTmp2, charsmax(szTmp2), szTmp)
    }
    
    set_msg_arg_string(2, szTmp2);
    
    return PLUGIN_CONTINUE;
}

I teraz faktycznie nie ma już błędu s1 s2, ale pojawił się inny problem. Że każda osoba pisząca na czacie ma prefix VIP przed nickiem, nawet te osoby które nie posiadają tego vipa.

 

Wie ktoś jak to zmienić?


  • +
  • -
  • 0

#13 Toldi

    Wszechpomocny

  • Użytkownik

Reputacja: 61
Pomocny

  • Postów:319
  • Lokalizacja:wies
Offline

Napisano 21.10.2017 15:31

zamień pierwszego ifa na tego.

if(is_user_connected(id) && g_Vip[id]){

Po twojej modyfikacji plugin sprawdzał tylko czy gracz jest połączony a o sprawdzenie czy gracz ma vipa już zapomniałeś :P.

 


  • +
  • -
  • 1

#14 juzekbuzek233

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 6
Nowy

  • Postów:103
  • Lokalizacja:GRB
Offline

Napisano 21.10.2017 15:56

zamień pierwszego ifa na tego.

if(is_user_connected(id) && g_Vip[id]){

Po twojej modyfikacji plugin sprawdzał tylko czy gracz jest połączony a o sprawdzenie czy gracz ma vipa już zapomniałeś :P.

 

W momencie jak zmieniłem 

   if(!is_user_connected(id))

na 

if(is_user_connected(id) && g_Vip[id]){

wywala dziwny błąd przy kompilacji

b001bb3946623.png

 

 

EDIT:

Przy kompilowaniu za pomocą https://amxx.pl/kompilator/wywala coś takiego:

Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright (c) 1997-2013 ITB CompuPhase, AMX Mod X Team

vip.sma(164) : warning 225: unreachable code
vip.sma(164) : warning 217: loose indentation
vip.sma(195) : warning 217: loose indentation
vip.sma(195) : error 029: invalid expression, assumed zero
vip.sma(195) : error 004: function "amxbans_admin_connect" is not implemented
vip.sma(197) : error 001: expected token: "}", but found "-end of file-"

3 Errors.
Could not locate output file vip.amxx (compile failed).


Użytkownik juzekbuzek233 edytował ten post 21.10.2017 16:03

  • +
  • -
  • 0

#15 Toldi

    Wszechpomocny

  • Użytkownik

Reputacja: 61
Pomocny

  • Postów:319
  • Lokalizacja:wies
Offline

Napisano 21.10.2017 19:05

Brak "}". Zamień cały public handleSayText na ten poniżej.

public handleSayText(msgId,msgDest,msgEnt){
    new id = get_msg_arg_int(1);
    
    if(is_user_connected(id) && g_Vip[id]){
        new szTmp[256],szTmp2[256];
        get_msg_arg_string(2,szTmp, charsmax(szTmp))
        
        new szPrefix[64] = "^x04[VIP]";
        
        if(!equal(szTmp,"#Cstrike_Chat_All")){
            add(szTmp2,charsmax(szTmp2),szPrefix);
            add(szTmp2,charsmax(szTmp2)," ");
            add(szTmp2,charsmax(szTmp2),szTmp);
        }
        else{
            add(szTmp2,charsmax(szTmp2),szPrefix);
            add(szTmp2,charsmax(szTmp2),"^x03 %s1^x01 :  %s2");
        }
        set_msg_arg_string(2,szTmp2);
    }
    return PLUGIN_CONTINUE;
}

public amxbans_admin_connect(id) client_authorized(id);

@edit: oczywiście zamiast vip to sformatuj nazwę rangi i wsadź ją do zmiennej szPrefix[64];


Użytkownik Toldi edytował ten post 21.10.2017 19:11

  • +
  • -
  • 1

#16 juzekbuzek233

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 6
Nowy

  • Postów:103
  • Lokalizacja:GRB
Offline

Napisano 21.10.2017 19:19

Brak "}". Zamień cały public handleSayText na ten poniżej.

public handleSayText(msgId,msgDest,msgEnt){
    new id = get_msg_arg_int(1);
    
    if(is_user_connected(id) && g_Vip[id]){
        new szTmp[256],szTmp2[256];
        get_msg_arg_string(2,szTmp, charsmax(szTmp))
        
        new szPrefix[64] = "^x04[VIP]";
        
        if(!equal(szTmp,"#Cstrike_Chat_All")){
            add(szTmp2,charsmax(szTmp2),szPrefix);
            add(szTmp2,charsmax(szTmp2)," ");
            add(szTmp2,charsmax(szTmp2),szTmp);
        }
        else{
            add(szTmp2,charsmax(szTmp2),szPrefix);
            add(szTmp2,charsmax(szTmp2),"^x03 %s1^x01 :  %s2");
        }
        set_msg_arg_string(2,szTmp2);
    }
    return PLUGIN_CONTINUE;
}

public amxbans_admin_connect(id) client_authorized(id);

@edit: oczywiście zamiast vip to sformatuj nazwę rangi i wsadź ją do zmiennej szPrefix[64];

 

Zrobiłem tak jak napisałeś, aktualnie kod vipa wygląda następująco:

#include <amxmodx>
#include <cstrike>
#include <fun>
#include <hamsandwich>

#define g_Buffer 1536

forward amxbans_admin_connect(id);

new Array:g_Array, bool:g_Vip[33];

new const g_Langcmd[][]={"say /vips","say_team /vips","say /vipy","say_team /vipy"};

public plugin_init(){
	register_plugin("VIP Ultimate", "12.3.0.2", "benio101 & speedkill");
	RegisterHam(Ham_Spawn, "player", "SpawnedEventPre", 1);
	register_event("DeathMsg", "DeathMsg", "a");
	register_message(get_user_msgid("ScoreAttrib"), "VipStatus");
	g_Array=ArrayCreate(64,32);
	for(new i;i<sizeof g_Langcmd;i++){
		register_clcmd(g_Langcmd[i], "ShowVips");
	}
	register_message(get_user_msgid("SayText"),"handleSayText");
}
public client_authorized(id){
	if(get_user_flags(id) & 4 == 4){
		client_authorized_vip(id);
	}
}
public client_authorized_vip(id){
	g_Vip[id]=true;
	new g_Name[64];
	get_user_name(id,g_Name,charsmax(g_Name));
	
	new g_Size = ArraySize(g_Array);
	new szName[64];
	
	for(new i = 0; i < g_Size; i++){
		ArrayGetString(g_Array, i, szName, charsmax(szName));
		
		if(equal(g_Name, szName)){
			return 0;
		}
	}
	ArrayPushString(g_Array,g_Name);
	
	return PLUGIN_CONTINUE;
}
public client_disconnect(id){
	if(g_Vip[id]){
		client_disconnect_vip(id);
	}
}
public client_disconnect_vip(id){
	g_Vip[id]=false;
	new Name[64];
	get_user_name(id,Name,charsmax(Name));
	
	new g_Size = ArraySize(g_Array);
	new g_Name[64];
	
	for(new i = 0; i < g_Size; i++){
		ArrayGetString(g_Array, i, g_Name, charsmax(g_Name));
		
		if(equal(g_Name,Name)){
			ArrayDeleteItem(g_Array,i);
			break;
		}
	}
}
public SpawnedEventPre(id){
	if(g_Vip[id]){
		if(is_user_alive(id)){
			SpawnedEventPreVip(id);
		}
	}
}
public SpawnedEventPreVip(id){
	set_user_health(id, get_user_health(id)+20);
	if(get_user_team(id)==1){
		new sgnum=(user_has_weapon(id,CSW_SMOKEGRENADE)?cs_get_user_bpammo(id,CSW_SMOKEGRENADE):0);
		give_item(id, "weapon_smokegrenade");
		++sgnum;
		cs_set_user_bpammo(id, CSW_SMOKEGRENADE, 2);
	}
}
public DeathMsg(){
	new killer=read_data(1);
	new victim=read_data(2);
	
	if(is_user_alive(killer) && g_Vip[killer] && get_user_team(killer) != get_user_team(victim)){
		DeathMsgVip(killer,victim,read_data(3));
	}
}
public DeathMsgVip(kid,vid,hs){
	set_user_health(kid, min(get_user_health(kid)+(hs?15:10),120));
}
public VipStatus(){
	new id=get_msg_arg_int(1);
	if(is_user_alive(id) && g_Vip[id]){
		set_msg_arg_int(2, ARG_BYTE, get_msg_arg_int(2)|4);
	}
}
public ShowVips(id){
	ShowVipsMotd(id);
	return PLUGIN_CONTINUE;
}
public ShowVipsMotd(id){
	new Data[g_Buffer],Len,g_Name[64];
	
	Len = formatex(Data[Len], g_Buffer - Len, "<html><body bgcolor=Black><br>");
	Len += formatex(Data[Len], g_Buffer - Len, "<center><table frame=^"border^" width=^"600^" cellspacing=^"0^" bordercolor=#4A4344 style=^"color:#56A5EC;text-align:center;^">");
	Len += formatex(Data[Len], g_Buffer- Len, "<tr><td><b>#</b></td><td><b>Nick</b></td></td></tr>");
	
	new g_Size=ArraySize(g_Array);
	
	for(new i = 0; i < g_Size; i++){
		ArrayGetString(g_Array, i, g_Name, charsmax(g_Name));
		
		Len += formatex(Data[Len], g_Buffer - Len, "<tr>");
		Len += formatex(Data[Len], g_Buffer - Len, "<td><font color=Red>%d</font></td>", i + 1);
		Len += formatex(Data[Len], g_Buffer - Len, "<td>%s</td>", g_Name);
		Len += formatex(Data[Len], g_Buffer - Len, "</tr>");
	}
	Len += formatex(Data[Len],g_Buffer - Len,"</center></body></html>");
	
	show_motd(id, Data, "Vipy Online");
}
public client_infochanged(id){
	if(g_Vip[id]){
		new szName[64];
		get_user_info(id,"name",szName,charsmax(szName));
		
		new Name[64];
		get_user_name(id,Name,charsmax(Name));
		
		if(!equal(szName,Name)){
			ArrayPushString(g_Array,szName);
			
			new g_Size=ArraySize(g_Array);
			new g_Name[64];
			for(new i = 0; i < g_Size; i++){
				ArrayGetString(g_Array, i, g_Name, charsmax(g_Name));
				
				if(equal(g_Name,Name)){
					ArrayDeleteItem(g_Array,i);
					break;
				}
			}
		}
	}
}
public plugin_end(){
	ArrayDestroy(g_Array);
}
public handleSayText(msgId,msgDest,msgEnt){
    new id = get_msg_arg_int(1);
    
    if(is_user_connected(id) && g_Vip[id]){
        new szTmp[256],szTmp2[256];
        get_msg_arg_string(2,szTmp, charsmax(szTmp))
        
        new szPrefix[64] = "^x04[VIP]";
        
        if(!equal(szTmp,"#Cstrike_Chat_All")){
            add(szTmp2,charsmax(szTmp2),szPrefix);
            add(szTmp2,charsmax(szTmp2)," ");
            add(szTmp2,charsmax(szTmp2),szTmp);
        }
        else{
            add(szTmp2,charsmax(szTmp2),szPrefix);
            add(szTmp2,charsmax(szTmp2),"^x03 %s1^x01 :  %s2");
        }
        set_msg_arg_string(2,szTmp2);
    }
    return PLUGIN_CONTINUE;
}

public amxbans_admin_connect(id) client_authorized(id);
public amxbans_admin_connect(id){
	client_authorized(id);
}

Link: http://www84.zippysh...0DBla/file.html

 

I sytuacja wygląda w ten sposób, że gracz mający VIPA ma prefix VIP przed nickiem, ale problem z tym, że pozostali gracze bez vipa również na czacie mają ten prefix ;/


  • +
  • -
  • 0

#17 Toldi

    Wszechpomocny

  • Użytkownik

Reputacja: 61
Pomocny

  • Postów:319
  • Lokalizacja:wies
Offline

Napisano 22.10.2017 17:41

Sprawdź: http://www24.zippysh...E2EKz/file.html


  • +
  • -
  • 1

#18 juzekbuzek233

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 6
Nowy

  • Postów:103
  • Lokalizacja:GRB
Offline

Napisano 23.10.2017 13:47

 

Teraz jest tak jak powinno być. Dzięki wielkie - łap plusy ;)

 

Mam jeszcze pytanie - orientujesz się może czy da się zmienić coś w kodzie, aby po wpisaniu komendy /vips lista vipów online pojawiała się na czacie, a nie w MOTD.

W generatorze vipa jest do wyboru taka opcja, ale wybierając opcje czatu nie da się skompilować pliku - gdy wybierzemy motd kompilacja przebiega pomyślnie. 


  • +
  • -
  • 0

#19 Toldi

    Wszechpomocny

  • Użytkownik

Reputacja: 61
Pomocny

  • Postów:319
  • Lokalizacja:wies
Offline

Napisano 23.10.2017 14:56

Bo nie masz wgranej biblioteki colorchat.

SMA: http://www98.zippysh...tKFio/file.html


  • +
  • -
  • 1

#20 juzekbuzek233

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 6
Nowy

  • Postów:103
  • Lokalizacja:GRB
Offline

Napisano 23.10.2017 15:51

Faktycznie, masz rację! Jakoś zapomniałem o tym całkiem. 

Zrobiłem tak żeby na czacie wyświetlało i po dodaniu colorchat.inc udało się skompilować.

 

W którym miejscu zmienia się aby wyświetlało to info pod moją komendą na czacie, a nie nad:

fa9091da1a145.png

 

A raczej pownno być najpierw komenda /vips i pod tym wyświetla vipy. 

 

SMA: http://www49.zippysh...AHen4/file.html


  • +
  • -
  • 0





Również z jednym lub większą ilością słów kluczowych: hidenseek

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

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