Advertisement
johnlol

Castle Manager

Sep 5th, 2023
1,283
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VeriLog 10.24 KB | Gaming | 0 0
  1. //===== rAthena Script =======================================
  2. //= Castle Manager NPC
  3. //===== By: ==================================================
  4. //= Nova
  5. //===== Current Version: =====================================
  6. //= 1.0
  7. //= 1.1 Added ability to set a single value on a castle.
  8. //===== Compatible With: =====================================
  9. //= rAthena Project
  10. //===== Description: =========================================
  11. //= Manage WoE castle data.
  12. //= Thanks to Euphy's woe_controller script for the arrays.
  13. //= And thanks to Emistry for making me add more things to it.
  14. //============================================================
  15.  
  16. -   script  Castle Manager  -1,{
  17.     .@n$ = "[ Castle Manager ]";
  18.     mes .@n$;
  19.    
  20.     if ( getgmlevel() < 99 ) {
  21.         mes "I only speak to Game Masters.";
  22.         end;
  23.     }
  24.    
  25.     if ( agitcheck() || agitcheck2() ) {
  26.         mes "Speak to me after WoE ends.";
  27.         end;
  28.     }
  29.    
  30.     for(.@i = 0; .@i < 6; .@i++) {
  31.         .@k = .@i * 5;
  32.         mes "Realm: ^676767"+.Realms$[.@i]+"^000000";
  33.         for(.@j = .@k; .@j < (.@k + 5); .@j++) {
  34.             .@t = getcastledata(.Castles$[.@j],1);
  35.             mes "  ~ "+getcastlename(.Castles$[.@j])+": "+((.@t)?"^0055FF"+getguildname(.@t):"^777777Unoccupied")+"^000000";
  36.         }
  37.         if (.@i < 5) mes " ";
  38.     }
  39.    
  40.     next;
  41.    
  42.     switch(select("View castle data:Transfer castle data:Copy a castle's data:Clear a castle's data:Modify a castle's data:Cancel")){
  43.         case 1:
  44.             for(.@i = 0; .@i < 6; .@i++) {
  45.                 .@k = .@i * 5;
  46.                 for(.@j = .@k; .@j < (.@k + 5); .@j++) {
  47.                     .@t = getcastledata(.Castles$[.@j],1);
  48.                     if(.@t) {
  49.                         .@menu1$ = .@menu1$ + "  ~ "+getcastlename(.Castles$[.@j])+" (^0055FF"+.Castles$[.@j]+"^000000):";
  50.                         .@menuIds1[.@id1] = .@j;
  51.                         .@id1++;
  52.                     }
  53.                     else {
  54.                         .@menu2$ = .@menu2$ + "  ~ "+getcastlename(.Castles$[.@j])+" (^777777"+.Castles$[.@j]+"^000000):";
  55.                         .@menuIds2[.@id2] = .@j;
  56.                         .@id2++;
  57.                     }
  58.                 }
  59.             }
  60.            
  61.             copyarray(.@menuIds1[.@id1], .@menuIds2[0], .@id2);
  62.            
  63.             .@old = select(.@menu1$ + .@menu2$) - 1;
  64.             .@old = .@menuIds1[.@old];
  65.            
  66.             mes "[ "+getcastlename(.Castles$[.@old])+" ]";
  67.             mes "Guild: ^3355FF"+getguildname(getcastledata(.Castles$[.@old],1))+"^000000";
  68.             mes "Leader: ^3355FF"+getguildmaster(getcastledata(.Castles$[.@old],1))+"^000000";
  69.             mes "Castle Economy: ^3355FF"+getcastledata(.Castles$[.@old],2)+"^000000";
  70.             mes "Castle Defense: ^3355FF"+getcastledata(.Castles$[.@old],3)+"^000000";
  71.             mes callfunc("F_InsertPlural",getcastledata(.Castles$[.@old],4),"investment",0,"^3355FF%d^000000 %s")+" in Economy today.";
  72.             mes callfunc("F_InsertPlural",getcastledata(.Castles$[.@old],4),"investment",0,"^3355FF%d^000000 %s")+" in Defense today.";
  73.             break;
  74.         case 2:
  75.             mes .@n$,"Which Castle's data do you wish to transfer?"; next;
  76.            
  77.             for(.@i = 0; .@i < 6; .@i++) {
  78.                 .@k = .@i * 5;
  79.                 for(.@j = .@k; .@j < (.@k + 5); .@j++) {
  80.                     .@t = getcastledata(.Castles$[.@j],1);
  81.                     if(.@t) {
  82.                         .@menu1$ = .@menu1$ + "  ~ "+getcastlename(.Castles$[.@j])+" (^0055FF"+.Castles$[.@j]+"^000000):";
  83.                         .@menuIds1[.@id1] = .@j;
  84.                         .@id1++;
  85.                     }
  86.                     else {
  87.                         .@menu2$ = .@menu2$ + "  ~ "+getcastlename(.Castles$[.@j])+" (^777777"+.Castles$[.@j]+"^000000):";
  88.                         .@menuIds2[.@id2] = .@j;
  89.                         .@id2++;
  90.                     }
  91.                 }
  92.             }
  93.            
  94.             copyarray(.@menuIds1[.@id1], .@menuIds2[0], .@id2);
  95.            
  96.             .@old = select(.@menu1$ + .@menu2$) - 1;
  97.             .@old = .@menuIds1[.@old];
  98.  
  99.             mes .@n$,"To which Castle to you wish to transfer ^0055FF"+getcastlename(.Castles$[.@old])+"^000000's data?"; next;
  100.  
  101.             for(.@i = 0; .@i < 6; .@i++) {
  102.                 .@k = .@i * 5;
  103.                 for(.@j = .@k; .@j < (.@k + 5); .@j++) {
  104.                     .@t = getcastledata(.Castles$[.@j],1);
  105.                     if(!.@t) {
  106.                         .@menu3$ = .@menu3$ + "  ~ "+getcastlename(.Castles$[.@j])+" (^777777"+.Castles$[.@j]+"^000000):";
  107.                         .@menuIds3[.@id3] = .@j;
  108.                         .@id3++;
  109.                     }
  110.                     else {
  111.                         .@menu4$ = .@menu4$ + "  ~ "+getcastlename(.Castles$[.@j])+" (^0055FF"+.Castles$[.@j]+"^000000):";
  112.                         .@menuIds4[.@id4] = .@j;
  113.                         .@id4++;
  114.                     }
  115.                 }
  116.             }
  117.  
  118.             copyarray(.@menuIds3[.@id3], .@menuIds4[0], .@id4);
  119.  
  120.             .@new = select(.@menu3$ + .@menu4$) - 1;
  121.             .@new = .@menuIds3[.@new];
  122.  
  123.             mes .@n$,"Are you certain you wish to transfer ^0055FF"+getcastlename(.Castles$[.@old])+"^000000's data to ^0055FF"+getcastlename(.Castles$[.@new])+"^000000?"; next;
  124.  
  125.             switch(select("Transfer Data:Cancel")){
  126.                 case 1:
  127.                     for (.@i = 1; .@i < 18; .@i++){
  128.                         setd ".@"+.@i,getcastledata(.Castles$[.@old],.@i);
  129.                         setcastledata(.Castles$[.@new],.@i, getd(".@"+.@i));
  130.                         setcastledata(.Castles$[.@old],.@i, 0);
  131.                     }
  132.                     mes .@n$,"Data has been transfered from ^0055FF"+getcastlename(.Castles$[.@old])+"^000000 to ^0055FF"+getcastlename(.Castles$[.@new])+"^000000.";
  133.                     break;
  134.                 case 2:
  135.                     break;
  136.             }
  137.             break;
  138.         case 3:
  139.             mes .@n$,"Which Castle's data do you wish to copy?"; next;
  140.            
  141.             for(.@i = 0; .@i < 6; .@i++) {
  142.                 .@k = .@i * 5;
  143.                 for(.@j = .@k; .@j < (.@k + 5); .@j++) {
  144.                     .@t = getcastledata(.Castles$[.@j],1);
  145.                     if(.@t) {
  146.                         .@menu1$ = .@menu1$ + "  ~ "+getcastlename(.Castles$[.@j])+" (^0055FF"+.Castles$[.@j]+"^000000):";
  147.                         .@menuIds1[.@id1] = .@j;
  148.                         .@id1++;
  149.                     }
  150.                     else {
  151.                         .@menu2$ = .@menu2$ + "  ~ "+getcastlename(.Castles$[.@j])+" (^777777"+.Castles$[.@j]+"^000000):";
  152.                         .@menuIds2[.@id2] = .@j;
  153.                         .@id2++;
  154.                     }
  155.                 }
  156.             }
  157.            
  158.             copyarray(.@menuIds1[.@id1], .@menuIds2[0], .@id2);
  159.            
  160.             .@old = select(.@menu1$ + .@menu2$) - 1;
  161.             .@old = .@menuIds1[.@old];
  162.  
  163.             mes .@n$,"To which Castle to you wish to copy ^0055FF"+getcastlename(.Castles$[.@old])+"^000000's data?"; next;
  164.  
  165.             for(.@i = 0; .@i < 6; .@i++) {
  166.                 .@k = .@i * 5;
  167.                 for(.@j = .@k; .@j < (.@k + 5); .@j++) {
  168.                     .@t = getcastledata(.Castles$[.@j],1);
  169.                     if(!.@t) {
  170.                         .@menu3$ = .@menu3$ + "  ~ "+getcastlename(.Castles$[.@j])+" (^777777"+.Castles$[.@j]+"^000000):";
  171.                         .@menuIds3[.@id3] = .@j;
  172.                         .@id3++;
  173.                     }
  174.                     else {
  175.                         .@menu4$ = .@menu4$ + "  ~ "+getcastlename(.Castles$[.@j])+" (^0055FF"+.Castles$[.@j]+"^000000):";
  176.                         .@menuIds4[.@id4] = .@j;
  177.                         .@id4++;
  178.                     }
  179.                 }
  180.             }
  181.  
  182.             copyarray(.@menuIds3[.@id3], .@menuIds4[0], .@id4);
  183.  
  184.             .@new = select(.@menu3$ + .@menu4$) - 1;
  185.             .@new = .@menuIds3[.@new];
  186.  
  187.             mes .@n$,"Are you certain you wish to copy ^0055FF"+getcastlename(.Castles$[.@old])+"^000000's data to ^0055FF"+getcastlename(.Castles$[.@new])+"^000000?"; next;
  188.  
  189.             switch(select("Copy Data:Cancel")){
  190.                 case 1:
  191.                     for (.@i = 1; .@i < 18; .@i++){
  192.                         setd ".@"+.@i,getcastledata(.Castles$[.@old],.@i);
  193.                         setcastledata(.Castles$[.@new],.@i, getd(".@"+.@i));
  194.                     }
  195.                     mes .@n$,"Data has been copied from ^0055FF"+getcastlename(.Castles$[.@old])+"^000000 to ^0055FF"+getcastlename(.Castles$[.@new])+"^000000.";
  196.                     break;
  197.                 case 2:
  198.                     break;
  199.             }
  200.             break;
  201.         case 4:
  202.             mes .@n$,"Which Castle's data do you wish to clear?"; next;
  203.            
  204.             for(.@i = 0; .@i < 6; .@i++) {
  205.                 .@k = .@i * 5;
  206.                 for(.@j = .@k; .@j < (.@k + 5); .@j++) {
  207.                     .@t = getcastledata(.Castles$[.@j],1);
  208.                     if(.@t) {
  209.                         .@menu1$ = .@menu1$ + "  ~ "+getcastlename(.Castles$[.@j])+" (^0055FF"+.Castles$[.@j]+"^000000):";
  210.                         .@menuIds1[.@id1] = .@j;
  211.                         .@id1++;
  212.                     }
  213.                     else {
  214.                         .@menu2$ = .@menu2$ + "  ~ "+getcastlename(.Castles$[.@j])+" (^777777"+.Castles$[.@j]+"^000000):";
  215.                         .@menuIds2[.@id2] = .@j;
  216.                         .@id2++;
  217.                     }
  218.                 }
  219.             }
  220.            
  221.             copyarray(.@menuIds1[.@id1], .@menuIds2[0], .@id2);
  222.            
  223.             .@clear = select(.@menu1$ + .@menu2$) - 1;
  224.             .@clear = .@menuIds1[.@clear];
  225.            
  226.             mes .@n$,"Are you certain to wish to clear ^0055FF"+getcastlename(.Castles$[.@clear])+"^000000's data?"; next;
  227.            
  228.             switch(select("Clear Data:Cancel")){
  229.                 case 1:
  230.                     for (.@i = 1; .@i < 18; .@i++){
  231.                         setcastledata(.Castles$[.@clear],.@i, 0);
  232.                     }
  233.                     mes .@n$,"^0055FF"+getcastlename(.Castles$[.@clear])+"^000000's data has been cleared.";
  234.                     break;
  235.                 case 2:
  236.                     break;
  237.             }
  238.             break;
  239.         case 5:
  240.             mes .@n$,"Which castle's data do you wish to modify?"; next;
  241.            
  242.             for(.@i = 0; .@i < 6; .@i++) {
  243.                 .@k = .@i * 5;
  244.                 for(.@j = .@k; .@j < (.@k + 5); .@j++) {
  245.                     .@t = getcastledata(.Castles$[.@j],1);
  246.                     if(.@t) {
  247.                         .@menu1$ = .@menu1$ + "  ~ "+getcastlename(.Castles$[.@j])+" (^0055FF"+.Castles$[.@j]+"^000000):";
  248.                         .@menuIds1[.@id1] = .@j;
  249.                         .@id1++;
  250.                     }
  251.                     else {
  252.                         .@menu2$ = .@menu2$ + "  ~ "+getcastlename(.Castles$[.@j])+" (^777777"+.Castles$[.@j]+"^000000):";
  253.                         .@menuIds2[.@id2] = .@j;
  254.                         .@id2++;
  255.                     }
  256.                 }
  257.             }
  258.            
  259.             copyarray(.@menuIds1[.@id1], .@menuIds2[0], .@id2);
  260.            
  261.             .@old = select(.@menu1$ + .@menu2$) - 1;
  262.             .@old = .@menuIds1[.@old];
  263.            
  264.             mes .@n$,"Which value of ^0055FF"+getcastlename(.Castles$[.@old])+"^000000 do you wish to change?"; next;
  265.            
  266.             .@change = select(.Values$[1],.Values$[2],.Values$[3],.Values$[4],.Values$[5]);
  267.            
  268.             mes .@n$,"To what value do you wish to set the ^0055FF"+.Values$[.@change]+"^000000?"; next;
  269.            
  270.             input(.@n);
  271.             setcastledata(.Castles$[.@old],.@change, .@n);
  272.            
  273.             mes .@n$,"^0055FF"+getcastlename(.Castles$[.@old])+"^000000's ^0055FF"+.Values$[.@change]+"^000000 has been set to "+.@n;
  274.             break;
  275.         case 6:
  276.             break;
  277.     }
  278.     end;
  279.  
  280. OnInit:
  281.     setarray .Values$[1],"Guild ID","Economy","Defense","Economy added today","Defense added today";
  282.     setarray .Castles$[0],
  283.     "prtg_cas01","prtg_cas02","prtg_cas03","prtg_cas04","prtg_cas05",
  284.     "payg_cas01","payg_cas02","payg_cas03","payg_cas04","payg_cas05",
  285.     "gefg_cas01","gefg_cas02","gefg_cas03","gefg_cas04","gefg_cas05",
  286.     "aldeg_cas01","aldeg_cas02","aldeg_cas03","aldeg_cas04","aldeg_cas05",
  287.     "arug_cas01","arug_cas02","arug_cas03","arug_cas04","arug_cas05",
  288.     "schg_cas01","schg_cas02","schg_cas03","schg_cas04","schg_cas05";
  289.     setarray .Realms$[0],"Prontera","Payon","Geffen","Aldebaran","Arunafeltz","Schwaltzvalt";
  290.     end;
  291. }
  292.  
  293. prt_gld,166,80,4    duplicate(Castle Manager)   Castle Manager#prt  418
  294. pay_gld,208,167,4   duplicate(Castle Manager)   Castle Manager#pay  418
  295. gef_fild13,179,202,6    duplicate(Castle Manager)   Castle Manager#gef  418
  296. alde_gld,181,163,6  duplicate(Castle Manager)   Castle Manager#alde 418
  297. aru_gld,249,205,4   duplicate(Castle Manager)   Castle Manager#aru  418
  298. sch_gld,200,252,6   duplicate(Castle Manager)   Castle Manager#sch  418
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement