Jump to content

asnizam

Members
  • Posts

    11
  • Joined

  • Last visited

Everything posted by asnizam

  1. //===== rAthena Script ======================================= //= PVP System //===== By: ================================================== //= hurtsky //===== Compatible With: ===================================== //= rAthena Project //===== Description: ========================================= //= PVP Controller System + Anti Abuse //===== Additional Comments: ================================= //= 1.0 Initial script. //= 1.1 reset abuseTime if #Abuse = 0 //= make AntiAbuse configureable //= add announcer sound //============================================================ //============================================================ //= PVP System //============================================================ - script PVP_System -1,{ end; //===== Abuse deduction progress / timer part================= OnPCLoginEvent: OnTimer60000: // collect current time! .@resetTime = gettimetick(2); if ( $enable_debug == 1 ) debugmes "abuse reset timer started"; // collect attach information! .@RID = getattachedrid(); .@abuserName$ = rid2name ( .@RID ); if ( $enable_debug == 1 ) { debugmes " RID " + .@RID; debugmes " Abuser Name = " + .@abuserName$; debugmes " player abuse point is = " + #Abuse; } // stop timer and reset abuseTIme when #Abuse already 0 if ( #Abuse <= 0 ) { abuseTime = 0; #Abuse = 0; if ( getnpctimer(0) > 0 ) stopnpctimer; end; } /* * differentiation from last abuse time and current loginTime time * might bigger than reset time multiple by collect Abuse point * in that case just reduce the Abuse point to 0 */ if ( #Abuse > 0 ) { if ( $enable_debug == 1 ) debugmes "entering #Abuse > 0"; .@reduceTimeCal = #Abuse * .reduceTime; if ( $enable_debug == 1 ) debugmes "#Abuse * .reduceTime = " + .@reduceTimeCal; .@curTime = .@resetTime - abuseTime; if ( $enable_debug == 1 ) debugmes ".@resetTime - abuseTime = " + .@curTime; if ( .@curTime >= .@reduceTimeCal ) { if ( $enable_debug == 1 ) debugmes .@curTime + " >= " + .@reduceTimeCal; #Abuse = 0; end; } } /* * check every 1 minutes for Abuse point deduction * deduct an abuse / a feed score every 1 minutes; */ if ( abuseTime > 0 ) { // only check when #Abuse > 0 if ( #Abuse > 0 ) { if ( $enable_debug == 1 ) debugmes "entering abuse > 0 "; .@abuseCal = .@resetTime - abuseTime; if ( $enable_debug == 1 ) debugmes ".@abuseCal = " + .@abuseCal; if ( .@abuseCal >= .reduceTime ) { #Abuse--; dispbottom "Your Abuse point been reduce to = " + #Abuse; if ( $enable_debug == 1 ) debugmes "reduce #Abuse to = " + #Abuse; // reset abuse time to current reset time abuseTime = .@resetTime; } if ( #Abuse > 0 ) { if ( $enable_debug == 1 ) debugmes "restart timer because still have abuse point"; attachnpctimer .@abuserName$; initnpctimer; } } end; } if ( #Abuse >= 5 ) { if ( $enable_debug == 1 ) debugmes "entering abuse >= 5 "; .@abuseCal = .@resetTime - lastAbuseTime; if ( $enable_debug == 1 ) debugmes ".@abuseCal = " + .@abuseCal; if ( .@abuseCal >= .recordStop ) { lastAbuseTime = 0; #Abuse = 0; if ( $enable_debug == 1 ) debugmes " reset abuse to " + #Abuse; //stop timer if got initimer if ( getnpctimer(0) > 0 ) stopnpctimer; } if ( .@abuseCal < .recordStop ) { // restart timer if still enough 5mins if ( $enable_debug == 1 ) debugmes "restart timer because not enought 5mins"; attachnpctimer .@abuserName$; initnpctimer; } end; } // extra check if there are Abuse point timer should restart if ( #Abuse > 0 ) { if ( $enable_debug == 1 ) { debugmes "extra check!!"; debugmes "restart timer because still have abuse point"; } if ( getnpctimer(0) > 0 ) stopnpctimer; attachnpctimer .@abuserName$; initnpctimer; } end; //===== Abuse deduction progress / timer part================= OnPCDieEvent: if ( $enable_debug == 1 ) debugmes "killerid = " + killerrid; // mark the die sessions .@onDieSession = 1; .@account_id = getcharid(3); .@char_id = getcharid(0); .@charName$ = strcharinfo(0); .@charLoc$ = strcharinfo(3); callfunc ( "F_pvpReqChecks" , .@charLoc$ , .gmLvl , .gmBypass , .@onDieSession ); currentDieTime = gettimetick(2); newKillerName$ = rid2name ( killerrid ); if ( .antiAbuse ) { callfunc ( "F_pvpAbuseCheck" , .recordStop , .@onDieSession , .@charName$ , .recordDelay , .abuse , .penalty , .recordDelayEnable ); oldKillerName$ = newKillerName$; } dispbottom newKillerName$ + " just kill you"; Death++; lastDieTime = gettimetick(2); callfunc ( "F_pvpUpdateRec" , .@char_id , .@account_id , .@charName$ ); .@onDieSession = 0; end; OnPCKillEvent: // mark the kill sessions if ( $enable_debug == 1 ) debugmes "killedrid = " + killedrid; .@onKillSession = 2; .@account_id = getcharid(3); .@char_id = getcharid(0); .@charName$ = strcharinfo(0); .@charLoc$ = strcharinfo(3); callfunc ( "F_pvpReqChecks" , @charLoc$ , .gmLvl , .gmBypass , .@onKillSession ); currentKillTime = gettimetick(2); newVictimName$ = rid2name ( killedrid ); if ( .antiAbuse ) { callfunc ( "F_pvpAbuseCheck" , .recordStop , .@onKillSession , .@charName$ , .recordDelay , .abuse , .penalty , .recordDelayEnable ); oldVictimName$ = newVictimName$; } .@streakTime = currentKillTime - lastKillTime; if ( .@streakTime <= .streakTime ) KillingStreak++; else KillingStreak = 0; .@killAnnounce$ = .@charName$ + " just kill " + newVictimName$ + " at " + .@charLoc$ + "."; switch ( KillingStreak ) { case 0: announce .@killAnnounce$,bc_blue|bc_all; announce .@charName$ + " First Blood!!! ",bc_blue|bc_all; soundeffect "0_firstblood_KS1.wav", 0; break; case 1: announce .@killAnnounce$,bc_blue|bc_all; announce .@charName$ + " Double Kill!!! ",bc_blue|bc_all; soundeffect "0_doublekill_MK2.wav", 0; MultiKill++ DoubleKill++; break; case 2: announce .@killAnnounce$,bc_blue|bc_all; announce .@charName$ + " Triple Kill!!! ",bc_blue|bc_all; soundeffect "0_killingspree_KS3.wav", 0; soundeffect "0_tripplekill_MK3.wav", 0; TripleKill++; KillingSpree++; break; case 3: announce .@killAnnounce$,bc_blue|bc_all; announce .@charName$ + " Dominating!!! ",bc_blue|bc_all; soundeffect "0_dominating_KS4.wav", 0; soundeffect "0_ultrakill_MK4.wav", 0; Dominating++; UltraKill++; break; case 4: announce .@killAnnounce$,bc_blue|bc_all; announce .@charName$ + " Rampage!!! ",bc_blue|bc_all; soundeffect "0_megakill_KS5.wav", 0; soundeffect "0_rampage_MK5.wav", 0; Rampage++; MegaKill++; break; case 5: announce .@killAnnounce$,bc_blue|bc_all; announce .@charName$ + " Owning!!! ",bc_blue|bc_all; soundeffect "0_unstopable_KS6.wav", 0; soundeffect "0_ownage_MK6.wav", 0; Ownage++; Unstoppable++; break; case 6: announce .@killAnnounce$,bc_blue|bc_all; announce .@charName$ + " Wicked Sick!!! ",bc_blue|bc_all; soundeffect "0_wickedsick_KS7.wav", 0; soundeffect "0_ownage_MK6.wav", 0; Ownage++; WickedSick++; break; case 7: announce .@killAnnounce$,bc_blue|bc_all; announce .@charName$ + " Monster Kill!!!! ",bc_blue|bc_all; soundeffect "0_monsterkill_KS8.wav", 0; soundeffect "0_ownage_MK6.wav", 0; Ownage++; MonsterKill++; break; case 8: announce .@killAnnounce$,bc_blue|bc_all; announce .@charName$ + " Godlike!!!! ",bc_blue|bc_all; soundeffect "0_godlike_KS9.wav", 0; soundeffect "0_ownage_MK6.wav", 0; Ownage++; GodLike++; break; case 9: case 10: case 11: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 19: announce .@killAnnounce$,bc_blue|bc_all; announce .@charName$ + " Beyond GodLike!!!! ",bc_blue|bc_all; soundeffect "0_beyondgodlike_KS10.wav", 0; soundeffect "0_ownage_MK6.wav", 0; Ownage++; BeyondGodLike++; break; default: break; } Kill++; lastKillTime = gettimetick(2); callfunc ( "F_pvpUpdateRec" , .@char_id , .@account_id , .@charName$ ); .@onKillSession = 0; end; OnInit: query_sql ( " CREATE TABLE IF NOT EXISTS `pvp_rank` " + " ( " + " `char_id` int(11) NOT NULL, " + " `account_id` int(11) NOT NULL, " + " `char` varchar(30) NOT NULL, " + " `kill` int(11) NOT NULL, " + " `death` int(11) NOT NULL, " + " `kdr` varchar(30) NOT NULL, " + " `killingstreak` int(11) NOT NULL, " + " `multikill` int(11) NOT NULL, " + " `killingspree` int(11) NOT NULL, " + " `dominating` int(11) NOT NULL, " + " `megakill` int(11) NOT NULL, " + " `unstoppable` int(11) NOT NULL, " + " `wickedsick` int(11) NOT NULL, " + " `monsterkill` int(11) NOT NULL, " + " `godlike` int(11) NOT NULL, " + " `beyondgodlike` int(11) NOT NULL, " + " `doublekill` int(11) NOT NULL, " + " `triplekill` int(11) NOT NULL, " + " `ultrakill` int(11) NOT NULL, " + " `rampage` int(11) NOT NULL, " + " `ownage` int(11) NOT NULL, " + " `nemesiskill` int(11) NOT NULL, " + " `feedcount` int(11) NOT NULL, " + " `abuse` int(11) NOT NULL, " + " `mmr`int(11) NOT NULL, " + " PRIMARY KEY (`char_id`) " + " ) " + " ENGINE=MyISAM DEFAULT CHARSET=latin1" ); //===== Anti abuse configuration // enable anti abuse = 1 .antiAbuse = 1; // when the player abuse == 5 time kill same player, stop the pvp record for in seconds .recordStop = 300; // 5minutes // reduce 1 abuse point in 1 minutes (default) if player not adding any abuse point // = MUST HIGHER THAN 1 MINUTES! .reduceTime = 60; // 1minute // don't record if the killer kill in this delay time // = default 5 seconds .recordDelayEnable = 1; .recordDelay = 5; // deduct kill points after player tag as Abuser .penalty = 6; // tag abuse if 5 time for same name .abuse = 5; //===== End of Anti abuse configuration // streak time cooldown .streakTime = 60; // set lowest level of gm to not include in record // 0 = disable gmcheck! 1 = enable GM check! .gmBypass = 0; .gmLvl = 6; // change to map name if you want specific map like , "prontera" , "geffen"; setarray $pvpMap$[0],"pvp_y_8-2"; end; } ---------------------------------------------------------------- //===== rAthena Script ======================================= //= PVP System Function //===== By: ================================================== //= hurtsky //===== Compatible With: ===================================== //= rAthena Project //===== Description: ========================================= //= PVP Function //===== Additional Comments: ================================= //= 1.0 Initial script. //= 1.1 add check for monsterID //= 1.2 add PVP update record - save record to table //= 1.3 re-arrange functions //= pull our killer/victim name check as F_pvpAbuseName //= only annouce abuser/feed after 4 times continuous //= abuser/feed. //= add sound for feeder //= 1.4 fix F_pvpUpdateRec function argument //= 1.5 combine all anti abuse function into one check //============================================================ //============================================================ //= PVP System Function //============================================================ function script F_pvpReqChecks { // only records players if ( getarg(3) == 1 ) { if ( killerrid < 2000000 ) || ( killerrid > 3000000 ) end; } if ( getarg(3) == 2 ) { if ( killedrid < 2000000 ) || ( killedrid > 3000000 ) end; } // check gm enable or not if ( getarg(2) ) { if ( getgroupid() >= getarg(1) ) end; } .@pvpMapSize = getarraysize ( $pvpMap$ ); // don't detect die if not in pvp maps if ( $pvpMap$[0] != "ALL" ) { for ( .@i = 0; .@i < .@pvpMapSize; .@i++ ) { if ( getarg(0) != $pvpMap$[.@i] ) { end; } } } return; // return if all check pass } function script F_pvpAbuseCheck { /* .recordStop = getarg(0) .@onDie/KillSession = getarg(1) .@charName$ = getarg(2) .recordDelay = getarg(3) .abuse = getarg(4) .penalty = getarg(5) .recordDelayEnable = getarg(6) */ // check if already tagged as abuser // dont record them if ( lastAbuseTime > 0 ) { if ( getarg(1) == 1 ) { .@dieKillTime = currentDieTime; } else { .@dieKillTime = currentKillTime; } .@abuseCal = .@dieKillTime - lastAbuseTime; if ( getarg(0) >= 60 ) { .@recordStopMin = getarg(0) / 60; .@recordStopWord$ = "minutes"; } if ( getarg(0) < 60 ) { .@recordStopMin = getarg(0); .@recordStopWord$ = "seconds"; } if ( .@abuseCal < getarg(0) ) { dispbottom "You're tagged as PVP Abuser"; dispbottom "No record will done in " + .@recordStopMin + " " + .@recordStopWord$; end; } if ( .@abuseCal > getarg(0) ) { lastAbuseTime = 0; #Abuse = 0; } } // record abuse time if ( getarg(1) == 1 ) { if ( newKillerName$ == oldKillerName$ ) { //delay the time record if same name kill the player if ( getarg(6) ) { .@delayRecord = currentDieTime - lastDieTime; if ( .@delayRecord <= getarg(3) ) end; } abuseTime = currentDieTime; } } else { if ( newVictimName$ == oldVictimName$ ) { //delay the time record if same name kill the player if ( getarg(6) ) { .@delayRecord = currentKillTime - lastKillTime; if ( .@delayRecord <= getarg(3) ) { end; } } abuseTime = currentKillTime; } } #Abuse++; attachnpctimer getarg(2); initnpctimer; // tag abuse if more than abuse limit if ( #Abuse >= getarg(4) ) { dispbottom "You're already tagged as abuser!"; dispbottom "Your kill and die wont be count until Abuse timer reseted"; dispbottom "Your Kill Score been deduct by " + getarg(5); if ( Kill <= getarg(5) ) Kill = 0; else Kill = Kill - getarg(5); dispbottom "Your Kill Score now = " + Kill + " kills"; lastAbuseTime = gettimetick(2); Abuser++; // delete abuseTime record! because we will just make the abuser wait 5minutes abuseTime = 0; //stop timer if got initimer if ( getnpctimer(0) > 0 ) stopnpctimer; attachnpctimer getarg(2); initnpctimer; end; } if ( getarg(1) == 1 ) { if ( #Abuse >= getarg(4) ){ announce strcharinfo(0) + " just feed " + newKillerName$ +" for " + #Abuse + " times.",bc_blue|bc_all; soundeffect "Feeder.wav", 0; } } else { if ( #Abuse >= getarg(4) ) announce strcharinfo(0) + " abuse " + newVictimName$ +" for " + #Abuse + " times.",bc_blue|bc_all; } return; } function script F_pvpUpdateRec { query_sql ( " REPLACE INTO `pvp_rank` " + " ( `char_id`, `account_id`, `char` " + " , `kill` , `death`, `kdr` " + " , `killingstreak` , `multikill` , `nemesiskill` " + " , `abuse` ,`killingspree` , `dominating` " + " , `megakill` , `unstoppable` , `wickedsick` " + " , `monsterkill` , `godlike` , `beyondgodlike` " + " , `doublekill` , `triplekill` , `ultrakill` " + " , `rampage` , `ownage` , `feedcount` " + " , `mmr` ) " + " VALUES " + " ( " + getarg(0) + " , " + getarg(1) +" , '" + getarg(2) + "' " + " , " + Kill + " , " + Death + " , '" + KDR + "' " + " , " + KillingStreak + " , " + MultiKill + " , " + NemesisKill + " " + " , " + Abuser + " , " + KillingSpree + " , " + Dominating + " " + " , " + MegaKill + " , " + Unstoppable + " , " + WickedSick + " " + " , " + MonsterKill + " , " + Godlike + " , " + BeyondGodlike + " " + " , " + DoubleKill + " , " + TripleKill + " , " + UltraKill + " " + " , " + Rampage + " , " + Ownage + " , " + Feedcount + " " + " , " + MMR + " ) " ); return; } Dear all, Please help me to solve issue below: 1. The ranks seems like only work with "death" variables, i assume even "kill" point count as death since i dont have any data for other variables (KDR and KILL). When i opened the pvp_rank, only "death" data has been captured. 2. The "text" announcement not working with me. Thanks. Regards,
  2. Hi all, I would like to request script to disable @go for certain map`(s). Thanks
  3. Dear all, I got 2 error after i on phpmyadmin: 1. mysqli_real_connect(): (HY000/1045): Access denied for user 'phpmyadmin'@'localhost' (using password: YES) 2. Connection for controluser as defined in your configuration failed. Please help me to clear the error. Thanks a lot.
  4. Hi all, Code below doest work, please help me. prontera,99,99,5 Stats and Skills 477,{ atcommand "@allskills"; atcommand "@allstats 120"; end; } Thanks
  5. Hello, While waiting my web page completed for my client do account registration, i manually enter NEW login account and change the variables with the red circle. 1. what is "pincode_change" ? what if i leave it with "0" value? 2. Is it safe what I am doing right now? 3. What is the worst thing will happen by doing this in manual? Thanks
  6. I got the answer already, my char config for start_point was wrong spelling.
  7. Hi all, Server disconnect when create new character and its start when I logged to the map on the first time. When i was using admin id the error i got "character creation denied". When i want to use ready made character it was ok then. Thank you.
  8. I don`n perform any import/export activity. BTW, its already gone by itself. Thanks
  9. Hi all, When i click import/export tab, i received warning with error below: How to solve this issue and at the same time my login server down. Thanks
  10. Hi all, After few changes has been done on NPC, i performed @reloadscript, then i need to load one by one my custom NPC by using @loadnpc <path>, how could i load it in bundle, is it possible ? Thanks
×
×
  • Create New...