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
 

KoRrNiK - zdjęcie

KoRrNiK

Rejestracja: 26.12.2017
Aktualnie: Nieaktywny
Poza forum Ostatnio: 16.03.2023 01:03
*****

#773184 [ROZWIĄZANE] Reset nVault / MySQL

Napisane przez KoRrNiK w 27.01.2022 10:15

Jeśli chodzi o samoczynne resetowanie się sql jest to możliwe jeżeli masz źle napisany plugin i usuwa Ci samo dany, spowodowane może być tym, że np. podczas wczytywania danych one nie zostaną wczytane poprawnie i po zmianie mapy nadpisze Ci je wszystkie na DEFAULTOWE wartości czyli na - "0" a jeśli chodzi o nvault miałem kiedyś taki problem gdy było w pliku zapisanych za dużo graczy to wywalało niektórym osobom też zapis jakby plik miał za dużo informacji i nie mógł tego przetworzyć dlatego czasem warto w nvault używać tej funkcji nvault_prune do czyszczenia zapisu ale o wiele bardzie preferuję używanie FVAULT z którym nigdy nie miałem problemu. 

 

Aby zabezpieczyć ten sql to po wczytaniu informacji zrobić np: 

new bool:userLoad[33];

public loadData(...{
	
	// code....
	
	testVar[id] = SQL_ReadResult(query, 0);
	
	// code....
	
	userLoad[id] = true;
	
}

public saveDat(...{
			
	if(!userLoad[id]) return;
	
	// code...
			
}

  • +
  • -
  • 1


#772611 BaseBuilder TurboBB

Napisane przez KoRrNiK w 28.09.2021 18:02

Od dawna nie dawałem żadnego tematu czy jeszcze coś jest zmieniane / dodawane do paczki to postanowiłem napisać ten temat i opublikować wersję: 1.3.8  ^D^

W wersji 1.3.8 naprawiłem drobnego LAGA  który występował od wersji 1.3.3  gdy ktoś dołączał jako druga osoba podczas wywoływania eventu "Game Start"

 

Wszystkie zmiany od wersji 1.3.5 > 1.3.8

 

1.3.8

Spoiler

1.3.7
Spoiler

1.3.6
Spoiler

1.3.5
Spoiler

 

- Najnowszy release: Tutaj

 

Pozdrawiam Cieplutko :)


  • +
  • -
  • 1


#772563 problem lista graczy

Napisane przez KoRrNiK w 19.09.2021 13:14

Teraz tak patrzę to masz źle wypełnione bo pierwszy argument to "%s" czyli name i po nim masz , get_user_userid a drugiego argumentu nie masz wpisanego czyli %d 

I po co pobierasz np steamid jak go nie wykorzystujesz i twoja zmienna "wybrales" odpowiada za wybranego gracza więc jak wykonujesz client_cmd(wybrales, to wykonuje się u niego, a raczej powinieneś ty wykonać tą komendę wypełniając dane danego gracza którego wybrałeś czyli client_cmd(id, ..... , get_user_userid(wybrales);

client_cmd(wybrales, "amx_screen ^"%s^" 5", name, get_user_userid(id));
client_cmd(id, "amx_screen #%d 5", get_user_userid(wybrales)); 

Dla mnie lepszym sposobem jest taki: 


new userVarMenu[33][33];

public menuPlayer(id){
	
	if(!(get_user_flags(id) & ADMIN_BAN)) return;
	
	new menu = menu_create("Lista Graczy", "menuPlayer_2");
	
	new szName[33];
	
	for(new i = 1, x = 0; i < 33; i ++){
		
		if(!is_user_connected(i) || is_user_hltv(i) || is_user_bot(i)) continue;
		
		get_user_name(i, szName, sizeof(szName) - 1 );
		
		menu_additem(menu, szName);
		
		userVarMenu[id][x++] = i;
	}
	
	menu_display(id, menu, 0);
	
}

public menuPlayer_2(id, menu, item){
	if(item != MENU_EXIT){
		
		new target = userVarMenu[id][item];

		client_cmd(id, "amx_screen #%d 5", get_user_userid(target));
		
	} else menu_destroy(menu);
}

Gdy robisz pętle na graczach to rób od i = 1 ponieważ 0 = host i zmienną od nazwy rób [33] bo to maksymalny rozmiar bufora do przechowywania nazwy więc nie ma potrzeby robić na 64 .  

 

Oraz gdy chcesz banować przez ID to musisz przed nim wpisać jeszcze # czyli np amx_screen #1 5 


  • +
  • -
  • 1


#772441 Odświeżanie menu na ostatnio wyświetlanej stronie

Napisane przez KoRrNiK w 18.08.2021 15:59

Trzymaj 
 

new pageMenu[33];

public menuTest(id){
	
	new menu = menu_create("Test", "menuTest_2");
	
	for(new i = 0; i < 15; i ++){
		menu_additem(menu, fmt("%d", i));
	}
	
	menu_display(id, menu, pageMenu[id]/7);
	
}

public menuTest_2(id, menu, item){
	
	pageMenu[id] = ( item == MENU_EXIT ) ? 0 : item;
	
	if( item != MENU_EXIT ){
	
		client_print(id, 3, "%d", pageMenu[id]);
		menuTest(id);

	} else menu_destroy(menu);
	
}	

Najłatwiej to zrobić w taki sposób. Pobierasz do zmiennej aktualny przycisk w który kliknąłeś i dzielisz go na 7 aby wyliczyć na której stronie aktualnie przebywałeś aby odpalić ją ponownie. 


  • +
  • -
  • 1


#772430 Błąd error 001: expected token: "}", but found ";"

Napisane przez KoRrNiK w 15.08.2021 14:38

new static PrecacheModels[][] = {
	"models/lomDonaciakk/p_lomDonaciakk.mdl", 
	"models/lomDonaciakk/v_lomDonaciakk.mdl"
};

  • +
  • -
  • 1


#772420 glow weapons

Napisane przez KoRrNiK w 13.08.2021 14:42

No to musisz zmienić sobie tylko AMMO > CLIP czyli

 

Linijka 11 

new maxAmmo[CSW_P90 + 3]= { -2, 52, 0, 90, 1, 32, 1, 100, 90, 1, 120, 100, 100, 90, 90, 90, 100, 120, 30, 120, 200, 32, 90, 120, 90, 2, 35, 90, 90, 0, 100, -1, -1 };

na 

new maxClip[CSW_P90 + 1]= {0, 13, 0, 10, 0, 7, 0, 30, 30, 0, 15, 20, 25, 30, 35, 25, 12, 20, 10, 30, 100, 8, 30, 30, 20, 0, 7, 30, 30, 0, 50};

W linijce 28

static ammo, color[3], percent, weapon;

zmieniasz ammo na clip

static clip, color[3], percent, weapon;

W linijce 30 musisz zamienić parametr od ammo na clip 

weapon = get_user_weapon( id, _, ammo );

na 

weapon = get_user_weapon( id, clip );

No i ostatnia zmiana w linijce 31

percent = floatround(float(ammo) / float(maxAmmo[weapon]) * 100.0);

na obliczanie procentów amunicji która znajduje się aktualnie w magazynku 

percent = floatround(float(clip) / float(maxClip[weapon]) * 100.0);

  • +
  • -
  • 3


#772412 [ROZWIĄZANE] Problem z przekompilowaniem vipów

Napisane przez KoRrNiK w 11.08.2021 16:09

Trzymaj kompilatory

Załączone pliki


  • +
  • -
  • 1


#772410 glow weapons

Napisane przez KoRrNiK w 11.08.2021 16:00

Jeśli w broni nie ma amunicji to broń będzie miała na sobie powłokę w kolorze czerwonym, na pomarańczowo gdy jest połowa magazynka a więcej na zielono.

#include <amxmodx>
#include <fakemeta_util>

#pragma semicolon 	1
#define isPlayer(%1) 	((1 <= %1 && %1 < 33))

new const PLUGIN[] 	= 	"xyz";
new const VERSION[] 	= 	"v1.0";
new const AUTHOR[] 	= 	"KoRrNiK - amxx.pl/user/69614-korrnik/";

new maxAmmo[CSW_P90 + 3]= { -2, 52, 0, 90, 1, 32, 1, 100, 90, 1, 120, 100, 100, 90, 90, 90, 100, 120, 30, 120, 200, 32, 90, 120, 90, 2, 35, 90, 90, 0, 100, -1, -1 };

public plugin_init(){

	register_plugin(PLUGIN, VERSION, AUTHOR);
	
	register_forward(FM_SetModel, "fw_SetModel", 0);
}

public fw_SetModel(ent){
	
	if(!pev_valid(ent)) return FMRES_IGNORED;
	
	static id; id = pev(ent,pev_owner);
	
	if(!isPlayer(id)) return FMRES_IGNORED;
	
	static ammo, color[3], percent, weapon;
	
	weapon = get_user_weapon( id, _, ammo );
	percent = floatround(float(ammo) / float(maxAmmo[weapon]) * 100.0);

	if(percent == 0){
		color[0] = 255; color[1] = 000; color[2] = 000;
	} else if(percent <= 50){
		color[0] = 255; color[1] = 160; color[2] = 000;
	} else {
		color[0] = 000; color[1] = 255; color[2] = 000;
	}
	
	fm_set_rendering(ent,kRenderFxGlowShell, color[0], color[1], color[2], kRenderNormal, 15);
	
	return FMRES_IGNORED;
}

  • +
  • -
  • 1


#772253 COD Rynek

Napisane przez KoRrNiK w 17.07.2021 18:03

Musisz zmienić to

public Wystawienie(id)
{
      new szIle[5], ile;

na

public Wystawienie(id)
{
      new szIle[6], ile;

  • +
  • -
  • 1


#772078 [ROZWIĄZANE] Skyboxy od czasu do czasu

Napisane przez KoRrNiK w 21.06.2021 13:47

Trzymaj powinno działać. 

#pragma semicolon 	1

#include <amxmodx>

new const PLUGIN[] 	= 	"Skybox from time";
new const VERSION[] 	= 	"v1.0";
new const AUTHOR[] 	= 	"KoRrNiK - amxx.pl/user/69614-korrnik/";

enum _:skyEnum { SKY_REAL = 0, SKY_ARCHIPELAGO, SKY_MILKWORD };

new const skyWalls[][] = { "up","dn","ft","bk","lf","rt" };
new const skyName[skyEnum][] = { "real", "archipelago", "MilkWorld" };

public plugin_precache(){
	
	register_plugin(
		PLUGIN,
		VERSION,
		AUTHOR
	);

	new hour = 0, setSky = SKY_REAL;
	new bool:foundSky = true;
	new gText[33]; 
	
	time(hour);
	
	if(hour >= 7 && hour < 15) setSky = SKY_REAL;
	else if(hour >= 15 && hour < 21) setSky = SKY_ARCHIPELAGO;
	else setSky = SKY_MILKWORD;
	
	for(new i = 0; i < sizeof(skyWalls); ++i){
		
		format(gText, sizeof(gText) - 1, "gfx/env/%s%s.tga", skyName[setSky], skyWalls[i]);

		if(file_exists(gText)) precache_generic(gText);
		else{
			log_amx("Nie znaleziono pliku: '%s'", gText);
			foundSky = false;
			break;
		}
	}
	
	if(foundSky) set_cvar_string("sv_skyname", skyName[setSky]);

}

Oraz nie dajesz tych skyboxow do \sprites tylko do \gfx\env


  • +
  • -
  • 2


#771979 Modele CS:GO MOD

Napisane przez KoRrNiK w 03.06.2021 11:47

Trzymaj: https://github.com/T.../cstrike/models

W paczce ozona modele działają na submodelach czyli: w jednym modelu może znajdować się max. 40 tekstur skinów. 

I pod tym linkiem masz wszystkie modele ze skinami i chyba tam jest ~1400 skinów. 


  • +
  • -
  • 1


#771921 Ściana blokująca w jedną stronę

Napisane przez KoRrNiK w 25.05.2021 20:54

Możesz spróbować to zrobić w taki sposób ale nie obiecuję, że będzie działał.

 

Dodajesz dwa eventy

register_forward(FM_CmdStart, 	   "fw_CmdStart",		0);
register_forward(FM_AddToFullPack, "fw_addtofullpack", 		1);

i zrobić np. 

public fw_CmdStart( id, uc_handle, randseed ){
	
	if( !is_user_alive(id) || !is_user_connected(id) || is_user_hltv(id) )
		return FMRES_IGNORED;
	
	floorTouching(id);
	
	return FMRES_IGNORED;
}

I w tym floorTouching sprawdzać czy stoi na danym obiekcie.

new ground = pev(id, pev_groundentity);

+ sprawdzasz classname obiektu

new szClass[9];
pev(ground, pev_classname, szClass, sizeof(szClass) - 1 );

No i później poprzez taki argument sprawdzasz czy wszystko się zgadza: 

ground != 0 && ( pev(id, pev_flags) & FL_ONGROUND ) && equal(szClass, "xyz")

i jeśli stoisz na tym obiekcie zmieniasz jakąś zmienną na true a jeśli nie to na false;

 

I teraz używasz addtofullpack

public fw_addtofullpack( es, e, ent, host, host_flags, player, p_set ){

poprzez classname oraz czy tamta twoja zmienna jest na true i jeśli tak to zmieniasz jego pozycję czy tam solid to musisz sprawdzić  " ES_Solid " " ES_Origin "

 

 


  • +
  • -
  • 3


#771760 [ROZWIĄZANE] Odradzanie podczas rozgrzewki

Napisane przez KoRrNiK w 03.05.2021 13:42

To sprawdź czy działa :)


  • +
  • -
  • 1


#771757 [ROZWIĄZANE] Odradzanie podczas rozgrzewki

Napisane przez KoRrNiK w 03.05.2021 07:30

Na samej górze dodaj bibliotekę hamsandwich

#include <hamsandwich>

W plugin_init musisz zarejestrować event Ham_Killed

RegisterHam(Ham_Killed, "player", "ham_Killed", true);

Oraz na samym dole dodaj sobie funkcję odpowiadającą za zginięcie + respawn która wykonuje się po 0.5 sekundy od zginięcia, możesz to sobie zmienić set_task(0.5,

public ham_Killed(id){

	if(!is_user_connected(id) || get_user_team(id) == 3 || get_user_team(id) == 0 || is_user_alive(id)) return HAM_IGNORED;
	if(!noze) return HAM_IGNORED;
	
	set_task(0.5, "spawnPlayer", id);
	
	return HAM_IGNORED;
}
public spawnPlayer(id){
	if(!is_user_connected(id) || get_user_team(id) == 3 || get_user_team(id) == 0 || is_user_alive(id)) return;
	if(!noze) return;
	
	ExecuteHamB(Ham_CS_RoundRespawn, id);
}

  • +
  • -
  • 2


#771706 Prosba o Wytlumaczenie

Napisane przez KoRrNiK w 26.04.2021 21:46

Nie jestem pewien czy o to Ci chodziło dokładnie ale na szybko coś takiego napisałem więc możesz przekopiować z tego kodu.

#include <amxmodx>

#if !defined client_print_color
	#error THIS VERSION IS NOT SUPPORTED! PLEASE USE AMXX 1.8.3 OR 1.9!
#endif

#pragma semicolon 	1

new const PLUGIN[] 		= 	"Hud Settings";
new const VERSION[] 		= 	"v1.0";
new const AUTHOR[] 		= 	"KoRrNiK - amxx.pl/user/69614-korrnik/";

enum _:enumHuds { COLOR_RED, COLOR_GREEN, COLOR_BLUE, bool:HUD_DISABLE };
new userHud[33][enumHuds];

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR);
	
	register_clcmd("say /hud", "menuHudSettings");
}

public menuHudSettings(id){
	
	if(!is_user_connected(id)) return;
	
	new menu = menu_create("Ustawienia HUD", "menuHudSettings_2");
	
	menu_additem(menu, fmt("Hud: %s^n", userHud[id][HUD_DISABLE] ? "\yWlaczony" : "\dWylaczony"));
	
	menu_additem(menu, fmt("Kolor Czerwony:\r %d", userHud[id][COLOR_RED]));
	menu_additem(menu, fmt("Kolor Zielony:\r %d", userHud[id][COLOR_GREEN]));
	menu_additem(menu, fmt("Kolor Niebieski:\r %d", userHud[id][COLOR_BLUE]));
	
	menu_display(id, menu, 0);
		
}

public menuHudSettings_2(id, menu, item){
	if(item != MENU_EXIT){
		switch(item){
			case 0:{
				userHud[id][HUD_DISABLE] =! userHud[id][HUD_DISABLE];
				client_print_color(id, id, "^4[*]^1 Hud zostal:^3 %s", userHud[id][HUD_DISABLE] ? "Wlaczony" : "Wylaczony");
			}
			case 1: if ((userHud[id][COLOR_RED] += 15) > 255) userHud[id][COLOR_RED] = 0;
			case 2: if ((userHud[id][COLOR_GREEN] += 15) > 255) userHud[id][COLOR_GREEN] = 0;
			case 3: if ((userHud[id][COLOR_BLUE] += 15) > 255) userHud[id][COLOR_BLUE] = 0;
			
		}
		menuHudSettings(id);
	} else menu_destroy(menu);
}

  • +
  • -
  • 1