Masz losową szansę na to że trafisz wroga piorunem.
Wymagany moduł: hamsandwich
Wygląda to tak:

No to do dzieła:
1. Dodajemy zmienną globalną:
new piorun_zeusa[33] = 1
2. W public "reset_item_skills" dodajemy
piorun_zeusa[id] = 0
3. W public "iteminfo(id)" dodajemy:
if (piorun_zeusa[id] &--#62; 0)
{
num_to_str(piorun_zeusa[id],TempSkill,10)
add(itemEffect,699,"Masz 1/")
add(itemEffect,699,TempSkill)
add(itemEffect,699,"szans ,zeby uderzyc we wroga piorunem&--#60;br&--#62;")
}
4. W public "award_item(id, itemnum)" dodajemy kolejny Item'ek, na początku podmieniamy:
new rannum = random_num(1,xxx)xxx - nasza ilość itemow musimy zwiększyć o jedno aby losowanie odbyło się prawidłowo
case xxx:za xxx wstawiamy kolejny numer itemu
Dalej...
{
player_item_name[id] = "Piorun Zeusa"
player_item_id[id] = rannum
piorun_zeusa[id] = random_num(8,15)
show_hudmessage(id, "Znalazles przedmiot: %s :: Masz 1/%i szans ,ze trafisz wroga piorunem",player_item_name[id],piorun_zeusa[id])
}
W public damage(id) dodajemy
add_bonus_piorun(attacker_id,id)
5. I na końcu dodajemy:
public add_bonus_piorun(attacker_id,id)
{
if (piorun_zeusa[attacker_id] &--#62;0 && (random_num(1, piorun_zeusa[attacker_id]) == 1))
{
new Float:fl_Origin[3]
pev(id, pev_origin, fl_Origin)
if(cs_get_user_team(attacker_id) == cs_get_user_team(id))
return HAM_IGNORED
set_pev(id, pev_velocity, Float:{0.0,0.0,0.0}) // stop motion
set_pev(id, pev_maxspeed, 5.0) // prevent from moving
thunder_effects(fl_Origin)
ExecuteHam(Ham_TakeDamage, id, attacker_id, attacker_id, 40.0, 1);
}
return PLUGIN_HANDLED
}
thunder_effects(Float:fl_Origin[3])
{
new Float:fX = fl_Origin[0], Float:fY = fl_Origin[1], Float:fZ = fl_Origin[2]
// Beam effect between two points
engfunc(EngFunc_MessageBegin, MSG_BROADCAST, SVC_TEMPENTITY, fl_Origin, 0)
write_byte(TE_BEAMPOINTS) // 0
engfunc(EngFunc_WriteCoord, fX + 150.0) // start position
engfunc(EngFunc_WriteCoord, fY + 150.0)
engfunc(EngFunc_WriteCoord, fZ + 800.0)
engfunc(EngFunc_WriteCoord, fX) // end position
engfunc(EngFunc_WriteCoord, fY)
engfunc(EngFunc_WriteCoord, fZ)
write_short(sprite_lgt) // sprite index
write_byte(1) // starting frame
write_byte(15) // frame rate in 0.1's
write_byte(10) // life in 0.1's
write_byte(80) // line width in 0.1's
write_byte(30) // noise amplitude in 0.01's
write_byte(255) // red
write_byte(255) // green
write_byte(255) // blue
write_byte(255) // brightness
write_byte(200) // scroll speed in 0.1's
message_end()
// Sparks
message_begin(MSG_PVS, SVC_TEMPENTITY)
write_byte(TE_SPARKS) // 9
engfunc(EngFunc_WriteCoord, fX) // position
engfunc(EngFunc_WriteCoord, fY)
engfunc(EngFunc_WriteCoord, fZ + 10.0)
message_end()
// Smoke
engfunc(EngFunc_MessageBegin, MSG_BROADCAST, SVC_TEMPENTITY, fl_Origin, 0)
write_byte(TE_SMOKE) // 5
engfunc(EngFunc_WriteCoord, fX) // position
engfunc(EngFunc_WriteCoord, fY)
engfunc(EngFunc_WriteCoord, fZ + 10.0)
write_short(sprite_smoke) // sprite index
write_byte(10) // scale in 0.1's
write_byte(10) // framerate
message_end()
// Blood
engfunc(EngFunc_MessageBegin, MSG_BROADCAST, SVC_TEMPENTITY, fl_Origin, 0)
write_byte(TE_LAVASPLASH) // 10
engfunc(EngFunc_WriteCoord, fX) // position
engfunc(EngFunc_WriteCoord, fY)
engfunc(EngFunc_WriteCoord, fZ + 12.0)
message_end()
}
Autorem tak jak w poprzednim przypadku nie jestem ja lecz "M@nkovsky"
Koniec, Enjoy
Dalej...
{ player_item_name[id] = "Piorun Zeusa" player_item_id[id] = rannum piorun_zeusa[id] = random_num(8,15) show_hudmessage(id, "Znalazles przedmiot: %s :: Masz 1/%i szans ,ze trafisz wroga piorunem",player_item_name[id],piorun_zeusa[id]) } W public damage(id) dodajemy add_bonus_piorun(attacker_id,id)
Powinno być:
Dalej...
{
player_item_name[id] = "Piorun Zeusa"
player_item_id[id] = rannum
piorun_zeusa[id] = random_num(8,15)
show_hudmessage(id, "Znalazles przedmiot: %s :: Masz 1/%i szans ,ze trafisz wroga piorunem",player_item_name[id],piorun_zeusa[id])
}
A później:
* W public "damage(id)" dodajemy:
add_bonus_piorun(attacker_id,id)
Dodatkowo chcę wspomnieć, że linijką :
ExecuteHam(Ham_TakeDamage, id, 0 , id, 40.0, 1);
.. można edytować obrażenia zadawane przez piorun, zamiast 40.0 dajemy własną liczbę rzeczywistą, np 66.0 - rzeczywistą, czyli koniecznie z np .0 na końcu. Można to też przerobić dodając do tego np +floatround(player_intelligence[id]/5) - czyli przy 100 inteligencji będziecie zadawać SWOJE USTAWIONE + 20 ;]
Użytkownik DarkGL edytował ten post 24.03.2012 20:03


Dodatki SourceMod



Temat jest zamknięty










