Ajutor cod

Tutoriale scripting, cod si portiuni de cod.

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Post Reply
User avatar
-BlacKodE-
Fost moderator
Fost moderator
Posts: 1193
Joined: 16 Nov 2013, 11:57
Detinator Steam: Da
SteamID: blackode
Reputatie: Fost Super moderator
Membru Club eXtreamCS (1 luna)
Fost Membru Club eXtreamCS (5 apr - 5 mai - acces in club)
Has thanked: 16 times
Been thanked: 10 times

01 May 2016, 14:28

Am la zombie escape acest cod. Prin el se aleg oamenii ce vor fi infectati.
Vreau sa impun o restrictie. Daca runda trecuta a fost X primul zombie runda asta vreau ca el sa fie ocolit.
| Afiseaza codul
// Make Zombies
	for(new i = 0; i < require_zombie(); i++)
	{
                g_countfirst = cfg_zom_release_time

		ExecuteForward(g_forwards[FORWARD_INFECTED], g_fwDummyResult, i, 0)
                set_task(1.0, "start_infection", get_random_player(TEAM_CT, AL_ALIVE)+TASK_INFECTION, _, _, "b")
	}
require_zombie() >>> reprezinta numarul necesar de zombii in acea runda. In functie de numarul total de playeri
| Afiseaza codul
stock require_zombie()
{
	switch(get_player_num(TEAM_CT, 1))
	{
		case 2..5: return 1
			case 6..15: return 2
			case 16..25: return 3
			case 26..32: return 4
	}
	
	return 0
}
get_random_player >>> alege un player random sa fie infectat. In cazul meu ii setez un task unde ii aplic mai multe efecte fata de infectia creata de diaz.
| Afiseaza codul
stock get_random_player(team, alive)
{
	static list_player[33], list_player_num
	static total_player
	total_player = get_player_num(team, alive)
	
	for(new i = 0; i < total_player; i++)
		list_player = 0
	
	list_player_num = 0
	
	for(new i = 0; i < g_MaxPlayers; i++)
	{
		if(!is_user_connected(i))
			continue
		
		if(alive == AL_NOT)
		{
			if(is_user_alive(i))
				continue
			} else if(alive == AL_ALIVE) {
			if(!is_user_alive(i))
				continue	
		}
		
		if(team == TEAM_ALL)
		{
			if(cs_get_user_team(i) == CS_TEAM_UNASSIGNED || cs_get_user_team(i) == CS_TEAM_SPECTATOR)
				continue
			} else if(team == TEAM_T) {
			if(cs_get_user_team(i) != CS_TEAM_T)
				continue
			} else if(team == TEAM_CT) {
			if(cs_get_user_team(i) != CS_TEAM_CT)
				continue
		}
		
		list_player[list_player_num] = i
		list_player_num++
	}
	
	static random_player; random_player = 0
	random_player = list_player[random_num(0, list_player_num - 1)]
	
	return random_player
}


O idee cum as putea face? Mentionez ca pot fi alesi mai multi playeri zombie nu doar unul. Numarul variaza de la 1 la 4.

EDIT:
Am facut eu dar nu stiu daca e cea mai buna metoda asa ca astept idei.
| Afiseaza codul
// Make Zombies
	for(new i = 0; i < require_zombie(); i++)
	{
                new randomzm = get_random_player(TEAM_CT, AL_ALIVE);

                g_countfirst = cfg_zom_release_time;

                if(randomzm == g_lastinfect)
                {
                   i--
                }else{
                   g_lastinfect = randomzm;
		   ExecuteForward(g_forwards[FORWARD_INFECTED], g_fwDummyResult, i, 0)
                   set_task(1.0, "start_infection", randomzm+TASK_INFECTION, _, _, "b")
                }
	}
RoyalServer 2
User avatar
Nubo
Fost moderator
Fost moderator
Posts: 2734
Joined: 11 Jul 2012, 18:45
Detinator Steam: Da
CS Status: [əˈnɒn.ɪ.məs]
Reputatie: Fost scripter eXtreamCS
Fost eXtream Mod
Has thanked: 8 times
Been thanked: 27 times

01 May 2016, 19:05

Daca a fost ZM il sari: continue in for.
Cand nu merge acest forum sunt online aici:
  • * Skype: nubo_cs
    * Y!M ID: nubo_cs
User avatar
-BlacKodE-
Fost moderator
Fost moderator
Posts: 1193
Joined: 16 Nov 2013, 11:57
Detinator Steam: Da
SteamID: blackode
Reputatie: Fost Super moderator
Membru Club eXtreamCS (1 luna)
Fost Membru Club eXtreamCS (5 apr - 5 mai - acces in club)
Has thanked: 16 times
Been thanked: 10 times

01 May 2016, 19:15

Deci

in loc de else sa pun

i--
continue;

Si fac doar if.
User avatar
Nubo
Fost moderator
Fost moderator
Posts: 2734
Joined: 11 Jul 2012, 18:45
Detinator Steam: Da
CS Status: [əˈnɒn.ɪ.məs]
Reputatie: Fost scripter eXtreamCS
Fost eXtream Mod
Has thanked: 8 times
Been thanked: 27 times

01 May 2016, 19:38

| Afiseaza codul
// Make Zombies
	for(new i = 0; i < require_zombie(); i++)
	{
                new randomzm = get_random_player(TEAM_CT, AL_ALIVE);

                g_countfirst = cfg_zom_release_time;

                if( g_lastinfect[randomzm] == true ) // daca a fost ZM
                {
                   continue; // nu va fi repetat
                }

                g_lastinfect[randomzm] = true; // nu a fost ZM, va fi acum
		ExecuteForward(g_forwards[FORWARD_INFECTED], g_fwDummyResult, i, 0)
                set_task(1.0, "start_infection", randomzm+TASK_INFECTION, _, _, "b")
	}
Cand nu merge acest forum sunt online aici:
  • * Skype: nubo_cs
    * Y!M ID: nubo_cs
Post Reply

Return to “Scripting”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 10 guests