Jump to content

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

Posted Image Posted Image

Guest Message by DevFuse
 

.:MiSzCzU:.'s Photo

.:MiSzCzU:.

Rejestracja: 13.08.2013
Aktualnie: Nieaktywny
Poza forum Ostatnio: 10.05.2014 14:36
-----

#634570 Czy da się stworzyć klasy bb za monety z ExpMod'a?

Posted by VertekS on 25.04.2014 12:56

Da się, jak najbardziej - trzeba przerobić klasy zombie basebuildera. Otwierasz plik sma danej klasy, w kodzie definiujesz koszt klasy w monetach ExpModa. W momencie, gdy gracz wciska klawisz wybierając klasę, sprawdzasz, czy gracz ma odpowiednią ilość monet na zakup klasy. Jeśli tak, to odblokowujesz mu klasę. Dodatkowo, trzeba przechowywać gdzieś dane na temat tego, czy grasz już kupił klasę, czy nie - najprościej będzie zrobić taki zapis na jedną mapę. Jeśli chciałbyś na zawsze, to trzeba zainteresować się zapisem na nVault bądź do bazy SQL.

Z levelem jest prościej - przy wybieraniu klasy zombie sprawdzasz odpowiednimi funkcjami ExpModa, czy gracz ma odpowiedni poziom. Jeśli tak, to umożliwiasz wzięcie klasy. 

Funkcje udostępnione przez expmod: http://amxx.pl/dokum...cja/s101/expmod


  • +
  • -
  • 1


#629068 Paczka Surf By RevengeST ExpMod 401LvL

Posted by RevengeST15 on 29.03.2014 22:32

opis

Paczka mojego wykonania do AmxModX 1.8.2 Windows zwierająca pluginy umilające gre oraz wciągające w nią :)

Nie posiada żadnym reklam.

Za każdy zgłoszony błąd/bug w paczce daję +

 

 

inne informacje

Pluginy:

surf.amxx                           /Rekordy
unlimited_money.amxx                /Daje nam full kasy
bunnyhop.amxx                       /BH
kontakt.amxx                        /Motd z kontaktem
ip.amxx                             /Pokazuje IP graczy
wymuszanie_interpu.amxx             /Jak w nazwie
spawn_protection_pl.amxx            /Ochrona przy respawnie
ad_manager.amxx                     /Reklamy w say'u
ExpMod.amxx                         /ExpMod Edited By RevengeST 401lvl
antyreklama.amxx                    /Blokuje adresy ip i strony
no_fall_death.amxx                  /Nie zabija po upadku na ziemie
bullet_damage.amxx                  /Pokazuje obrażenia
Mariogodmode.amxx                   /Nie można się zabijać w mario(strefie kupowania)
NoEdgeDamage.amxx                   /Po upadku na krawędź surfa nie zabija

cvary

amx_cvar sv_airaccelerate 1000
amx_cvar mp_timelimit 25
amx_cvar mp_buytime 999

amx_maxmoney 99999
amx_startmoney 99999

bh_enabled 1
bh_autojump 1
bh_showusage 0

kontakt_on 1

nfd_plugin 1

amx_reklama_dozwolona "forumserwera.pl" //Nie wywala za reklame przy tym adresie

sv_sp 1
sv_sptime 5
sv_spmessage 1
sv_spshellthick 25

amx_kick_r1 "Kampisz"
amx_kick_r2 "AFK"
amx_kick_r3 "Kultura"
amx_kick_r4 "Zmien nick"
amx_kick_r5 "Ogarnij Ping"

amx_minibans_forum "http://google.pl" // okresla forum na ktorym mozna zlozyc zazalenie
amx_minibans_hudmsg "1" // okresla czy pokazywac zielony napis na hud
amx_minibans_moreinfo "0" // dla developerow, loguje wiecej informacji
amx_minibans_logs "1" // wlacza / wylacza logi
amx_minibans_logstype "1" // rodzaj logow, 1 - loguje w logach amxx, 2 - w oddzielnym pliku
amx_minibans_kickdelay "5.0" // czas, po jakim od otrzymaniu bana gracz zostanie wykopany
amx_minibans_bantype "0" // na co banować graczy? 0 - wykryj automatycznie
amx_minibans_bantimes "0" "30" "60" "10080"
amx_minibans_reason "Czitujesz"
amx_minibans_reason "Obrazasz"
amx_minibans_reason "Kultura"
amx_minibans_reason "Wysoki Ping"
amx_minibans_reason "Reklama"


Bullet_Damage_Mode 1
;0 = Zawsze pokazuj hud
;1 = pokazuj Hud tylko do ograniczonej odległości między atakujący a obrywającym (cvar ponizej)
Jeżeli przeczytacie poniższy cvar to zrozumiecie

Bullet_Damage_Distance 1
;Działa tylko gdy bullet_damage_mode jest na 1
;- kiedy atakujący i obrywający jest max w X dystansie pokazuje HUD (def. 600)

Bullet_Damage_ShowWalls 1
;- 0 : wyłączone (domyślnie)
;- 1 : pokazuj obrażenia przez ścianę .

Bullet_Show_Spec 1
;- 0 : Wyłączone
;- 1 : Pokazuje obrażenia kiedy patrzysz na kogoś na specie.

Bullet_Hs_Mode 1
;- 0 : Wyłączone
;- 1 : Zawsze pokazuj Director Hud Message kiedy jest HeadShot
;- 2 : Pokazuj HEADSHOT (napis) dla Atakującego i Obrywającego

