Jump to content

Emistry

Forum Moderator
  • Posts

    10018
  • Joined

  • Days Won

    408

Everything posted by Emistry

  1. function script Shinbox { setarray .@Jobs$, "Spear", "Shuriken"; setarray .@Items, 47001, 47002; .@size = getarraysize(.@Jobs$); for(.@i = 0; .@i < .@size; .@i++) .@menu$ = .@menu$ + .@Jobs$[.@i] + ":"; getitembound .@Items[select(.@menu$) - 1], 1, Bound_Char; return; }
  2. the sc_* status constant name should match with these .... src/map/script_constants.hpp#L807-L1486
  3. if(.item[.@i] == .GlobalMessage || .item[.@i] == .GlobalMessage2) { announce "YOUR MESSAGE HERE",bc_all; } getitem .item[.@i], .qnt[.@i]; as mentioned by @llchrisll, your script doesnt have the announce part.
  4. setarray .@position$[1], EQI_HEAD_TOP, EQI_ARMOR, EQI_HAND_L, EQI_HAND_R, EQI_GARMENT, EQI_SHOES, EQI_ACC_L, EQI_ACC_R, EQI_HEAD_MID, EQI_HEAD_LOW; change according to these values... EQI_ACC_L (0) - Accessory 1 EQI_ACC_R (1) - Accessory 2 EQI_SHOES (2) - Footgear (shoes, boots) EQI_GARMENT (3) - Garment (mufflers, hoods, manteaux) EQI_HEAD_LOW (4) - Lower Headgear (beards, some masks) EQI_HEAD_MID (5) - Middle Headgear (masks, glasses) EQI_HEAD_TOP (6) - Upper Headgear EQI_ARMOR (7) - Armor (jackets, robes) EQI_HAND_L (8) - Left hand (weapons, shields) EQI_HAND_R (9) - Right hand (weapons)
  5. Emistry

    Debug Issue

    as the debug message mentioned, its just a notification to notify you that these table are added to your database.
  6. (a > b) ? a : b; this an expression which returns one of two values, a or b. The condition, (a > b), is tested. If it is true the first value, a, is returned. If it is false, the second value, b, is returned. Whichever value is returned is dependent on the conditional test, a > b.
  7. .@count = (countitem(756) / 5); // rough ori delitem 756, (.@count * 5); getitem 984, .@count; .@count = (countitem(757) / 5); // rough elu delitem 757, (.@count * 5); getitem 985, .@count;
  8. well, you can use some trick like check for the coordinate of players. if they keep stay at the same location, then just skip these players when assign the rewards. getmapxy(.@map$, .@x,. @y, 0); if (.@map$ == @last_map$ && .@x == @last_x && .@y == @last_y ) { // player stay in same location. atcommand "@kick "+strcharinfo(0); end; } @last_map$ = .@map$; @last_x = .@x; @last_y = .@y; well of course you should also add in other condition checking to avoid it kick players who are just really in afk mode.
  9. try this, it should be able to avoid your player from exploiting it. https://pastebin.com/jek6CMUk just add an extra variable to save the state to enable/disable warping into the map.
  10. you can setup your own map by refer to the template they provided. npc/custom/etc/quest_warper.txt#L1044-L1055
  11. you can setup different unique client for each of your GM and player with this. conf/login_athena.conf#L149-L165
  12. https://web.archive.org/web/20120808194823/http://www.eathena.ws/board/index.php?showtopic=255188 since eathena is down, i dont think the script is still accessible. the only way for you to get it are probably someone who still have a copy of it to share it with you. goddameit doesn't seem like still active in RO nowadays.
  13. monster ID above 5000 are reserved for clones/mercenary used by the server itself. current available and safe limit for mobID are 1001~3999.
  14. npc/other/card_trader.txt you can try this.
  15. Emistry

    NPC Logs

    why you still need another log since the `evt_prize` table already store all the information you need?
  16. OnPCDieEvent: .@new_variable_1 = killerrid; dispbottom ".@new_variable_1 = " + .@new_variable_1; end; OnPCKillEvent: .@new_variable_2 = killedrid; dispbottom ".@new_variable_2 = " + .@new_variable_2; end;
  17. The array should be initialized using the OnInit event label. Delete query are supposedly to execute when the server are offline, your method would not work in this case.
  18. Emistry

    Item logs

    sql-files/logs.sql#L142-L167
  19. try this. - script Sample -1,{ OnInit: .sc_id = SC_BLESSING; end; OnPCLoginEvent: if (#REMAINING_TIME_SC > 0) { if (getstatus(.sc_id, 5)) sc_end .sc_id; sc_start .sc_id, #REMAINING_TIME_SC, 10; dispbottom "Buff Duration Left: "+(#REMAINING_TIME_SC / 1000)+" Second(s)."; } end; OnPCLogoutEvent: #REMAINING_TIME_SC = getstatus(.sc_id,5); end; } EDIT: ops didnt realize its source support
  20. string to integer set .@num, atoi(.@string$); integer to string set .@string$, .@num + "";
  21. hmm? the script shouldn't be showing any card that doesn't exist in your char inventory. check your database entry instead? set .itemid,.@iid[.@i]; change the .itemid variable ......
×
×
  • Create New...