Jump to content

Dazzu

Members
  • Posts

    12
  • Joined

  • Last visited

1 Follower

Profile Information

  • Gender
    Male
  • Location
    Canada
  • Server
    XIVRO, DarkRO
  • Discord: Dazzu#7449

Recent Profile Visitors

2057 profile views

Dazzu's Achievements

Poring

Poring (1/15)

  • Week One Done
  • One Month Later
  • One Year In

Recent Badges

3

Reputation

1

Community Answers

  1. Use the search function or a search engine. I understand you're new to RO Development, but any programmer worth their salt should know how to effectively look for resources. Also, this thread should have been posted in General Support. 1: https://github.com/rathena/rathena/wiki/Max-Level 2: https://github.com/rathena/rathena/blob/master/db/pre-re/skill_tree.txt and 3: 4: https://github.com/rathena/rathena/wiki/Custom-Items 5: https://github.com/rathena/rathena/tree/master/npc/jobs 6: 7: Try adding a unique name to the Job Master NPC (eg. Job Master::JobMaster) and use it as a reference to your duplication code: eg. payon,171,229,6 duplicate(JobMaster) Job Master#pay 123
  2. Get party ID of the party leader using getcharid. Get list of party members from party ID using party ID generated from (1) with the getpartymember command. Iterate through party list using the character ID generated from (2): For each iteration of character ID, execute unittalk command
  3. I see it in the rAthena repo. Look harder.
  4. In status.cpp, under the status_calc_pc_sub function Under this code block: #ifdef RENEWAL if ((skill = pc_checkskill(sd, DC_DANCINGLESSON)) > 0) base_status->cri += skill * 10; if ((skill = pc_checkskill(sd, PR_MACEMASTERY)) > 0 && (sd->status.weapon == W_MACE || sd->status.weapon == W_2HMACE)) base_status->cri += skill * 10; #endif Insert: if ((skill = pc_checkskill(sd, PD_MACEMASTERY)) > 0) base_status->cri += skill * 10;
  5. Not a specific guide, more of pointing to a general direction. You'll probably want to look at skill_produce_mix function in skill.cpp. There are a few blocks in that function that is responsible for setting elements on forged weapons. This is a good resource to add new item bonuses on the src side.
  6. View File Dazzu's Guild Package NPC with optional Gepard support Please do not remove my signature from the file, claim my work as your own, nor sell this script. Please provide credit where it's due. I may or may not update this script to address below limitation in the future. If you like this script, please drop a like! ? Description: The code flow is similar to benching's guild package npc script and uses his SQL CREATE TABLE statements. However, this script is written from the ground up and supports optional checks based on either IP address or Gepard's unique id. By default, ONLY IP checks are enabled. Any code blocks that uses get_unique_ip has been commented out. However, there are instructions on how to enable unique id related functions provided in the changelogs section of the script and this thread. Allows either IP or unique id based checks. IP check is used by default. Please refer to the initialization section on how to toggle between checking modes. This script allows a guild and all her guild members to receive a predetermined package through redeeming a code. Only requires the guild master to interact with the NPC. Package code is generated by an authorized game master (authorization is based on the minimum gm level set in the script). Package code can only be generated by a game master. The code is communicated by the game master to the guild master which is then redeemed. Both guild master and his/her members will receive the same package contents. Supplied equipment is account-bound. Multiple codes can be generated and claimed for a guild. However, claim restrictions are enforced by either IP or unique id checks. Performs (some optional) checks. Claim is cancelled and certain messages are displayed if one of these checks fail: Weight Limit - Displays name of members whose weight limit can not accommodate the package contents. Repeat claim per unique IP (Optional) - Display names of a member's alternate character who has already made a previous claim (using account id and ip address/unique id). Multi-client claim (Optional) - Display names of a member's characters they are controlling through multi-clienting on a single system (using ip address or unique id). All members online requirements (Optional) - Self explanatory display. Optional checks can be toggled within the script. Requirement: Gepard Shield if using unique id checks. Initialization: Variables are set under the OnInit label (line 331) Set .disableMultiLogging to true to restrict players from claiming a guild package when they are logged into multiple clients in the same guild on a single machine. Set .disableRepeatClaim to true to restrict players from claiming a guild package when they have claimed a package previously. Set .allMembersOnline to true to require all guild members be online when claiming the package. If set to false, only online guild members will receive the package. .useGepard - stores and uses unique ids for checks. If set to false, IP address is used instead. (default false). IMPORTANT: If possible, do not change after claims are made, otherwise players may be able to re-claim or unable to first-time claim. Please refer to the limitations section for additional information. .codeLength - length of the guild package code (default 10). .minMembers - minimum number of guild members to redeem the code. .minGMLevel - minimum Game Master level to access the GM menu. .package[0] - array of the guild package Item IDs. .packwgt[0] - array that denotes the amount of items to be dispensed that corresponds to the item IDs in .package Limitations: Unique id check works well through VPN. However, attempts to bypass checks using a Virtual Machine has not been tested. Code generation is manually done by a game master. This was done by design, however it is an obvious limitation. Toggling between gepard and ip checks after some use may have the following effects: Players with previous claim may be able to perform a reclaim (IP to gepard toggle). Players with NO previous claim may NOT be able to perform a claim if someone else under the same IP has made a claim. (Gepard to IP toggle). To comply with rAthena submission standards, all unique id calls have been commented out and replaced with charip calls instead. However, instructions to easily enable unique id calls have been included in the script. Please refer to the changelogs section on how to perform this change. Submitter Dazzu Submitted 06/13/2020 Category Utilities Video Content Author Dazzu  
  7. skillratio has an initial value of 100 that denotes the "base" ratio of the skill. Within the context of the Arrow Shower formula, a more complete calculation would be: 100 - 25 + 5 * skillLV
  8. In status.cpp, under the status_calc_x function. eg. Increasing STR by 10% while under the Assassin Soul Link effect would require the changes be made under the status_calc_str function static unsigned short status_calc_str(struct block_list *bl, struct status_change *sc, int str) { ... if(sc->data[SC_SPIRIT] && sc->data[SC_SPIRIT]->val2==SL_ASSASIN) str += (str * 20) / 100; ... }
  9. Version 1.1.0

    461 downloads

    Please do not remove my signature from the file, claim my work as your own, nor sell this script. Please provide credit where it's due. I may or may not update this script to address below limitation in the future. If you like this script, please drop a like! ? Description: The code flow is similar to benching's guild package npc script and uses his SQL CREATE TABLE statements. However, this script is written from the ground up and supports optional checks based on either IP address or Gepard's unique id. By default, ONLY IP checks are enabled. Any code blocks that uses get_unique_ip has been commented out. However, there are instructions on how to enable unique id related functions provided in the changelogs section of the script and this thread. Allows either IP or unique id based checks. IP check is used by default. Please refer to the initialization section on how to toggle between checking modes. This script allows a guild and all her guild members to receive a predetermined package through redeeming a code. Only requires the guild master to interact with the NPC. Package code is generated by an authorized game master (authorization is based on the minimum gm level set in the script). Package code can only be generated by a game master. The code is communicated by the game master to the guild master which is then redeemed. Both guild master and his/her members will receive the same package contents. Supplied equipment is account-bound. Multiple codes can be generated and claimed for a guild. However, claim restrictions are enforced by either IP or unique id checks. Performs (some optional) checks. Claim is cancelled and certain messages are displayed if one of these checks fail: Weight Limit - Displays name of members whose weight limit can not accommodate the package contents. Repeat claim per unique IP (Optional) - Display names of a member's alternate character who has already made a previous claim (using account id and ip address/unique id). Multi-client claim (Optional) - Display names of a member's characters they are controlling through multi-clienting on a single system (using ip address or unique id). All members online requirements (Optional) - Self explanatory display. Optional checks can be toggled within the script. Requirement: Gepard Shield if using unique id checks. Initialization: Variables are set under the OnInit label (line 331) Set .disableMultiLogging to true to restrict players from claiming a guild package when they are logged into multiple clients in the same guild on a single machine. Set .disableRepeatClaim to true to restrict players from claiming a guild package when they have claimed a package previously. Set .allMembersOnline to true to require all guild members be online when claiming the package. If set to false, only online guild members will receive the package. .useGepard - stores and uses unique ids for checks. If set to false, IP address is used instead. (default false). IMPORTANT: If possible, do not change after claims are made, otherwise players may be able to re-claim or unable to first-time claim. Please refer to the limitations section for additional information. .codeLength - length of the guild package code (default 10). .minMembers - minimum number of guild members to redeem the code. .minGMLevel - minimum Game Master level to access the GM menu. .package[0] - array of the guild package Item IDs. .packwgt[0] - array that denotes the amount of items to be dispensed that corresponds to the item IDs in .package Limitations: Unique id check works well through VPN. However, attempts to bypass checks using a Virtual Machine has not been tested. Code generation is manually done by a game master. This was done by design, however it is an obvious limitation. Toggling between gepard and ip checks after some use may have the following effects: Players with previous claim may be able to perform a reclaim (IP to gepard toggle). Players with NO previous claim may NOT be able to perform a claim if someone else under the same IP has made a claim. (Gepard to IP toggle). To comply with rAthena submission standards, all unique id calls have been commented out and replaced with charip calls instead. However, instructions to easily enable unique id calls have been included in the script. Please refer to the changelogs section on how to perform this change.
    Free
  10. OnMonsterCommand: .@mob = atoi(.@atcmd_parameters$[0]); if(!.@mob) //Input is not mob ID, store as string instead .@mob$ = .@atcmd_parameters$[0]; if(getgmlevel()<60 && (inarray(.restricted[0],.@mob)>-1 || inarray(.restricted$[0],.@mob$)>-1)){ message strcharinfo(0),"Your GM level does not allow you to summon this monster."; end; } if(.@atcmd_numparameters==2){ .@amt = atoi(.@atcmd_parameters$[1]); } atcommand "@monster "+(.@mob?.@mob:.@mob$)+" "+(.@amt>0?.@amt:""); end; OnInit: bindatcmd "monster","<npc name>::OnMonsterCommand",60,100; setarray .restricted[0],1751; //Add mob id as needed setarray .restricted$[0],"RANDGRIS"; //Added mob name that corresponds to mob id in the above array.This is required for mob name inputs instead of mob id Quick and dirty solution. Tested for functionality, but not tested for bugs. It accounts for both mob name and mob id inputs, but you'll have to add both the mob id and proper mob name in the arrays in OnInit. Personally, I don't like overwriting atcommands. Here's a nicer src-based solution that you could put under ACMD_FUNC(monster) in atcommand.ccp. Note that the MOBID_EMPERIUM statement is there for reference on where you should put it. if (mob_id == MOBID_EMPERIUM) { clif_displaymessage(fd, msg_txt(sd,83)); // Monster 'Emperium' cannot be spawned. return -1; } int restricted_mob_id[] {1751}; //Add mob ID as needed i = 0; int restricted_mob_id_size = ARRAYLENGTH(restricted_mob_id); ARR_FIND(0,restricted_mob_id_size,i,restricted_mob_id[i]==mob_id); if(pc_get_group_level(sd)<=60 && i<restricted_mob_id_size){ clif_displaymessage(fd, "Your GM level does not allow you to summon this monster."); return -1; }
  11. It is there, but I didn't think I'd have a need for it until now (which I'm REALLY regretting right now). However, my current client is now connected to some encrypted grfs as well as gepard. Re-diffing the client would be a lot of work, which I don't mind doing if it's the only option I have.
  12. Can anyone share the hex address and the replacement bytes to enable proxy support on the client? I've combed rAthena and Herc, but I haven't found anything that solves this specific request unfortunately. Thanks!
×
×
  • Create New...