Color_RGB_Victim : 25000000
;( DEFAULT = 255000000 )
;kolor obrażeń, który będzie widział obrywający, kolor ustalamy w RGB [Nasycenie czerwonego od 0 do 255, zielonego 0-255 oraz; ;niebieskiego 0-255]
.

Color_RGB_Attacker 000255000
;( DEFAULT = 000255000 )
;Kolor obrażeń atakującego, kolor ustalamy w RGB (tak jak wyżej)

Color_RGB_Ourself_Teammate 255102021
( DEFAULT = 255102021 )
;Kolor obrażeń jeśli sami siebie ranimy, kolor ustalamy w RGB (tak jak wyżej)

;13 sierpnia 2011 - Cvary po aktualizacji

Bullet_Text_Mode 1
;typ textu
; 0 : DIRECTOR HUD MESSAGE SIZE  //(Director HUD to samo co HUD tylko ma większą czcionke [Polecam!])
; 1 : HUD  // Napis HUD



Bullet_Show_Mode 1
;( DEFAULT = Arch of Circle [3])
;Jak obrazenia mają być pokazywane?
;Niżej masz zdjęcia jak co wygląda.
;0 - Circle (HUD/DHUD robi koło wokół celownika)
;1 - Vertival (HUD/DHUD pokazywany wzdłuż ekranu obok celownika)
;2 - Horizontal (HUD/DHUD pokazywany jest na dole ekranu)
;3 - Arch of circle (HUD/DHUD robi łuk z boku ekranu)

instalacja.png

 

Poprostu wrzuć paczkę a modele do models/NoweBronie/

 

Modele wszystkich broni prócz auto-kamp , bez flesza i smoke.

 

 

download

 

http://www66.zippysh...65189/file.html

 

Modele: http://www40.zippysh...60315/file.html

 

 

 

 




#311745 AWPMod by Sebul v0.2a

Posted by sebul on 22.10.2011 11:41

opis
Pomysł zaczerpnięty z tego tematu -> Lvl AWP ONLY - AMXX.pl: Support AMX Mod X
Nie jest to jakiś wymyślny mod, nawet sama nazwa jest tylko po to, aby była, ale zawsze się komuś przyda, a na pewno jednej osobie ^^

Mod (a raczej mini mod ^^) polega na tym, że zdobywa się kolejno poziomy (tak jak spora część modów :D), aż do 30 i za każdy poziom dostaje się 2 punkty do rozdania w życie, albo w dodatkowe obrażenia, które są zależne od normalnych obrażeń. Maksymalnie można rozdać po 15 punktów w każdą statystykę i domyślnie przy maksymalnej wartości życia dostaje się 30 hp, a przy maksymalnej wartości dodatkowych obrażeń - ok. 30-35% większych obrażeń. Exp, lvl i staty automatycznie zapisują się na nick do pliku vault. Dodana została blokada, że dopiero od dwóch graczy na serwerze dostaje się exp. Exp można dostać za fraga oraz za wygraną rundę.

Changelog:
Spoiler


screenshot
de_aztec0002.png de_aztec0001.png

cvary
awp_exp_bonus "8" // exp za fraga
awp_exp_bonus2 "2" // exp za wygraną rundę, 0 - wył
awp_limit_poziomu "30" // max poziom
awp_proporcja_poziomu "50" // im większa wartość tym dłużej wbija się kolejne poziomy

komendy
say /gracze // wyświetla w motd aktualnie grających graczy na serwerze
say /staty // wyświetla nasze staty
say /exp // pokazuje nam ile mamy expa oraz ile go brakuje do następnego poziomu
say /menu // wyświetla menu moda
say /komendy // wyświetla komendy moda
say /reset // resetuje nasze staty

instalacja
Standardowa.

download
Poprzednia wersja: Attached File  AWPMod_by_Sebul.sma   17.95KB  245 downloads
  AWPMod_by_Sebul.amxx

Attached Files


  • +
  • -
  • 34


#624862 Błędy przy kompilacji pluginu

Posted by Albertd on 11.03.2014 18:10

 
/* Plugin generated by AMXX-Studio */

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

#define PLUGIN "BB_Help"
#define VERSION "1.0"
#define AUTHOR ".:MiSzCzU:."


public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /help","bb_help")
}

public bb_help(id) {
if(!is_user_alive(id)){
return PLUGIN_HANDLED
}
if(get_user_team(id)==2){
set_user_rendering(id, kRenderFxGlowShell, 0, 255, 0, kRenderNormal, 20);
new name[ 33 ]
get_user_name( id, name, 32 )
for( new i = 1 ; i<= get_maxplayers(); i ++ )
if( has_flag( i, "a" ) )
client_print( i, print_chat, "Ktos potrzebuje pomocy" )
}
return PLUGIN_HANDLED
}

  • +
  • -
  • 1


#622071 Poszukuję pluginów na BaseBuilder.

Posted by wezmnienozem on 02.03.2014 21:59

Proszę :)

1. http://amxx.pl/topic/1311-jetpack/

2. http://amxx.pl/topic...-v653-14022011/

3. Nie wiem czy jest coś takiego szczerze mówiąc ale jeśli znajdę dodam :)

4. http://amxx.pl/topic...-zapis-na-nick/


  • +
  • -
  • 1


#611187 Prośba o dodanie multijumpa.

Posted by xWangan on 30.01.2014 20:51

Sprawdz to:

#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <hamsandwich>
#include <cstrike>
#include <fakemeta>
#include <xs>
#include <engine>

#define FLAG ADMIN_LEVEL_H

