[Tutorial] Player random

Tutoriale scripting, cod si portiuni de cod.

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

munir
Membru eXtream
Membru eXtream
Posts: 3193
Joined: 30 Aug 2012, 22:16
Detinator Steam: Da
CS Status: Fost scripter
Detinator server CS: Nu
SteamID: -
Reputatie: Fost super moderator
Restrictie schimbare nume
Nume anterior: falseq, cruyff
Location: Bucuresti
Has thanked: 342 times
Been thanked: 571 times
Contact:

26 Oct 2013, 22:27

Astazi vreau sa va invat, cum se ia un player random de pe server. De exemplu, vom face printr-o comanda in chat.
1. Inregistram o comanda, de tip say, si anume /random

Code: Select all

public plugin_init( )
{
	register_clcmd( "say /random", "Func_Random" );
}
2. Cream publicul care este executat cand comanda este chemata, fara niciun parametru (in cazul nostru /random)

Code: Select all

public Func_Random( )
3. Cream 1 vector de aproximativ 32 de pozitii, si o variabila simpla

Code: Select all

new iPlayers[ 32 ], iNum;
4. Luam toti playerii de pe server

Code: Select all

get_players( iPlayers, iNum, "c" ); // "c" - nu returneaza botii
5. Vom crea o variabila in care vom stoca playerul ales random. Playerul il vom alege random prin functia random_num( )

Code: Select all

new iRandomPlayer = iPlayers[ random_num( 0, iNum -1 ) ];
6. Bun, acum verificam daca playerul ales, este mort/viu

Code: Select all

if( is_user_alive( iRandomPlayer ) )
7. Daca este in viata, ii vom printa un mesaj in chat

Code: Select all

client_print( iRandomPlayer, print_chat, "Ai fost ales random. Felicitari" );
In final iese cam asa:
| Afiseaza codul
#include < amxmodx >

#define PLUGIN_NAME "RandomPlayer"
#define PLUGIN_VERSION "1.0"
#define PLUGIN_AUTHOR "falseq"

public plugin_init( )
{
	register_plugin( PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR );
	
	register_clcmd( "say /random", "Func_Random" );
}

public Func_Random( )
{
	new iPlayers[ 32 ], iNum;
	get_players( iPlayers, iNum, "c" );
	
	new iRandomPlayer = iPlayers[ random_num( 0, iNum -1 ) ];
	
	if( is_user_alive( iRandomPlayer ) )
	{
		client_print( iRandomPlayer, print_chat, "Ai fost ales random. Felicitari" );
	}
}
- Functiile folosite:

get_players( ) - http://www.amxmodx.org/doc/index.html?p ... layers.htm
is_user_alive( ) - http://www.amxmodx.org/funcwiki.php?go=func&id=1306
Retras
RoyalServer
Cosmin
Fost moderator
Fost moderator
Posts: 9362
Joined: 06 Jul 2013, 22:08
Detinator Steam: Da
Detinator server CS: Nu
Reputatie: Fost eXtream Mod
Fost Scripter eXtreamCS
Nume anterior: scosmynnnn
Has thanked: 492 times
Been thanked: 547 times

26 Oct 2013, 22:32

Foarte bun pentru incepatori,frumos din partea ta. ;)
munir
Membru eXtream
Membru eXtream
Posts: 3193
Joined: 30 Aug 2012, 22:16
Detinator Steam: Da
CS Status: Fost scripter
Detinator server CS: Nu
SteamID: -
Reputatie: Fost super moderator
Restrictie schimbare nume
Nume anterior: falseq, cruyff
Location: Bucuresti
Has thanked: 342 times
Been thanked: 571 times
Contact:

26 Oct 2013, 22:38

Update

Am adaugat:

get_players( ) - http://www.amxmodx.org/doc/index.html?p ... layers.htm
is_user_alive( ) - http://www.amxmodx.org/funcwiki.php?go=func&id=1306

in primul post!
Retras
LordOfNothing
Membru, skill +1
Membru, skill +1
Posts: 387
Joined: 19 Jul 2013, 15:51
Detinator Steam: Nu
Reputatie: Restrictie PM
Has thanked: 11 times
Been thanked: 35 times

04 Nov 2013, 09:53

foarte bun tutorialul :P
User avatar
Adventx
Membru, skill +4
Membru, skill +4
Posts: 1785
Joined: 17 Sep 2013, 21:44
Detinator Steam: Da
Reputatie: Fost moderator ajutator
Has thanked: 128 times
Been thanked: 142 times
Contact:

05 Dec 2013, 17:42

cruyff da cum ca aleaga un player random automat, fara sa tasteze in chat /random
User avatar
DaNNe.
Fost moderator
Fost moderator
Posts: 2811
Joined: 08 Nov 2013, 20:43
Detinator Steam: Da
CS Status: Activitate scăzută
SteamID: /id/FurienMaster
Reputatie: Nick anterior: DnD. Gold, Emrys
0.5/3
Fost moderator ajutator
Fost Membru Club eXtreamCS (doua luni)
Has thanked: 244 times
Been thanked: 129 times
Contact:

