Jump to content

Capuche

Developer
  • Posts

    2407
  • Joined

  • Last visited

  • Days Won

    51

Everything posted by Capuche

  1. Wrong section. Moved to "Database Support".
  2. Except Nova (who actually has his own dev to gather their infos) none of us are running private server. Stop spilling bullshit. I don't feel any respect on your comment. Any other comments off topic will now be deleted. Thanks for understanding.
  3. You're right we didn't update Upper for 3rd class. case SP_UPPER: val = sd->class_&JOBL_UPPER?1:(sd->class_&JOBL_BABY?2:0); break; Maybe the easier structure for you to edit could be : prontera,150,193,4 script Reset Girl 124,{ disable_items; disable_command; mes "[Reset Girl]"; switch( Class ) { case JOB_NOVICE:// normal class case JOB_SWORDMAN: case JOB_MAGE: case JOB_ARCHER: case JOB_ACOLYTE: case JOB_MERCHANT: case JOB_THIEF: case JOB_KNIGHT: case JOB_PRIEST: case JOB_WIZARD: case JOB_BLACKSMITH: case JOB_HUNTER: case JOB_ASSASSIN: case JOB_KNIGHT2: case JOB_CRUSADER: case JOB_MONK: case JOB_SAGE: case JOB_ROGUE: case JOB_ALCHEMIST: case JOB_BARD: case JOB_DANCER: case JOB_CRUSADER2: case JOB_SUPER_NOVICE: case JOB_GUNSLINGER: case JOB_NINJA: case JOB_BABY:// baby class case JOB_BABY_SWORDMAN: case JOB_BABY_MAGE: case JOB_BABY_ARCHER: case JOB_BABY_ACOLYTE: case JOB_BABY_MERCHANT: case JOB_BABY_THIEF: case JOB_BABY_KNIGHT: case JOB_BABY_PRIEST: case JOB_BABY_WIZARD: case JOB_BABY_BLACKSMITH: case JOB_BABY_HUNTER: case JOB_BABY_ASSASSIN: case JOB_BABY_KNIGHT2: case JOB_BABY_CRUSADER: case JOB_BABY_MONK: case JOB_BABY_SAGE: case JOB_BABY_ROGUE: case JOB_BABY_ALCHEMIST: case JOB_BABY_BARD: case JOB_BABY_DANCER: case JOB_BABY_CRUSADER2: case JOB_SUPER_BABY: case JOB_TAEKWON: case JOB_STAR_GLADIATOR: case JOB_STAR_GLADIATOR2: case JOB_SOUL_LINKER: if (BaseLevel < 50) .@cost = 40000; else if (BaseLevel < 90) .@cost = 70000; else .@cost = 100000; mes "Reset Stats: " + .@cost + "z."; mes "Reset Skills: " + .@cost + "z."; mes "Please select the service you want:"; next; .@s = select( "Reset Skills", "Reset Stats" ); mes "[Reset Girl]"; if (Zeny < .@cost) { mes "Sorry, you don't have enough Zeny."; close; } Zeny -= .@cost; if (.@s == 2) resetstatus; else { sc_end_class; resetskill; } mes "There you go!"; close; default:// others class .@cost = 1000000; if (BaseLevel > 89) .@cost += 500000; mes "Reset Stats: " + .@cost + "z + 1 Monster Card."; mes "Reset Skills: " + .@cost + "z + 1 Monster Card."; mes "Please select the service you want:"; next; .@s = select( "Reset Skills", "Reset Stats" ); mes "[Reset Girl]"; if (Zeny < .@cost) { mes "Sorry, you don't have enough Zeny."; close; } getinventorylist; for ( .@i = 0; .@i < @inventorylist_count; .@i++ ) { if (getiteminfo(@inventorylist_id[.@i],2) != 6) continue; .@card_id[.@card_size] = @inventorylist_id[.@i]; .@card_name$[.@card_size] = getitemname( @inventorylist_id[.@i] ); .@card_size++; } if (.@card_size < 1) { mes "Sorry, you don't have enough Card."; close; } mes "Which card do you want to use?"; next; .@index = select( implode(.@card_name$,":") ) - 1; mes "[Reset Girl]"; if (Zeny < .@cost) { mes "It shouldn't happen."; close; } if (countitem(.@card_id[.@index]) < 1) { mes "It shouldn't happen."; close; } Zeny -= .@cost; delitem .@card_id[.@index],1; if (.@s == 2) resetstatus; else { sc_end_class; resetskill; } mes "There you go!"; close; } }
  4. Untested prontera,150,193,4 script Reset Girl 124,{ disable_items; disable_command; mes "[Reset Girl]"; switch( Upper ) { case 0:// normal class case 2:// baby class if (BaseLevel < 50) .@cost = 40000; else if (BaseLevel < 90) .@cost = 70000; else .@cost = 100000; mes "Reset Stats: " + .@cost + "z."; mes "Reset Skills: " + .@cost + "z."; mes "Please select the service you want:"; next; .@s = select( "Reset Skills", "Reset Stats" ); mes "[Reset Girl]"; if (Zeny < .@cost) { mes "Sorry, you don't have enough Zeny."; close; } Zeny -= .@cost; if (.@s == 2) resetstatus; else { sc_end_class; resetskill; } mes "There you go!"; close; case 1:// advanced class .@cost = 1000000; if (BaseLevel > 89) .@cost += 500000; mes "Reset Stats: " + .@cost + "z + 1 Monster Card."; mes "Reset Skills: " + .@cost + "z + 1 Monster Card."; mes "Please select the service you want:"; next; .@s = select( "Reset Skills", "Reset Stats" ); mes "[Reset Girl]"; if (Zeny < .@cost) { mes "Sorry, you don't have enough Zeny."; close; } getinventorylist; for ( .@i = 0; .@i < @inventorylist_count; .@i++ ) { if (getiteminfo(@inventorylist_id[.@i],2) != 6) continue; .@card_id[.@card_size] = @inventorylist_id[.@i]; .@card_name$[.@card_size] = getitemname( @inventorylist_id[.@i] ); .@card_size++; } if (.@card_size < 1) { mes "Sorry, you don't have enough Card."; close; } mes "Which card do you want to use?"; next; .@index = select( implode(.@card_name$,":") ) - 1; mes "[Reset Girl]"; if (Zeny < .@cost) { mes "It shouldn't happen."; close; } if (countitem(.@card_id[.@index]) < 1) { mes "It shouldn't happen."; close; } Zeny -= .@cost; delitem .@card_id[.@index],1; if (.@s == 2) resetstatus; else { sc_end_class; resetskill; } mes "There you go!"; close; } }
  5. switch( checkquest(7122,PLAYTIME) ) {// 4 hours case -1: // Quest not started (not in quest log) case 0: // the time limit has not yet been reached -> cooldown case 1: // the time limit has not been reached but the quest is marked as complete case 2: // the time limit has been reached -> can redo the quest } end; case 0 and case 1 should return the cooldown message. case 2 player can redo the quest
  6. Your reasoning is flawed. When the time limit has been reached player should be able to redo the quest.
  7. 1. The blank message is a trick (until better implementation) to prevent attached player to interact with others NPCs (to mimic official behaviour). 2. We need more information about the effect of Mind Blaster skill before implement it.
  8. As https://github.com/rathena/rathena/commit/88aaa9be98c4e9f8494a2012cb3b7700d3b844f5 map_nick2sd need a second parameter to accept (true) or not (false) partial name. sd = map_nick2sd( script_getstr(st,2),false );
  9. So far using instance variable on instance map is safe. The initiales infos could be stored again in instance variable after instance_create.
  10. Be careful when using NPC variable too. Instance NPCs are duplicates of original NPCs. NPC variable share his infos in duplicate NPC. e.g. 1@rev,27,181,4 script Kaep::alamocka HIDDEN_WARP_NPC,2,2,{ end; OnTouch: if(.talking == 0) { set 'mocTalking, getcharid(3); set .talking, 1;
  11. Using instance variable should be safe. In some script you're using permanent variable to store instance info, which are probably the culprits. "$" - A global permanent variable. e.g. $mm_instance $instance_vp_level ...
  12. Just to let you know, I merged a walkthrough version of this instance in https://github.com/rathena/rathena/commit/5ed21132512d941aebb8cbb15d55ee2d2ded96d5
  13. The issue should be fixed in https://github.com/rathena/rathena/issues/2276 anyway.
  14. The warp out - OnTouch_ from Melody Jack NPC overlaps. We didn't push a fix yet. PR related : https://github.com/rathena/rathena/pull/2382 Please create an issue in https://github.com/rathena/rathena/issues if you found any bugs thanks !
  15. Refine DB has been refactored in you should update your repo and start from here !
  16. // Old Glast Heim 12316,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Meeting Hugin" 12317,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Trace of Time Travel" 12318,0,2475,1,0,0,0,0,0,0,0,0,0,0,0,0,0,"Corrupted Soul Hunt" 12319,0,2476,1,0,0,0,0,0,0,0,0,0,0,0,0,0,"Amdarais Hunt" 12320,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Time Traveler" 12321,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Time Conqueror" 12322,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Space Distortion"
  17. @crazyarashi quoted the final part of the script, which is correct. However: Did you implement the quests id in your quest db? The final quest is working like hunting quest, if your player isn't around when Amdarais die he doesn't get any rewards.
  18. C'mon there is still "emulator" in there.. It was just a suggestion to improve your guide anyway
  19. Miss. I'm not comfortable with "Emulator", can you change it to Rabbit? or Cactus?
  20. Use https://github.com/rathena/rathena/issues to talk about potential bug
  21. Will you make a guide on herc forum using rathena emu?
  22. https://github.com/rathena/rathena/commit/809754379b75371c1442e08b9b6a6c01aa15228e Will you patch this manually?
  23. Npcs scripts already support continue
  24. - script Controller -1,{ OnPcDieEvent: if (strcharinfo(3) == instance_mapname("geffen")) { 'chance++; if ('chance == 3) mapwarp instance_mapname("geffen"),"prontera",150,150; else mapannounce instance_mapname("geffen"), "" + strcharinfo(0) + " has died! you only have " + (3 - 'chance) + " lives remaining.", bc_all; } end; } should work. About the script with the timer : forget it. After reading the commit, https://github.com/rathena/rathena/commit/9c46f3e6ba288c71f098b12834ea25779eadbc0e just prevent to duplicate npcs with script event in instance. Notes: - strcharinfo(3) return the real map name of the player. - instance_mapname doc : If no instance ID is specified, the instance the script is attached to is used. If the script is not attached to an instance, the instance of the currently attached player is used (if it is a character, party, guild or clan mode). Within your OnPCDieEvent instance_mapname will use by default the instance id attached to the player. EDIT: @crazyarashi please double check your script before posting!
  25. You can, for example, attach a timer to the character. @instance_map$ = instance_mapname("instance"); deltimer strnpcinfo(0) + "::OnAtcommand4"; addtimer 300, strnpcinfo(0) + "::OnAtcommand4"; end; OnAtcommand4: if (strcharinfo(3) != @instance_map$) { @instance_map$ = ""; end; } addtimer 300, strnpcinfo(0) + "::OnAtcommand4"; if (Hp < 1) { 'chance++; // 'var attached to the instance if ('chance == 3) mapwarp @instance_map$,"prontera",150,150; else { mapannounce @instance_map$, strcharinfo(0) + " has died! you only have " + (3 - 'chance) + " lives remaining.",bc_all; recovery 0; } } end;
×
×
  • Create New...