-
Posts
167 -
Joined
-
Last visited
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Posts posted by Onairda
-
-
On 3/31/2024 at 1:41 PM, Pokye said:
db/import/mob_avail.yml
will it work even though it was inside the db/import?
-
Hello I am planning to create a Player Figure monster. However, Mob Avail is missing in DB folder and is there any lastest guide for latest rathena?
Thank you!
-
Hello
is this possible in game?
Open an Application in windows using NPC script in game?
Thank you -
Hello,
Can someone help me to edit this script to only count 1 hour and 20 minutes then refresh again to 1 hour and 20 minutes:
because I have an event that starts every 1 hour and 20 minutes.prontera,150,150,5 script HourTimer 111,{ OnInit: while( .@a != 1 ){ delwaitingroom; waitingroom ""+gettimestr( "%H:%M:%S %p",15),0; sleep 1000; } end; }
-
Hello
Good day!
I am planning to create a Global function that will be used by different NPCs at the same time, and this Global function requires the variable. please see the below.
I have an Idea in C#, but not sure how this will work with Rathena//------------------------
Test.txt - SCript
Prontera,150,150 - - - -{
mes "Input 1st Number:";input .@FirstNumber;
next;
mes "Input 2nd Number:";input .@SecondNumber;
.@total = callfunc add_numbers(.@FirstNumber, .@secondNumber)
}
//------------------------
GlobalFunc.txt - Script
GLOBAL function add_numbers(a, b)
result = a + b
query_sql(Insert result to addition_tbl)
return result
end
-
Hello
Is bonus bonus bVariableCastrate,-30; o can be placed on Potion?
for example when a potion is used it will last up to 30 minutes then the effect will be gone.
Please help/guide how to it?
-
Solved!
Use 2020 or any Clients that support HTTP Emblem (Diffed in Nemo)
-
20 hours ago, Botaring said:
May I ask how did you make your webserver work?
What type of program do you use to diff HTTP Emblem? I use warp and it doesn't have that on 2021-11-03I change my exe to 2020 that supports HTTP emblem, then thats it.
I used NEMO by the way.
-
On 12/4/2020 at 11:10 PM, Ai4rei said:
Create a thread in a DLL, that displays a topmost window with a bitmap in it and close it when the main window is created (which can be detected in various ways, for example polling with FindWindow). That DLL must be added to client's imports (or recycle an existing one if you know how).
Edit:For example like this: https://github.com/ai4rei/splash
On 12/5/2020 at 2:58 AM, Froost said:use paint in black dll custom https://rathena.org/board/topic/118729-client-mods-paint-it-black/
Hello sorry for the long response :D.
I tried creating a custom DLL. However, I don't know how to load it using use custom DLL in NEMO, maybe you can help me? I tried loading in the DLL I've created but not working
bump thank you
done it using Visual Studio. Thank you!
-
My Webserv.bat is working and no error. However, it don't know where to place the emblem folder and the emblem's.
Im using 2019 client will it work?On 9/19/2023 at 2:52 PM, Botaring said:It's just this, sir:
web_port: 8888
Mine has been solved. its working fine now :).
You need to diff HTTP Emblem - before it works. -
Hello
I've noticed that the latest rathena git have web-server.bat, I am just think how to enable this so I can use GIF emblem? and also is this fit to work with 2019-06.05f clients?
Thank you so much -
7 hours ago, AceofSpades said:
then learn how to apply the queryl_sql guide here, you need to learn and understand how to apply it on your npc
hahaha, thanks for replying . but this is not what i asked .
5 hours ago, Winterfox said:If you have logging enabled, you can check the picklog table for rows where type is S.
// 0x00000010 - (S) Log NPC transactions (buy/sell)
For details, check log_athena.conf. The logging part is directly at the beginning of the file.
Thank you so much Winterfox, this what I need
-
Do we have a table in the database where we can track all the bought and sold items in the NPC?
I am talking for the whole NPC inside the Ragnarok.
I don't need a custom script to manually insert it in the database I want the default NPC script used inside the game.
like the tool dealer, if someone buys and sells items to the tool dealer it will be recorded.
thank you
-
Hello as the tittle say
How can I find the HP and SP bar names in GRF? I think I deleted it accidentally that's why the HP and SP bars vanished.
-
Hello Everyone,
I was hoping if you could help me, to have the below script work. What I want is create a random generator code "Transaction Code" temporarily, which means only transacting players can see the generated Transaction Code and even 100 players using the script it wont give the same Transaction Code.
prontera,155,155,3 script TESTSTE 92,{ setarray .coupon_code$[0],"A","B","C","D","E","F","G","H","I","J","K","L", "M","N","O","P","Q","R","S","T","U","V","W","X", "Y","Z","0","1","2","3","4","5","6","7","8","9"; set .@new_transaction$, ""; set .@code_exists$, 0; mes "test"; while (@code_exists == 0) { for (set @i, 0; @i < 6; set @i, @i+1) { set .@random_char$, rand(0, (getarraysize(.coupon_code$) - 1)); set .@new_transaction$, .@new_transaction$ + .coupon_code$[.@random_char$]; } query_sql("SELECT COUNT(*) FROM transaction_tbl WHERE transaction_code='" + .@new_transaction$ + "'", .@code_count); if (.@code_count == 0) { set .@code_exists$, 1; query_sql("INSERT INTO transaction_tbl (transaction_code) VALUES ('" + .@new_transaction$ + "')"); mes "Transaction Code: " + .@new_transaction$ + " inserted into the database."; } else { set .@new_transaction$, ""; } } set .@new_transaction$, ""; close; }
Thank you
-
On 8/9/2021 at 6:21 PM, L1nkZ said:
Hi,
Yes, Windows 7 32-bit is supported.
Hello L1nkz,
Can someone provide the steps for using this Rpatchur?
I am already able to build the Rpatchur. However, I don't know what folder and files to edit the data for the website.
is it on the Rpatchure folder? or the Example folder rpatchur.yml?Please help
Thank you
-
4 hours ago, LearningRO said:
*mail <destination id>,"<sender name>","<title>","<body>"{,<zeny>{,<item id array>,<item amount array>{,refine{,bound{,<item card0 array>{,<item card1 array>{,<item card2 array>{,<item card3 array> {,<random option id0 array>, <random option value0 array>, <random option paramter0 array>{,<random option id1 array>, <random option value1 array>, <random option paramter1 array> {,<random option id2 array>, <random option value2 array>, <random option paramter2 array>{,<random option id3 array>, <random option value3 array>, <random option paramter3 array> {,<random option id4 array>, <random option value4 array>, <random option paramter4 array>}}}}}}}}};
wow thanks for this could you show some example how to define it in script? thanks
-
On 8/4/2022 at 12:51 AM, RikuTzy said:
When you already have the RODEX MAIL.
I mean the function to send email thru Script :). Is it existing now?
-
On 11/30/2012 at 1:36 AM, clydelion said:
Mail via Scriptcommand
With this mod, you can do something like this..
(The sample code in the background is outdated)
This is a scriptcommand I wanted when I still had a server. It can be used in Achievement Systems, WoE prizes, and other events. This is better than getitem because the recipient doesn't need to be online.
Usage:
* sendmail <Recipient's Char ID>,"<Sender's Name>","<Title>","<Body>",<zeny>,<item_id>,<amount>{,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>};
Description:
Uses the same functions as the default mail system, but this time, it is done via script. All item, recipent, message, and title assignment are done in the background. Enjoy this free release.
PS: This have not been used on a live server, if you discover a bug (or if there's something wrong with my coding) let me know.
My sample script:
This code will give the player a +10 Knife and 10,000 zennies upon reaching job level 10.
-<tab>script<tab>Mail Test<tab>-1,{ OnPCJobLvUpEvent: if(JobLevel != 9) end; set .charid, getcharid(0); set .sender$, "Achievement System"; set .title$, "Basic Skills"; set .itemid, 1201; set .itemamount, 1; set .zeny, 10000; set .refine, 10; set .body$, "You have successfully unlocked the achievement '"+.title$+"'. You have received "+.itemamount+" "+getitemname(.itemid)+"s and "+.zeny+" zennies."; sendmail .charid,.sender$,.title$,.body$,.zeny,.itemid,.itemamount,.refine; end; }
PS: This wasn't used on a live server, please report any bugs you encounter.
Are this added to latest rA svn?
-
-
anyone? please
On 6/16/2022 at 11:59 PM, Emistry said:if the db isn't stored in same instance, then you probably should setup a scheduled tasks to sync it or manually sync it instead.
love it. Thanks Emistry your fan since 2012
-
Hello Everyone!
Just want to ask if this is possible. I want to create an Insert script that will be directed to my another database and this database was not in the vps where my raganarok svn was running.
Thank you
-
On 8/9/2021 at 9:12 AM, Eross said:
Hi ! Im using @whosell and @whobuy on my old server .. apparently something has change since we upgraded to latest rathena ...
errors are coming since then .. Please help heres my source codes
Index: atcommand.c =================================================================== --- atcommand.c (revision 16082) +++ atcommand.c (working copy) @@ -8473,6 +8473,69 @@ return 0; } +/*========================================== +* @whobuys - List who is buying the item (amount, price, and location). +* remake by VoidLess, original by zephyrus_cr +* re-edit by deathscythe to work in rAthena +*------------------------------------------*/ +ACMD_FUNC(whobuys) +{ + char item_name[100]; + int item_id, j, count = 0, sat_num = 0; + bool flag = 0; // place dot on the minimap? + struct map_session_data* pl_sd; + struct s_mapiterator* iter; + unsigned int MinPrice = battle_config.vending_max_value, MaxPrice = 0; + struct item_data *item_data; + + nullpo_retr(-1, sd); + memset(item_name, '\0', sizeof(item_name)); + + if (!message || !*message || sscanf(message, "%99[^\n]", item_name) < 1) { + clif_displaymessage(fd, "Input item name or ID (use: @whobuys <name or ID>)."); + return -1; + } + if ((item_data = itemdb_searchname(item_name)) == NULL && + (item_data = itemdb_exists(atoi(item_name))) == NULL) + { + clif_displaymessage(fd, msg_txt(sd, 19)); // Invalid item ID or name. + return -1; + } + + item_id = item_data->nameid; + + iter = mapit_getallusers(); + for( pl_sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); pl_sd = (TBL_PC*)mapit_next(iter) ) + { + if( pl_sd->buyer_id ) //check if player is autobuying + { + for (j = 0; j < pl_sd->buyingstore.slots; j++) { + if(pl_sd->buyingstore.items[j].nameid == item_id) { + snprintf(atcmd_output, CHAT_SIZE_MAX, "ID: %d | Price: %d z | Amount: %d | Buyer: %s | Location: %s (%d,%d)" + ,pl_sd->buyingstore.items[j].nameid + ,pl_sd->buyingstore.items[j].price + ,pl_sd->buyingstore.items[j].amount + ,pl_sd->status.name + ,mapindex_id2name(pl_sd->mapindex) + ,pl_sd->bl.x, pl_sd->bl.y); + if(pl_sd->buyingstore.items[j].price < MinPrice) MinPrice = pl_sd->buyingstore.items[j].price; + if(pl_sd->buyingstore.items[j].price > MaxPrice) MaxPrice = pl_sd->buyingstore.items[j].price; + clif_displaymessage(fd, atcmd_output); + count++; + flag = 1; + } + } + if(flag && pl_sd->mapindex == sd->mapindex){ + clif_viewpoint(sd, 1, 1, pl_sd->bl.x, pl_sd->bl.y, ++sat_num, 0xFFFFFF); + flag = 0; + } + } + } + mapit_free(iter); + + if(count > 0) { + snprintf(atcmd_output,CHAT_SIZE_MAX, "Found %d ea. Prices from %dz to %dz", count, MinPrice, MaxPrice); + clif_displaymessage(fd, atcmd_output); + } else + clif_displaymessage(fd, "Nobody buying it now."); + + return 0; +} + /** * Fills the reference of available commands in atcommand DBMap **/ @@ -8717,6 +8780,7 @@ ACMD_DEF(charcommands), ACMD_DEF(font), ACMD_DEF(accinfo), + ACMD_DEF(whobuys), /** * For Testing Purposes, not going to be here after we're done. **/ diff --git a/src/map/atcommand.cpp b/src/map/atcommand.cpp index cab676cce..b7456cda7 100644 --- a/src/map/atcommand.cpp +++ b/src/map/atcommand.cpp @@ -8395,6 +8395,152 @@ ACMD_FUNC(mapflag) { return 0; } +/*========================================== +* @whosells - List who is vending the item (amount, price, and location). +* ported to work in latest rA [Cookie] +*------------------------------------------*/ +ACMD_FUNC(whosells) +{ + char item_name[100]; + int item_id = 0, j, count = 0, sat_num = 0; + int s_type = 1; // search bitmask: 0-name,1-id, 2-card, 4-refine + int refine = 0,card_id = 0; + bool flag = 0; // place dot on the minimap? + struct map_session_data* pl_sd; + struct s_mapiterator* iter; + unsigned int MinPrice = battle_config.vending_max_value, MaxPrice = 0; + struct item_data *item_data; + nullpo_retr(-1, sd); + + + if (!message || !*message) { + clif_displaymessage(fd, "Use: @whosells (<+refine> )(<item_id>)(<[card_id]>) or @whosells <name>"); + return -1; + } + if (sscanf(message, "+%d %d[%d]", &refine, &item_id, &card_id) == 3){ + s_type = 1+2+4; + } + else if (sscanf(message, "+%d %d", &refine, &item_id) == 2){ + s_type = 1+4; + } + else if (sscanf(message, "+%d [%d]", &refine, &card_id) == 2){ + s_type = 2+4; + } + else if (sscanf(message, "%d[%d]", &item_id, &card_id) == 2){ + s_type = 1+2; + } + else if (sscanf(message, "[%d]", &card_id) == 1){ + s_type = 2; + } + else if (sscanf(message, "+%d", &refine) == 1){ + s_type = 4; + } + else if (sscanf(message, "%d", &item_id) == 1 && item_id == atoi(message)){ + s_type = 1; + } + else if (sscanf(message, "%99[^\n]", item_name) == 1){ + s_type = 1; + if ((item_data = itemdb_searchname(item_name)) == NULL){ + clif_displaymessage(fd, "Not found item with this name"); + return -1; + } + item_id = item_data->nameid; + } + else { + clif_displaymessage(fd, "Use: @whosells (<+refine> )(<item_id>)(<[card_id]>) or @whosells <name>"); + return -1; + } + + //check card + if(s_type & 2 && ((item_data = itemdb_exists(card_id)) == NULL || item_data->type != IT_CARD)){ + clif_displaymessage(fd, "Not found a card with than ID"); + return -1; + } + //check item + if(s_type & 1 && (item_data = itemdb_exists(item_id)) == NULL){ + clif_displaymessage(fd, "Not found an item with than ID"); + return -1; + } + //check refine + if(s_type & 4){ + if (refine<0 || refine>10){ + clif_displaymessage(fd, "Refine out of bounds: 0 - 10"); + return -1; + } + /*if(item_data->type != IT_WEAPON && item_data->type != IT_ARMOR){ + clif_displaymessage(fd, "Use refine only with weapon or armor"); + return -1; + }*/ + } + iter = mapit_getallusers(); + + for( pl_sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); pl_sd = (TBL_PC*)mapit_next(iter) ) + { + if( pl_sd->vender_id ) //check if player is vending + { + for (j = 0; j < pl_sd->vend_num; j++) { + if((item_data = itemdb_exists(pl_sd->cart.u.items_cart[pl_sd->vending[j].index].nameid)) == NULL) + continue; + if(s_type & 1 && pl_sd->cart.u.items_cart[pl_sd->vending[j].index].nameid != item_id) + continue; + if(s_type & 2 && ((item_data->type != IT_ARMOR && item_data->type != IT_WEAPON) || + (pl_sd->cart.u.items_cart[pl_sd->vending[j].index].card[0] != card_id && + pl_sd->cart.u.items_cart[pl_sd->vending[j].index].card[1] != card_id && + pl_sd->cart.u.items_cart[pl_sd->vending[j].index].card[2] != card_id && + pl_sd->cart.u.items_cart[pl_sd->vending[j].index].card[3] != card_id))) + continue; + if(s_type & 4 && ((item_data->type != IT_ARMOR && item_data->type != IT_WEAPON) || pl_sd->cart.u.items_cart[pl_sd->vending[j].index].refine != refine)) + continue; + if(item_data->type == IT_ARMOR) + snprintf(atcmd_output, CHAT_SIZE_MAX, "Refine: +%d | ID: %d | Card: [%d] | Price: %d z | Amount: %d | Seller: %s | Location: %s (%d,%d)" + ,pl_sd->cart.u.items_cart[pl_sd->vending[j].index].refine + ,pl_sd->cart.u.items_cart[pl_sd->vending[j].index].nameid + ,pl_sd->cart.u.items_cart[pl_sd->vending[j].index].card[0] + ,pl_sd->vending[j].value + ,pl_sd->vending[j].amount + ,pl_sd->status.name + ,mapindex_id2name(pl_sd->mapindex) + ,pl_sd->bl.x,pl_sd->bl.y); + else if(item_data->type == IT_WEAPON) + snprintf(atcmd_output, CHAT_SIZE_MAX, "Refine: +%d | ID: %d | Cards: [%d,%d,%d,%d] | Price: %d z | Amount: %d | Seller: %s | Location: %s (%d,%d)" + ,pl_sd->cart.u.items_cart[pl_sd->vending[j].index].refine + ,pl_sd->cart.u.items_cart[pl_sd->vending[j].index].nameid + ,pl_sd->cart.u.items_cart[pl_sd->vending[j].index].card[0] + ,pl_sd->cart.u.items_cart[pl_sd->vending[j].index].card[1] + ,pl_sd->cart.u.items_cart[pl_sd->vending[j].index].card[2] + ,pl_sd->cart.u.items_cart[pl_sd->vending[j].index].card[3] + ,pl_sd->vending[j].value + ,pl_sd->vending[j].amount + ,pl_sd->status.name + ,mapindex_id2name(pl_sd->mapindex) + ,pl_sd->bl.x,pl_sd->bl.y); + else + snprintf(atcmd_output, CHAT_SIZE_MAX, "ID: %d | Price: %d z | Amount: %d | Seller: %s | Location: %s (%d,%d)" + ,pl_sd->cart.u.items_cart[pl_sd->vending[j].index].nameid + ,pl_sd->vending[j].value + ,pl_sd->vending[j].amount + ,pl_sd->status.name + ,mapindex_id2name(pl_sd->mapindex) + ,pl_sd->bl.x, pl_sd->bl.y); + if(pl_sd->vending[j].value < MinPrice) MinPrice = pl_sd->vending[j].value; + if(pl_sd->vending[j].value > MaxPrice) MaxPrice = pl_sd->vending[j].value; + clif_displaymessage(fd, atcmd_output); + count++; + flag = 1; + } + if (flag && pl_sd->mapindex == sd->mapindex) { + //if (flag && pl_sd->bl.m == sd->bl.m) { + clif_viewpoint(sd, 1, 1, pl_sd->bl.x, pl_sd->bl.y, ++sat_num, 0xFFFFFF); + flag = 0; + } + } + } + mapit_free(iter); + if(count > 0) { + snprintf(atcmd_output, CHAT_SIZE_MAX, "Found %d ea. Prices from %dz to %dz.", count, MinPrice, MaxPrice); + clif_displaymessage(fd, atcmd_output); + } else + clif_displaymessage(fd, "Nobody is selling it now."); + return 0; +} + /*=================================== * Remove some messages *-----------------------------------*/ @@ -10593,6 +10739,7 @@ void atcommand_basecommands(void) { ACMD_DEFR(channel,ATCMD_NOSCRIPT), ACMD_DEF(fontcolor), ACMD_DEF(langtype), + ACMD_DEF(whosells), #ifdef VIP_ENABLE ACMD_DEF(vip), ACMD_DEF(showrate),
Error occured on latest rAthena. please see below. thanks for your help
-
mob avail in Lastest rathena?
in General Support
Posted · Edited by Onairda
EDITED: Working now!, Forgot to removed the hashtag before the word 'Body' #Body
db/import/mob_avail.txt
Take note: Mob name should always CAPITAL Character to work.
Body: # Examples - Mob: PORING Sprite: BAPHOMET