SHOW:
|
|
- or go back to the newest paste.
1 | - | /************************************************************************************** |
1 | + | /************************************************************************ |
2 | - | * * |
2 | + | * *----------------* | *----------------* | *---------------* * |
3 | - | * * |
3 | + | * | Originally |* | *| Edited |* | *| Edited | * |
4 | - | * * |
4 | + | * | By |* | *| By |* | *| By | * |
5 | - | * * |
5 | + | * | Kjanko |* | *| Tommy |* | *| Rochet2 | * |
6 | - | * _____ * |
6 | + | * |------------------|*|---------------------|*|------------------| * |
7 | - | * *---------------* | *--------------* * |
7 | + | ************************************************************************/ |
8 | - | * | By |* | *| Edited | * |
8 | + | |
9 | - | * | Kjanko |* | *| By | * |
9 | + | |
10 | - | * | |* *| Tommy | * |
10 | + | |
11 | - | * |-------------------|*|----------------| * |
11 | + | |
12 | - | ***************************************************************************************/ |
12 | + | |
13 | public: | |
14 | System_OnKill() : PlayerScript("System_OnKill") {} | |
15 | ||
16 | void OnPVPKill(Player * Killer, Player * Victim) | |
17 | { | |
18 | uint64 KillerGUID = Killer->GetGUID(); | |
19 | uint64 VictimGUID = Victim->GetGUID(); | |
20 | ||
21 | struct KillStreak_Info | |
22 | { | |
23 | uint32 killstreak; | |
24 | uint64 lastkill; | |
25 | }; | |
26 | ||
27 | static std::map<uint64, KillStreak_Info> KillStreakData; | |
28 | ||
29 | if( KillerGUID == VictimGUID || KillStreakData[KillerGUID].lastkill == VictimGUID ) | |
30 | return; | |
31 | ||
32 | KillStreakData[KillerGUID].killstreak++; | |
33 | KillStreakData[KillerGUID].lastkill = VictimGUID; | |
34 | KillStreakData[VictimGUID].killstreak = 0; | |
35 | KillStreakData[VictimGUID].lastkill = 0; | |
36 | ||
37 | if( KillStreakData[KillerGUID].killstreak % 10 == 0 ) // send killstreak message every 10 kills | |
38 | { | |
39 | char msg[250]; | |
40 | snprintf(msg, 250, "[PvP System]: %s is on a killstreak of %u!", Killer->GetName(), KillStreakData[KillerGUID].killstreak); | |
41 | - | switch( KillStreakData[KillerGUID].killstreak ) |
41 | + | sWorld->SendServerMessage(SERVER_MSG_STRING, msg); |
42 | } | |
43 | ||
44 | - | case 10: |
44 | + | if( KillStreakData[KillerGUID].killstreak % 20 == 0 ) // reward every 20 kills |
45 | - | snprintf(msg, 250, "[PvP System]: %s is on a killstreak of %u!", Killer->GetName(), KillStreakData[KillerGUID].killstreak); |
45 | + | Killer->ModifyMoney(100000); // this is the reward in copper, currently 10 gold |
46 | - | sWorld->SendServerMessage(SERVER_MSG_STRING, msg); |
46 | + | } |
47 | - | break; |
47 | + | |
48 | ||
49 | - | case 20: |
49 | + | |
50 | - | snprintf(msg, 250, "[PvP System]: %s is on a killstreak of %u!", Killer->GetName(), KillStreakData[KillerGUID].killstreak); |
50 | + | |
51 | - | sWorld->SendServerMessage(SERVER_MSG_STRING, msg); |
51 | + | |
52 | - | break; |
52 | + |