Jump to content

Skorm

Forum Moderator
  • Posts

    1,223
  • Joined

  • Last visited

  • Days Won

    27

Skorm last won the day on June 13

Skorm had the most liked content!

About Skorm

  • Birthday 06/01/1991

Profile Information

  • Gender
    Male
  • Location
    Ɵ Chosen Hopeless Nothing
  • Server
    rAthena
  • Github: Skormie
  • Discord: Skorm#0649
  • Interests
    Scripting.

Contact Methods

Recent Profile Visitors

11,836 profile views

Skorm's Achievements

  1. @reloadmobdb something like that I can't exactly remember if that refreshes the mobs on a map though.
  2. @ViewtifulNinja Good to see you're back at it have you tried like reloading mobs after setting the value just to see if there is a change?
  3. Skorm

    New char Box's

    Countitem rathena/script_commands.txt at master · rathena/rathena · GitHub Delitem rathena/script_commands.txt at master · rathena/rathena · GitHub Useable items have scripts that are run when they are used from within your database. In those scripts check for the existence of the other boxes when one of them is open. If they exist delete them.
  4. It could be interesting way of not actually distributing scripts. Perhaps for the purpose of dynamic updates or some kind of reseller prevention (even though they're being cached). Yeah I'm for it.
  5. Amazing work Adel, it's great to see fantastic project like this still being made in 2021. I will always be a support and your work just keeps getting better.
  6. Exactly that's why I mentioned doing it instead with a stationary monster something that could just be spawned on demand then do the checks on the mobs death. Also I didn't know that about unitwarp makes sense though since NPCs and Mobs are very similar and the latter can move between maps.
  7. Another way that's a little more involved but probably better for the server. Would be to just add an item that the mob could drop which when consumed increases the players zeny by a specific amount. You could make an item for each amount like 1k 10k 100k etc. - script sampledrop -1,{ OnInit: addmonsterdrop 1002,90000,100; // 1% Poring Zeny Bag } Example item_db_usable - Id: 90000 AegisName: Zeny Bag Name: Zeny Bag Type: Cash Buy: 10 Weight: 10 EquipLevelMin: 1 Script: | Zeny += 10000; ----------------------------------------------------------- Again another way that you might accomplish this would be to enable: // Zeny from mobs zeny_from_mobs: yes In monster.conf And then edit the formula in mob.cpp to follow some kind of curve based on mob level. if(battle_config.zeny_from_mobs && md->level) { // zeny calculation moblv + random moblv [Valaris] zeny=(int) ((md->level+rnd()%md->level)*per*bonus/100.); if(md->db->mexp > 0) zeny*=rnd()%250; }
  8. So as far as I know NPCs cannot travel between maps which means there would need to be a duplicate of that hidden npc on every map that you wanted this to work on. With that said there are other ways that this could work with a monster spawning instead but that's not what I've created... I made three versions that work slightly different and have their own unique drawbacks. // This one will throw a Error/Debug if you're on a map where the npc does not exist. prontera,0,0,5 script Hidden NPC#prontera HIDDEN_WARP_NPC,{ if ( strcharinfo(0) == .character$ ) { mes "Blah"; close2; movenpc strnpcinfo(0),0,0; setnpcdisplay(strnpcinfo(0), HIDDEN_WARP_NPC); } end; OnMoveNPC: .character$ = strcharinfo(0); getmapxy([email protected]$,[email protected],[email protected]); setnpcdisplay(strnpcinfo(0), 4_TREASURE_BOX); movenpc strnpcinfo(0),[email protected],[email protected]; } geffen,0,0,0 duplicate(Hidden NPC#prontera) Hidden NPC#geffen HIDDEN_WARP_NPC Item Script: doevent "Hidden NPC#"+strcharinfo(3)+"::OnMoveNPC"; ---------------------------- // This one will not but is hardcoded specific to the character. prontera,0,0,5 script Hidden NPC#1 HIDDEN_WARP_NPC,{ if ( strcharinfo(0) == "AnnieRuru" ) { mes "Blah"; close2; movenpc strnpcinfo(0),0,0; setnpcdisplay(strnpcinfo(0), HIDDEN_WARP_NPC); } end; OnMoveSpecialNPC: getmapxy([email protected]$,[email protected],[email protected],BL_PC,"AnnieRuru"); if( [email protected]$ == strnpcinfo(4) ) { setnpcdisplay(strnpcinfo(0), 4_TREASURE_BOX); movenpc strnpcinfo(0),[email protected],[email protected]; } } geffen,0,0,0 duplicate(Hidden NPC#1) Hidden NPC#2 HIDDEN_WARP_NPC Item Script: donpcevent "::OnMoveSpecialNPC"; --------------------------- // This one might not work from an item I've had problems with functions in items before. // But if it does work should fail silently. prontera,0,0,5 script Hidden NPC#prontera HIDDEN_WARP_NPC,{ if ( strcharinfo(0) == .character$ ) { mes "Blah"; close2; movenpc strnpcinfo(0),0,0; setnpcdisplay(strnpcinfo(0), HIDDEN_WARP_NPC); } end; OnMoveNPC: .character$ = strcharinfo(0); getmapxy([email protected]$,[email protected],[email protected]); setnpcdisplay(strnpcinfo(0), 4_TREASURE_BOX); movenpc strnpcinfo(0),[email protected],[email protected]; } function script Hidden NPC Func { if(getnpcid(0,"Hidden NPC#"+strcharinfo(3))) { doevent "Hidden NPC#"+strcharinfo(3)+"::OnMoveNPC"; } } geffen,0,0,0 duplicate(Hidden NPC#1) Hidden NPC#geffen HIDDEN_WARP_NPC Item Script: callfunc "Hidden NPC Func"; I think @mihaamiharu was really close in sharing @AnnieRuru's original script. Just wish they had done so with code brackets.
  9. You could make it a bonus that just runs out after an amount of time and resets when they relog. https://github.com/rathena/rathena/blob/master/doc/script_commands.txt#L6026
  10. Maybe something like this. prontera,157,176,5 script guide 650,1,1,{ end; OnTouch: [email protected] = atoi(strnpcinfo(2)); if([email protected]+1 == getarraysize(.npc_pos_x)) { dispbottom "End"; } else { switch([email protected]) { case 0: npctalk "Hello I'm the first NPC!"; break; case 1: npctalk "Hello I'm the second NPC!"; break; default: npctalk "Hello I'm NPC #"[email protected]+"."; break; } unitwalk getcharid(3),.npc_pos_x[[email protected]+1],.npc_pos_y[[email protected]+1]; } end; OnInit: getmapxy([email protected]$,[email protected],[email protected],BL_NPC,strnpcinfo(0)); [email protected] = atoi(strnpcinfo(2)); .npc_pos_x[[email protected]] = [email protected]; .npc_pos_y[[email protected]] = [email protected]; } prontera,157,170,6 duplicate(guide) guide#1 650,1,1 prontera,157,162,6 duplicate(guide) guide#2 650,1,1 prontera,157,153,6 duplicate(guide) guide#3 650,1,1 prontera,152,150,6 duplicate(guide) guide#4 650,1,1
  11. Skorm

    Get total exp

    - script EXP_THING -1,{ OnPCLoginEvent: @base_exp = BaseExp; end; OnPCLogoutEvent: [email protected]_exp = BaseExp - @base_exp; } Maybe not completely reliable but I can't think of any other way todo it without individually tracking everything killed or a source mod.
  12. Skorm

    Investor

    For an MMO RO's PvP system is amazing. Also I think there is something to be said about the responsiveness and perspective RO provides. You've got what feels like almost frame perfect control of your character on a good server.
  13. Skorm

    Guild Package.

    I cannot be bothered to test this but I'm pretty sure... At line 983 would do the trick. if(sd != NULL && sd->status.guild_id == guild_id) { // do stuff that needs the guild_id first, BEFORE we wipe it npc_event_doall_id("OnLeaveGuild", account_id); if (sd->state.storage_flag == 2) //Close the guild storage. storage_guild_storageclose(sd); guild_send_dot_remove(sd); channel_pcquit(sd,3); //leave guild and ally chan sd->status.guild_id = 0; sd->guild = NULL; sd->guild_emblem_id = 0; if (g->instance_id) { struct map_data *mapdata = map_getmapdata(sd->bl.m); if (mapdata->instance_id) { // User was on the instance map if (mapdata->save.map) pc_setpos(sd, mapdata->save.map, mapdata->save.x, mapdata->save.y, CLR_TELEPORT); else pc_setpos(sd, sd->status.save_point.map, sd->status.save_point.x, sd->status.save_point.y, CLR_TELEPORT); } } clif_name_area(&sd->bl); //Update display name [Skotlex] status_change_end(&sd->bl,SC_LEADERSHIP,INVALID_TIMER); status_change_end(&sd->bl,SC_GLORYWOUNDS,INVALID_TIMER); status_change_end(&sd->bl,SC_SOULCOLD,INVALID_TIMER); status_change_end(&sd->bl,SC_HAWKEYES,INVALID_TIMER); status_change_end(&sd->bl,SC_EMERGENCY_MOVE,INVALID_TIMER); //@TODO: Send emblem update to self and people around } else { npc_event_doall_id("OnKickGuild"); } If they are not online when being kicked it would trigger OnKickGuild without an RID attached. Edit: Also moved topic to source requests since it's becoming a source thing.
  14. - script Sample -1,{ OnPointGet: #CASHPOINTS++; end; OnPCLoginEvent: addtimer 60000,"Sample::OnPointGet"; }
  15. Skorm

    PVP Party Warp

    Ahh yeah I see what they meant by that now sorry about that. I blame crappy documentation.
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use and Privacy Policy.