Z3R0

Members
  • Content count

    609
  • Avg. Content Per Day

    0
  • Joined

  • Last visited

  • Days Won

    7

Z3R0 last won the day on April 9

Z3R0 had the most liked content!

Community Reputation

192 Excellent

About Z3R0

  • Rank
    NPC Scripter
  • Birthday 09/27/1984

Profile Information

  • Gender
    Male
  • Location
    Austin, TX
  • Github
    SEORoman
  • Interests
    NPC Scripting, Web Dev

Contact Methods

Recent Profile Visitors

4,865 profile views
  1. Z3R0

    Refiner / Unrefine check

    Above the else... But @part needs to change to @refine
  2. Z3R0

    BG Box

    Do you have hte script that you wrote?
  3. Z3R0

    item shower

    after OnShower: OnShower: if (!getgmlevel() < 99) { end; }
  4. Z3R0

    item shower

    fyi, I think I missed a closing } at the bottom (but if I edit it, it screws up the code...)
  5. Z3R0

    item shower

    Sure I can rewrite it tonight and put some comments around the code
  6. Z3R0

    item shower

    Use the 2nd one I wrote, not the first... the first had a glitch in it... check all map variables.. make sure they match :D
  7. Z3R0

    item shower

    - script Sample -1,{ OnInit: set .amount, 40; // amount of item to shower set .item_id, 7227; // item id to shower set .item_id2, 1234; // next item id to shower bindatcmd "itemshower",strnpcinfo(3)+"::OnShower"; end; OnShower: getmapxy [email protected]$, [email protected], [email protected], UNITTYPE_PC; while ( .count < .amount ) { do { [email protected]_diff = [email protected] + rand(1,5); [email protected]_diff = [email protected] + rand(1,5); } while (!checkcell([email protected]$,[email protected]_diff,[email protected]_diff,cell_chkpass)); [email protected] = rand(2); makeitem [email protected]?.item_id:.item_id2,1,[email protected]$,[email protected]_diff,[email protected]_diff; set .count, .count + 1; } set .count, 0; end; This will make the command @itemshow ... start with the characters position, then it will consider a differential between 1 and 5 from their X,Y coordinates to "shower" around them...
  8. Z3R0

    item shower

    - script Sample -1,{ OnInit: set .amount, 40; // amount of item to shower set .item_id, 7227; // item id to shower set .item_id2, 1234; // next item id to shower bindatcmd "itemshower",strnpcinfo(3)+"::OnShower"; end; OnShower: getmapxy [email protected]$, [email protected], [email protected], UNITTYPE_PC; while ( .count < .amount ) { do { [email protected]_diff = [email protected] + rand(1,5); [email protected]_diff = [email protected] + rand(1,5); } while (!checkcell([email protected]$,[email protected]_diff,[email protected]_diff,cell_chkpass)); [email protected] = rand(2); makeitem [email protected]?.item_id:.item_id2,1,.map$,[email protected],[email protected]; set .count, .count + 1; } set .count, 0; end; This will make the command @itemshow ... start with the characters position, then it will consider a differential between 1 and 5 from their X,Y coordinates to "shower" around them...
  9. Z3R0

    Platinum Skills under payment

    Of course, you could do something much simpler just.... set got_plat_skills, 1; // on a player when they receive them, and simply check it...
  10. Z3R0

    Platinum Skills under payment

    Untested, but makes for easy updating without a bunch of repetition... harboro1,128,200,6 script Platinum Skill Pusher 779,{ function SetSkills; function SetJobLevel; function Validate; mes "[Platinum Skill Pusher]"; mes "Pssst, ehy you!"; mes "Hand me ^0000FF100.000 zeny^000000 and you'll avoid a boring training, none will know!"; mes "Man, there's no refund... are you sure you want it?"; next; if (select("Yes Please:No") == 2) { mes "[Platinum Skill Pusher]"; mes "Have a nice day... dude!"; close; } if( Zeny < [email protected] ) { mes "...ehy dude, you need ^0000FF100.000 zeny^000000,"; mes "ask them to mom!"; close; } Validate(); set Zeny,Zeny -100000; callfunc "F_GetPlatinumSkills"; mes "[Platinum Skill Pusher]"; mes "Dehee thanks man...lazy people like you makes me rich buahah!"; close; OnInit: SetSkills(Job_Swordman, 144, 145, 146); SetJobLevel(Job_Swordman, 35); SetSkills(Job_Mage, 157); SetSkills(Job_Archer, 147, 148); SetSkills(Job_Acolyte, 156); SetSkills(Job_Merchant, 153, 154, 155); SetSkills(Job_Thief, 149, 150, 151, 152); SetSkills(Job_Knight, 1001); SetSkills(Job_Wizard, 1006); SetSkills(Job_Hunter, 1009); SetSkills(Job_Priest, 1014); SetSkills(Job_Blacksmith, 1012, 1013); SetSkills(Job_Assassin, 1003, 1004); SetSkills(Job_Crusader, 1002); SetSkills(Job_Sage, 1007, 1008, 1017, 1018, 1019); SetSkills(Job_Bard, 1010); SetSkills(Job_Dancer, 1011); SetSkills(Job_Monk, 1015, 1016); SetSkills(Job_Alchemist, 238); SetSkills(Job_Rogue, 238); set [email protected], 100000; end; // getarg(0) = Class ID // getarg(1+) = Skill ID function SetSkills { // Skip 0 because that's Class ID, not a Skill ID for([email protected] = 1; [email protected] <= getargcount(); [email protected]++) { setd(".job_" + getarg(0) + "_skills["+([email protected] - 1)+"]", getarg([email protected])); // .job_ClassID[0] = SkillID 1, [1] = SKill ID2 etc... } return; } // getarg(0) = Class ID // getarg(1) = Job Level function SetJobLevel { for([email protected] = 1; [email protected] <= getargcount(); [email protected]++) { setd("job_" + getarg(0) + "_level", getarg(1)); } return; } function Validate { if (getd(".job_" + Class + "_level")) { if (JobLevel < getd(".job_" + Class + "_level")) { mes "You do not meet the Job Level Requirements"; close; } } for([email protected] = 0; [email protected] < getarraysize(getd(".job_" + Class + "_skills")); [email protected]++) { if (getskilllv(getd(".job_" + Class + "_skills["[email protected]+"]"))) { mes "You have already received your skills"; close; } } return; } }
  11. Z3R0

    Multiple "dimensions" of a single map

    Yes, this is exactly what instances are for.... You in theory "temporarily duplicate a map" to create an instance of it, and it's available while the instance is alive...
  12. Correct it will continue down to the next else if if the first if fails... so it just tiers downwards... so if it never falls between X number then it doesn't work... the difference, is the more "chance" you want to give, the higher the initial value needs to be... especially when dealing with multiple cases... for instance in that case he went from 1 to 555... he could have gone from 1 to 100, but that would lower the chances between the items since you only have 100 total options, and have to split them among X number of items... so by increasing the base number from 100 to 555, he increased the chance range between goods so that they have a higher chance of hitting...
  13. Well, kinda... that makes it almost 50% chance... 36/60... where as ALL 60 #'s would be 100% so 36/60 would be 60/100 = 36/X .... so cross multiply / divide ==.... 100 * 36 / 60 = 60% chance refine rate... it would have been the same as doing... 1 outta 5... and only accept 1,2,3 and not accepting 4,5 ... The issue, is that you have to break it down to the common denominator... since you want a 1% chance you will most likely need to do it out of a full 100.... set [email protected], rand(1,100); if ([email protected] == 1) { // The 1% chance is successful! } elseif ([email protected] <= 10) { // 10% chance } elseif ([email protected] <= 30) { // 30% chance } elseif ([email protected] <= 75) { // 75% chance } else { mes "Failed"; close; }
  14. Z3R0

    Platinum Skills under payment

    if (Class = X && getskilllv(145) && getskilllv(#)) { mes "sorry"; close; } There's probably some better ways to do it, but this is a basic way...
  15. Z3R0

    Platinum Skills under payment

    no reason to set a needless variable when you can just determine if they have the skills or not