Jump to content

Skorm

Forum Moderator
  • Posts

    1268
  • Joined

  • Last visited

  • Days Won

    33

Everything posted by Skorm

  1. Since someone decided to resurrect this from the grave with pretty irrelevant information. I'll post on topic. Lately I've been playing: Hatsune Miku: Project DIVA Mega Mix+ Rocket League I am Setsuna Risk of Rain 2 Fall Guys Blazblue Central Fiction So those are my current favorites.
  2. @Dolphin86 This sounds fake has hell. Perhaps a player is playing a prank on you? My suggestion is try hosting your files somewhere else like Mega. I think there are other anonymous hosting platforms.
  3. Skorm

    Rent npc

    close; end; @Pride The end; is not needed here because close; also does end;. If using close2; you would need an end;. There is also close3; which removes cutin and then does end;. Also just a personal thing but using the TAB key to space things out helps a lot for readability.
  4. @superblackcat So two ways I might do it... One where both players need to be online and the referrer needs to claim the referral. prontera,100,100,5 script refer a friend 100,{ switch(select("Add Referral:Claim Referral")) { case 1: if(referrer$ != "") { mes "You've already set a referrer."; close; } mes "Input the character name of the person who referred you. (This cannot be changed so make sure it's correct!)"; next; input .@player_name$; mes "Is this correct?"; mes .@player_name$; next; if(select("Yes:No") == 1) { referrer$ = .@player_name$; mes "Congratulations the referrer has been set!"; } break; case 2: mes "Enter the name of the person you referred."; next; input .@player_name$; .@cid = convertpcinfo(.@player_name$, CPC_CHAR); if(.@cid <= 0) { mes "Make sure you've entered that persons name correctly and that they are online."; close; } .@referrer$ = getvar(referrer$, .@cid); .@ref_claimed = getvar(ref_claimed$, .@cid); if(.@referrer$ == strcharinfo(0) && !.@ref_claimed) { getvar(ref_claimed$, .@cid) = True; getitem 501, 1; mes "That's great!"; } else { mes "Hmm... It doesn't seem like you referred that person."; } break; } close; } Another where only the referral needs to submit the referrer and the referrer gets a mailed reward. prontera,100,100,5 script refer a friend 100,{ if(referrer$ != "") { mes "You've already set a referrer."; close; } mes "Input the character name of the person who referred you. (This cannot be changed so make sure it's correct!)"; next; input .@player_name$; mes "Is this correct?"; mes .@player_name$; next; if(select("Yes:No") == 1) { .@len = query_sql("SELECT `char_id` FROM `char` WHERE `name` = '"+escape_sql(.@player_name$)+"';", .@cid); if(.@len > 0) { referrer$ = .@player_name$; .@charid = .@cid; .@sender$ = strcharinfo(0); .@title$ = "Referral Reward!"; .@body$ = "Thanks for being awesome!"; .@zeny = 10000; mail .@charid, .@sender$, .@title$, .@body$, .@zeny; mes "Congratulations the referrer has been set!"; } else { mes "They don't seem to exist."; } } close; }
  5. I've used OpenKore and it identifies mobs by an ID not name. So it wouldn't fail a test like this and instead would just be annoying for normal players.
  6. @ays297 prontera,100,100,5 script gold_room_timer -1,500,500,{ end; OnTouch: // On touch reset the timer... initnpctimer; end; OnTimer1800000: // On 30 minutes remove monsters if the map is empty & restart timer. if(getmapusers(.map_name$) <= 0) { killmonsterall .map_name$; cleanmap .map_name$; } initnpctimer; end; OnInit: // On server start the timer... .map_name$ = strnpcinfo(4); initnpctimer; end; }
  7. prontera,100,100,1 script WalkNearMe 100,10,10,{ end; OnTouch: npctalk "Hello world"; end; } It is activated by the presence of the character. The "10,10" after "100," in the NPC header refers to the x and y distance from the NPC with which a character can "bump" into the NPC and trigger the OnTouch: event.
  8. https://pastebin.com/pX5nFgdp I'll update the original post.
  9. PMing someone to soliciting sales is against the forums rules and would result in infractions, but someone else contacting you because they've seen your work isn't. So yeah, I don't think this is necessary a bad thing. I'd also like to reiterate that the Graphic Section has had this since 2011. But, I respect your input all the same.
  10. Yeah ok this is my first attempt it's completely untested and probably not going to work. Also it's horrendous this is probably better done with source tbh. - script CardHolderThing -1,{ OnPCStatCalcEvent: OnPCLoadMapEvent: .@equipped = true; if(inarray(.maps$,strcharinfo(3)) != -1) { for(.@a = 0; .@a < .slotlen; .@a++) .@equipped &= !getequipcardcnt(.slots[.@a]); if(.@equipped) end; for(.@a = 0; .@a < .slotlen; .@a++) { if(inarray(.@itemids,getequipid(.slots[.@a])) == -1) { .@itemids[getarraysize(.@itemids)] = getequipid(.slots[.@a]); for(.@i = 0; .@i < 4; .@i++) { .@cardid = getequipcardid(.slots[.@a],.@i); if(.@cardid >= 4000) { getmapunits(BL_PC,strcharinfo(3),.@mapusers[0]); // Add player to ongoing list. for(.@j = 0; .@j < getarraysize(.@mapusers); .@j++) { if(inarray(getd("."+strcharinfo(3)+"_mapusers"), .@mapusers[.@j]) != -1) { setd "."+strcharinfo(3)+"_mapusers["+getarraysize(getd("."+strcharinfo(3)+"_mapusers"))+"]", .@mapusers[.@j]; } } for(.@j = 0; .@j < getarraysize(getd("."+strcharinfo(3)+"_mapusers")); .@j++) { // Remove player and item list. if(inarray(.@mapusers, getd("."+strcharinfo(3)+"_mapusers["+.@j+"]")) != -1) { deletearray "."+strcharinfo(3)+"_"+getd("."+strcharinfo(3)+"_mapusers["+.@j+"]")+"_mapitems"; deletearray getd("."+strcharinfo(3)+"_mapusers["+.@j+"]"), 1; } // Searching through lists of map players cards... else if(getcharid(3) != getd("."+strcharinfo(3)+"_mapusers["+.@j+"]")) { if(inarray(getd("."+strcharinfo(3)+"_"+getd("."+strcharinfo(3)+"_mapusers["+.@j+"]")+"_mapitems"), .@cardid) != -1) { warp "prontera",0,0; dispbottom "You've been removed from the map because someone else is already using "+getitemname(.@cardid)+"."; end; } } } // Adding card to the current players list. setd "."+strcharinfo(3)+"_"+getcharid(3)+"_mapitems["+getarraysize(getd("."+strcharinfo(3)+"_"+getcharid(3)+"_mapitems"))+"]", .@cardid; } } } } } end; OnInit: setarray .slots, EQI_ACC_L, EQI_ACC_R, EQI_GARMENT, EQI_HEAD_LOW, EQI_HEAD_MID, EQI_HEAD_TOP, EQI_ARMOR, EQI_HAND_L, EQI_HAND_R, EQI_SHOES; setarray .maps$, "alde_gld", "aru_gld", "gef_fild13"; .slotlen = getarraysize(.slots); for(.@a = 0; .@a < getarraysize(.maps$); .@a++) setmapflag .maps$[.@a], mf_loadevent; }
  11. ++.@i Is incremented before evaluation. Example: if(++.@a == 1) //True if(.@a++ == 1) //False
  12. Ahh topic title is misleading then.
  13. I want a place to showcase scripts and mini-games and instances that I've made but not necessary release them. A place that I can get comments and feedback. We have that for graphics things but I think a "Script Showcase" section under scripts could be useful. Thoughts?
  14. @worn I think a more practical way to do this would be... https://github.com/rathena/rathena/blob/master/doc/script_commands.txt#L6663 - script AllMobDrop -1,{ OnInit: query_sql("SELECT `ID` FROM `mob_db_re` UNION SELECT `ID` FROM `mob_db2_re`;", .@mob_ids); .@len = getarraysize(.@mob_ids); for(.@a = 0; .@a < .@len; .@a++) { addmonsterdrop .@mob_ids[.@a],501,100; //Red Potion at 1% drop. } end; } or... https://github.com/rathena/rathena/blob/master/doc/item_bonus.txt#L465 - script AllMobDrop -1,{ OnPCLoginEvent: bonus_script "bonus2 bAddMonsterDropItem,501,100;",86400,8,0; //Red Potion at 1% drop for 24 hours. end; }
  15. Best way I can think of to do this would to be to query the SQL database in player inventories and carts and storage/guild storage and check for the card item id ranges in a distinct fashion.
  16. I think this is a better approach because the latter will still trigger on normal spawning MVPS. Change the Bloody Branch item script to... monster "this",-1,-1,"--ja--",-3,1,"BB_MVP_Announce::OnBBMVPDeath"; And then add this npc... - script BB_MVP_Announce -1,{ OnBBMVPDeath: announce "'"+ strcharinfo(0) +"' has killed ("+ getmonsterinfo(killedrid,MOB_NAME) +").",bc_yellow|bc_all; end; }
  17. @Deye0823 There are quite a few out there. Many of them are pretty easy to modify and get the results you're looking for. Have you tried this one? Also searching for them on the forums might be your best bet.
  18. Yeah just set a npc variable for it. prontera,100,200,3 script Picky 78,{ if(!.one_at_a_time) { .one_at_a_time = 1; mes "Hello"; next; .one_at_a_time = 0; } else { mes "Do you mind I'm talking to someone here!"; } close; } Edit -- I thought about it a little more and this method might not always work for example if a player gets disconnected while talking with the npc and never resets the variable. So instead maybe it would be better to use an npctimer there might still be some conditions where the player leaves the npc and is still attached but I think overall it's a better approach. prontera,100,200,3 script Picky 78,{ if(!.one_at_a_time) { attachnpctimer; initnpctimer; mes "Hello"; next; } else { mes "Do you mind I'm talking to someone here!"; } close; Ontimer0: .one_at_a_time = 1; OnTimer5000: if(getattachedrid()) { attachnpctimer; initnpctimer; } OnTimerQuit: .one_at_a_time = 0; stopnpctimer; detachnpctimer; } @Reborn
  19. It looks like the command mobcount was updated at some point to require another parameter. Replace the errored line with... if(!getusers(8)&&mobcount(strnpcinfo(4),"all")){killmonsterall strnpcinfo(4);}
  20. @reloadmobdb something like that I can't exactly remember if that refreshes the mobs on a map though.
  21. @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?
  22. 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.
  23. 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.
  24. 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.
×
×
  • Create New...