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