Szansa na otrzymanie broni. TMP+Granat
Blood Angel 02.01.2011
Witam
Chciałbym zrobić VIP Plugin na serwer.
Potrzebuję tylko pomocy przy:
1. 30% szansy na wylosowanie TMP z 10 Ammo. (W magazynku 0)
2. 50% na wylosowanie HE, 2x Flash, Smoke.
3. 200HP i 100 Armor na start.
Każdą pomoc nagrodzę !
Chciałbym zrobić VIP Plugin na serwer.
Potrzebuję tylko pomocy przy:
1. 30% szansy na wylosowanie TMP z 10 Ammo. (W magazynku 0)
2. 50% na wylosowanie HE, 2x Flash, Smoke.
3. 200HP i 100 Armor na start.
Każdą pomoc nagrodzę !
R3X
02.01.2011
dawanie broni najłatwiej zrobić z < fun >
Jak dodasz do kodu to
CS Weapons Information - AlliedModders Wiki tu masz listę broni i ammo, dając wybraną broń skopiuj jej nazwę z kolumny NAME (weapon_tucos)
give_item zwraca id entu, więc możesz od razu zmienić zawartość magazynku, potrzebujesz też biblioteki cstrike
i teraz możesz dać TMP z 10 nabojami
żeby dać granat bierzesz z listy he
żeby dać kilka HE musisz najpierw dać 1, a potem ustawić w plecaku
do losowania użyj random_num()
30% szans możesz uzyskać losując liczbę z przedzialu 1-100 i sprawdzić czy jest mniejsza lub równa 30
50 procent tak samo, tylko <= 50
hp ustawiasz set_user_health
Jak dodasz do kodu to
#include <fun>to masz dostęp do funkcji give_item();
CS Weapons Information - AlliedModders Wiki tu masz listę broni i ammo, dając wybraną broń skopiuj jej nazwę z kolumny NAME (weapon_tucos)
give_item zwraca id entu, więc możesz od razu zmienić zawartość magazynku, potrzebujesz też biblioteki cstrike
#include <cstrike>
i teraz możesz dać TMP z 10 nabojami
new ent = give_item(id, "weapon_tmp"); cs_set_weapon_ammo(ent, 10);//10 w magazynku cs_set_user_bpammo(id, CSW_TMP, 0); //0 w plecaku, więc nie przeładuje
żeby dać granat bierzesz z listy he
give_item(id, "weapon_hegrenade");
żeby dać kilka HE musisz najpierw dać 1, a potem ustawić w plecaku
cs_set_user_bpammo(id, CSW_HEGRENADE, kilka);
do losowania użyj random_num()
30% szans możesz uzyskać losując liczbę z przedzialu 1-100 i sprawdzić czy jest mniejsza lub równa 30
if(random_num(1, 100) <= 30){ //daj bron }
50 procent tak samo, tylko <= 50
hp ustawiasz set_user_health
Dimni
02.01.2011
if (random_num(1, 10) <= 3)
{
give_item(id, "weapon_tmp");
new weapon_id = find_ent_by_owner(-1, "weapon_tmp", id);
if(weapon_id) cs_set_weapon_ammo(weapon_id, 10);
}
if (random_num(1, 10) <= 5)
{ give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
}
give_item(id, "item_assaultsuit");
set_user_health(id, 200);
Wrzuć to w jakiś event na starcie rundy / po wklepaniu komendy / inne.
Nie zapomnij o sprawdzaniu czy gracz jest vipem
EDIT: Choinka, był 1.
Użytkownik Dimni edytował ten post 02.01.2011 16:51
byCZUS
02.01.2011
Moim zdaniem lepiej jest użyć switcha z przedziałami niż bawić się w ify:
Używając kodu R3X'a i Dimni wyglądało by to tak:
Nie użyłem dawania broni którego użył Dimni ponieważ potrzebna jest dodatkowa biblioteka engine.
Użytkownik byQQ edytował ten post 02.01.2011 17:42
switch(random_num(1, 10))
{
case 1..3: {
//..............
}
case 5..10: {
//..............
}
}
Używając kodu R3X'a i Dimni wyglądało by to tak:
public szanse(id)
{
// Tutaj warunek ktory sprawdzi czy gracz jest vipem np. flaga t
if(!(get_user_flags(id) & ADMIN_LEVEL_H))
return PLUGIN_CONTINUE;
switch(random_num(1, 10))
{
case 1..3: {
new ent = give_item(id, "weapon_tmp");
cs_set_weapon_ammo(ent, 10);
cs_set_user_bpammo(id, CSW_TMP, 0);
}
case 5..10: {
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
}
}
give_item(id, "item_assaultsuit");
set_user_health(id, 200);
return PLUGIN_CONTINUE;
}
Nie użyłem dawania broni którego użył Dimni ponieważ potrzebna jest dodatkowa biblioteka engine.
Użytkownik byQQ edytował ten post 02.01.2011 17:42
Blood Angel 02.01.2011
Dzięki wszystkim.
Dodano 02 styczeń 2011 - 21:04:
byQQ, to twoje nie działa
Dodano 02 styczeń 2011 - 21:04:
byQQ, to twoje nie działa
byCZUS
02.01.2011
Mi działa =] Jeśli wylosowana liczba będzie 1,2,3 to ma tmp, a jeśli 5,6,7,8,9,10 to granaty. Dodałem coś by sprawdzić jaka zostaje wylosowana liczba i wszystko się zgadza. Możliwe że źle wywołujesz.
Blood Angel 06.01.2011
A czemu bym miał nie mieć... Jestem H@ więc mam wszystkie flagi dane.
Gufinsky
06.01.2011
byQQ u Ciebie jest
czyli dla wszystkich prócz gracza z flagą T.
Jeśli napisałem bzdurę to sorry nie znam się ;D
if(!(get_user_flags(id) & ADMIN_LEVEL_H))
czyli dla wszystkich prócz gracza z flagą T.
Jeśli napisałem bzdurę to sorry nie znam się ;D
byCZUS
06.01.2011
A zauważyłeś że niżej jest return ?
@dla Ciebie 2 rozwiązanie:
Użytkownik byQQ edytował ten post 06.01.2011 23:36
@dla Ciebie 2 rozwiązanie:
public szanse(id)
{
// Tutaj warunek ktory sprawdzi czy gracz jest vipem np. flaga t
if(get_user_flags(id) & ADMIN_LEVEL_H)
{
switch(random_num(1, 10))
{
case 1..3: {
new ent = give_item(id, "weapon_tmp");
cs_set_weapon_ammo(ent, 10);
cs_set_user_bpammo(id, CSW_TMP, 0);
}
case 5..10: {
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
}
}
give_item(id, "item_assaultsuit");
set_user_health(id, 200);
}
return PLUGIN_CONTINUE;
}
Użytkownik byQQ edytował ten post 06.01.2011 23:36
Blood Angel 09.01.2011
Też nie działa... Ktoś ma jakieś propozycje?
Dodano 16 styczeń 2011 - 11:39:
To jak? Ktoś coś wymyśli?
Użytkownik Blood Angel edytował ten post 16.01.2011 11:41
Dodano 16 styczeń 2011 - 11:39:
To jak? Ktoś coś wymyśli?
Użytkownik Blood Angel edytował ten post 16.01.2011 11:41