new const VIP[] = "DeathRunVip"
new const VIP_MODEL[] = "models/player/DeathRunVip/DeathRunVip.mdl"

new const MENU_POPUP[] = "misc/DeathRunVip/vip_menu_popup.wav"
new const MENU_OK[] = "misc/DeathRunVip/vip_menu_ok.wav"
new const VIP_CONNECT[] = "misc/DeathRunVip/vip_connect.wav"

#define TASKID_SHOWHUD	2931
#define TASKID_MODEL		3810 

new player_model[33][32]
new Float: g_counter
new bool: g_model[33]
new bool:g_Vip[33], skoki[33]
new g_hudsync
new cvar_gravity
new cvar_speed
new SayTxT

new gCylinderSprite;

public plugin_precache()
{
	precache_model(VIP_MODEL)
        precache_sound(VIP_CONNECT)

	precache_sound(MENU_POPUP)
	precache_sound(MENU_OK)

	gCylinderSprite = precache_model( "sprites/shockwave.spr" );
}

public plugin_init()
{
	register_plugin("Deathrun V.I.P", "1.0", "DoviuX")

	cvar_gravity = register_cvar("dr_vip_gravity", "500")
	cvar_speed = register_cvar("dr_vip_speed", "500")

	RegisterHam(Ham_Spawn, "player", "bacon_spawn", 1)
	register_forward(FM_SetClientKeyValue, "fw_SetClientKeyValue")
	register_forward(FM_ClientUserInfoChanged, "fw_ClientUserInfoChanged")
	register_forward(FM_CmdStart, "CmdStartPre");
	RegisterHam(Ham_Spawn, "player", "SpawnedEventPre", 1);
	register_message(get_user_msgid("SayText"),"handleSayText");

	g_hudsync = CreateHudSyncObj()
	SayTxT = get_user_msgid("SayText");
}

public client_connect(client)
{
	if(get_user_flags(client) & FLAG)
	{
		client_cmd(client, "spk %s", VIP_CONNECT)

    		new name[32];
    		get_user_name(client, name, 31);
        	set_hudmessage( 0, 255, 0, -1.0, 0.29, 0, 6.0, 12.0 );
        	show_hudmessage( 0, "Vip %s is connecting to the server!.", name);
	}
}

public bacon_spawn(id)
{
    if (!is_user_alive(id))
        return
    
    static CsTeams: team ; team = cs_get_user_team(id)
    
    if (team == CS_TEAM_T && (get_user_flags(id) & FLAG))
    {   
	set_task(2.0, "T_menu", id)

    	new iOrigin[ 3 ];
    	get_user_origin( id, iOrigin );

    	Create_BeamCylinder( iOrigin, 120, gCylinderSprite, 0, 0, 6, 16, 0, random( 0 ), random( 255 ), random( 0 ), 255, 0 );
    	Create_BeamCylinder( iOrigin, 120, gCylinderSprite, 0, 0, 6, 16, 0, random( 0 ), random( 255 ), random( 0 ), 255, 0 );
    	Create_BeamCylinder( iOrigin, 120, gCylinderSprite, 0, 0, 6, 16, 0, random( 0 ), random( 255 ), random( 0 ), 255, 0 );

	copy(player_model[id], 31, VIP)
		
	new currentmodel[32];
	fm_get_user_model(id, currentmodel, sizeof currentmodel - 1);
		
	if(!equal(currentmodel, player_model[id]))
	{
		Task_Model(id + TASKID_MODEL)
		g_counter += 0.1;
	}

	if(!task_exists(TASKID_SHOWHUD + id))
	   set_task(0.2, "Task_ShowHUD", TASKID_SHOWHUD + id)

	set_user_rendering(id,kRenderFxGlowShell,255,0,0,kRenderNormal,25) 
    }
    else if (team == CS_TEAM_CT && (get_user_flags(id) & FLAG))
    {
	set_task(2.0, "CT_menu", id)

    	new iOrigin[ 3 ];
    	get_user_origin( id, iOrigin );

    	Create_BeamCylinder( iOrigin, 120, gCylinderSprite, 0, 0, 6, 16, 0, random( 0 ), random( 255 ), random( 0 ), 255, 0 );
    	Create_BeamCylinder( iOrigin, 120, gCylinderSprite, 0, 0, 6, 16, 0, random( 0 ), random( 255 ), random( 0 ), 255, 0 );
    	Create_BeamCylinder( iOrigin, 120, gCylinderSprite, 0, 0, 6, 16, 0, random( 0 ), random( 255 ), random( 0 ), 255, 0 );

	copy(player_model[id], 31, VIP)

	strip_user_weapons(id)
	give_item(id, "weapon_knife")
		
	new currentmodel[32];
	fm_get_user_model(id, currentmodel, sizeof currentmodel - 1);
		
	if(!equal(currentmodel, player_model[id]))
	{
		Task_Model(id + TASKID_MODEL)
		g_counter += 0.1;
	}

	if(!task_exists(TASKID_SHOWHUD + id))
	   set_task(0.2, "Task_ShowHUD", TASKID_SHOWHUD + id)

	set_user_rendering(id,kRenderFxGlowShell,255,0,0,kRenderNormal,25) 
    }
}

public T_menu(id)
{
	if(!is_user_alive(id))
	   return PLUGIN_HANDLED

	client_cmd(id, "spk %s", MENU_POPUP)
		
    	new gmenu = menu_create("\y~::*V.I.P Menu*::~" , "Vip_Handler");
    	menu_additem(gmenu ,"\r255 \wHealth", "1" , 0);
    	menu_additem(gmenu ,"\r255 \wArmor", "2" , 0);
    	menu_additem(gmenu ,"\wGravity", "3" , 0);
    	menu_additem(gmenu ,"\wSpeed", "4" , 0);
    	menu_additem(gmenu ,"\wDeagle with \r2 ammo", "5" , 0);
    	menu_additem(gmenu ,"\wHegrenade", "6" , 0);
    	menu_additem(gmenu ,"\wNightVision (\rFor dark maps\w)", "7" , 0);
 
    	menu_setprop(gmenu , MPROP_EXIT , MEXIT_ALL);
 
    	menu_display(id , gmenu , 0);

	return PLUGIN_CONTINUE
}

public CT_menu(id)
{
	if(!is_user_alive(id))
	   return PLUGIN_HANDLED
		
	client_cmd(id, "spk %s", MENU_POPUP)

    	new gmenu = menu_create("\y~::*V.I.P Menu*::~" , "VipCt_Handler");
    	menu_additem(gmenu ,"\r255 \wHealth", "1" , 0);
    	menu_additem(gmenu ,"\r255 \wArmor", "2" , 0);
    	menu_additem(gmenu ,"\wGravity", "3" , 0);
    	menu_additem(gmenu ,"\wSpeed", "4" , 0);
    	menu_additem(gmenu ,"\wHegrenade", "5" , 0);
    	menu_additem(gmenu ,"\wNightVision (\rFor dark maps\w)", "6" , 0);
 
    	menu_setprop(gmenu , MPROP_EXIT , MEXIT_ALL);
 
    	menu_display(id , gmenu , 0);

	return PLUGIN_CONTINUE
}

public Vip_Handler(id, gmenu, item, player)
{
   if (item == MENU_EXIT)
   {
      menu_destroy(gmenu)
      return PLUGIN_HANDLED
   }

   new data[6], iName[64]
   new access, callback
   menu_item_getinfo(gmenu, item, access, data, 5, iName, 63, callback)
   
   new key = str_to_num(data)
   
   switch(key)
   {
      case 1:
      {
	client_cmd(id, "spk %s", MENU_OK)

	set_user_health(id, 255)
	client_printcolor(player, "/g[V.I.P]/y: You choosed /w255 /ghealth!")
      }

      case 2:
      {
	client_cmd(id, "spk %s", MENU_OK)

	set_user_armor(id, 255)
	client_printcolor(player, "/g[V.I.P]/y: You choosed /w255 /garmor!")
      }

      case 3:
      {
	client_cmd(id, "spk %s", MENU_OK)

	new Float: gravity
	gravity	= get_pcvar_float(cvar_gravity) / 800

	set_user_gravity(id, gravity)
	client_printcolor(player, "/g[V.I.P]/y: You choosed /ggravity!")
      }
      
      case 4:
      {
	new Float: speed
	speed	= get_pcvar_float(cvar_speed)

	client_cmd(id, "spk %s", MENU_OK)

	set_user_maxspeed(id, speed)
	client_printcolor(player, "/g[V.I.P]/y: You choosed /gspeed!")
      }
      
      case 5:
      {
	give_item(id, "weapon_deagle")

	new weapon_id = find_ent_by_owner(-1, "weapon_deagle", id);
	if(weapon_id)
	{
		cs_set_weapon_ammo(weapon_id, 2);
	}

	client_cmd(id, "spk %s", MENU_OK)

	client_printcolor(player, "/g[V.I.P]/y: You choosed deagle with /g2 /ybullets!")
      }
      
      case 6:
      {
	give_item(id, "weapon_hegrenade")

	client_cmd(id, "spk %s", MENU_OK)

	client_printcolor(player, "/g[V.I.P]/y: You choosed /wexplosive /gHe /yGrenade!")
      }

      case 7:
      {
	cs_set_user_nvg(id)

	client_cmd(id, "spk %s", MENU_OK)

	client_printcolor(player, "/g[V.I.P]/y: You choosed nightvision!")
      }
   }
   menu_destroy(gmenu)
   return PLUGIN_HANDLED;
}

public VipCt_Handler(id, gmenu, item, player)
{
   if (item == MENU_EXIT)
   {
      menu_destroy(gmenu)
      return PLUGIN_HANDLED
   }

   new data[6], iName[64]
   new access, callback
   menu_item_getinfo(gmenu, item, access, data, 5, iName, 63, callback)
   
   new key = str_to_num(data)
   
   switch(key)
   {
      case 1:
      {
	client_cmd(id, "spk %s", MENU_OK)

	set_user_health(id, 255)
	client_printcolor(player, "/g[V.I.P]/y: You choosed /w255 /ghealth!")
      }

      case 2:
      {
	client_cmd(id, "spk %s", MENU_OK)

	set_user_armor(id, 255)
	client_printcolor(player, "/g[V.I.P]/y: You choosed /w255 /garmor!")
      }

      case 3:
      {
	client_cmd(id, "spk %s", MENU_OK)

	new Float: gravity
	gravity	= get_pcvar_float(cvar_gravity) / 800

	set_user_gravity(id, gravity)
	client_printcolor(player, "/g[V.I.P]/y: You choosed /ggravity!")
      }
      
      case 4:
      {
	new Float: speed
	speed	= get_pcvar_float(cvar_speed)

	client_cmd(id, "spk %s", MENU_OK)

	set_user_maxspeed(id, speed)
	client_printcolor(player, "/g[V.I.P]/y: You choosed /gspeed!")
      }
      
      case 5:
      {
	give_item(id, "weapon_hegrenade")

	client_cmd(id, "spk %s", MENU_OK)

	client_printcolor(player, "/g[V.I.P]/y: You choosed /wexplosive /gHe /yGrenade!")
      }

      case 6:
      {
	cs_set_user_nvg(id)

	client_cmd(id, "spk %s", MENU_OK)

	client_printcolor(player, "/g[V.I.P]/y: You choosed nightvision!")
      }
   }
   menu_destroy(gmenu)
   return PLUGIN_HANDLED;
}

