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.
|
Funkcja na 4 losowych graczach...
#1
Napisano 25.05.2010 13:36
Jak napisać funkcję która wybiera 4 losowych graczy i wykonuje na nich np. przeniesienie do CT a reszta co nie została wybrana żeby przeszła do TT.
Czekam na odpowiedź!
#2
Napisano 25.05.2010 14:53
Najpierw pobranie listy graczy. get_players
Następnie pętla na nich wszystkich ze sprawdzaniem jakiegoś warunku(np. team) oraz dokładaniem do tablicy dynamicznej. ArrayPushCell
A na koniec losowanie oraz pobieranie i usuwanie wylosowanych graczy z tablicy dynamicznej. ArrayGetCell, ArrayDeleteItem
#3
Napisano 25.05.2010 14:59
public costutaj()
{
new players[32], num
new bool: wylosowany[33]
get_players(players, num)
if(num > 1)
{
for(new i = 0; i < num; i++) wylosowany[players[i]] = false
new i = 0
while(i < 5)
{
wylosowany[players[random_num(0, num-1)]] = true
i++
}
for(new i = 0; i < num; i++)
{
if(wylosowany[players[i]])
{
// tutaj co chcesz zrobic z wylosowanymi id - players[i]
}
else
{
// z reszta
}
}
}
}
Dziękuje, dobranoc.
#4
Napisano 25.05.2010 15:02
Pavulon - Fajnie że napisałeś z czego mam to zrobić i dzięki temu ruszyłem głową do obmyślania jak to złożyć. + leci!
byQQ - Dzięki za podanie całego kodu! + leci!
#5
Napisano 25.05.2010 15:03
#6
Napisano 25.05.2010 15:10
while(i < 5)
{
new losowy = players[random_num(0, num-1)]
if(!wylosowany[losowy])
{
wylosowany[losowy] = true
i++
}
}
Użytkownik byQQ edytował ten post 25.05.2010 15:15
Dziękuje, dobranoc.
#7
Napisano 25.05.2010 15:16
@edit
Bo akurat jak testuje na botach to nie działa.
Użytkownik Harsay edytował ten post 25.05.2010 15:19
#8
Napisano 25.05.2010 18:29
get_players(players, num, "c")
Dziękuje, dobranoc.
#9
Napisano 25.05.2010 18:35
Użytkownik Harsay edytował ten post 25.05.2010 19:34
#10
Napisano 25.05.2010 21:16
Dziękuje, dobranoc.
#11
Napisano 26.05.2010 18:17
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_logevent("poczatek", 2, "1=Round_Start") ... } public poczatek() { for(new i=1;i<33;i++){ if (!is_user_alive(i)) continue ... set_task(1.0, "losowanie", i) ... } } public losowanie() { new players[32], num new bool: wylosowany[33] get_players(players, num) if(num > 1) { for(new i = 0; i < num; i++) wylosowany[players[i]] = false new i = 0 while(i < 5) { new losowy = players[random_num(0, num-1)] if(!wylosowany[losowy]) { wylosowany[losowy] = true i++ } for(new i = 0; i < num; i++) { if(wylosowany[players[i]]) { /// KOD którego nie ujawniam. } else { /// kod którego nie ujawniam { case 1: { // jak wyżej } case 2: { // jak wyżej } case 3: { // jak wyżej } } } } } } }
Coś jest źle?
#12
Napisano 26.05.2010 22:07
Dziękuje, dobranoc.
#13
Napisano 26.05.2010 22:37
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_logevent("poczatek", 2, "1=Round_Start") register_logevent("koniec", 2, "1=Round_End") register_event("DeathMsg", "DeathMsg", "b") RegisterHam(Ham_Touch, "weaponbox", "fw_TouchWeapon") RegisterHam(Ham_Touch, "armoury_entity", "fw_TouchWeapon") RegisterHam(Ham_Touch, "weapon_shield", "fw_TouchWeapon") set_lights("b") } public poczatek() { for(new i=1;i<33;i++){ if (!is_user_alive(i)) continue strip_user_weapons(i); cs_set_user_money(i, 0); set_task(1.0, "losowanie", i) set_task(10.0, "reklama",i) set_hudmessage(i, 255, 0, 0.18, 0.24, 0, 6.0, 12.0) show_hudmessage(i, "Ludzie musza przetrwac 5 minut!") ColorChat(0, GREEN,"[ZOMGies] Ludzie musza przetrwac 5 minut!") } } public losowanie() { new players[32], num new bool: wylosowany[33] get_players(players, num) if(num > 1) { for(new i = 0; i < num; i++) wylosowany[players[i]] = false new i = 0 while(i < 5) { new losowy = players[random_num(0, num-1)] if(!wylosowany[losowy]) { wylosowany[losowy] = true i++ } for(new i = 0; i < num; i++) { if(wylosowany[players[i]]) { cs_set_user_team(i, CS_TEAM_CT) cs_set_user_model(i, "vip") set_user_health(i, 200) set_user_armor(i, 100) give_item (i, "weapon_m4a1") give_item (i, "weapon_deagle") give_item (i, "ammo_556nato") give_item (i, "ammo_50ae") give_item (i, "ammo_556nato") give_item (i, "ammo_50ae") give_item (i, "ammo_556nato") give_item (i, "ammo_50ae") give_item (i, "he_grenade") } else { cs_set_user_team(i, CS_TEAM_T) set_user_gravity(i, 0.40) set_user_health(i, 90) give_item(i, "weapon_knife") set_user_maxspeed (i, 720.0) switch ( random_num( 1, 3 ) ) { case 1: { cs_set_user_model(i, "zombie_guerilla") } case 2: { cs_set_user_model(i, "zombie_gign") } case 3: { cs_set_user_model(i, "zombie_source") } } } } } } } public koniec(id) { ColorChat(id, GREEN,"[ZOMGies] Koniec walki!") client_cmd(id, "spk ZOMGies/koniec_walki.wav") } public reklama(id) { ColorChat(id, GREEN,"***********SERWER UZYWA***********") ColorChat(id, GREEN,"ZOMGies MOD by Harsay") ColorChat(id, GREEN,"Wersja: v0.3a") ColorChat(id, GREEN,"Strona autora: www.harsay.rfv.pl") ColorChat(id, GREEN,"Pomoc przy tworzeniu: [H]ARD[B]OT, DarkGL, [G]o[Q], Pavulon, byQQ, DeLL") } public DeathMsg(id) { if(cs_get_user_team(id) == CS_TEAM_T) ExecuteHamB(Ham_CS_RoundRespawn, id) } public fw_TouchWeapon(weapon,id) { if (!is_user_connected(id)) return HAM_IGNORED; if(get_user_team(id) == 1) return HAM_SUPERCEDE; return HAM_IGNORED; } public plugin_precache() { precache_sound("ZOMGies/koniec_walki.wav") precache_model("models/player/zombie_guerilla/zombie_guerilla.mdl") precache_model("models/player/zombie_gign/zombie_gign.mdl") precache_model("models/player/zombie_source/zombie_source.mdl") }
#14
Napisano 26.05.2010 23:36
cs_set_user_team(i, CS_TEAM_CT)gdy id gracza jest tak naprawdę w players[i]
give_item (i, "he_grenade")ten fragment nie powoduje errorlogów?
#15
Napisano 27.05.2010 09:20
cs_set_user_team(i, CS_TEAM_CT)
Mam dać
cs_set_user_team( CS_TEAM_CT )
@zrobiłem tak i same errory przy kompilacji wywala
Użytkownik Harsay edytował ten post 27.05.2010 09:35
#16
Napisano 27.05.2010 10:40
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_logevent("poczatek", 2, "1=Round_Start")
register_logevent("koniec", 2, "1=Round_End")
register_event("DeathMsg", "DeathMsg", "b")
RegisterHam(Ham_Touch, "weaponbox", "fw_TouchWeapon")
RegisterHam(Ham_Touch, "armoury_entity", "fw_TouchWeapon")
RegisterHam(Ham_Touch, "weapon_shield", "fw_TouchWeapon")
set_lights("b")
}
public poczatek() {
strip_user_weapons(0);
cs_set_user_money(0, 0);
set_task(1.0, "losowanie")
set_task(10.0, "reklama")
set_hudmessage(0, 255, 0, 0.18, 0.24, 0, 6.0, 12.0)
show_hudmessage(0, "Ludzie musza przetrwac 5 minut!")
ColorChat(0, GREEN,"[ZOMGies] Ludzie musza przetrwac 5 minut!")
}
public losowanie()
{
new ilu_losowac = 5 // jak chcesz to zmien (ile osob ma miec wylosowany[id] = true;)
new players[32], num, jest
new bool: wylosowany[33]
get_players(players, num, "a" ) // tylko zywi
if(num >= ilu_losowac)
{
while(jest<ilu_losowac){
new id = players[random_num(0, num)]
if(is_user_connected(id) && is_user_alive(id)){
wylosowany[id] = true;
jest++;
}
}
for(new id=0; id<num; id++){
new i = players[id];
if(wylosowany[i]){
if(get_user_team(i) != CS_TEAM_CT) cs_set_user_team(i, CS_TEAM_CT) // po co przenosic skoro jest w tym teamie?
cs_set_user_model(i, "vip")
set_user_health(i, 200)
set_user_armor(i, 100)
give_item (i, "weapon_m4a1")
give_item (i, "weapon_deagle")
give_item (i, "ammo_556nato")
give_item (i, "ammo_50ae")
give_item (i, "ammo_556nato")
give_item (i, "ammo_50ae")
give_item (i, "ammo_556nato")
give_item (i, "ammo_50ae")
give_item (i, "he_grenade")
} else {
if(get_user_team(i) != CS_TEAM_T) cs_set_user_team(i, CS_TEAM_T)
set_user_gravity(i, 0.40)
set_user_health(i, 90)
give_item(i, "weapon_knife")
set_user_maxspeed (i, 720.0)
switch ( random_num( 1, 3 ) )
{
case 1:
{
cs_set_user_model(i, "zombie_guerilla")
}
case 2:
{
cs_set_user_model(i, "zombie_gign")
}
case 3:
{
cs_set_user_model(i, "zombie_source")
}
}
}
}
}
else
client_print(0, print_chat, "Nie ma na serwerze %i osob!", ilu_losowac);
}
public koniec() { // koniec nie ma parametru ID!
ColorChat(0, GREEN,"[ZOMGies] Koniec walki!")
client_cmd(0, "spk ZOMGies/koniec_walki.wav")
}
public reklama() {
ColorChat(0, GREEN,"***********SERWER UZYWA***********")
ColorChat(0, GREEN,"ZOMGies MOD by Harsay")
ColorChat(0, GREEN,"Wersja: v0.3a")
ColorChat(0, GREEN,"Strona autora: www.harsay.rfv.pl")
ColorChat(0, GREEN,"Pomoc przy tworzeniu: [H]ARD[B]OT, DarkGL, [G]o[Q], Pavulon, byQQ, DeLL")
}
public DeathMsg() { //DeathMsg nie ma parametru ID!
new id = read_data(2)
if(cs_get_user_team(id) == CS_TEAM_T)
ExecuteHamB(Ham_CS_RoundRespawn, id) // pasowalo by to w tasku zrobic lub przynajmnniej zablokowac komende "kill"
}
public fw_TouchWeapon(weapon,id)
{
if (!is_user_connected(id))
return HAM_IGNORED;
if(get_user_team(id) == 1)
return HAM_SUPERCEDE;
return HAM_IGNORED;
}
public plugin_precache() {
precache_sound("ZOMGies/koniec_walki.wav")
precache_model("models/player/zombie_guerilla/zombie_guerilla.mdl")
precache_model("models/player/zombie_gign/zombie_gign.mdl")
precache_model("models/player/zombie_source/zombie_source.mdl")
}
Co powiesz na to? funkcje losujaca zrobilem od poczatku
27 maj 2010 - 11:42:
tylko z tego co widze to wylosowanych 5 osob bedzie jako ludzie a nie wydaje mi sie by o to Ci chodzilo.
Jak cos to zmien
if(wylosowany[i]){na
if(!wylosowany[i]){
Użytkownik kyku edytował ten post 27.05.2010 10:48
#17
Napisano 27.05.2010 10:43
@EDIT
Tylko jak ktoś jest w CT i go nie wylosuje to zmienia mu team na TT? Tak?
Użytkownik Harsay edytował ten post 27.05.2010 10:49
#18
Napisano 27.05.2010 10:48
@ UP
tak
Użytkownik kyku edytował ten post 27.05.2010 10:50
#19
Napisano 27.05.2010 10:55
Że losowane jest tylko zmiana teamu (żadne dawanie broni itp.)
Użytkownik Harsay edytował ten post 27.05.2010 10:56
#20
Napisano 27.05.2010 11:00
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych