Jump to content

Euphy

Members
  • Posts

    2997
  • Joined

  • Last visited

  • Days Won

    74

Everything posted by Euphy

  1. January Digest 2013 The following digest covers the month of January, 2013. Things have been settling down since the last digest, at long last. Here is a summary of what's taken place over the past month. Administration Maki has been reinstated as Administrator. Development Team Lemongrass has joined as Script / DB Developer. Daegaladh has rejoined as Script / DB Developer. Kenpachi has been moved to Community Contributors. Ind has been moved to Community Contributors. Cookie has been moved to Community Contributors. Development Highlights Updated all Renewal cast delays for non-third job skills. (r17069) Implemented official walk path dealing with obstacles. (r17091) Implemented Unique Item IDs for non-stackable items, switched off by default. (r17080, r17081, r17086) Added and updated many Renewal item scripts. (r17103, r17104, r17105). Implemented Sealed MVP cards. (r17104, r17105). Reduced default and minimum value of skill_amotion_leniency. (r17072) Distinguished main database from log database SQL upgrade files. (r17102) Misc. Stats During the period there were 47 commits. Of these 47 commits 34 included bug-fixes.
  2. Added a note to trunk/conf/battle/party.conf in r17115.
  3. Always check your map-server for errors. new_1-1,57,114,2 <tab> script <tab> Greeter NPC <tab> 108,{ Second question, include an OnTouch label with an x,y radius after sprite (in the header): new_1-1,57,114,2 script Greeter NPC 108,2,2,{ // ... close; OnTouch: npctalk "You stepped within 2 cells of me!"; end; }
  4. @QQfoolsorellina: That's a much better idea. Note that there's also mf_gvg_castle only for castle maps.
  5. @Antares: We're a group of volunteers. We're not paid, and we're not machines. If you have the time and drive to contribute, you are welcome to do so. Otherwise your post is incredibly disrespectful.
  6. Duration1 field in trunk/db/re/skill_cast_db.txt.
  7. @mofo: Conflicts with other loadevent scripts were eliminated in versions 1.4 and up. I don't suggest your method though, because OnPCLoadMapEvent executes even when a player warps within a map (e.g. warp portals). Also, I'm not Emistry.
  8. Summon the monster with an event label (ex. OnMyMobDead), then: OnMyMobDead: if (mobcount("map_name",strnpcinfo(0)+"::OnMyMobDead") == 0) { set .@item, 7227; if (!getcharid(1)) { getitem .@item,1; warp "SavePoint",0,0; } else { getpartymember getcharid(1),1; getpartymember getcharid(1),2; for(set .@i,0; .@i<$@partymembercount; set .@i,.@i+1) if (isloggedin($@partymemberaid[.@i],$@partymembercid[.@i])) getitem .@item,1,$@partymemberaid[.@i]; warpparty "SavePoint",0,0,getcharid(1); } } end;
  9. Euphy

    Homunculus S

    Update to the latest revision? They weren't added all at once, so unless you want to search through every revision since the introduction of Homu-S...
  10. If you're using my Quest Shop, you can write this at the beginning of OnInit to reset the shops initially: for(set .@i,1; .@i<=getarraysize(.Shops$); set .@i,.@i+1) npcshopitem "qshop"+.@i,909,10; Then, you can use some clock trigger event to set a variable which will dictate (through conditionals) which items to Add(), then execute the OnInit label again. Done. :>
  11. @AllHailToTheKing: //===== Additional Comments: ================================= //= Be sure to disable the default agit controllers! //== npc\guild\agit_controller.txt //== npc\guild2\agit_start_se.txt //============================================================
  12. @Loki81: I've dropped support for eAthena because it's essentially dead. I encourage you to switch to rA, otherwise convert the script yourself (debug the mapserver errors you get, there are not many). @Ryu: It's a client-side feature that stops you from moving an item to the purchase list if you have less than the required Zeny. By default, Zeny requirements are not shown in my script for this reason: set .ShowZeny,0; // Show Zeny cost, if any? (1: yes / 0: no)
  13. if (BaseLevel == 999 && JobLevel == 150) { mes "It costs 10,000,000z to reset your level."; if (Zeny < 10000000) close; next; if(select("Do it.:No, thanks.") == 2) close; set Zeny, Zeny - 10000000; // This will reset BaseLevel/JobLevel, as well as skill points. resetlvl(2); mes "All done!"; close; } mes "Your level is too low."; close;
  14. This is impossible with our pre-re/re split unless we duplicate entire scripts, which we've already decided not to do (it's hellishly annoying to edit files this way). In general, for duplicates in pre-re/re split files, we keep a floating NPC in the root folder and duplicates in the pre-re/re paths. All duplicates in mixed folders (merchants, other, etc.) should be self-contained. Do you have any specific examples?
  15. It was removed because it was custom content, so what's the reason to re-add it?
  16. Euphy

    Server Uptime

    The most accurate way is to get the time directly from your SQL database, as Brian posted here: http://www.eathena.ws/board/index.php?showtopic=207797
  17. Euphy

    Server Uptime

    @nanakiwurtz: He asked for temporary, unless I'm interpreting this incorrectly?
  18. Nice work, as always. :> I suggest you use the format: <IP> <reason> Currently the reason can only be one word, but you have set the SQL columns to varchar(255) and no words I know of are that long. xP You can then build a multi-word reason by either: Using string commands. set .@tmp$, implode(.@atcmd_parameters$," "); set .@reason$, substr(.@tmp$,getstrlen(.@atcmd_parameters$[0]),getstrlen(.@tmp$)-1); Looping. for(set .@i,1; .@i<.@atcmd_numparameters; set .@i,.@i+1) set .@reason$, .@reason$ + " " + .@atcmd_parameters$[.@i] .@atcmd_numparameters is fixed in r17106.
  19. Euphy

    Simple Script

    You're looking for: OnPCBaseLvUpEvent: OnPCJobLvUpEvent: trunk/doc/script_commands.txt - script MaxLevelEvent -1,{ OnPCBaseLvUpEvent: OnPCJobLvUpEvent: if (BaseLevel == 99 && JobLevel == 70) { mes "You have reached the maximum level!"; close; } end; }
  20. Edit: Ah, after looking at the scripts, it looks like this is more complicated than I'd thought. There's no way (with scripts, at least) to obtain lists of players in an area, as all the waitingrooms are on the same map. An easy alternative is to check when a player warps to bat_room if a dual-client is on any Battlegrounds map (either a match or bat_room), and kick them appropriately. That script you would only need to add once: - script BG_Check_IP -1,{ OnInit: setmapflag "bat_room", mf_loadevent; end; // Trigger when a player enters a map with "loadevent" mapflag. OnPCLoadMapEvent: // Only run for map "bat_room". if (strcharinfo(3) != "bat_room") end; // Get list of accounts with attached character's IP address. set .@size, query_sql("SELECT `account_id` FROM `login` WHERE `last_ip` = '"+getcharip()+"'",.@aid); // Passed check if only the attached player is returned. if (.@size < 2) end; // Check all online characters using the IP address if they are on a Battlegrounds map. set .@self, getcharid(3); for(set .@i,0; .@i<.@size; set .@i,.@i+1) { if (.@aid[.@i] == .@self) continue; if (attachrid(.@aid[.@i])) { if (compare(strcharinfo(3),"bat_")) { set .@name$, strcharinfo(0); attachrid(.@self); message strcharinfo(0),"Character "+.@name$+" is already logged into Battlegrounds with your IP."; sleep2 2000; warp "SavePoint",0,0; end; } } } // Passed check. end; }
  21. You should be using this anyway: r17048 - r17049
  22. prontera,150,150,0 script PVP Warper 100,{ end; OnInit: set .map$, "pvp_y_1-1"; set .limit, 20; initnpctimer; OnTimer2000: stopnpctimer; set .@i, getmapusers(.map$); delwaitingroom; waitingroom "PVP :: "+.@i+"/"+.limit+" players",((.@i < .limit)?2:0),strnpcinfo(0)+"::OnStartArena",1; if (.@i < .limit) enablewaitingroomevent; else disablewaitingroomevent; initnpctimer; end; OnStartArena: warpwaitingpc .map$,0,0; if (getmapusers(.map$) >= .limit) disablewaitingroomevent; end; }
  23. That's how PCRE works -- it compares your string with the definition as a substring. It's working as intended.
×
×
  • Create New...