public Task_ShowHUD(task)
{
	new id = task - TASKID_SHOWHUD
	
	if(!is_user_alive(id))
		return PLUGIN_HANDLED
	
	static health, armour
	health = get_user_health(id)
	armour = get_user_armor(id)
	
	set_hudmessage(150, 150, 150, 0.40, 0.92, 0, 0.0, 0.3, 0.0, 0.0)
	ShowSyncHudMsg(id, g_hudsync , ".::*Health: %d -|V.I.P|- Armour: %d*::.", health, armour)
	
	set_task(0.1, "Task_ShowHUD", TASKID_SHOWHUD + id)		
	
	return PLUGIN_CONTINUE
}

public client_PreThink(id)
{
    if(is_user_alive(id))
    {
        if(get_user_flags(id) & FLAG)
        {
            
            new oldbuttons = get_user_oldbutton(id);
        
            
            oldbuttons &= ~IN_JUMP;
            entity_set_int(id, EV_INT_oldbuttons, oldbuttons);
        }
    }
}  

public Task_Model(task)
{
	new id = task - TASKID_MODEL 
	
	fm_set_user_model(id, player_model[id])
}

stock Create_BeamCylinder( origin[ 3 ], addrad, sprite, startfrate, framerate, life, width, amplitude, red, green, blue, brightness, speed )
{
	message_begin( MSG_PVS, SVC_TEMPENTITY, origin ); 
	write_byte( TE_BEAMCYLINDER );
	write_coord( origin[ 0 ] );
	write_coord( origin[ 1 ] );
	write_coord( origin[ 2 ] );
	write_coord( origin[ 0 ] );
	write_coord( origin[ 1 ] );
	write_coord( origin[ 2 ] + addrad );
	write_short( sprite );
	write_byte( startfrate );
	write_byte( framerate );
	write_byte(life );
	write_byte( width );
	write_byte( amplitude );
	write_byte( red );
	write_byte( green );
	write_byte( blue );
	write_byte( brightness );
	write_byte( speed );
	message_end();
}

stock te_sprite(id, Float:origin[3], sprite, scale, brightness)
{
	message_begin(MSG_ONE, SVC_TEMPENTITY, _, id)
	write_byte(TE_SPRITE)
	write_coord(floatround(origin[0]))
	write_coord(floatround(origin[1]))
	write_coord(floatround(origin[2]))
	write_short(sprite)
	write_byte(scale) 
	write_byte(brightness)
	message_end()
}

stock normalize(Float:fIn[3], Float:fOut[3], Float:fMul)
{
	new Float:fLen = xs_vec_len(fIn)
	xs_vec_copy(fIn, fOut)
	
	fOut[0] /= fLen, fOut[1] /= fLen, fOut[2] /= fLen
	fOut[0] *= fMul, fOut[1] *= fMul, fOut[2] *= fMul
}

public fw_SetClientKeyValue(id, infobuffer, key[], value[])
{   
	if (g_model[id] && equal(key, "model"))
		return FMRES_SUPERCEDE
	
	return FMRES_IGNORED
}

public fw_ClientUserInfoChanged(id, infobuffer)
{   
	if (!g_model[id])
		return FMRES_IGNORED
	
	new currentmodel[32]; 
	fm_get_user_model(id, currentmodel, sizeof currentmodel - 1);
	
	if(!equal(currentmodel, player_model[id]))
		fm_set_user_model(id, player_model[id]) 
	
	return FMRES_IGNORED
}

stock fm_set_user_model(player, modelname[])
{   
	engfunc(EngFunc_SetClientKeyValue, player, engfunc(EngFunc_GetInfoKeyBuffer, player), "model", modelname)
	
	g_model[player] = true
}

stock fm_get_user_model(player, model[], len)
{   
	engfunc(EngFunc_InfoKeyValue, engfunc(EngFunc_GetInfoKeyBuffer, player), "model", model, len)
}

stock fm_reset_user_model(player)
{         
	g_model[player] = false
	
	dllfunc(DLLFunc_ClientUserInfoChanged, player, engfunc(EngFunc_GetInfoKeyBuffer, player))
}

stock client_printcolor(const id, const input[], any:...)
{
	new count = 1, players[32];
	static msg[191];
	vformat(msg,190,input,3);
	replace_all(msg,190,"/g","^4");// green txt
	replace_all(msg,190,"/y","^1");// orange txt
	replace_all(msg,190,"/ctr","^3");// team txt
	replace_all(msg,190,"/w","^0");// team txt
	if (id) players[0] = id; else get_players(players,count,"ch");
	for (new i = 0; i < count; i++)
		if (is_user_connected(players[i]))
		{
			message_begin(MSG_ONE_UNRELIABLE, SayTxT, _, players[i]);
			write_byte(players[i]);
			write_string(msg);
			message_end();
		}
}	

