Jump to content
RF-Dev | Your #1 Resource for RF Online Development

Agony

Moderator
  • Content count

    42
  • Joined

  • Last visited

  • Days Won

    12

Agony last won the day on November 28

Agony had the most liked content!

Community Reputation

23 Excellent

About Agony

  • Rank
    Regular
  1. Reload script without Quit Zone Server

    The scripts are loaded into memory from dat files on zone init - so no, you can't reload them.
  2. Painel ADM by Capiroto

    C# i take it? That eff file writer portion looks familiar - and it certainly wasn't fully complete when i made it ages ago. It was lacking in the layer 1-4 portion i didn't know about back then. You could have at least fixed it up with the correct struct if you look under my releases or: enum EFFECTWAVETYPE { NONE=0, ENV=1, SCROLL=2, ENVWAVE=3 } [filemask="*.eff"] struct EffectFile { calc FileSize [value=FileSize]; calc BlockSize [value=SizeOf(EffectBlock)]; calc BlockCount [value=FileSize/BlockSize]; child EffectBlock [count=BlockCount]; } struct EffectBlock [preload=1] { u16 Size [readonly]; u8 [tag="version"]; cstr [len=20] TextureName1; cstr [len=20] TextureName2; cstr [len=20] TexturePath; u8 [tag="EnvMapping"]; u8 [tag="GlassEffect"]; u8 [tag="Wave"]; u8 [tag="Wave2"]; u32 [tag="WaveDelay"]; float [tag="BlendFactor"]; float [tag="WaveSpeed"]; u8 [tag="SwapTexture"]; u8 [tag="TextureAlpha"]; u8 [tag="Light"]; enum8 EffectType1[enum=EFFECTWAVETYPE]; enum8 EffectType2[enum=EFFECTWAVETYPE]; float [tag="x ID1"]; float [tag="y ID1"]; float [tag="z ID1"]; u32 ParticleID1; float [tag="x ID2"]; float [tag="y ID2"]; float [tag="z ID2"]; u32 ParticleID2; float [tag="x ID3"]; float [tag="y ID3"]; float [tag="z ID3"]; u32 ParticleID3; float [tag="x Entity"]; float [tag="y Entity"]; float [tag="z Entity"]; u32 [tag="EntityID"]; float [tag="FlickerFactor"]; cstr [len=20] ObjectName; u32 [tag="---"]; } Also give credit if you use other peoples code/leaks/tools.
  3. Help Create The New CashShop

    I don't have the files around but i would assume the first value of each block is count, 4 bytes - should be 01 00 00 00, instead i see 00 01 07 72 And i usually starts from 0. But without the file around, can't be 100% sure - may have a bit different structure.
  4. Video Guide how to Make Strs Server Side

    A tip for those who make their own strs: Structorian allows the use of structs like this: struct _base_fld { int m_dwIndex; _str_code m_strCode; } struct _cont_param_list { int m_nContParamCode; // Čæ°śÅøĄŌ1 int m_nContParamIndex; // Čæ°śĄĪµ¦½ŗ1 repeat 7 { float m_fContValue; } } And you can use it like this: include _base_fld; _str_code m_strName; _str_code m_strEffectCode; int m_nMobGrade; repeat 5 { include _cont_param_list; //_cont_param_list[5] m_ContParamList } Also, in the example above i used aliases - these could make it faster to make structs by copy pasting them from the header. alias cstr [len=64] _str_code; alias i32 int;
  5. RF Episode 1

    Yes, there are still some critical bugs that stop it from being fully playable - but i develop it in bursts (not doing much then fixing bunch of stuff) - when i got the time/in mood. I already spend full day coding at work so i often do not feel like spending another 8h after work and end up going to sleep too late (and we all know that it's impossible to just code for 1-2 hours once you start with it).
  6. Lua event system examples

    None, these are rf own specific implementation of the lua commands. And without source it's largely guesswork.
  7. Dual cleavers

    Used them in my last server, found the files still laying around. Files go as usual (texture to TEX, model to mesh). Also included the .eff files. [PARTICLE1836] INDEX = 1836 ;line aura ABSAXIS=0 PARTICLE=.\Chef\Particle\66dcleavers\832.spt [PARTICLE1837] INDEX = 1837 ;sparkle ABSAXIS=0 PARTICLE=.\Chef\Particle\66dcleavers\833.spt [PARTICLE1838] INDEX = 1838 ABSAXIS=0 PARTICLE=.\Chef\Particle\66dcleavers\elek2.spt dualcleavers.7z eff.7z 66dcleavers.7z
  8. Lua event system examples

    %lua attach xpevent xpevent (first is function name, 2nd is filename) Use %lua dettach xpevent xpevent command to disable event. But monsters wont disappear like with eventset system. Be careful with mistypes, those can trigger a error message on the server side and freeze the whole server until you click ok in that message box.
  9. RF Episode 1

    well there are going to be a large number of hacks and dupes. Event the paid gameguards around are for new versions. Giga3 is the earliest stable working version around for now.
  10. Left Side Council Spots "None"

    By restarted - did you kick players, shut down login/acc and then zone or restarted the whole server box? If the latter - then the db was likely also shutting down and didn't allow updating data anymore.
  11. https://mega.nz/#!zIJGVSyA!EQkOrP-aXo96c9VjjjOQXaodeuCcd4siRHIZ_p-hXrY This is the client of one of my older servers from 216 era - the first and only time i actually made new skills with effects. If you want to dig - you might actually find them in the files. I haven't looked at these files for 4-5 years.
  12. MonsterCharacter error

    223 BSP and 2232 GU has different structures, you need to use correct version files (look at the release section).
  13. Lua event system examples

    2232 introduces new methods for lua (i think timers/events - more than just spawning mobs). Never really got into 2232 so can't tell what's possible. Also that source you a are talking about is even older - it's likely 2003 early alpha. I don't think it even has lua support yet. And finding out which functions and methods lua support is quite hard without new source. Even zone headers wont help much. While some things are easier to find, like CreateNovusItem = CLuaLooting_Novus_Item Reverse is problematic - if you do not know what to look for and what the command would be in lua.
  14. If you do not deal with the source or are experienced with IDA to inject and write code, DB triggers are the only real way to do that. Create new table where you keep itemcode ( iwlub65) and guildID. Set up a trigger for UPDATE on the char table and check if guildID changes. Select itemid's from reward table for removal (by previous value in trigger - if player had a guild before) Check inventory, equipment, bank (or disable banking, trade) and remove those items. If it did select from the reward table and add items to the giveitem table queue (requires relog). Similarly you can also add a guild rank value to the table and check that too. A trigger that checks against that table when user tries to equip item (equip table) 4 & 5 & 6 would more or less ether require very specific injected code, those are beyond simple db triggers. Things are easier to implement with full source - but the only one (and not fully working yet) is early alpha release from ~2005.
  15. Lua event system examples

    Few of the random scripts i had around: %lua attach Demo Demo (first is function name, 2nd is filename) Use dettach command to disable event. But monster wont disappear like with eventset system. xpevent.lua xpevent = {} function xpevent_OnAttach(script) xpevent.astart_x = -4550 xpevent.astart_y = 1130 xpevent.astart_z = -3753 xpevent.bstart_x = -4959 xpevent.bstart_y = 480 xpevent.bstart_z = 4159 xpevent.cstart_x = 7607 xpevent.cstart_y = -75 xpevent.cstart_z = 3298 xpevent.monb = {} xpevent.actb = {} xpevent.monc = {} xpevent.actc = {} xpevent.mona = {} xpevent.acta = {} xpevent.script = script local evt_mgr = GetEventMgr() local ev = evt_mgr:NewEvent() if ev ~= nil then ev:SetScript( script ) ev:SetName( "xpevent" ) evt_mgr:AttachEvent( ev ) end xpeventA_start(15) xpeventB_start(15) xpeventC_start(15) end function xpeventA_start(end_count) xpevent.die_countA = 0 xpevent.end_countA = end_count xpevent.mona[0] = CreateMon( "NeutralA", "13503", xpevent.astart_x, xpevent.astart_y, xpevent.astart_z ) xpevent.acta[0] = xpevent.mona[0]:GetSignalReActor() xpevent.acta[0]:AddAction(SIGNAL_OBJ_DESTORY, CMD_STRING, xpevent.script:GetName(), "xpevent_DieMon(1)" ) end function xpeventB_start(end_count) xpevent.die_countB = 0 xpevent.end_countB = end_count xpevent.monb[0] = CreateMon( "NeutralB", "13503", xpevent.bstart_x, xpevent.bstart_y, xpevent.bstart_z ) xpevent.actb[0] = xpevent.monb[0]:GetSignalReActor() xpevent.actb[0]:AddAction(SIGNAL_OBJ_DESTORY, CMD_STRING, xpevent.script:GetName(), "xpevent_DieMon(2)" ) end function xpeventC_start(end_count) xpevent.die_countC = 0 xpevent.end_countC = end_count xpevent.monc[0] = CreateMon( "NeutralC", "13503", xpevent.cstart_x, xpevent.cstart_y, xpevent.cstart_z ) xpevent.actc[0] = xpevent.monc[0]:GetSignalReActor() xpevent.actc[0]:AddAction(SIGNAL_OBJ_DESTORY, CMD_STRING, xpevent.script:GetName(), "xpevent_DieMon(3)" ) end function xpevent_OnDettach(script) local evt_mgr = GetEventMgr() local ev = evt_mgr:SearchEvent( "xpevent" ) if ev ~= nil then evt_mgr:DettachEvent( ev ) end end function xpevent_DieMon( arg ) if arg == 1 then xpevent.die_countA = xpevent.die_countA + 1 if xpevent.die_countA == xpevent.end_countA then CreateNovusItem( "iyyyy04", "NeutralA", Param3(xpevent.astart_x, xpevent.astart_y, xpevent.astart_z), Param3(50, 20, 50) ) else xpevent.mona[arg] = CreateMon( "NeutralA", "16113", xpevent.astart_x, xpevent.astart_y, xpevent.astart_z ) xpevent.acta[arg] = xpevent.mona[arg]:GetSignalReActor() xpevent.acta[arg]:AddAction(SIGNAL_OBJ_DESTORY, CMD_STRING, xpevent.script:GetName(), "xpevent_DieMon("..arg..")" ) end end if arg == 2 then xpevent.die_countB = xpevent.die_countB + 1 if xpevent.die_countB == xpevent.end_countB then CreateNovusItem( "iyyyy04", "NeutralB", Param3(xpevent.bstart_x, xpevent.bstart_y, xpevent.bstart_z), Param3(50, 20, 50) ) else xpevent.monb[arg] = CreateMon( "NeutralB", "16113", xpevent.bstart_x, xpevent.bstart_y, xpevent.bstart_z ) xpevent.actb[arg] = xpevent.monb[arg]:GetSignalReActor() xpevent.actb[arg]:AddAction(SIGNAL_OBJ_DESTORY, CMD_STRING, xpevent.script:GetName(), "xpevent_DieMon("..arg..")" ) end end if arg == 3 then xpevent.die_countC = xpevent.die_countC + 1 if xpevent.die_countC == xpevent.end_countC then CreateNovusItem( "iyyyy04", "NeutralC", Param3(xpevent.cstart_x, xpevent.cstart_y, xpevent.cstart_z), Param3(50, 20, 50) ) else xpevent.monc[arg] = CreateMon( "NeutralC", "16113", xpevent.cstart_x, xpevent.cstart_y, xpevent.cstart_z ) xpevent.actc[arg] = xpevent.monc[arg]:GetSignalReActor() xpevent.actc[arg]:AddAction(SIGNAL_OBJ_DESTORY, CMD_STRING, xpevent.script:GetName(), "xpevent_DieMon("..arg..")" ) end end end eqevent.lua eqevent = {} function eqevent_OnAttach(script) eqevent.monb = {} eqevent.actb = {} eqevent.monc = {} eqevent.actc = {} eqevent.mona = {} eqevent.acta = {} eqevent.script = script local evt_mgr = GetEventMgr() local ev = evt_mgr:NewEvent() if ev ~= nil then ev:SetScript( script ) ev:SetName( "eqevent" ) evt_mgr:AttachEvent( ev ) end eqevent_regenB(script) eqevent_regenC(script) eqevent_regenA(script) end function eqevent_regenB(script) if eqevent.monb[0] == nil then eqevent.monb[0] = CreateMon( "NeutralB", "04707", -6606, 622, 6894 ) eqevent.actb[0] = eqevent.monb[0]:GetSignalReActor() eqevent.actb[0]:AddAction(SIGNAL_OBJ_DESTORY, CMD_STRING, script:GetName(), "eqevent_DieMonb(0)" ) end if eqevent.monb[1] == nil then eqevent.monb[1] = CreateMon( "NeutralB", "04707", -7310, 622, 5941 ) eqevent.actb[1] = eqevent.monb[1]:GetSignalReActor() eqevent.actb[1]:AddAction(SIGNAL_OBJ_DESTORY, CMD_STRING, script:GetName(), "eqevent_DieMonb(1)" ) end if eqevent.monb[2] == nil then eqevent.monb[2] = CreateMon( "NeutralB", "04707", -6292, 574, 5151 ) eqevent.actb[2] = eqevent.monb[2]:GetSignalReActor() eqevent.actb[2]:AddAction(SIGNAL_OBJ_DESTORY, CMD_STRING, script:GetName(), "eqevent_DieMonb(2)" ) end if eqevent.monb[3] == nil then eqevent.monb[3] = CreateMon( "NeutralB", "04707", -5499, 574, 6167 ) eqevent.actb[3] = eqevent.monb[3]:GetSignalReActor() eqevent.actb[3]:AddAction(SIGNAL_OBJ_DESTORY, CMD_STRING, script:GetName(), "eqevent_DieMonb(3)" ) end end function eqevent_regenC(script) if eqevent.monc[0] == nil then eqevent.monc[0] = CreateMon( "NeutralC", "04707", 7821, -160, 0 ) eqevent.actc[0] = eqevent.monc[0]:GetSignalReActor() eqevent.actc[0]:AddAction(SIGNAL_OBJ_DESTORY, CMD_STRING, script:GetName(), "eqevent_DieMonc(0)" ) end if eqevent.monc[1] == nil then eqevent.monc[1] = CreateMon( "NeutralC", "04707", 7457, -157, 354 ) eqevent.actc[1] = eqevent.monc[1]:GetSignalReActor() eqevent.actc[1]:AddAction(SIGNAL_OBJ_DESTORY, CMD_STRING, script:GetName(), "eqevent_DieMonc(1)" ) end if eqevent.monc[2] == nil then eqevent.monc[2] = CreateMon( "NeutralC", "04707", 6797, -157, 378 ) eqevent.actc[2] = eqevent.monc[2]:GetSignalReActor() eqevent.actc[2]:AddAction(SIGNAL_OBJ_DESTORY, CMD_STRING, script:GetName(), "eqevent_DieMonc(2)" ) end if eqevent.monc[3] == nil then eqevent.monc[3] = CreateMon( "NeutralC", "04707", 7447, -157, 971 ) eqevent.actc[3] = eqevent.monc[3]:GetSignalReActor() eqevent.actc[3]:AddAction(SIGNAL_OBJ_DESTORY, CMD_STRING, script:GetName(), "eqevent_DieMonc(3)" ) end end function eqevent_regenA(script) if eqevent.mona[0] == nil then eqevent.mona[0] = CreateMon( "NeutralA", "04707", -7290, 1037, -4824 ) eqevent.acta[0] = eqevent.mona[0]:GetSignalReActor() eqevent.acta[0]:AddAction(SIGNAL_OBJ_DESTORY, CMD_STRING, script:GetName(), "eqevent_DieMona(0)" ) end if eqevent.mona[1] == nil then eqevent.mona[1] = CreateMon( "NeutralA", "04707", -7974, 1034, -5494 ) eqevent.acta[1] = eqevent.mona[1]:GetSignalReActor() eqevent.acta[1]:AddAction(SIGNAL_OBJ_DESTORY, CMD_STRING, script:GetName(), "eqevent_DieMona(1)" ) end if eqevent.mona[2] == nil then eqevent.mona[2] = CreateMon( "NeutralA", "04707", -7346, 1037, -6200 ) eqevent.acta[2] = eqevent.mona[2]:GetSignalReActor() eqevent.acta[2]:AddAction(SIGNAL_OBJ_DESTORY, CMD_STRING, script:GetName(), "eqevent_DieMona(2)" ) end if eqevent.mona[3] == nil then eqevent.mona[3] = CreateMon( "NeutralA", "04707", -6862, 1034, -5558 ) eqevent.acta[3] = eqevent.mona[3]:GetSignalReActor() eqevent.acta[3]:AddAction(SIGNAL_OBJ_DESTORY, CMD_STRING, script:GetName(), "eqevent_DieMona(3)" ) end end function eqevent_OnDettach(script) local evt_mgr = GetEventMgr() local ev = evt_mgr:SearchEvent( "eqevent" ) if ev ~= nil then evt_mgr:DettachEvent( ev ) end end function eqevent_DieMonb( arg ) eqevent.monb[arg] = nil eqevent.actb[arg] = nil if arg == 0 then CreateNovusItem( "iored04", "NeutralB", Param3(-6606, 622, 6894), Param3(50, 9, 3) ) CreateNovusItem( "ioblu04", "NeutralB", Param3(-6606, 622, 6894), Param3(50, 9, 3) ) CreateNovusItem( "iobla04", "NeutralB", Param3(-6606, 622, 6894), Param3(50, 9, 3) ) CreateNovusItem( "ioyel04", "NeutralB", Param3(-6606, 622, 6894), Param3(50, 9, 3) ) end if arg == 1 then CreateNovusItem( "iored04", "NeutralB", Param3(-7310, 622, 5941), Param3(50, 9, 3) ) CreateNovusItem( "ioblu04", "NeutralB", Param3(-7310, 622, 5941), Param3(50, 9, 3) ) CreateNovusItem( "iobla04", "NeutralB", Param3(-7310, 622, 5941), Param3(50, 9, 3) ) CreateNovusItem( "ioyel04", "NeutralB", Param3(-7310, 622, 5941), Param3(50, 9, 3) ) end if arg == 2 then CreateNovusItem( "iored04", "NeutralB", Param3(-6292, 574, 5151), Param3(50, 9, 3) ) CreateNovusItem( "ioblu04", "NeutralB", Param3(-6292, 574, 5151), Param3(50, 9, 3) ) CreateNovusItem( "iobla04", "NeutralB", Param3(-6292, 574, 5151), Param3(50, 9, 3) ) CreateNovusItem( "ioyel04", "NeutralB", Param3(-6292, 574, 5151), Param3(50, 9, 3) ) end if arg == 3 then CreateNovusItem( "iored04", "NeutralB", Param3(-5499, 574, 6167), Param3(50, 9, 3) ) CreateNovusItem( "ioblu04", "NeutralB", Param3(-5499, 574, 6167), Param3(50, 9, 3) ) CreateNovusItem( "iobla04", "NeutralB", Param3(-5499, 574, 6167), Param3(50, 9, 3) ) CreateNovusItem( "ioyel04", "NeutralB", Param3(-5499, 574, 6167), Param3(50, 9, 3) ) end end function eqevent_DieMonc( arg ) eqevent.monc[arg] = nil eqevent.actc[arg] = nil if arg == 0 then CreateNovusItem( "iored04", "NeutralC", Param3(7821, -160, 0), Param3(50, 9, 3) ) CreateNovusItem( "ioblu04", "NeutralC", Param3(7821, -160, 0), Param3(50, 9, 3) ) CreateNovusItem( "iobla04", "NeutralC", Param3(7821, -160, 0), Param3(50, 9, 3) ) CreateNovusItem( "ioyel04", "NeutralC", Param3(7821, -160, 0), Param3(50, 9, 3) ) end if arg == 1 then CreateNovusItem( "iored04", "NeutralC", Param3(7457, -157, 354), Param3(50, 9, 3) ) CreateNovusItem( "ioblu04", "NeutralC", Param3(7457, -157, 354), Param3(50, 9, 3) ) CreateNovusItem( "iobla04", "NeutralC", Param3(7457, -157, 354), Param3(50, 9, 3) ) CreateNovusItem( "ioyel04", "NeutralC", Param3(7457, -157, 354), Param3(50, 9, 3) ) end if arg == 2 then CreateNovusItem( "iored04", "NeutralC", Param3(6797, -157, 378), Param3(50, 9, 3) ) CreateNovusItem( "ioblu04", "NeutralC", Param3(6797, -157, 378), Param3(50, 9, 3) ) CreateNovusItem( "iobla04", "NeutralC", Param3(6797, -157, 378), Param3(50, 9, 3) ) CreateNovusItem( "ioyel04", "NeutralC", Param3(6797, -157, 378), Param3(50, 9, 3) ) end if arg == 3 then CreateNovusItem( "iored04", "NeutralC", Param3(7447, -157, 971), Param3(50, 9, 3) ) CreateNovusItem( "ioblu04", "NeutralC", Param3(7447, -157, 971), Param3(50, 9, 3) ) CreateNovusItem( "iobla04", "NeutralC", Param3(7447, -157, 971), Param3(50, 9, 3) ) CreateNovusItem( "ioyel04", "NeutralC", Param3(7447, -157, 971), Param3(50, 9, 3) ) end end function eqevent_DieMona( arg ) eqevent.mona[arg] = nil eqevent.acta[arg] = nil if arg == 0 then CreateNovusItem( "iored04", "NeutralA", Param3(-7290, 1037, -4824), Param3(50, 9, 3) ) CreateNovusItem( "ioblu04", "NeutralA", Param3(-7290, 1037, -4824), Param3(50, 9, 3) ) CreateNovusItem( "iobla04", "NeutralA", Param3(-7290, 1037, -4824), Param3(50, 9, 3) ) CreateNovusItem( "ioyel04", "NeutralA", Param3(-7290, 1037, -4824), Param3(50, 9, 3) ) end if arg == 1 then CreateNovusItem( "iored04", "NeutralA", Param3(-7974, 1034, -5494), Param3(50, 9, 3) ) CreateNovusItem( "ioblu04", "NeutralA", Param3(-7974, 1034, -5494), Param3(50, 9, 3) ) CreateNovusItem( "iobla04", "NeutralA", Param3(-7974, 1034, -5494), Param3(50, 9, 3) ) CreateNovusItem( "ioyel04", "NeutralA", Param3(-7974, 1034, -5494), Param3(50, 9, 3) ) end if arg == 2 then CreateNovusItem( "iored04", "NeutralA", Param3(-7346, 1037, -6200), Param3(50, 9, 3) ) CreateNovusItem( "ioblu04", "NeutralA", Param3(-7346, 1037, -6200), Param3(50, 9, 3) ) CreateNovusItem( "iobla04", "NeutralA", Param3(-7346, 1037, -6200), Param3(50, 9, 3) ) CreateNovusItem( "ioyel04", "NeutralA", Param3(-7346, 1037, -6200), Param3(50, 9, 3) ) end if arg == 3 then CreateNovusItem( "iored04", "NeutralA", Param3(-6862, 1034, -5558), Param3(50, 9, 3) ) CreateNovusItem( "ioblu04", "NeutralA", Param3(-6862, 1034, -5558), Param3(50, 9, 3) ) CreateNovusItem( "iobla04", "NeutralA", Param3(-6862, 1034, -5558), Param3(50, 9, 3) ) CreateNovusItem( "ioyel04", "NeutralA", Param3(-6862, 1034, -5558), Param3(50, 9, 3) ) end end
×