←  Pluginy

AMXX.pl: Support AMX Mod X i SourceMod

»

Szansa na otrzymanie broni. TMP+Granat

Zablokowany

Blood Angel - zdjęcie 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ę Dołączona grafika!
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 02.01.2011

dawanie broni najłatwiej zrobić z < fun >

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
Odpowiedz

  • +
  • -
Dimni - zdjęcie 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
Odpowiedz

  • +
  • -
byCZUS - zdjęcie byCZUS 02.01.2011

Moim zdaniem lepiej jest użyć switcha z przedziałami niż bawić się w ify:

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
Odpowiedz

Blood Angel - zdjęcie Blood Angel 02.01.2011

Dzięki wszystkim.

Dodano 02 styczeń 2011 - 21:04:
byQQ, to twoje nie działa :/
Odpowiedz

  • +
  • -
byCZUS - zdjęcie 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.
Odpowiedz

Blood Angel - zdjęcie Blood Angel 03.01.2011

Ale ja nawet HP nie dostaje ...
Odpowiedz

  • +
  • -
byCZUS - zdjęcie byCZUS 04.01.2011

Człowieku a masz flagę "t" !?
Odpowiedz

Blood Angel - zdjęcie Blood Angel 06.01.2011

A czemu bym miał nie mieć... Jestem H@ więc mam wszystkie flagi dane.
Odpowiedz

  • +
  • -
Gufinsky - zdjęcie Gufinsky 06.01.2011

byQQ u Ciebie jest

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
Odpowiedz

  • +
  • -
byCZUS - zdjęcie byCZUS 06.01.2011

A zauważyłeś że niżej jest return ?
@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
Odpowiedz

Blood Angel - zdjęcie 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
Odpowiedz
Zablokowany