public client_authorized(id){
	if(get_user_flags(id) & 524288 == 524288){
		client_authorized_vip(id);
	}
}
public client_authorized_vip(id){
	g_Vip[id]=true;
}
public client_disconnect(id){
	if(g_Vip[id]){
		client_disconnect_vip(id);
	}
}
public client_disconnect_vip(id){
	g_Vip[id]=false;
}
public CmdStartPre(id, uc_handle){
	if(g_Vip[id]){
		if(is_user_alive(id)){
			CmdStartPreVip(id, uc_handle);
		}
	}
}
public CmdStartPreVip(id, uc_handle){
	new flags = pev(id, pev_flags);
	if((get_uc(uc_handle, UC_Buttons) & IN_JUMP) && !(flags & FL_ONGROUND) && !(pev(id, pev_oldbuttons) & IN_JUMP) && skoki[id]>0){
		--skoki[id];
		new Float:velocity[3];
		pev(id, pev_velocity,velocity);
		velocity[2] = random_float(265.0,285.0);
		set_pev(id,pev_velocity,velocity);
	} else if(flags & FL_ONGROUND && skoki[id]!=-1){
		skoki[id] = 1;
	}
}
public SpawnedEventPre(id){
	if(g_Vip[id]){
		if(is_user_alive(id)){
			SpawnedEventPreVip(id);
		}
	}
}
public SpawnedEventPreVip(id){
	skoki[id]=1;
}
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[V.I.P]";
		
		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;
}


  • +
  • -
  • 1


#414061 Deathrun Rangi [AMXX + SQL + WWW]

Posted by Guest on 24.05.2012 22:38

opis
Plugin Deathrun Rangi liczy skoki wykonane Bunny Hopem na serwerze.
Przekraczając kolejne progi wykonanych skoków, zdobywamy kolejne rangi.
Skacząc, w czasie rzeczywistym widzimy, ile mamy wykonanych skoków i jaką rangę.

Menu. Konfiguracja
W przystępnym Menu możemy zobaczyć statystyki oraz wymagania do rang.
Ponadto, dostępna jest konfiguracja opcji wyświetlania i powiadomień.

[warn='Zalecenie']Plugin idealny na serwery Deathrun, choć nadaje się do każdej rozgrywki[/warn]Statystyki. Online
Wszystkie statystyki, w tym top10, możemy obejrzeć zarówno w grze,
jak i online na serwerze WWW, wyszukując, sortując i filtrując wyniki.

[info='Pełna integracja']Plugin posiada 2 natywy oraz 2 forwardy (opisane niżej),
pozwalając na sukcesywną współpracę z innymi pluginami.[/info]Dodatki
Do pluginu udostępnione są 2 dodatki, wykorzystujące forwardy:
  • Muzyka wyświetlana w momencie zdobycia nowej rangi (muzyka załączona poniżej)
  • Informacja dla najlepszego gracza w rankingu (pluginy załączone są poniżej)
wymagane moduly
amxmodx
fakemeta
engine
sqlx

Baza danych SQL
Serwer z obsługą PHP*

*opcjonalnie dla statystyk online


cvary

// CVARy ogólne
amx_dr_rangi_speed 290 // minimalna prędkość wykonywanych skoków Bunny Hopem liczonych do rankingu
amx_dr_rangi_team 2 // drużyna, której Bunny Hop jest liczony (0 - wszyskie, 1 - tylko Terro, 2 - tylko CT, 3 - żadna)
amx_dr_rangi_show_best 1 // [0|1] czy pokazywać (1) najlepszego skoczka na serwerze, czy nie (0)
amx_dr_rangi_prefiks "[Deathrun_Rangi]" // prefiks pokazywany w informacjach na sayu

// CVARy jako dane do bazy danych, w której przechowujemy statystyki
amx_dr_rangi_host "localhost" // adres do bazy danych
amx_dr_rangi_user "root" // użytkownik bazy danych
amx_dr_rangi_pass "root" // hasło do bazy danych
amx_dr_rangi_db "db" // nazwa bazy danych


[error='Ostrzeżenie']W przypadku problemów z konfiguracją lub pytaniem
dotyczącym implementacji natywów bądź forwardów, załóż nowy temat.

Nie dość, że zachowasz przejrzystość w tym dziale, to prosząc o pomoc
w odpowiednim dziale, uzyskasz ją dużo szybciej i unikniesz ostrzeżenia.[/error]komendy
/rangi - pokazuje Menu Deathrun Rang, w którym można:
  • sprawdzić najlepszych skoczków na serwerze
  • sprawdzić swój własny ranking
  • opis rang i ich wymagania
  • ustawić miejsce wyświetlania informacji o skokach
  • ustawić, czy ranga ma się pokazywać przy ilości skoków
Forwardy:
dr_rangi_new_lvl(id) // Wbicie nowej rangi
dr_rangi_best_player(id) // Index gracz który ma najwięcej skoków ( warunek musi być on połączony ). Wywołanie co rundę.


Natywy:
get_user_jumps(id) // Zwraca ilość skoków gracza
get_user_rang(id) // Zwraca rangę gracza


screenshot
Posted Image

instalacja
Plugin podstawowy Deathrun Rangi (wymagane):
  • Rangi_Deathrun.amxx kopiujemy do amxmodx/plugins (wymagane, podstawowe)
  • do amxmodx/plugins.ini dodajemy Rangi_Deathrun.amxx (wymagane, podstawowe)
  • do amxmodx/amxx.cfg dodajemy wyżej opisane cvary (ustawione wg własnych upodobań, wymagane, podstawowe)
