Jump to content

Magnetix

Members
  • Posts

    439
  • Joined

  • Last visited

  • Days Won

    2

Everything posted by Magnetix

  1. They won't be able to see it if they haven't joined the channel. autojoin: false Set to true. They will join the channel by default.
  2. Test this first. prontera,162,193,5 script Entrada PvP 943,{ set .@n$, "[ ^cc0000Porteiro PvP^000000 ]"; INICIO: mes .@n$; mes "Arena 01 : ^0000FFPVP Arena^000000"; mes "Arena 02 : ^FF0000PVP Izlude^000000"; mes "O que você gostaria de fazer ?"; next; switch(select("^3366FFEscolher Arena^000000:^800080Visualizar Ranking^000000:^00FF00Ver Minha Posição^000000:Sair")) { case 1: mes .@n$; mes "Escolha a Arena que gostaria de entrar"; mes "Arena 01 : ^0000FFPVP Arena^000000"; mes "Arena 02 : ^FF0000PVP Izlude^000000"; next; switch(select("- ^0000FFArena Fechada^000000 [ "+getmapusers($@map$[1])+" ]:- ^FF0000Arena Izlude^000000 [ "+getmapusers($@map$[2])+" ]:- Nenhuma")) { case 1: announce ""+strcharinfo(0)+" Entrou no PvP 1!!",bc,0xBAB9B9; warp $@map$[1],0,0; end; case 2: announce ""+strcharinfo(0)+" Entrou no PvP for All Room !!",bc,0xBAB9B9; warp $@map$[2],0,0; end; case 3: close; } case 2: mes .@n$; mes "Escolha a Arena do Rank:"; next; switch(select("- Rank ^0000FFArena 01^000000:- Rank ^FF0000Arena 02^000000:- Voltar")) { case 1: callfunc("PvPS_Func","Ranking_Arena",1);close; case 2: callfunc("PvPS_Func","Ranking_Arena",2);close; case 3: goto INICIO;end; } case 3: mes .@n$; mes "Escolha o Tipo de PVP:"; next; switch(select("- ^0000FFArena 01^000000:- ^FF0000Arena 02^000000:- Voltar")) { case 1: callfunc("PvPS_Func","MeuRanking",1);close; case 2: callfunc("PvPS_Func","MeuRanking",2);close; case 3: goto INICIO;end; } case 4: close; } end; // fallback } These are leftovers. close; } } } warp $@map$[4],0,0; end; case 5: if(Class < 4023 || Class > 4045){ mes .@n$; mes "Só babys podem entrar nesse PvP !"; close; } warp $@map$[5],128,114; end; case 6: close;
  3. if (sd->equip_index[EQI_HEAD_TOP] >= 0 && sd->inventory_data[sd->equip_index[EQI_HEAD_TOP]]->nameid == 19001) skillratio += 500 + 40 * skill_lv; else skillratio += 300 + 40 * skill_lv; break; Make sure to recompile.
  4. What client are you using?
  5. - script Healer -1,{ OnTouch: if((getgroupid() < 1)) goto normal_player; if((getgroupid() >= 2)) goto vip_player_ouro; if((getgroupid() >= 1)) goto vip_player_prata; end; for this to work, add range or how far from the npc to trigger. example, change alberta,25,240,6 duplicate(Healer) Curandeira#alb 936 to alberta,25,240,6 duplicate(Healer) Curandeira#alb 936,3,3
  6. If you're using rAthena rev 2020+, you may want to apply the patch manually. Checking the diff file, castle.txt no longer exist.
  7. 1. We advise you to merge the pre-renewal files with the renewal. Doing this will save you the time of fixing the item/skill descriptions, maps and other client changes in renewal. 2 & 3. You have to match the filenames of the files inside System folder with the Lub files when you patched your client. (See steps 11~14 under [ The kRO Client: Updating, Diffing, Hexing, Translating, and Customizing ])
  8. 1. For entrance if ( agitcheck() || agitcheck2() || agitcheck3() ) { mes "[Entrance Guard]"; mes "Woe is currently active can't enter right now"; // NPC message when woe is active close; } else { /* // your code when woe is off */ } 2. Kick everyone when woe starts (I'm not sure if 'SavePoint' works but if it throws an error, you can change it to specific map/area) OnAgitStart: OnAgitStart2: OnAgitStart3: mapwarp .map$, "SavePoint",0,0; end;
  9. Find //Check to see if the items is already +10 if(getequiprefinerycnt(.@part) >= 10) { getitem 542,1; dispbottom "I can't refine this any more. This is as refined as it gets!"; close; } replace with //Check refinement if ( getequiprefinerycnt(.@part) < 8 || getequiprefinerycnt(.@part) >= 10 ) { getitem 542,1; dispbottom "I can only refine +8 and +9 items!"; close; }
  10. Please refer to my reply and ignore my suggestion at the bottom. I already mentioned that the script already offers a uid check, you just have to reuse it. veil,81,134,6 script Quistis Trepe 10414,{ .gui = get_unique_id (); .@nb = query_sql("SELECT `dailybbq` FROM `bloody_branch_uid` WHERE `unique_id` = "+.gui+" LIMIT 1", .@bbq); mes "[Quistis Trepe]"; mes "Say... do you want to play the MvP Ladder game? It cost 15 Vote Coins Per person, total of 30 Vote Coins now to get in."; next; switch(select("Yes, let's get it on!:Information.:Show me the best record.:No.")) { case 1: if (.@bbq == 0) { break; } else if (.@bbq >= 1) { mes "You have already completed the Bloody Branch Quest for today. Come back tomorrow after 12:00am server time."; close; } Here's the line of codes that verify party members' IP //Check party member UniqueID and see if they have completed for the day. if(.@cip == 0 && .@cuid == 1) { set .@done, 1; } // If same IP is on party else if(.@cip == 1 && .@cuid == 0) { set .@dupli, 1; } else if(.@cip == 0 && .@cuid == 0) { // Add IP to party list for checking .@party_list$ += "|" + .@ipd$ + "|"; // Add Unique_ID to party list for checking .@party_list$ += "|" + .@pmbbq$ + "|"; } After this, all you have to do was to reuse/insert the uid check. ...and you already did the first few lines .@pmu = query_sql("SELECT last_unique_id FROM `login` WHERE account_id ="+$@partymemberaid[.@i]+"", .@party_mem_uid$); .@gpmu = query_sql("SELECT `dailybbq` FROM `bloody_branch_uid` WHERE `unique_id` = "+.@party_mem_uid$+" LIMIT 1", .@pmbbq$);
  11. input .@input; delitem 501, .@input; // delete/remove ticket getitem 502, .@input;
  12. You can just re-use the check since you're already attaching the party members .gui = get_unique_id(); .@nb = query_sql("SELECT `bloodybranch` FROM `bloody_branch` WHERE `unique_id` = "+.gui+" LIMIT 1", .@bbq); if (.@nb) .@dupli = 1; There's a simpler way, instead of the checking the IPs and unique ID, you can also save their account ids.
  13. You can use SQL query to look for the mvp cards in a player's inventory, an account's storage, vendor's shop, if you have mail enabled include mail attachments and guild storages. SELECT SUM(amount) FROM `inventory` WHERE `nameid` = <card_id>" The above will only count the specified mvp card id from all of the player's inventory, you have to include other tables (storage, vendings, etc.), and you have to do it for ALL mvp cards (loop), and at the end sum everything for the grand total. To hasten searches and avoid lagging the server, you may want to alter the table and index columns with `nameid` (this will also increase storage) and also instead of pulling the data each time you speak to the npc, better to pull the data at certain time of the day and just include 'As of <datetime>'... something like that
  14. The tombstone tracks the time of the MvP's death. If you want to show MvPs that are alive, here's an idea: Save all MvP id or you can query the ids from the database if you're using sql for mob_db. setarray $mvp_id, <mvp_id>; // Add the ids you want to track Create a script where, when an MvP is killed (OnNPCKillEvent), blacklist its id or skip showing the dead ones. OR you can use the tombstone to track if the MvP is dead or alive. You can set your data each time the tombstone is summoned and removed.
  15. Since you've followed the guide, you can grant the user access through the part mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON rathena4444\_rag.* TO 'rathena4444'@'your-ip';
  16. If you're using Notepad++, try using regular expressions (regex) OR you can import item_db_equip then run an SQL command, something like UPDATE `item_db` SET `slots` = 4 WHERE `type` = 'Weapon'; ^this is for weapons, just change `type` for armors. Take note that using the above will make ALL weapons/armors 4 slotted. After making changes, you can export as csv and use the included tool csv2yaml. <---- not sure if it'll work since I haven't tried it myself I'm sure there are better ways of doing it.
  17. since you already have an IP check and you were already pulling their IP, you might as well pull their unique_id find the lines: query_sql ("SELECT `last_ip` FROM `login` WHERE `account_id`=" + $@partymemberaid[.@i] + "", .@ipd$); // If same IP is on party if(compare(.@party_list$, "|" + .@ipd$ + "|" ) == 1) { set .@dupli, 1; and adjust to something like query_sql ("SELECT `last_ip`,`last_unique_id` FROM `login` WHERE `account_id`=" + $@partymemberaid[.@i] + "", .@ipd$, .@unique_id$); // If same IP is on party if ( compare(.@party_list$, "|" + .@ipd$ + "|") || compare(.@party_list$, "|" + .@unique_id$ + "|") ) { set .@dupli, 1; Haven't tested the code
  18. if (2 < .@itmCnt) { mes "You can have a maximum of two out of the following list:"; for (.@i = 0; .@i < getarraysize(.@rental); .@i++) { mes "" + getitemname(.@rental[.@i]) + ""; } close; } It'll work. Have you tried checking the part where your script called Aqua_Set?
  19. rAthena and the database server will run on the same machine. That's why in the guide, it was set to allow connection from localhost. If you want to remotely connect, you have to allow connection for the 'your-user'@'your-ip'. This part Also, if you have installed a firewall or enabled iptables, you have to open and allow connection to your mysql/mariadb port.
  20. Add another Label in your barricade setter. Edit OnEmpDead and add 3~5 secs delay then use donpcevent to trigger the new Label
×
×
  • Create New...