05 Dec 2013, 18:36

adventx wrote:cruyff da cum ca aleaga un player random automat, fara sa tasteze in chat /random
Creezi un event cu round_start. :-j
User avatar
MaimutaVirtuala
Membru, skill +2
Membru, skill +2
Posts: 535
Joined: 15 Mar 2013, 00:20
Detinator Steam: Nu
CS Status: Maimutaresc
Has thanked: 16 times
Been thanked: 52 times
Contact:

05 Dec 2013, 18:50

adventx wrote:cruyff da cum ca aleaga un player random automat, fara sa tasteze in chat /random
Folosind register_clcmd in plugin_init() :-?
MaimutaVirtuala iti recomanda doza zilnica de...ABECEDAR.
Nu exista niciun tren in care nu m-as urca,oricare ar fi destinatia lui.(Edna St. Vincent Millay)
Cosmin
Fost moderator
Fost moderator
Posts: 9362
Joined: 06 Jul 2013, 22:08
Detinator Steam: Da
Detinator server CS: Nu
Reputatie: Fost eXtream Mod
Fost Scripter eXtreamCS
Nume anterior: scosmynnnn
Has thanked: 492 times
Been thanked: 547 times

05 Dec 2013, 18:55

cu logeventul round start:

register_logevent("roundstart", 2, "1=Round_Start")
User avatar
HamletEagle
Fost moderator
Fost moderator
Posts: 750
Joined: 21 Sep 2013, 15:05
Detinator Steam: Da
CS Status: Inactiv cateva zile.
SteamID: privat
Reputatie: Fost Scripter eXtreamCS.com
Fost Moderator ajutator
Has thanked: 19 times
Been thanked: 85 times

14 Dec 2013, 14:23

Metoda aceasta are o singura problema: cand sunt mai putini playeri poate returna acelasi user de mai multe ori.
Daca vreti ajutorul meu, nu dati bump la topic, fara intrebari de genu "cat mai dureaza/mai astept mult?".
User avatar
Hades Ownage
Membru eXtream
Membru eXtream
Posts: 3182
Joined: 22 Oct 2008, 10:12
Detinator Steam: Da
Detinator server CS: jb.clutch.ro
SteamID: hades-source
Reputatie: Fost Super Moderator
Fost Scripter eXtreamCS
Nume anterior: hadesownage
Location: Iasi
Has thanked: 324 times
Been thanked: 406 times

15 Jan 2014, 21:26

Sa aleaga un player la inceput de runda + sa-i dea 25 hp
| Afiseaza codul
#include <amxmodx>  
#include <fun>    

public plugin_init()      
	register_event("HLTV", "EventHLTV", "a", "1=0", "2=0"); 

public EventHLTV()    
	set_task(0.1, "GiveHealth"); 

public GiveHealth()  
{          
	new players[32], count;     
	get_players(players, count, "a");     
	
	if(count)               
	{ 
		new iPlayer = players[random(count)]; 
		
		new Name[32]; 
		get_user_name(iPlayer, Name, charsmax(Name)) 
		set_user_health(iPlayer, get_user_health(iPlayer) + 25); 
		
		client_print (  0, print_chat, "!!! %s a primit 25 hp !!!", Name );
	} 
}
@Sursa originala: http://forums.alliedmods.net/showthread ... ost1397542
Spy1234
Membru, skill 0
Membru, skill 0
Posts: 8
Joined: 09 May 2012, 19:02
Detinator Steam: Da
CS Status: Citesc forumul eXtreamCS.com...!
Contact:

17 Jan 2014, 00:34

Daca vreau sa aleg 1 player random de la CT si 1 player random de la T,cum fac? Ma ajuta cineva,va rog? :)
User avatar
Adventx
Membru, skill +4
Membru, skill +4
Posts: 1785
Joined: 17 Sep 2013, 21:44
Detinator Steam: Da
Reputatie: Fost moderator ajutator
Has thanked: 128 times
Been thanked: 142 times
Contact:

17 Jan 2014, 15:34

| Afiseaza codul
[code]
 #include < amxmodx >

#define PLUGIN "RandomPlayer"
#define VERSION "1.0"
#define AUTHOR "falseq"

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

register_logevent( "Func_random", 2, "1=Round_Start" );
}

public Func_Random( )
{
	new iPlayers[ 32 ], iNum;
	get_players( iPlayers, iNum, "c" );

	new iRandomPlayer = iPlayers[ random_num( 0, iNum -1 ) ];

	if( is_user_alive( iRandomPlayer ) && get_user_team( iRandomPlayer ) == 1 )
	{
		client_print( iRandomPlayer, print_chat, "Terosist - Ai fost ales random. Felicitari" );
	}
	
	if( is_user_alive( iRandomPlayer ) && get_user_team( iRandomPlayer ) == 2 )
	{
		client_print( iRandomPlayer, print_chat, "Counter Terosist - Ai fost ales random. Felicitari" );
	}
}
[/code]
Post Reply

Return to “Scripting”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 19 guests