Page 1 of 2

Random gyvybės

Posted: 2013 Nov 29 23:05
by xFrostas
Taigi turiu tokį kodą

Code: Select all

#include <amxmodx>#include <hamsandwich>#include <fun> new const Health[] = { 100, 110, 120, 130 } new bool: Assigned[4] new Class[33] public plugin_init(){    register_event("HLTV", "Event_HLTV", "a", "1=0", "2=0")     RegisterHam(Ham_Spawn, "player", "Fwd_PlayerSpawn", 1)} public Event_HLTV(){    arrayset(Assigned, false, sizeof(Assigned))} public Fwd_PlayerSpawn(id){    if (!is_user_alive(id))        return     if (get_user_team(id) == 2)    {        new Rand        while (Assigned[(Rand = random(3))])         Class[id] = Rand        Assigned[Rand] = true    }     set_user_health(id, Health[Class[id]])}  
Aš esu padaręs max 3 CT komandoje žaidėjus ir noriu, kad kiekvienam iš jų paskirtų random hp iš Health[], bet negali būti dviejų pvz su 120 HP, šitas kodas kažkaip keistai veikia, t.y. kartais hp duoda tik 2 žaidėjam, o kitas būna su 100 (kas reiškia, kad klasė yra neparenkama - 0). Kartais išvis neduoda.

Re: Random gyvybės

Posted: 2013 Nov 30 00:21
by psychical
random(3) == random_num(0, 3)

Jei bus aiškiau

Re: Random gyvybės

Posted: 2013 Nov 30 00:23
by xFrostas
žinau šitą, bet kas iš to?

Re: Random gyvybės

Posted: 2013 Nov 30 00:24
by psychical
xFrostas wrote:žinau šitą, bet kas iš to?
Atsakymas į tavo klausimą iš kur atsiranda neparinkta klasė - 0

Re: Random gyvybės

Posted: 2013 Nov 30 00:28
by xFrostas
Ai jo. Dėkui :) Dabar, kodėl kartais parenka pvz 2 CT ir duoda po 130HP?

Re: Random gyvybės

Posted: 2013 Nov 30 00:29
by psychical
xFrostas wrote:Ai jo. Dėkui :) Dabar, kodėl kartais parenka pvz 2 CT ir duoda po 130HP?
Todėl nes Class[id] yra nuo 0 iki 3 ATSITIKTINAI tai reiškia, kad tau gali būt ir visi trys 3 ir visi trys 2 ir pnš.

Re: Random gyvybės

Posted: 2013 Nov 30 00:30
by xFrostas
Tai nesuprantu, kaip daryti tada? Čia bandžiau su senu Arno pavyzdžiu, kažkada buvo parašęs šitam forume.

Re: Random gyvybės

Posted: 2013 Nov 30 00:31
by psychical
xFrostas wrote:Tai nesuprantu, kaip daryti tada? Čia bandžiau su senu Arno pavyzdžiu, kažkada buvo parašęs šitam forume.
Jo, parašiau, bežiūrėdamas filmą suvokiau, kad truputį sumaišiau :A:

Re: Random gyvybės

Posted: 2013 Nov 30 00:34
by hleV
Jei while ciklas tuščias, reikia po jo pridėt {}, nes dabar veikia taip:

Code: Select all

while (Assigned[(Rand = random(3))])    Class[id] = Rand Assigned[Rand] = true
Nesuprantu, kodėl nustatai HP už if sąlygos ribų.

Kodas apskritai absurdiškas ir man net nekyla ranka su juo kažką daryt.
psychical wrote:random(3) == random_num(0, 3)

Jei bus aiškiau
Tai kad random(3) == random_num(0, 2).

Re: Random gyvybės

Posted: 2013 Nov 30 00:36
by psychical
hleV wrote:Tai kad random(3) == random_num(0, 2).
Tai kad iki 3, ne 2, na nebent čia tik pas mane taip :D

-- 2013 Lap 30 00:39 --

Code: Select all

native random(max);
Pagal include failą tai ir gaunasi nuo 0 iki to max skaičiaus, kurį tu įrašei.