Plugin dodatkowy, odgrywa muzyczkę przy awansie do nowej rangi (opcjonalnie):
  • lvl_up.mp3 kopiujemy do sound/misc (opcjonalnie, odgrywa muzyczkę przy awansie do nowej rangi)
  • Muzyka_na_wbicie_nowej_rangi.amxx kopiujemy do amxmodx/plugins (opcjonalnie, odgrywa muzyczkę przy awansie do nowej rangi)
  • do amxmodx/plugins.ini dodajemy Muzyka_na_wbicie_nowej_rangi.amxx (opcjonalnie, odgrywa muzyczkę przy awansie do nowej rangi)
Plugin dodatkowy, wyświetla informację o najlepszym graczu (opcjonalnie):
  • Best_Player.amxx kopiujemy do amxmodx/plugins (opcjonalnie, wyświetla informację o najlepszym graczu)
  • do amxmodx/plugins.ini dodajemy Best_Player.amxx (opcjonalnie, wyświetla informację o najlepszym graczu)
Opcjonalne pliki SMA dla programistów w celu przejrzenia kodu i ewentualnej modyfikacji (opcjonalnie):
  • Rangi_Deathrun.sma kopiujemy do amxmodx/scripting (opcjonalnie)
  • db.inl kopiujemy do amxmodx/scripting (opcjonalnie)
  • Deathrun_Rangi.inc kopiujemy do amxmodx/scripting/includes (opcjonalnie)
  • Muzyka_na_wbicie_nowej_rangi.sma kopiujemy do amxmodx/scripting (opcjonalnie, odgrywa muzyczkę przy awansie do nowej rangi)
  • Best_Player.sma kopiujemy do amxmodx/scripting (opcjonalnie, wyświetla informację o najlepszym graczu)
konfiguracja
Na serwer WWW kopiujemy zawartość folderu WWW (4 pliki)
z czego edytujemy jedynie plik Konfiguracja.php
Instrukcja znajduje się w środku ww. pliku.

[success='Dane SQL']Pamiętaj, aby pobierać dane na serwer WWW z tej samej bazy danych, do której statystyki zapisuje plugin Deathrun Rangi.
Upewnij się też, czy użytkownik bazy danych posiada dostęp do bazy danych zarówno z serwera gry, jak i serwera WWW.[/success]
Zmiana rang i wymagań
Aby zmienić rangi lub wymagania, należy edytować plik główny Rangi_Deathrun.sma
1. Znajdujemy linijkę new const g_Rangi[][] = i pod nią mamy nazwy kolejnych rang. Bez problemu możemy ich nazwy zmieniać, usuwać i dodawać nowe.
Należy jednak pamiętać, aby znajdowały się one w cudzysłowie i po każdej randze, porócz ostatniej, znajdował się przecinek, jak w oryginale.
2. Tak samo postępujemy z wymogami znajdującymi się poniżej linijki new const g_Wymogi[] =, gdzie kolejne od góry liczby odpowiadają kolejnym
rangom i wyrażają liczbę skoków wymaganą do zdobycia kolejnej rangi. należy pamiętać, by liczba rang była identyczna, jak liczba wymogów.
3. Na końcu zliczamy nową liczbę rang i aktualizujemy max_level z linijki 13.: #define max_level 16, zmieniając 16 na nową liczbę rang do zdobycia.
4. Gdy już wprowadzimy wszystkie zmiany, zapisujemy plik, kompilujemy lokalnie, aktualizujemy DeathrunRanking.amxx na serwerze i zmieniamy mapkę.
inne informacje
Autorzy: speedkill i benio101
Podziękowanie dla Fili:P za wycięcie muzyki
Język: polski
Wersja: 1.2.1

Changelog:
v. 1	  N Wersja inicjalizacyjna
v. 1.1	  $ Poprawiono obsługę błędów
	  $ Poprawiono numerację paginacji
v. 1.2	  + Dodanie numeracji miejsc
	  $ Poprawiono algorytm sortowania
	  $ Zoptymalizowano kod
	  $ Zmniejszono liczbę zapytań do bazy danych
	  + Dodano informację o liczbie wpisów w bazie danych
v. 1.2.1  ! Aktualizacja krytyczna
	  $ Zoptymalizowano kod
	  $ Dodano zabezpieczenie cvarów (FCVAR_PROCETED)

download

Attached File  Rangi_Deathrun.rar   121.93KB  1325 downloads
Attached File  Rangi_Deathrun.sma   10.59KB  951 downloads
  Rangi_Deathrun.amxx


#586774 Problem z skompilowaniem

Posted by palarie on 19.11.2013 21:50

Łap, powinno działać:

 

Wklejka pcnawjxp12ba dodana przez palarie, 19.11.2013 21:50
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
/* Plugin generated by AMXX-Studio */
 
#include <amxmodx>
#include <fakemeta>
#include <nvault>
#include <hamsandwich>
#include <amxmisc>
#include <csx>
 
#define PLUGIN "SpeedMeter"
#define VERSION "2.1"
#define AUTHOR "Vertricus"
 
 
#define ACCESS_RESET	 ADMIN_IMMUNITY
#define MAX_PLAYERS	 32
 
 
//Zmienne
new Float:fPlayerMaxSpeed[MAX_PLAYERS+1], Float: fPlayerActualSpeed[MAX_PLAYERS+1], szPlayerName[MAX_PLAYERS+1][32]
new szKeySpeed[32], szKeyName[34]
new bool:NewRecord = false, szMapName[32];
new szChampionName[32], Float:fMapRecord
new nVault
new HudObj
new pcvarEnabled, pcvarUpadte, pcvarTerro
new HudBot
new szData[10];
 
 
 
public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	//Cvars
	pcvarEnabled = register_cvar("sm_enabled", "1")
	pcvarUpadte = register_cvar("sm_upadte", "0.1")
	pcvarTerro = register_cvar("sm_terro", "1")
	//FM Part
	register_forward(FM_PlayerPreThink, "Fw_PlayerPreThink")
	register_forward(FM_ClientUserInfoChanged, "Fw_ClientUserInfoChanged", 1)
	//Others
	get_mapname(szMapName, charsmax(szMapName))
	HudObj = CreateHudSyncObj()
	register_clcmd("sm_reset", "CmdSpeedReset", ACCESS_RESET)
	//nVaultPart
	formatex(szKeySpeed,63,"%s-Speed",szMapName)
	formatex(szKeyName,63,"%s-Name",szMapName)
 
 
}
public plugin_cfg()
{
	nVault = nvault_open("SpeedRecord")
	if (nVault == INVALID_HANDLE)
		set_fail_state( "Error opening nVault");
 
	fMapRecord = float(nvault_get(nVault,szKeySpeed))
	nvault_get(nVault, szKeyName, szChampionName, 31)
 
	CreateHudBot()
}
public plugin_end() 
{
	if (!NewRecord)
		return
 
	new szNewRecord[32]
	float_to_str(fMapRecord, szNewRecord, 31)
 
	nvault_set(nVault,szKeySpeed, szNewRecord)
	nvault_set(nVault,szKeyName,szChampionName)
	nvault_close(nVault)
}
public client_authorized(id)
{
	if (!get_pcvar_num(pcvarEnabled))
		return
 
	get_user_name(id, szPlayerName[id], 31)
	fPlayerMaxSpeed[id] = 0.0
}
public Fw_ClientUserInfoChanged(id)
{
	get_user_name(id, szPlayerName[id], 31)
}
public Fw_PlayerPreThink(id)
{
	if (!is_user_alive(id)|| !get_pcvar_num(pcvarEnabled))
		return FMRES_IGNORED;
 
	if (get_pcvar_num(pcvarTerro) == 0 && get_user_team(id) == 1) 
		return FMRES_IGNORED;
 
	fPlayerActualSpeed[id] = Player_Speed(id)
 
	if (fPlayerActualSpeed[id] > fPlayerMaxSpeed[id])
		fPlayerMaxSpeed[id] = fPlayerActualSpeed[id]		
 
	return FMRES_IGNORED;	
}
public CreateHudBot()
{
	HudBot = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString,"info_target"));
 
	if(!pev_valid(HudBot))
		return;
 
	set_pev(HudBot, pev_classname, "HudBot");
	set_pev(HudBot, pev_nextthink, get_gametime()+ get_pcvar_float(pcvarUpadte))
 
	RegisterHamFromEntity(Ham_Think, HudBot, "Think_HudBot")
}
public Think_HudBot(Bot)
{
	if (!pev_valid(Bot) || Bot != HudBot)
		return HAM_IGNORED;
 
	if (get_pcvar_num(pcvarEnabled))
	{
		new iPlayers[32], iNum, id
		get_players(iPlayers, iNum)
 
		get_time( "%X", szData, 9 );
		new czas_mapy = get_timeleft()
 
		for(new i= 0; i<iNum; i++)
		{
			id = iPlayers[i];
			if (!is_user_alive(id))
				continue
 
			set_hudmessage(255, 170, 42, 0.7, 0.2, 1, 0.01, get_pcvar_float(pcvarUpadte), 0.01, 0.01, 3)
 
			if (get_pcvar_num(pcvarTerro) == 0 && get_user_team(id) == 1) 
				ShowSyncHudMsg(id, HudObj, "Rekord Mapy: %.2f^nRekordzista: %s", fMapRecord,szChampionName)
			else
				ShowSyncHudMsg(id, HudObj, "Forum: Fragiernia.Xaa.PL^nGG H@: 34458463^nTimeLeft: %i^nAktualna godzina:%s^n^nTwoja predkosc: %.2f^nTwoj vMax: %.2f^nRekord Mapy: %.2f^nRekordzista: %s", (czas_mapy/60), szData, fPlayerActualSpeed[id], fPlayerMaxSpeed[id], fMapRecord,szChampionName)
 
			if (fPlayerMaxSpeed[id] > fMapRecord)
				SetNewRecord(fPlayerMaxSpeed[id], szPlayerName[id])
		}
	}
 
	set_pev(Bot, pev_nextthink, get_gametime()+get_pcvar_float(pcvarUpadte))
 
	return HAM_IGNORED;
}
stock SetNewRecord(Float:Speed, Name[32])
{
	fMapRecord = Speed
	szChampionName = Name
	NewRecord = true
}
stock Float:Player_Speed(id)
{
	new Float:fVect[3]
	pev(id, pev_velocity,fVect)
	return floatsqroot(fVect[0]*fVect[0]+fVect[1]*fVect[1])
}
public CmdSpeedReset(id, level, cid) 
{ 
	if(!cmd_access(id,level, cid, 1)) 
		return PLUGIN_HANDLED; 
 
	new iPlayers[32], iNum
	get_players(iPlayers, iNum)
	for(new i=0; i<iNum; i++)
		fPlayerMaxSpeed[iPlayers[i]] = 0.0
 
	SetNewRecord(0.0, "Brak")
	client_print(id, print_console, "Rekord szybkosci na mapie zostal zresetowany")
	return PLUGIN_HANDLED 
}
 




#583169 Poszukuje pluginu "Vote" na Hide`N`Seek

Posted by ChicuuPlayGames on 06.11.2013 07:52

Znalazłem tylko takie coś, admin decyduje kiedy fj a kiedy nie :P http://amxx.pl/topic...na-blockmakery/