Bringer
-
Posts
746 -
Joined
-
Last visited
-
Days Won
1
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Posts posted by Bringer
-
-
1 hour ago, dubstep said:
Hi All, anyone knows why this script not showing and not getting the reward if you're the only 1 in the map? There is no announcement too that you're the winner.
In this screenshot, I already killed my 2nd account and I am the only one in the map:
- script event_start -1,{ OnMinute00: announce "Death Match Event starts in a few minutes!",0; sleep 5000; announce "Register at the NPC 'Death Match'. You have 2 minutes to sign up!",0; pvpoff "guild_vs2"; enablenpc "Death Match"; donpcevent "agasper_dm::OnDM"; end; } prontera,150,170,5 script Death Match 811,{ mes "[ Death Match ]"; mes "Hi, "+strcharinfo(0)+"!"; mes "Cost of registration: ^ff0000"+.reg_price+"^000000 Zeny!"; if (select("I agree:Exit") == 2) close; if (BaseClass == Job_Novice) { next; mes "[ Death Match ]"; mes "Beginners can not participate in the event!"; close; } if (Zeny < .reg_price){ next; mes "[ Death Match ]"; mes "Where's the money?"; close; } set Zeny, Zeny - .reg_price; set .@index, getarraysize(.player_list); if (.@index == 0) set .@index, 1; set .player_list[.@index], getcharid(3); set deathmatch_index, .@index; warp "guild_vs2", 50, 50; close; OnInit: set .reg_price, 500000; disablenpc "Death Match"; end; } - script agasper_dm -1,{ OnClear: deletearray getvariableofnpc(.player_list[0], "Death Match"), getarraysize(getvariableofnpc(.player_list, "Death Match")); return; OnDM: sleep 120000; disablenpc "Death Match"; if(getmapusers("guild_vs2") < 2){ announce "In the Event gathered less than 2-man! Event is canceled!",0; callsub(OnClear); mapwarp "guild_vs2", "prontera", 150, 170; end; } announce "Event 'Death Match' is start!",0; pvpon "guild_vs2"; initnpctimer; end; OnPCDieEvent: set .@dead, 1; OnPCLogoutEvent: if (strcharinfo(3) != "guild_vs2") end; if (deathmatch_index < 1) end; set getvariableofnpc(.player_list[deathmatch_index], "Death Match"), -1; if (.@dead == 1) { warp "SavePoint", 0, 0; atcommand "@alive"+strcharinfo(0); dispbottom "[Death Match]: You lose =("; } end; OnTimer5000: switch(getmapusers("guild_vs2")) { case 0: announce "Event 'Death Match' end as the players in the event is not!", 0; stopnpctimer; callsub(OnClear); break; case 1: callsub(OnWin); break; default: mapannounce "guild_vs2", getmapusers("guild_vs2")+" Player(s) are still in the event!", 0; initnpctimer; break; } end; OnWin: for(set .@i, 0; .@i < getarraysize(getvariableofnpc(.player_list, "Death Match")); set .@i, .@i + 1) { if (getvariableofnpc(.player_list[.@i], "Death Match") != -1) { set .@account_id, .player_list[.@i]; break; } } if (attachrid(.@account_id)) { callsub(OnPCKillEvent); } end; OnPCKillEvent: .@players = getarraysize(getvariableofnpc(.player_list, "Death Match")); if(strcharinfo(3) == "guild_vs2" && getmapusers("guild_vs2") < 2) { stopnpctimer; announce "Player "+strcharinfo(0)+" won the event 'Death Match' and get "+ .reg_price * .@players +" Zeny!",0; set Zeny, Zeny + .reg_price * .@players; message strcharinfo(0),"You get "+ .reg_price*.@players +" Zeny!"; warp "SavePoint",0,0; callsub(OnClear); } end; } guild_vs2 mapflag noteleport guild_vs2 mapflag nowarp guild_vs2 mapflag nowarpto guild_vs2 mapflag nobranch guild_vs2 mapflag noicewall guild_vs2 mapflag pvp_noguild guild_vs2 mapflag pvp_noparty guild_vs2 mapflag nomemo guild_vs2 mapflag nodrop
if(strcharinfo(3) == "guild_vs2" && getmapusers("guild_vs2") < 2) {
try Change 2 > 1
-
6 hours ago, Echoes said:
Hello,
Lately I was trying to create some passive skills for my server, and followed the guide on the wiki, but that one is for active skills that the player must level up. I am looking for a way to create passive skills that level up when reaching some condition (not the player leveling up them).
I am still googling ways to do it but found nothing yet. How can I create those?
Any help will be appreciated.
just copy any passive skill and read this
all information you need can found on this link https://github.com/rathena/rathena/blob/master/db/pre-re/skill_db.txt
-
3 hours ago, SaruSnow said:
Hello, i need help with a script. Lets say a MVP drops a Special Item with a 10% chance. I need a script that for this specific item all the party members in the map have a 10% chance of getting the item. (we can end up with all party members getting the item, some getting some not getting, no one getting etc). Is it possible?
https://rathena.org/board/topic/84677-mvp-cash-points-party-share/
-
-
on the video what is the rate of that server ?
- 1
-
rathena\db\pre-re\item_flag.txt
// Flagged Items // <ItemID>,<Flag> // // <Flag>: // 1 - As Dead Branch item (will be logged at `branchlog` table and cannot be used at 'nobranch' mapflag) // 2 - As item group container, check player's inventory and weight before consumed // 4 - GUID Item: When this item is obtained, will generates GUID that cannot be stacked even same or stackable item // 8 - Item will be bound item when equipped // 16 - Special Broadcast: When item dropped by monster and player loot it, will be broadcasted! // 32 - Item will not be removed on consumption. Also supports 'itemskill' // NOTE: For removing flag by import file, use "-" to remove the flag. Example, 604,-1 will removes flag 1 from Branch_Of_Dead_Tree 12130,2 //Cookie_Bag
-
-
-
try this
*getequipid({<equipment slot>,<char_id>}) This function returns the item ID of the item slot that calls the script on the invoking character or the specified equipment slot. If nothing is equipped there, it returns -1. Valid equipment slots are: EQI_COMPOUND_ON (-1) - Item slot that calls this script (In context of item script) EQI_ACC_L (0) - Accessory 1 EQI_ACC_R (1) - Accessory 2 EQI_SHOES (2) - Footgear (shoes, boots) EQI_GARMENT (3) - Garment (mufflers, hoods, manteaux) EQI_HEAD_LOW (4) - Lower Headgear (beards, some masks) EQI_HEAD_MID (5) - Middle Headgear (masks, glasses) EQI_HEAD_TOP (6) - Upper Headgear EQI_ARMOR (7) - Armor (jackets, robes) EQI_HAND_L (8) - Left hand (weapons, shields) EQI_HAND_R (9) - Right hand (weapons) EQI_COSTUME_HEAD_TOP (10) - Upper Costume Headgear EQI_COSTUME_HEAD_MID (11) - Middle Costume Headgear EQI_COSTUME_HEAD_LOW (12) - Lower Costume Headgear EQI_COSTUME_GARMENT (13) - Costume Garment EQI_AMMO (14) - Arrow/Ammunition EQI_SHADOW_ARMOR (15) - Shadow Armor EQI_SHADOW_WEAPON (16) - Shadow Weapon EQI_SHADOW_SHIELD (17) - Shadow Shield EQI_SHADOW_SHOES (18) - Shadow Shoes EQI_SHADOW_ACC_R (19) - Shadow Accessory 2 EQI_SHADOW_ACC_L (20) - Shadow Accessory 1 Notice that a few items occupy several equipment slots, and if the character is wearing such an item, 'getequipid' will return its ID number for either slot. Can be used to check if you have something equipped, or if you haven't got something equipped: if (getequipid(EQI_HEAD_TOP) == 2234) mes "What a lovely Tiara you have on"; else mes "Come back when you have a Tiara on"; close; You can also use it to make sure people don't pass a point before removing an item totally from them. Let's say you don't want people to wear Legion Plate armor, but also don't want them to equip if after the check, you would do this: if (getequipid(EQI_ARMOR) == 2341 || getequipid(EQI_ARMOR) == 2342) { mes "You are wearing some Legion Plate Armor, please drop that in your stash before continuing"; close; } // the || is used as an or argument, there is 2341 and 2342 cause there are // two different legion plate armors, one with a slot one without. if (countitem(2341) > 0 || countitem(2432) > 0) { mes "You have some Legion Plate Armor in your inventory, please drop that in your stash before continuing"; close; } mes "I will lets you pass."; close2; warp "place",50,50; end;
-
Type: Purpose of the item. 0 = Usable : healing 2 = Usable : other 3 = Misc 4 = Armor 5 = Weapon 6 = Card 7 = Pet Egg 8 = Pet Equipment 10 = Arrow/Ammunition 11 = Usable with delayed consumption (intended for 'itemskill'). Items using the 'itemskill' script command are consumed after selecting a target. Any other command will NOT consume the item. 12 = Shadow Equipment 18 = Another delayed consume that requires user confirmation before using item.
for more info https://github.com/rathena/rathena/wiki/Custom-Items
-
1 hour ago, skymia said:
How to make this item to be usable?
so that i will not use any npc to reset my skills and stats...TIA
6320,Premium_Reset_Stone,Premium Reset Stone,3,20,,0,,,,,,,,,,,,,{},{},{}
// Neuralizer //============================================================ // - Reset players skills. Weight must be 0, options must be off. // - No arguments. function script F_CashReset { if (Class != Job_Novice && Weight == 0 && !checkriding() && !checkfalcon() && !checkcart() && !ismounting() && !checkdragon()) { resetskill; sc_end SC_ALL; if (countitem(12213)) delitem 12213,1; } return; }
Neuralizer Item ID# 12213 (Neuralizer) look up sprite name Type Delayed-Consumable Class n/a Buy 2z Sell 1z Weight 0 Description Pressing the button on this stick will flash blinding light that seems to cause memory loss. Resets the Skill Tree and gives the corresponding number of Skill Points. This item can only be used in town, and the character must carry 0 weight, and can not be equipped with a Pushcart, Falcon, or PecoPeco. Can not be used by Novice Class. Item Script { callfunc "F_CashReset"; },{},{}
make a new function for resetstats
-
Battle.cpp if (flag & BF_SHORT) {//Bounces back part of the damage. if ( (skill_get_inf2(skill_id)&INF2_TRAP || !status_reflect) && sd && sd->bonus.short_weapon_damage_return ) { rdamage += damage * sd->bonus.short_weapon_damage_return / 100; rdamage = i64max(rdamage,1); Change to if (flag & BF_SHORT) {//Bounces back part of the damage. if ( (skill_get_inf2(skill_id)&INF2_TRAP || !status_reflect) && sd && sd->bonus.short_weapon_damage_return && skill_id != WS_CARTTERMINATION && skill_id != GS_DESPERADO ) { rdamage += damage * sd->bonus.short_weapon_damage_return / 100;
- 1
-
Reflect Shield Lvl 10 40% ATK Returned
i change the Orc Lord Card to 40%
4135,Orc_Load_Card,Orc Lord Card,6,20,,10,,,,,,,,16,,,,,{ bonus bShortWeaponDamageReturn,40; },{},{}
Check The REF Damage 3,731,432
/*========================================== * Final damage return function *------------------------------------------ * Credits: * Original coder unknown * Initial refactoring by Baalberith * Refined and optimized by helvetica */ int64 battle_calc_return_damage(struct block_list* bl, struct block_list *src, int64 *dmg, int flag, uint16 skill_id, bool status_reflect){ struct map_session_data* sd; int64 rdamage = 0, damage = *dmg; int max_damage = status_get_max_hp(bl); struct status_change *sc, *ssc; sd = BL_CAST(BL_PC, bl); sc = status_get_sc(bl); ssc = status_get_sc(src); if (flag & BF_SHORT) {//Bounces back part of the damage. if ( (skill_get_inf2(skill_id)&INF2_TRAP || !status_reflect) && sd && sd->bonus.short_weapon_damage_return ) { rdamage += damage * sd->bonus.short_weapon_damage_return / 100; rdamage = i64max(rdamage,1); } else if( status_reflect && sc && sc->count ) { if( sc->data[SC_REFLECTSHIELD] ) { struct status_change_entry *sce_d; struct block_list *d_bl = NULL; if( (sce_d = sc->data[SC_DEVOTION]) && (d_bl = map_id2bl(sce_d->val1)) && ((d_bl->type == BL_MER && ((TBL_MER*)d_bl)->master && ((TBL_MER*)d_bl)->master->bl.id == bl->id) || (d_bl->type == BL_PC && ((TBL_PC*)d_bl)->devotion[sce_d->val2] == bl->id)) ) { //Don't reflect non-skill attack if has SC_REFLECTSHIELD from Devotion bonus inheritance if( (!skill_id && battle_config.devotion_rdamage_skill_only && sc->data[SC_REFLECTSHIELD]->val4) || !check_distance_bl(bl,d_bl,sce_d->val3) ) return 0; } } if( sc->data[SC_REFLECTDAMAGE] && !(skill_get_inf2(skill_id)&INF2_TRAP)) { if( rnd()%100 <= sc->data[SC_REFLECTDAMAGE]->val1*10 + 30 ){ max_damage = (int64)max_damage * status_get_lv(bl) / 100; rdamage = (*dmg) * sc->data[SC_REFLECTDAMAGE]->val2 / 100; if( --(sc->data[SC_REFLECTDAMAGE]->val3) < 1) status_change_end(bl,SC_REFLECTDAMAGE,INVALID_TIMER); } } else { if ( sc->data[SC_REFLECTSHIELD] && skill_id != WS_CARTTERMINATION ) { // Don't reflect non-skill attack if has SC_REFLECTSHIELD from Devotion bonus inheritance if (!skill_id && battle_config.devotion_rdamage_skill_only && sc->data[SC_REFLECTSHIELD]->val4) rdamage = 0; else { rdamage += damage * sc->data[SC_REFLECTSHIELD]->val2 / 100; if (rdamage < 1) rdamage = 1; } } if (sc->data[SC_DEATHBOUND] && skill_id != WS_CARTTERMINATION && skill_id != GN_HELLS_PLANT_ATK && !status_bl_has_mode(src,MD_STATUS_IMMUNE)) { if (distance_bl(src,bl) <= 0 || !map_check_dir(map_calc_dir(bl,src->x,src->y), unit_getdir(bl))) { int64 rd1 = 0; rd1 = min(damage,status_get_max_hp(bl)) * sc->data[SC_DEATHBOUND]->val2 / 100; // Amplify damage. *dmg = rd1 * 30 / 100; // Received damage = 30% of amplified damage. clif_skill_damage(src, bl, gettick(), status_get_amotion(src), 0, -30000, 1, RK_DEATHBOUND, sc->data[SC_DEATHBOUND]->val1, DMG_SKILL); skill_blown(bl, src, skill_get_blewcount(RK_DEATHBOUND, 1), unit_getdir(src), BLOWN_NONE); status_change_end(bl, SC_DEATHBOUND, INVALID_TIMER); rdamage += rd1 * 70 / 100; // Target receives 70% of the amplified damage. [Rytech] } } if( sc->data[SC_SHIELDSPELL_DEF] && sc->data[SC_SHIELDSPELL_DEF]->val1 == 2 && !status_bl_has_mode(src,MD_STATUS_IMMUNE) ){ rdamage += damage * sc->data[SC_SHIELDSPELL_DEF]->val2 / 100; if (rdamage < 1) rdamage = 1; } } } } else { if (!status_reflect && sd && sd->bonus.long_weapon_damage_return) { rdamage += damage * sd->bonus.long_weapon_damage_return / 100; if (rdamage < 1) rdamage = 1; } } if (ssc && ssc->data[SC_INSPIRATION]) { rdamage += damage / 100; #ifdef RENEWAL rdamage = cap_value(rdamage, 1, max_damage); #else rdamage = i64max(rdamage,1); #endif } if (sc && sc->data[SC_KYOMU] && (!ssc || !ssc->data[SC_SHIELDSPELL_DEF])) // Nullify reflecting ability except for Shield Spell - Def rdamage = 0; if (sc && sc->data[SC_MAXPAIN]) { rdamage = damage * sc->data[SC_MAXPAIN]->val1 * 10 / 100; } return cap_value(min(rdamage,max_damage),INT_MIN,INT_MAX); }
Problem is skill_damage_db.txt
-
try to use Suffragium Code
-
10 hours ago, itsmeyoe said:
This script on my item_db2
20507,Spirit_of_Wizard,Spirit of Wizard,2,2,,10,,,,,0x00000200,7,2,,,,,,{ if(Class==Job_Wizard||Class==Job_High_Wizard) { delitem 20507,1; callfunc "Linked"; } },{ },{}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function script Linked {
switch ( basejob ) {
case Job_Wizard: set .@spirit, 453; break;
default:
if ( upper == 1 && baselevel < 70 )
set .@spirit, 494;
}
if ( .@spirit ) {
sc_start4 sc_spirit, 360000, 5, .@spirit,0,0;
specialeffect2 503;
specialeffect2 6;
message strcharinfo(0), ""+strcharinfo(0)+" soul is now linked.";
if (SkillPoint) {
atcommand "@allskill";
}
if (Class == Job_Wizard || Class == Job_High_Wizard) {
if( getstatus( SC_SPIRIT ) ){
bonus bMaxHPRate,10;
}
}
}
end;
}- script SKILLZ -1,{
OnPCStatCalcEvent:
if (SkillPoint) {
atcommand "@allskill";
}
if (Class == Job_Wizard || Class == Job_High_Wizard) {
if( getstatus( SC_SPIRIT ) ){
bonus bMaxHPRate,10;
}
}
end;
}why not using this Script-based
https://rathena.org/board/topic/115221-release-soul-link-modification-script-based/ -
On 9/4/2018 at 1:58 AM, bene said:
you can visit http://darkside-ro.com but original Sprite from http://playdreamerro.com
-
9 hours ago, IsabelaFernandez said:
Hello community, I would like to change the skill TK_HIGHJUMP in src skill.cpp to work on maps like PvP / GvG and WoE.
The formula is this:
case TK_HIGHJUMP: { int x,y, dir = unit_getdir(src); //Fails on noteleport maps, except for GvG and BG maps [Skotlex] if( map_getmapflag(src->m, MF_NOTELEPORT) && !(map_getmapflag(src->m, MF_BATTLEGROUND) || map_flag_gvg2(src->m) ) ) { x = src->x; y = src->y; } else if(dir%2) { //Diagonal x = src->x + dirx[dir]*(skill_lv*4)/3; y = src->y + diry[dir]*(skill_lv*4)/3; } else { x = src->x + dirx[dir]*skill_lv*2; y = src->y + diry[dir]*skill_lv*2; } clif_skill_nodamage(src,bl,TK_HIGHJUMP,skill_lv,1); if(!map_count_oncell(src->m,x,y,BL_PC|BL_NPC|BL_MOB,0) && map_getcell(src->m,x,y,CELL_CHKREACH) && unit_movepos(src, x, y, 1, 0)) clif_blown(src); }
thanks in advance if anyone can make this change for me
use search option
-
8 minutes ago, DonTako said:
Is that possible? I mean, while talking to a npc, block player to unequip or equip hats / armors, etc.
Regards
*unequip <equipment slot>{,<char_id>}; This command will unequip whatever is currently equipped in the invoking character's specified equipment slot. For a full list of possible equipment slots see 'getequipid'. If an item occupies several equipment slots, it will get unequipped from all of them.
*getequipid({<equipment slot>,<char_id>}) This function returns the item ID of the item slot that calls the script on the invoking character or the specified equipment slot. If nothing is equipped there, it returns -1. Valid equipment slots are: EQI_COMPOUND_ON (-1) - Item slot that calls this script (In context of item script) EQI_ACC_L (0) - Accessory 1 EQI_ACC_R (1) - Accessory 2 EQI_SHOES (2) - Footgear (shoes, boots) EQI_GARMENT (3) - Garment (mufflers, hoods, manteaux) EQI_HEAD_LOW (4) - Lower Headgear (beards, some masks) EQI_HEAD_MID (5) - Middle Headgear (masks, glasses) EQI_HEAD_TOP (6) - Upper Headgear EQI_ARMOR (7) - Armor (jackets, robes) EQI_HAND_L (8) - Left hand (weapons, shields) EQI_HAND_R (9) - Right hand (weapons) EQI_COSTUME_HEAD_TOP (10) - Upper Costume Headgear EQI_COSTUME_HEAD_MID (11) - Middle Costume Headgear EQI_COSTUME_HEAD_LOW (12) - Lower Costume Headgear EQI_COSTUME_GARMENT (13) - Costume Garment EQI_AMMO (14) - Arrow/Ammunition EQI_SHADOW_ARMOR (15) - Shadow Armor EQI_SHADOW_WEAPON (16) - Shadow Weapon EQI_SHADOW_SHIELD (17) - Shadow Shield EQI_SHADOW_SHOES (18) - Shadow Shoes EQI_SHADOW_ACC_R (19) - Shadow Accessory 2 EQI_SHADOW_ACC_L (20) - Shadow Accessory 1 Notice that a few items occupy several equipment slots, and if the character is wearing such an item, 'getequipid' will return its ID number for either slot. Can be used to check if you have something equipped, or if you haven't got something equipped: if (getequipid(EQI_HEAD_TOP) == 2234) mes "What a lovely Tiara you have on"; else mes "Come back when you have a Tiara on"; close; You can also use it to make sure people don't pass a point before removing an item totally from them. Let's say you don't want people to wear Legion Plate armor, but also don't want them to equip if after the check, you would do this: if (getequipid(EQI_ARMOR) == 2341 || getequipid(EQI_ARMOR) == 2342) { mes "You are wearing some Legion Plate Armor, please drop that in your stash before continuing"; close; } // the || is used as an or argument, there is 2341 and 2342 cause there are // two different legion plate armors, one with a slot one without. if (countitem(2341) > 0 || countitem(2432) > 0) { mes "You have some Legion Plate Armor in your inventory, please drop that in your stash before continuing"; close; } mes "I will lets you pass."; close2; warp "place",50,50; end;
-
28 minutes ago, Coldy1309 said:
Im using pre-re. Ive been editing the mapcache.dat in pre-re folder
double check if you using the updated mapcache.dat you made it
i try on my offline server is working Fine -
1 hour ago, Coldy1309 said:
Hey Bro. Its still not working. Maybe there's something wrong with the .gat file or something?
Tools that I've tried:
GRF Editor, WeeMapChache, and Map Cache Editor.
what server type are you using ? pre-re or re bsc there 2 mapcache.dat
-
5 hours ago, Kaleidoscope said:
Im in search of some indoor maps that meet my servers needs. If anyone has some leads PM me!
Also looking for mapper to make some minor edits to a map that i own.
try visit this link
https://rathena.org/thirdpartyservices/
or this https://www.olroxgraphics.com/ -
11 hours ago, Ninja said:
Are you asking for anything? I'm not sure how to help you
yes asking for help i want Revert the Code of return damage of Bonus item
Even you attack or skill on player blocked by autoguard or parrying or any blocking skill Player will never receiving Reflect Damage WHY because is MISS !!
-
Sample Champion Asura Strike the Lord Knight Blocked by Parrying Miss But the Champion receiving Reflect
if (flag & BF_SHORT) {//Bounces back part of the damage. if ( (skill_get_inf2(skill_id)&INF2_TRAP || !status_reflect) && sd && sd->bonus.short_weapon_damage_return ) { rdamage += damage * sd->bonus.short_weapon_damage_return / 100; rdamage = i64max(rdamage,1);
-
46 minutes ago, Coldy1309 said:
How do I do that?
Edit/create skills
in Database Support
Posted
https://github.com/rathena/rathena/wiki/Adding_new_skills