SHOW:
|
|
- or go back to the newest paste.
1 | - | /************************************************************************ |
1 | + | /* |
2 | - | * *----------------* | *----------------* | *---------------* * |
2 | + | Originally by Kjanko |
3 | - | * | Originally |* | *| Edited |* | *| Edited | * |
3 | + | Edited by Tommy |
4 | - | * | By |* | *| By |* | *| By | * |
4 | + | Edited by Rochet2 ~ Made dynamic |
5 | - | * | Kjanko |* | *| Tommy |* | *| Rochet2 | * |
5 | + | */ |
6 | - | * |------------------|*|---------------------|*|------------------| * |
6 | + | |
7 | - | ************************************************************************/ |
7 | + | |
8 | ||
9 | class System_OnKill : public PlayerScript | |
10 | { | |
11 | public: | |
12 | System_OnKill() : PlayerScript("System_OnKill") {} | |
13 | ||
14 | void OnPVPKill(Player * Killer, Player * Victim) | |
15 | { | |
16 | uint64 KillerGUID = Killer->GetGUID(); | |
17 | uint64 VictimGUID = Victim->GetGUID(); | |
18 | ||
19 | struct KillStreak_Info | |
20 | { | |
21 | uint32 killstreak; | |
22 | uint64 lastkill; | |
23 | }; | |
24 | ||
25 | static std::map<uint64, KillStreak_Info> KillStreakData; | |
26 | ||
27 | if( KillerGUID == VictimGUID || KillStreakData[KillerGUID].lastkill == VictimGUID ) | |
28 | return; | |
29 | ||
30 | if( KillStreakData[VictimGUID].killstreak >= 3 ) | |
31 | { | |
32 | char msg[250]; | |
33 | snprintf(msg, 250, "|cFF81CF42%s|r has ended |cFFFFFFFF%s|r's killing spree!", Killer->GetName(), Victim->GetName()); | |
34 | sWorld->SendServerMessage(SERVER_MSG_STRING, msg); | |
35 | } | |
36 | ||
37 | - | if( KillStreakData[KillerGUID].killstreak % 10 ) // send killstreak message every 10 kills |
37 | + | |
38 | KillStreakData[KillerGUID].lastkill = VictimGUID; | |
39 | KillStreakData[VictimGUID].killstreak = 0; | |
40 | - | snprintf(msg, 250, "[PvP System]: %s is on a killstreak of %u!", Killer->GetName(), KillStreakData[KillerGUID].killstreak); |
40 | + | |
41 | ||
42 | if( KillStreakData[KillerGUID].killstreak % 10 == 0 ) // send killstreak message every 10 kills | |
43 | - | |
43 | + | |
44 | - | if( KillStreakData[KillerGUID].killstreak % 20 ) // reward every 20 kills |
44 | + | |
45 | - | Killer->AddItem(25, 1); // adds item: entry = 25, amount = 1 |
45 | + | snprintf(msg, 250, "|cFF81CF42%s|r has a killstreak of |cFF42A0CF%u|r!", Killer->GetName(), KillStreakData[KillerGUID].killstreak); |
46 | sWorld->SendServerMessage(SERVER_MSG_STRING, msg); | |
47 | } | |
48 | else if( KillStreakData[KillerGUID].killstreak == 3 ) | |
49 | { | |
50 | char msg[250]; | |
51 | snprintf(msg, 250, "|cFF81CF42%s|r is on a killingspree!", Killer->GetName()); | |
52 | sWorld->SendServerMessage(SERVER_MSG_STRING, msg); | |
53 | } | |
54 | ||
55 | } | |
56 | }; | |
57 | ||
58 | void AddSC_PvP_System() | |
59 | { | |
60 | new System_OnKill; | |
61 | } |