←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Pytanie odnośnie Hamsandwich.

Zablokowany

  • +
  • -
Muzzi - zdjęcie Muzzi 22.01.2011

Witam serdecznie.
Niestety nie mam możliwości przetestowania tego. I tutaj proszę was o odpowiedź czy ta funkcja będzie działać.
A jak nie to co jest źle co musze poprawić.
Chodzi mi oto zeby osobie która ma klase abcd miała 50 % szansy ze zada dodatkowy dmg od 50 do 100.

init :

RegisterHam(Ham_TakeDamage, "player","fwTakeDamage",0);


funkcja :

public fwTakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
if(player_class[idattacker] == Abcd)
{
if(random_num(1,100)<= 50) // 50 %
{
damage+=(random_num(50,100))
}
}
return HAM_IGNORED;
}
Odpowiedz

  • +
  • -
Abes Mapper - zdjęcie Abes Mapper 22.01.2011

Automatyczna wiadomość


Ten temat został przeniesiony z forum:
AMX Mod X -> Pytania
do
Scripting -> Pytania
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 22.01.2011


public fwTakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
if(player_class[idattacker] == Abcd)
{
if(random_num(1,100)<= 50) // 50 %
{

SetHamParamFloat(damage+random_float(50.0,100.0)
return HAM_HANDLED;
}
}
return HAM_IGNORED;
}
Odpowiedz

  • +
  • -
Muzzi - zdjęcie Muzzi 22.01.2011

Niestety Nie działa.

C:\Documents and Settings\Uzytkownik\Pulpit\Desktop\pstudio-0.8.3\temp3.sma(1773 -- 1774) : warning 213: tag mismatch
C:\Documents and Settings\Uzytkownik\Pulpit\Desktop\pstudio-0.8.3\temp3.sma(1773 -- 1774) : error 001: expected token: ",", but found "return"

Wskazuje na tą linijkę.


SetHamParamFloat(damage+random_float(50.0,100.0)
return HAM_HANDLED;
Odpowiedz

Zardziol - zdjęcie Zardziol 22.01.2011

też mam podobny problem więc napisze tu:

public fwTakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
damage=0.00
damage=obr[idattacker]
if(random_num(1,100)<= inte[idattacker]) // 50 %
{

SetHamParamFloat(damage+random_float(0.1,100.0)
return HAM_HANDLED
}

new Float:bff[33] = bf[idinflictor]*0.25
damage=damage-bff[idinflictor]


}


Czemu ten kod nie działa ?
Błąd jest tu : SetHamParamFloat(damage+random_float(0.1,100.0)
RejestracjaHamsa taka jak u autora tematu
Odpowiedz

  • +
  • -
Knopers - zdjęcie Knopers 22.01.2011

public fwTakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
if(player_class[idattacker] == Abcd)
{
if(random_num(1,100) <= 50) // 50 %
{
SetHamParamFloat(4, damage+random_float(50.0,100.0))
return HAM_HANDLED;
}
}
return HAM_IGNORED;
}
Odpowiedz

Zardziol - zdjęcie Zardziol 22.01.2011

knopers co oznacza to 4 ?
Odpowiedz

  • +
  • -
Knopers - zdjęcie Knopers 22.01.2011

Funkcja SetHamParamFloat jak można się domyślić po nazwie zmienia Parametr typu Float w funkcji HamSandwitch'a .
Funkcja przyjmuje 2 argumenty:
1. Numer Parametru - w tym wypadku damage który ma nr. 4
2. Nową wartość dla danego parametru, oczywiście typu zmienno-przecinkowego (Float)
Odpowiedz
Zablokowany