←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

Dwa prefixy w jednym pluginie

  • +
  • -
Żuk - zdjęcie Żuk 23.01.2021

Mam kod na prefix przed nickiem tutaj z forum

public handleSayText(msgId,msgDest,msgEnt){	

    new id = get_msg_arg_int(1);
    
    if(is_user_connected(id) && g_Vip[id]){  
    
    new szTmp[192], szTmp2[192];
    get_msg_arg_string(2, szTmp, charsmax(szTmp));
    
    new szPrefix[64] = "^x04[VIP]";
    
    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)); //4. argument zawiera treść wysłanej wiadomości
        set_msg_arg_string(4, ""); //Musimy go wyzerować, gdyż gra wykorzysta wiadomość podwójnie co może skutkować crash'em 191+ znaków.
    
        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 od godziny próbuję wykombinować, jak dodać tam drugi prefix dla gracza z flagą A ? W sensie, jeśli gracz ma flagę ADMIN_IMMUNITY oraz jest vipem, to ma prefix ustawiony dla flagi ADMIN_IMMUNITY, bo aktualnie co bym nie robił zawsze mam podwojony prefix lub w ogóle nie dochodzę do kompilacji bo sypie błędami ;s

 

Odpowiedz

  • +
  • -
faken - zdjęcie faken 23.01.2021

public handleSayText(msgId,msgDest,msgEnt){	

    new id = get_msg_arg_int(1);

    if(is_user_connected(id) && get_user_flags(id) & ADMIN_IMMUNITY){  
    
    new szTmp[192], szTmp2[192];
    get_msg_arg_string(2, szTmp, charsmax(szTmp));
    
    new szPrefix[64] = "^x04[Admin]";
    
    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)); //4. argument zawiera treść wysłanej wiadomości
        set_msg_arg_string(4, ""); //Musimy go wyzerować, gdyż gra wykorzysta wiadomość podwójnie co może skutkować crash'em 191+ znaków.
    
        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;
    }		
    
    if(is_user_connected(id) && g_Vip[id]){  
    
    new szTmp[192], szTmp2[192];
    get_msg_arg_string(2, szTmp, charsmax(szTmp));
    
    new szPrefix[64] = "^x04[VIP]";
    
    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)); //4. argument zawiera treść wysłanej wiadomości
        set_msg_arg_string(4, ""); //Musimy go wyzerować, gdyż gra wykorzysta wiadomość podwójnie co może skutkować crash'em 191+ znaków.
    
        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;
}

Spróbuj :)

Odpowiedz

  • +
  • -
Toldi - zdjęcie Toldi 23.01.2021

Spróbuj tego. Nie testowałem bo nie mam teraz czasu ale myślę że zda egzamin.

public handleSayText(msgId,msgDest,msgEnt){	

    new id = get_msg_arg_int(1);
    
    if(is_user_connected(id) && g_Vip[id])
    {  
    
    new szTmp[192], szTmp2[192], szPrefix[64];
    get_msg_arg_string(2, szTmp, charsmax(szTmp));
    
    formatex(szPrefix, charsmax(szPrefix), "^x04%s[VIP]", (get_user_flags(id) & ADMIN_IMMUNITY) ? "[ADMIN] ": "");
    
    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)); //4. argument zawiera treść wysłanej wiadomości
        set_msg_arg_string(4, ""); //Musimy go wyzerować, gdyż gra wykorzysta wiadomość podwójnie co może skutkować crash'em 191+ znaków.
    
        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;
}
Odpowiedz

  • +
  • -
Żuk - zdjęcie Żuk 23.01.2021

Od toldiego nie działa, dwa prefixy są. Od fakena jest ok

Odpowiedz

  • +
  • -
Toldi - zdjęcie Toldi 24.01.2021

Od toldiego nie działa, dwa prefixy są. Od fakena jest ok

Działać działa tyle że na szybkiego sprawdzałem i zrozumiałem że gracz z imunitetem i vipem ma mieć 2 prefixy. Niżej bardziej optymalna kod od tego wyżej.

public handleSayText(msgId,msgDest,msgEnt){	

    new id = get_msg_arg_int(1);
    
    if(is_user_connected(id) && g_Vip[id])
    {  
    
    new szTmp[192], szTmp2[192], szPrefix[64];
    get_msg_arg_string(2, szTmp, charsmax(szTmp));
    
    formatex(szPrefix, charsmax(szPrefix), "^x04%s", (get_user_flags(id) & ADMIN_IMMUNITY) ? "[ADMIN] ": "[VIP]");
    
    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)); //4. argument zawiera treść wysłanej wiadomości
        set_msg_arg_string(4, ""); //Musimy go wyzerować, gdyż gra wykorzysta wiadomość podwójnie co może skutkować crash'em 191+ znaków.
    
        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;
}
Odpowiedz

  • +
  • -
vanillah - zdjęcie vanillah 24.01.2021

sprawdz to 

public handleSayText(msgId,msgDest,msgEnt){
	new id = get_msg_arg_int(1);

	if(!is_user_connected(id))
		return PLUGIN_HANDLED;

	new szTmp[256],szTmp2[256];
	get_msg_arg_string(2,szTmp, charsmax(szTmp))

	new szPrefix[64];
	format(szPrefix, 63, "^x04%s", (get_user_flags(id) & ADMIN_IMMUNITY) ? "[ADMIN] ": (g_Vip[id] ? "[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;
}
Odpowiedz