Jump to content

Vengeance

Members
  • Posts

    65
  • Joined

  • Last visited

Everything posted by Vengeance

  1. Well everything was working fine when u wisper without contract it would say you have not signed anyways ill check it once..
  2. You need to copy the code and edit the original monster code and then compile your server
  3. The input variable has a number limit so instead of entering the zeny why not make like "How many bank notes do you want" this way it will give u the desired result you looking for case 2: next; mes @npcname$; mes "Please put in the amount of Notes you want."; next; input @noteamount; if (@noteamount <= 0) { mes @npcname$; mes "Again, the minimum amount of notes you can exchange is 1."; close; } else if (@noteamount*@banknoteprice > Zeny) { mes @npcname$; mes "I'm sorry but you lack Zeny to complete this transaction."; close; } next; set @pricea,@noteamount*@banknoteprice; set Zeny,Zeny-@pricea; getitem @banknoteid,@noteamount; mes @npcname$; mes "Transaction complete! Here are your Bank Notes."; break; Try this and it would work fine
  4. you need to make the map as a castle by adding in castle_db.txt for this..
  5. Jump To Who Sell This command searches for the cheapest seller and warps to him.. /*========================================== * @jumptowhosell - warps to the cheapest shop. * Made by Vengence *------------------------------------------*/ ACMD_FUNC(jumptowhosell) { 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: @jtws (<+refine> )(<item_id>)(<[card_id]>) or @jtws <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)){ //names, that start on num are not working //so implemented minumum item_id>500 //or better make 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: @jtws (<+refine> )(<item_id>)(<[card_id]>) or @jtws <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(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; count++; flag = 1; } if(flag && pl_sd->mapindex == sd->mapindex){ flag = 0; } } } mapit_free(iter); if(count > 0) { 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(pl_sd->vending[j].value == MinPrice) { pc_setpos(sd, pl_sd->mapindex, pl_sd->bl.x, pl_sd->bl.y, 3); snprintf(atcmd_output,CHAT_SIZE_MAX, "Warped to %s", pl_sd->status.name); clif_displaymessage(fd, atcmd_output); } } } } } else clif_displaymessage(fd, "Nobody is selling it now."); return 0; } and search for in atcommand.c { "font", 1,1, atcommand_font }, and below it add { "jtws", 1,99, atcommand_jumptowhosell }, //[Vengence] This is just a modification of the whosell command so the credit also goes to the creator of the whosell command. command_jtws.patch
  6. <?xml version="1.0" encoding="euc-kr" ?> <clientinfo> <servicetype>korea</servicetype> <servertype>sakray</servertype> <connection> <display>Realm Ragnarok Online</display> <balloon>Welcome To RealmRO</balloon> <desc>50x/50x/Unique</desc> <address>68.193.249.82</address> <port>6900</port> <version>25</version> <langtype>8</langtype> <registrationweb>_m/_f</registrationweb> <aid> <admin>2000000</admin> </aid> </connection> </clientinfo> try this
  7. could you post the clientinfo.xml or the sclientinfo.xml so that we can know if you have made the clientinfo file with correct IP and all also can u make sure you have entered the correct date of the client in mmo.h and then changed the packet_db_ver to default in packet_db.txt and after which you have compiled your server (ONly if you edit in mmo.h no need to compile if you edit in packet_db.txt)
  8. Oops my mistake had it updated in my server but the works folder was not updated thx for notifying have now updated the script
  9. bonus is for the char bonus I dont think so the weight of an item can be increased instead the weight limit of the player can be reduced..
  10. Well thats possible but I just made it for a request so I thought that this much would be enough...
  11. WoW to Ragnarok this is awesome....looks cool will try it out soon...
  12. I recommend you to contact 3Ceam community for more help as this is rathena
  13. ru sure you put up the spr and act files in the proper locations...6 files in the sprites folder under datasprite¾Ç¼¼»Ç¸®¿© 1.¿©_item.spr 2.¿©_item.act under datasprite¾Ç¼¼»Ç¸®³² 1.³²_item.spr 2.³²_item.act These are the equip sprites for male and female char's And then the drop sprites under datasprite¾ÆÀÌÅÛ 1.item.spr 2.item.act
  14. it works even if its located in data folder too...Its not like it should be in a grf only..
  15. is mysql installed in the server ??
  16. thank you please give reviews about the mod to motivate so I release more useful mods to the community
  17. Hi guys i made this simple modification to stop corruption in my server... This little snippet would allow you to stop GMs from abusing @monster command.. it will announce the Monster name, Amount and also the location with the GM name so its very easy to know if it was for an Purpose or just for abuse.... /*========================================== * *------------------------------------------*/ ACMD_FUNC(monster) { char name[NAME_LENGTH]; char monster[NAME_LENGTH]; int mob_id; int number = 0; int count; int i, k, range; short mx, my; nullpo_retr(-1, sd); memset(name, '0', sizeof(name)); memset(monster, '0', sizeof(monster)); memset(atcmd_output, '0', sizeof(atcmd_output)); if (!message || !*message) { clif_displaymessage(fd, msg_txt(80)); // Give the display name or monster name/id please. return -1; } if (sscanf(message, ""%23[^"]" %23s %d", name, monster, &number) > 1 || sscanf(message, "%23s "%23[^"]" %d", monster, name, &number) > 1) { //All data can be left as it is. } else if ((count=sscanf(message, "%23s %d %23s", monster, &number, name)) > 1) { //Here, it is possible name was not given and we are using monster for it. if (count < 3) //Blank mob's name. name[0] = '0'; } else if (sscanf(message, "%23s %23s %d", name, monster, &number) > 1) { //All data can be left as it is. } else if (sscanf(message, "%23s", monster) > 0) { //As before, name may be already filled. name[0] = '0'; } else { clif_displaymessage(fd, msg_txt(80)); // Give a display name and monster name/id please. return -1; } if ((mob_id = mobdb_searchname(monster)) == 0) // check name first (to avoid possible name begining by a number) mob_id = mobdb_checkid(atoi(monster)); if (mob_id == 0) { clif_displaymessage(fd, msg_txt(40)); // Invalid monster ID or name. return -1; } if (mob_id == MOBID_EMPERIUM) { clif_displaymessage(fd, msg_txt(83)); // Monster 'Emperium' cannot be spawned. return -1; } if (number <= 0) number = 1; if (strlen(name) < 1) strcpy(name, "--ja--"); // If value of atcommand_spawn_quantity_limit directive is greater than or equal to 1 and quantity of monsters is greater than value of the directive if (battle_config.atc_spawn_quantity_limit && number > battle_config.atc_spawn_quantity_limit) number = battle_config.atc_spawn_quantity_limit; if (battle_config.etc_log) ShowInfo("%s monster='%s' name='%s' id=%d count=%d (%d,%d)n", command, monster, name, mob_id, number, sd->bl.x, sd->bl.y); count = 0; range = (int)sqrt((float)number) +2; // calculation of an odd number (+ 4 area around) for (i = 0; i < number; i++) { map_search_freecell(&sd->bl, 0, &mx, &my, range, range, 0); k = mob_once_spawn(sd, sd->bl.m, mx, my, name, mob_id, 1, ""); count += (k != 0) ? 1 : 0; } if (count != 0) if (number == count){ if(pc_isGM(sd)==99){ // Checks if the GM level is below 99 Announcement is made [Vengeance] clif_displaymessage(fd, msg_txt(39)); // All monster summoned! } else { sprintf(atcmd_output, "%s summoned %d %s in %s,%d,%d", sd->status.name,number, monster, mapindex_id2name(sd->mapindex), sd->bl.x, sd->bl.y); intif_broadcast(atcmd_output, strlen(atcmd_output) + 1, 0); clif_displaymessage(fd, msg_txt(39)); // All monster summoned! } } else { sprintf(atcmd_output, "%s summoned %d %s in %s,%d,%d", sd->status.name,number, monster, mapindex_id2name(sd->mapindex), sd->bl.x, sd->bl.y); intif_broadcast(atcmd_output, strlen(atcmd_output) + 1, 0); sprintf(atcmd_output, msg_txt(240), count); // %d monster(s) summoned! clif_displaymessage(fd, atcmd_output); } else { clif_displaymessage(fd, msg_txt(40)); // Invalid monster ID or name. return -1; } return 0; } // small monster spawning [Valaris] ACMD_FUNC(monstersmall) { char name[NAME_LENGTH] = ""; char monster[NAME_LENGTH] = ""; int mob_id = 0; int number = 0; int x = 0; int y = 0; int count; int i; nullpo_retr(-1, sd); if (!message || !*message) { clif_displaymessage(fd, "Give a monster name/id please."); return -1; } if (sscanf(message, ""%23[^"]" %23s %d %d %d", name, monster, &number, &x, &y) < 2 && sscanf(message, "%23s "%23[^"]" %d %d %d", monster, name, &number, &x, &y) < 2 && sscanf(message, "%23s %d %23s %d %d", monster, &number, name, &x, &y) < 1) { clif_displaymessage(fd, "Give a monster name/id please."); return -1; } // If monster identifier/name argument is a name if ((mob_id = mobdb_searchname(monster)) == 0) // check name first (to avoid possible name begining by a number) mob_id = atoi(monster); if (mob_id == 0) { clif_displaymessage(fd, msg_txt(40)); return -1; } if (mob_id == MOBID_EMPERIUM) { clif_displaymessage(fd, msg_txt(83)); // Cannot spawn emperium return -1; } if (mobdb_checkid(mob_id) == 0) { clif_displaymessage(fd, "Invalid monster ID"); // Invalid Monster ID. return -1; } if (number <= 0) number = 1; if (strlen(name) < 1) strcpy(name, "--ja--"); // If value of atcommand_spawn_quantity_limit directive is greater than or equal to 1 and quantity of monsters is greater than value of the directive if (battle_config.atc_spawn_quantity_limit >= 1 && number > battle_config.atc_spawn_quantity_limit) number = battle_config.atc_spawn_quantity_limit; count = 0; for (i = 0; i < number; i++) { int mx, my; if (x <= 0) mx = sd->bl.x + (rand() % 11 - 5); else mx = x; if (y <= 0) my = sd->bl.y + (rand() % 11 - 5); else my = y; count += (mob_once_spawn(sd, sd->bl.m, mx, my, name, mob_id, 1, "2") != 0) ? 1 : 0; } if (count != 0) { if(pc_isGM(sd)==99){// Checks if the GM level is below 99 Announcement is made [Vengeance] clif_displaymessage(fd, msg_txt(39)); // All monster summoned! } else{ sprintf(atcmd_output, "%s summoned %d small %s in %s,%d,%d", sd->status.name, number, monster, mapindex_id2name(sd->mapindex), sd->bl.x, sd->bl.y); intif_broadcast(atcmd_output, strlen(atcmd_output) + 1, 0); clif_displaymessage(fd, msg_txt(39)); // Monster Summoned!! } } else clif_displaymessage(fd, msg_txt(40)); // Invalid Monster ID. return 0; } // big monster spawning [Valaris] ACMD_FUNC(monsterbig) { char name[NAME_LENGTH] = ""; char monster[NAME_LENGTH] = ""; int mob_id = 0; int number = 0; int x = 0; int y = 0; int count; int i; nullpo_retr(-1, sd); if (!message || !*message) { clif_displaymessage(fd, "Give a monster name/id please."); return -1; } if (sscanf(message, ""%23[^"]" %23s %d %d %d", name, monster, &number, &x, &y) < 2 && sscanf(message, "%23s "%23[^"]" %d %d %d", monster, name, &number, &x, &y) < 2 && sscanf(message, "%23s %d %23s %d %d", monster, &number, name, &x, &y) < 1) { clif_displaymessage(fd, "Give a monster name/id please."); return -1; } // If monster identifier/name argument is a name if ((mob_id = mobdb_searchname(monster)) == 0) // check name first (to avoid possible name begining by a number) mob_id = atoi(monster); if (mob_id == 0) { clif_displaymessage(fd, msg_txt(40)); return -1; } if (mob_id == MOBID_EMPERIUM) { clif_displaymessage(fd, msg_txt(83)); // Cannot spawn emperium return -1; } if (mobdb_checkid(mob_id) == 0) { clif_displaymessage(fd, "Invalid monster ID"); // Invalid Monster ID. return -1; } if (number <= 0) number = 1; if (strlen(name) < 1) strcpy(name, "--ja--"); // If value of atcommand_spawn_quantity_limit directive is greater than or equal to 1 and quantity of monsters is greater than value of the directive if (battle_config.atc_spawn_quantity_limit >= 1 && number > battle_config.atc_spawn_quantity_limit) number = battle_config.atc_spawn_quantity_limit; count = 0; for (i = 0; i < number; i++) { int mx, my; if (x <= 0) mx = sd->bl.x + (rand() % 11 - 5); else mx = x; if (y <= 0) my = sd->bl.y + (rand() % 11 - 5); else my = y; count += (mob_once_spawn(sd, sd->bl.m, mx, my, name, mob_id, 1, "4") != 0) ? 1 : 0; } if (count != 0) { if(pc_isGM(sd)==99){// Checks if the GM level is below 99 Announcement is made [Vengeance] clif_displaymessage(fd, msg_txt(39)); // All monster summoned! } else{ sprintf(atcmd_output, "%s summoned %d big %s in %s,%d,%d", sd->status.name, number, monster, mapindex_id2name(sd->mapindex), sd->bl.x, sd->bl.y); intif_broadcast(atcmd_output, strlen(atcmd_output) + 1, 0); clif_displaymessage(fd, msg_txt(39)); // Monster Summoned!! } } else clif_displaymessage(fd, msg_txt(40)); // Invalid Monster ID. return 0; } Just copy paste this Snippet. Download from here
  18. Map of the week //===== rAthena Script ====================================================================== //= Map Of The Week v4.4 //===== Original By ========================================================================= //= Kaushik //===== Current Version: ==================================================================== //= 1.0 - Script Release. //= 1.1 - Added GM selection of Map Of The Week. //= 1.2 - Fixed Timer Selection of the Map is on Sunday @ 24:00 server time. //= 2.0 - Added Contract System. //= 2.1 - Fixed Contract Expiry (Set #MOTWC to 0 once contract is expired). //= 2.2 - Cleaned Script to remove some unneeded repertition and script. [ToastOfDoom] //= 2.3 - Added Bottle Grenade ingredients to the script as it was missed. //= 2.4 - Decreased the drop rate. //= 2.5 - Changed announce and dispbottom. //= 3.0 - Added Whisper Functions. (map, kills, contract, gm). //= 3.1 - Changed to dynamic Cost and Kills - @motwcost & @motwkill to your desired numbers. //= 3.2 - Added Menu To The NPC. //= 4.0 - Added GM commands to change random map, selected map & to Destroy all contracts. //= 4.1 - Removed SQL unwanted variable. //= 4.2 - Fixed script contract count variable. //= 4.3 - Fixed tweet to not give out contract if no map of the week is assigned. //= 4.4 - Fixed NPC Whisper //= 5.0 - Changed rewards to dynamic rewards [WIP]. //===== Compatible With: ==================================================================== //= Tested in SQL Revision 14435 //===== Description: ======================================================================== //= A Random Map Will be selected and edp, acid demo bottle ingredients are rewarded. //=========================================================================================== Features Selects a map every week in Prontera, Payon and Morroc Fields[Completed] Rewards given when killed a monster[Completed] Contract System[Completed] Limited Kills[Completed] Wisper System [Complete] Easy configuration of the Script[Complete] GM Commands[Complete] Changes Map Automatically Every Week[Completed] Rewards Can be set as required[Completed] Fun Unlimited[Completed] About: This script works like this after it selects a map by itself ( can change the time to test in the script search for OnClock) this map becomes map of the week and when u kill any monster in this map on random chances you get a reward which is also set in the script. Also there is a special function in this script it doesnt work for everyone a player has to first sign the Contract i.e he has to pay 200000Zeny for killing 10000 Monsters i.e after he kills 10000 monsters he wont be able to get any kind of rewards from that Map which is map of the week and it will be a normal map.. So if he needs to get rewards again he has to buy the contract again. Give reviews to motivate motw_v4.4.txt motw_v4.1.txt motw_v4.2.txt
  19. its just the copy paste of the @main just change everything in main to smthing which you want....I had created @vending and @recruit....
  20. these are some cool commands and yes +1 for the add..
  21. Well i dont think so it should be added in rathena...It was custom and I dont think some of the bonuses will be useful for a low rate or mid rate servers...well I might be wrong though...
  22. the drop rates are set in the mob_db itself or elsewhere ??
  23. could you post the screen shot of the error you receive in the client and the map server...This could be the problem of the packet ver... Try to mention the client date in mmo.h and packet_db_ver to default in packet_db
  24. try out here www.freaksol.com its a cheap webhosting where FluxCP and Ceres both works It had 30 day free trial I dunno if it still exists but give a try for the Basic Plan when you use the coupon code FRBAS30 you get the first month free for RO can use www.freaksol.com I have tested and the CPs works perfect without any issue...
×
×
  • Create New...