Jump to content

Paul

Members
  • Posts

    43
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by Paul

  1. 21 hours ago, luizinhomt said:
    //===== rAthena Script =======================================
    //= Card Trader
    //===== By: ==================================================
    //= Euphy
    //===== Current Version: =====================================
    //= 1.1 
    //===== Compatible With: =====================================
    //= rAthena SVN
    //===== Description: =========================================
    //= Exchange cards for points.
    //============================================================
     
    prontera,165,196,6	script	Card Trader	90,{
    	mes "[Card Trader]";
    	mes "Hi, "+strcharinfo(0)+"!";
    	mes "What can I do for you?";
    	next;
    	switch(select(" > Information: > Trade in cards: > Point shop (^0055FF"+getd(.Points$)+"^000000): > Leave")) {
    	case 1:
    		mes "[Card Trader]";
    		mes "Do you find that you've got";
    		mes "useless cards lying around?";
    		mes "I'll be glad to take them off";
    		mes "your hands!";
    		next;
    		mes "[Card Trader]";
    		mes "I'll give you ^0055FF"+.Points[0]+" Point"+((.Points[0] == 1)?"":"s")+"^000000 for each";
    		mes "card you give me, and";
    		mes "^0055FF"+.Points[1]+" Points^000000 for MVP cards.";
    		mes "You can trade those points";
    		mes "for items later on.";
    		mes "How does that sound?";
    		emotion e_cash;
    		close;
    	case 2:
    		mes "[Card Trader]";
    		mes "Select the cards you";
    		mes "want to trade in.";
    		if (.Level) {
    			mes " ";
    			mes "They must be dropped";
    			mes "by monsters of level";
    			mes .Level+" and above.";
    		}
    		deletearray @sold_nameid[0],getarraysize(@sold_nameid);
    		callshop "card_shop",2;
    		npcshopattach "card_shop";
    		end;
    	case 3:
    		mes "[Card Trader]";
    		mes "You have ^0055FF"+getd(.Points$)+"^000000 Point"+((getd(.Points$) == 1)?".":"s.");
    		callshop "card_shop",1;
    		npcshopattach "card_shop";
    		end;
    	case 4:
    		mes "[Card Trader]";
    		mes "*yawn*";
    		mes "See you later!";
    		emotion e_yawn;
    		close;		
    	}
     
    OnSellItem:
    	mes "Cards to sell:";
    	mes "-----------------------------------";
    	for(set .@i,0; .@i < getarraysize(@sold_nameid); set .@i,.@i+1)
    		if (@sold_nameid[.@i] > 4000 && @sold_nameid[.@i] < 4700) {
    			if (.Level) {
    				query_sql("SELECT `LV` FROM `mob_db` WHERE `DropCardid` = "+@sold_nameid[.@i],.@lv);
    				if (.@lv < .Level) {
    					dispbottom getitemname(@sold_nameid[.@i])+" is under the minimum level.";
    					continue;
    				}
    			}
    			set .@card_id[getarraysize(.@card_id)], @sold_nameid[.@i];
    			set .@card_amt[getarraysize(.@card_amt)], @sold_quantity[.@i];
    			set .@mvp, compare(.MVP$,""+@sold_nameid[.@i]);
    			mes ((.@mvp)?"  ^FF0000":"  ^777777")+@sold_quantity[.@i]+"x "+getitemname(@sold_nameid[.@i])+"^000000";
    			set .@card_total, .@card_total+(@sold_quantity[.@i]*((.@mvp)?.Points[1]:.Points[0]));
    		}
    	deletearray @sold_nameid[0], getarraysize(@sold_nameid);
    	deletearray @sold_quantity[0], getarraysize(@sold_quantity);
    	if (!.@card_id) {
    		mes "  ^777777(none)^000000";
    		emotion e_swt;
    		close;
    	}
    	mes " ";
    	mes "---------- Total: ^0055FF"+.@card_total+" pt.^000000 -------";
    	next;
    	if(select(" > ^0055FFComplete trade...^000000: > ^777777Cancel^000000") == 2) {
    		mes "[Card Trader]";
    		mes "Oh, okay...";
    		emotion e_hmm;
    		close;
    	}
    	for(set .@i,0; .@i < getarraysize(.@card_id); set .@i,.@i+1)
    		delitem .@card_id[.@i],.@card_amt[.@i];
    	setd .Points$, getd(.Points$)+.@card_total;
    	mes "[Card Trader]";
    	mes "All done!";
    	emotion e_ho;
    	close;
     
    OnBuyItem:
    	for(set .@i,0; .@i < getarraysize(@bought_nameid); set .@i,.@i+1)
    		for(set .@j,0; .@j <getarraysize(.Shop); set .@j,.@j+2)
    			if (@bought_nameid[.@i] == .Shop[.@j]) {
    				set .@cost, .@cost+(.Shop[.@j+1]*@bought_quantity[.@i]);
    				break;
    			}
    	if (.@cost > getd(.Points$)) {
    		mes "[Card Trader]";
    		mes "You don't have enough Points.";
    		emotion e_omg;
    	}
    	else {
    		mes "Items purchased:";
    		mes "-----------------------------------";
    		for(set .@i,0; .@i < getarraysize(@bought_nameid); set .@i,.@i+1) {
    			getitem @bought_nameid[.@i], @bought_quantity[.@i];
    			mes "  ^777777"+@bought_quantity[.@i]+"x "+getitemname(@bought_nameid[.@i])+"^000000";
    		}
    		mes " ";
    		mes "---------- Total: ^0055FF"+.@cost+" pt.^000000 -------";
    		setd .Points$, getd(.Points$)-.@cost;
    		emotion e_cash;
    	}
    	deletearray @bought_nameid[0], getarraysize(@bought_nameid);
    	deletearray @bought_quantity[0], getarraysize(@bought_quantity);
    	close;
     
    OnInit:
    	set .Level,0;		   // Minimum monster level to trade corresponding cards.
    	set .Points$,"#Card_Points";	// Variable to store points.
    	setarray .Shop[0],		// Card Shop items: <ID>,<point cost>
    	  4001,1,4004,1,4033,1,4196,1,4197,25,4054,50,4174,75,4047,100;
    	setarray .Points[0],1,5;	// Points per <normal card>,<MVP card>
    	set .MVP$,			// List of MVP cards.
    	  "4121,4123,4128,4131,4132,4134,4135,4137,4142,4143,4144,4145,4146,4147,4148,4168,4236,"+
    	  "4241,4263,4276,4302,4305,4318,4324,4330,4342,4357,4359,4361,4363,4365,4399,4403,4407";
    	
    	npcshopdelitem "card_shop",909;
    	for(set .@i,0; .@i < getarraysize(.Shop); set .@i,.@i+2)
    		npcshopadditem "card_shop",.Shop[.@i],.Shop[.@i+1];
    	end;
    }
    -	shop	card_shop	-1,909:-1

    I get debug in this script when buying or selling can anyone help me

    [Debug]: npc_scriptcont: Card Trade (sd->npc_id=110012695) is not 'Unknown NPC' (id=0).

     

    //===== rAthena Script =======================================
    //= Card Trader
    //===== By: ==================================================
    //= Psalm (Updated & Fixed)
    //===== Current Version: =====================================
    //= 1.2
    //===== Compatible With: =====================================
    //= rAthena SVN
    //===== Description: =========================================
    //= Exchange cards for points and buy rewards.
    //============================================================
    
    prontera,165,196,6	script	Card Trader	90,{
    	mes "[Card Trader]";
    	mes "Hi, "+strcharinfo(0)+"!";
    	mes "What can I do for you?";
    	next;
    	switch(select(" > Information: > Trade in cards: > Point shop (^0055FF"+getd(.Points$)+"^000000): > Leave")) {
    		case 1:
    			mes "[Card Trader]";
    			mes "Do you find that you've got useless cards lying around?";
    			mes "I'll be glad to take them off your hands!";
    			next;
    			mes "[Card Trader]";
    			mes "I'll give you ^0055FF"+.Points[0]+" Point"+((.Points[0] == 1)?"":"s")+"^000000 for each card,";
    			mes "and ^0055FF"+.Points[1]+" Points^000000 for MVP cards.";
    			mes "Trade those points for items later on.";
    			emotion e_cash;
    			close;
    		case 2:
    			mes "[Card Trader]";
    			mes "Select the cards you want to trade in.";
    			if (.Level) {
    				mes " ";
    				mes "They must be from monsters level "+.Level+" and above.";
    			}
    			deletearray @sold_nameid[0], getarraysize(@sold_nameid);
    			callshop "card_shop",2;
    			end;
    		case 3:
    			mes "[Card Trader]";
    			mes "You have ^0055FF"+getd(.Points$)+"^000000 Points.";
    			callshop "card_shop",1;
    			end;
    		case 4:
    			mes "[Card Trader]";
    			mes "*yawn* See you later!";
    			emotion e_yawn;
    			close;
    	}
    
    OnSellItem:
    	set .@card_total, 0;
    	mes "Cards to sell:";
    	mes "-----------------------------------";
    	for (set .@i, 0; .@i < getarraysize(@sold_nameid); set .@i, .@i+1) {
    		if (@sold_nameid[.@i] > 4000 && @sold_nameid[.@i] < 4700) {
    			if (.Level) {
    				query_sql("SELECT `LV` FROM `mob_db` WHERE `DropCardid` = "+@sold_nameid[.@i], .@lv);
    				if (.@lv < .Level) {
    					dispbottom getitemname(@sold_nameid[.@i])+" is under the minimum level.";
    					continue;
    				}
    			}
    			set .@mvp, compare(.MVP$, ""+@sold_nameid[.@i]);
    			mes ((.@mvp)?"  ^FF0000":"  ^777777")+@sold_quantity[.@i]+"x "+getitemname(@sold_nameid[.@i])+"^000000";
    			set .@card_total, .@card_total + (@sold_quantity[.@i] * ((.@mvp) ? .Points[1] : .Points[0]));
    		}
    	}
    	deletearray @sold_nameid[0], getarraysize(@sold_nameid);
    	deletearray @sold_quantity[0], getarraysize(@sold_quantity);
    	if (.@card_total == 0) {
    		mes "  ^777777(none)^000000";
    		emotion e_swt;
    		close;
    	}
    	mes " ";
    	mes "Total: ^0055FF"+.@card_total+" pt.^000000";
    	next;
    	if(select(" > ^0055FFComplete trade...^000000: > ^777777Cancel^000000") == 2) {
    		mes "[Card Trader]";
    		mes "Oh, okay...";
    		emotion e_hmm;
    		close;
    	}
    	setd .Points$, getd(.Points$) + .@card_total;
    	mes "[Card Trader]";
    	mes "All done!";
    	emotion e_ho;
    	close;
    
    OnBuyItem:
    	set .@cost, 0;
    	for (set .@i, 0; .@i < getarraysize(@bought_nameid); set .@i, .@i+1) {
    		for (set .@j, 0; .@j < getarraysize(.Shop); set .@j, .@j+2) {
    			if (@bought_nameid[.@i] == .Shop[.@j]) {
    				set .@cost, .@cost + (.Shop[.@j+1] * @bought_quantity[.@i]);
    				break;
    			}
    		}
    	}
    	if (.@cost > getd(.Points$)) {
    		mes "[Card Trader]";
    		mes "You don't have enough Points.";
    		emotion e_omg;
    	} else {
    		mes "Items purchased:";
    		mes "-----------------------------------";
    		for (set .@i, 0; .@i < getarraysize(@bought_nameid); set .@i, .@i+1) {
    			getitem @bought_nameid[.@i], @bought_quantity[.@i];
    			mes "  ^777777"+@bought_quantity[.@i]+"x "+getitemname(@bought_nameid[.@i])+"^000000";
    		}
    		mes "Total: ^0055FF"+.@cost+" pt.^000000";
    		setd .Points$, getd(.Points$) - .@cost;
    		emotion e_cash;
    	}
    	deletearray @bought_nameid[0], getarraysize(@bought_nameid);
    	deletearray @bought_quantity[0], getarraysize(@bought_quantity);
    	close;
    
    OnInit:
    	set .Level, 0;
    	set .Points$, "#Card_Points";
    	setarray .Shop, 4001,1,4004,1,4033,1,4196,1,4197,25,4054,50,4174,75,4047,100;
    	setarray .Points, 1, 5;
    	set .MVP$, "4121,4123,4128,4131,4132,4134,4135,4137,4142,4143,4144,4145,4146,4147,4148,4168,4236,4241,4263,4276";
    	end;
    }

    Changes & Fixes:

    Fixed npcshopattach Issue - Removed unnecessary npcshopattach "card_shop";.
    Corrected Point Handling - Ensured correct getd(.Points$) usage for point calculations.
    Improved Sell & Buy Logic - Ensured arrays are properly processed before deleting.
    Refactored OnSellItem and OnBuyItem - More efficient iteration through sold/bought items.

    Try testing this version, and let me know if you need further adjustments! 

    • Love 1
  2. On 3/28/2025 at 2:54 AM, _Terra said:

    You can check this line in src/map/trade.cpp

     

    /**
     * Adds the specified amount of zeny to the trade window
     * This function will check if the player have enough money to do so
     * And if the target player have enough space for that money
     * @param sd : Player who's adding zeny
     * @param amount : zeny amount
     */
    void trade_tradeaddzeny(map_session_data* sd, int32 amount)
    {
    	map_session_data* target_sd;
    
    	nullpo_retv(sd);
    
    	if( !sd->state.trading || sd->state.deal_locked > 0 )
    		return; //Can't add stuff.
    
    	if( (target_sd = map_id2sd(sd->trade_partner.id)) == nullptr ) {
    		trade_tradecancel(sd);
    		return;
    	}
    
    	if( amount < 0 || amount > sd->status.zeny || amount > MAX_ZENY - target_sd->status.zeny ) { // invalid values, no appropriate packet for it => abort
    		trade_tradecancel(sd);
    		return;
    	}
    
    	sd->deal.zeny = amount;
    	clif_tradeadditem(sd, target_sd, 0, amount);
    }

     

     

    /**
     * Adds the specified amount of zeny to the trade window
     * This function will check if the player have enough money to do so
     * And if the target player have enough space for that money
     * @param sd : Player who's adding zeny
     * @param amount : zeny amount
     */
    void trade_tradeaddzeny(map_session_data* sd, int32 amount)
    {
        // Trading is disabled
        return;
    }

    completely removed trading 

  3. 12 hours ago, Denthorn_ said:

    As of yet, no, I've made no further attempts since I posted it.  I'll post back if/when I'm past this point.

    I've tried using the WARP profiles provided in that github, as I mentioned in step 10, I believe WARP calls them profiles instead?  Regardless, using them hasn't fixed the issue for me and even patching without making any changes at all still creates an executable that spams errors...

    Sent you a friend request.

    You can message me so i can recognize you

  4. 4 hours ago, Denthorn_ said:

    I'm trying to set up a simple local server and have been having a difficult time getting a client patched.  So far, I've been cross referencing various guides I've found on forums and on youtube, since I haven't been able to find anything that seems entirely up to date.   I'd greatly appreciate some help figuring out what I'm doing wrong.  What I've done so far is as follows:

    1. Downloaded a full client from http://nemo.herc.ws/downloads/.  The specific one I downloaded was the one under Kro main/sakray for 2022-07-06.  I then used that to install the game and copied the installed files off into a new folder.

    2. I grabbed RO Patcher Lite from here: https://nn.ai4rei.net/dev/rsu/, dropped that into my copy of the install folder, and ran it to patch the game.  I dropped a copy of OpenSetup into there as well, but have yet to actually open it and have tried removing it to no avail, so I'm assuming its not related to my issues.

    3. Once that finished, I downloaded the 2022-04-06 executable from the same place I got the original client download and saved that off in a different folder.

    4. I downloaded the files from this git repo for this translation project: https://github.com/llchrisll/ROenglishRE, then followed their instructions to use the bat file in the "Tools" folder to generate the necessary translation files for a 2022-04-06 client.  I copied those files into my copied install directory such that the DATA.ini file is at the same level as the executable and the SystemEN file is at the same level as the System file.  I've also tried additionally copying over the files in the "Additions" folder in the translation project as well on a different attempt, otherwise following the same steps.

    5. I created a new .grf in a grf editor, file -> New -> Grf, then dragging the data folder in my copy of the install directory into the grf editor over the "new.grf" field on the left.  This looks like it works, I see "book", "contentdata", "luafiles514", and "texture" folders appear under the "data" folder. 

    6. Saved that .grf off into a new file called data_en.grf in my copy of the install directory.

    7. Opened DATA.ini and added a new entry such that 0=data_en.grf, 1=server.grf, 2=data.grf.  I've noticed that some examples I've seen of this step in other sources have an rdata.grf here, I don't see that file anywhere in my installation directory and the line isn't in the DATA.ini file.  No idea what the deal is there.

    8. Opened up WARP and loaded the executable from step 3 into the "Source" field and clicked "Load Source", clicking through the confirmation prompts.

    9.  Clicked "Select Recommended", clicked OK through the path confirmation for "Inputs/Translations_EN.yml", set the path for ItemInfo to the similarly named file in SystemEN (SystemEN/itemInfo.lua), then clicked OK  to confirm the ini file's name as DATA.ini, and set the window title to Ragnarok_Patched.

    10. At this point I've tried several approaches.  I tried loading the .yml session provided by the translation repo, I believe the latest was 2019-06_Translation.yml and the documentation on their wiki said to just use the latest one, so that's what I did.  In a separate attempt (I've tried doing this whole process like 6 or so times now tweaking various things here and there hoping to figure out what the problem was) I just searched for all patches in WARP that included "lub" and manually pointed them to the correct files in SystemEN (at least I think they're the correct ones, many of the files are not identically named and some of them have the same names, just with different suffixes.  I'm reasonably confident I got the right files at the very least I've also done this at least twice in the hopes of making sure I didn't just mess one of them up).  I've generally also selected a few other patches, specifically the max zoom patch and increased hair style limit to ~65k.  I've also tried with the remove movement lag patch and it automatically seems to select a few when clicking "Select Recommended" like the "@ Bug fix" patch. 

    11. Clicked "Apply Patches", dropped the generated executable into my copy of the install directory, and from here my understanding is that it should be executable successfully, in so far as the client will boot and the translation will be visible, or so it seems to be the case from the several video guides I've found going over this.  At this point, trying to run it causes the executable to spew errors until I manually close it through the task manager.  The errors are always the same and in the same order.  Specifically:

    -- Title: ResetTheHotKey, Text: "attempt to call a nil value"

    -- The same error repeats once

    -- Title: "queryRegionInfo", Text: "attempt to call a nil value"

    -- This error now repeats every time I click through it, until force closing the process.

     

    At some point I tried just creating a patched client using WARP with no actual patches applied, if I recall correctly (its been a few days since I actually tried this, to be honest I threw my hands up in frustration and let it be for a few days after awhile, so my memory of every exact thing I tried isn't perfect) it also caused a number of errors to appear, but only a handful before the process successfully closed on its own.  With that failing, I tried downloading NEMO and using that to patch instead, following the same process otherwise, which failed in the same way the WARP patch failed.  Also tried doing a NEMO patch with no patches selected and had the same result as well. I've also tried using the 2022-03-30 executable instead of the 2022-04-06 one and saw the same results (I can't remember if the errors were identical or not, but the same pattern of them recurring indefinitely until force closing the process occurred).  Trying to run the existing Ragnarok executable, it runs just fine in all cases with no errors, though obviously it is not translated.  If anyone could help me figure out what on earth I'm doing wrong or point me in the right direction, I'd much appreciate it.

    add discord: 

    paulgredona30

  5. 5 hours ago, Sallycantdance said:

    Hello everyone, I would like to make this script work in a specific map only can somebody help me? Thank you in advance!
     

     

    -    script    hourly_point_main    -1,{
         OnInit:
            .npc_name$ = strnpcinfo(3);
            .reward_minutes = 60;
            .target_map$ = "prontera"; // Restrict to Prontera
            bindatcmd("check", .npc_name$ + "::OnAtcommand");
            end;
     
        OnAtcommand:
            dispbottom("Accumulated " + #daily_minute_count);
            end;
     
        OnPCLoginEvent:
            addtimer(.reward_minutes * 60000, .npc_name$ + "::OnUpdate");
            end;
    
        OnUpdate:
            deltimer(.npc_name$ + "::OnUpdate");
            addtimer(.reward_minutes * 60000, .npc_name$ + "::OnUpdate");
    
            // Check if the player is in Prontera
            if (strcharinfo(3) != .target_map$) {
                end;
            }
    
            if (checkvending() & 2) {
                end;
            }
    
            #daily_minute_count += .reward_minutes;
    
            switch(#daily_minute_count) {
                case 60: 
                case 120: 
                case 180: 
                case 240: 
                case 300: 
                case 360: 
                case 420: 
                    #CASHPOINT += 1;
                    getitem 677,1;
                    break;
                case 480:
                    #CASHPOINT += 1;
                    getitem 677,1;
                    #daily_minute_count = 0; // Reset counter after 8 hours
                    break;
            }
    }

    Features:

    ✅ Works only in Prontera (prontera map)
    ✅ Rewards every hour up to 8 hours
    ✅ Prevents vending abuse
    ✅ Resets counter after 8 hours

  6. 58 minutes ago, Sallycantdance said:

    hello anybody know how to fix this error everytime the player enter the pvp room this error appears
    heres the scripterror.png.024a0c30b47a4ac1eec4109cff95922d.png
     

     

    You know its hard to script.

    If you want, i fix script for just 5 dollar 🙂

  7. 12 minutes ago, Sallycantdance said:

    hello regarding this script instead of zeny can i chaged it to item? also for everyone hour only ?

    prontera,193,124,6    script    Global Exp Amplifier#EventFloatingRates    10308,{
    
        mes "[Global Exp Amplifier]";
        mes "Current collected items:";
        mes "~ [^0000ff" + callfunc("F_InsertComma", $collected_funds) + "^000000] Items";
        mes "Target global items:";
        mes "~ [^0000ff" + callfunc("F_InsertComma", .target_funds) + "^000000] Items";
        mes "Still need " + callfunc("F_InsertComma", $donation_missing) + " Items to reach the target.";
        next;
        
        switch (select("Donate Items", "Cancel")) {
            case 1:
                mes "Enter the amount you want to donate:";
                next;
                input .@donation;
    
                // Validations
                if (.@donation < .min_donation_items) {
                    mes "The minimum donation amount is " + callfunc("F_InsertComma", .min_donation_items) + " Items.";
                    end;
                }
                if (countitem(.donation_item) < .@donation) {
                    mes "You don't have enough items.";
                    end;
                }
                if (.@donation > $donation_missing) {
                    mes "The amount exceeds the remaining balance.";
                    mes "Remaining Balance: " + callfunc("F_InsertComma", $donation_missing) + " Items";
                    end;
                }
    
                // Apply the donation
                delitem .donation_item, .@donation;
                $collected_funds += .@donation;
                $donation_missing -= .@donation;
    
                mes "Donation successful. Thank you for your contribution!";
                
                // Start the event if the target is reached
                if ($collected_funds >= .target_funds) {
                    $collected_funds = 0;    
                    announce "[Global Exp Amplifier]: Target reached! Activating Floating Rates Event for 1 hour.", bc_all, 0xFF6060;
                    donpcevent strnpcinfo(3) + "::OnStart"; // Ensure the event is triggered
                }
                end;
        }
    
    OnStart:
        if (.EventActive) end; // Prevent multiple activations
    
        // Start the event for 1 hour
        set .EventActive, 1;
        announce "[Floating Rates]: The event has now officially started!", bc_all, 0x00FF00;
        initnpctimer; // Start the NPC timer
        end;
    
    OnTimer60000: // Every 60 minutes (60,000 milliseconds)
        if (!.EventActive) end;
    
        // Assign random rates within the specified range
        set .@expRate, rand(5,8);
        set .@dropRate, rand(10,15) / 10; // 1.0x - 1.5x
    
        setbattleflag("base_exp_rate", .@expRate * 100);
        setbattleflag("job_exp_rate", .@expRate * 100);
        setbattleflag("item_rate_common", .@dropRate * 100);
    
        announce "[Floating Rates]: New Rates -> EXP: " + .@expRate + "x, DROP: " + .@dropRate + "x", bc_all, 0xFFD700;
    
        // This function is automatically repeated due to `initnpctimer`
        end;
    
    OnTimer3600000: // Event ends after 1 hour
        // Reset rates to normal
        setbattleflag("base_exp_rate", 100);
        setbattleflag("job_exp_rate", 100);
        setbattleflag("item_rate_common", 100);
    
        announce "[Floating Rates]: The event has ended. Rates are now back to normal.", bc_all, 0xFF0000;
        set .EventActive, 0;
        stopnpctimer; // Stops the NPC timer system
        end;
    
    OnInit:
        set .target_funds, 500; // Target donation amount (change this based on your needs)
        set .min_donation_items, 5; // Minimum donation amount
        set .donation_item, 501; // Example Item ID (Change to the correct one)
        set .EventActive, 0;
        set $donation_missing, .target_funds - $collected_funds;
        end;
    
    }

    ✅ Zeny changed to an item donation (Replace 501 with the actual item ID you want).
    ✅ Event lasts only 1 hour (OnTimer3600000).
    ✅ Minimum donation is now in item quantity (set .min_donation_items, 5;).

    • Upvote 1
  8. On 3/8/2025 at 8:58 PM, Skdbldnr said:

    Hello, sobrang newbie po ako sa paggawa ng server. Gusto ko sana matutuo, from scratch nga ako galing. ang target ko is mid rate. Base level: 255 job level: 100, pre renewal server, transcendent class only. 

    Anong ROClient ang compatible sa gusto ko?

    Dapat ko bang idownload ang latest version ng rAthena?

    Ano ang tamang pag edit sa mga, drop rate?

    Paano mag pasok ng mga custom items, npc shop?

     

     

    Add mo ko skype : [email protected]

  9. On 3/11/2025 at 7:12 PM, HeroiAgaezsi said:

    Procuro programador, designers , entre outros para começar um mega projeto de um servidor Brasileiro. Estamos dispostos a investir bastante para fazer um server que bata de frente com os maiores ja existentes e até mesmo com o Global, caso alguem se interessa ou conheça quem tem a condição de ajudar nisso

    Att

    im not brazillian but i can be a programmer 🙂

  10. On 9/8/2024 at 11:13 AM, keoma said:

    Not yet, I can't get support here or in Brazil

    I think its on your statusdb

    try to look at this path.

    db\pre-re\status.yml

    and find this line - Status : Freeze

  11. It said your chatserversql server is 45 . 

    go to your \src\map\mmo.h

     

    and find this line.

     

    #define packet 

     

    if your client is 12-04-07 then 

     

    #define packet 12-04-07 

     

    and fix your clientinfo.xml It should be match with the packet version,

     

    if your packet version is 45, then it should be the same as

     

    version at your clientinfo.xml

     

    Done :)

  12. I told it wasnt finish yet. Im more on designing, im just taking some advice, 

    my site still on developing. LOL.

    but thank you lol for your comment,

    because this will be my guide. :)


    If this is a rating : 1/10.
    Because this is no design, this are 5 black boxes in front of a grey background with a bonus of a yellow lines around the black boxes. Sorry if I say it this way... For me it looks horrible.

    I told it wasnt finish yet.  i did designing first,

    Yeah it has no background yet and there's a lot more to fix.

    my site still on developing. LOL.

    but thank you lol for your comment,

    because this will be my guide.  :)


    but you just watch, after i've done this. i can asure you that this would be the best XD

  13. Hi guys' 

     

    I just want to share you my own website design, 

    And it wasnt finish yet. i just want to get some advice if my design is cool. or not,

     

    So I will know what would im going to change.

     

    I didnt use fluxCP cos its giving me a hardtime setting the desire design i wanted.

     

    So i decided to make my own script. Cos I can do it on my own,

    And I could write code like, HTML, CSS, JQUERY, PHP, And MYSQL. 

     

    It will give me too much Head ache LOL, but i know i can do this...

     

    have a first sight.

     

    87ee5d55e4.jpg

  14. just pick any original RYFL script and you will get the NPC that help you enable or disable the event.

    Yeah But what i want is a NPC that will trigger if i choose unhide, then npc will comes out to the designated places.

    I WOULD give it a try TO write THE SCRIPT in my own idea.

     

    Like this,

    
    - script npcEnabler 900{
    
    if (getgmlvl(gmlvl) => 1){
             Mes: "Would You Like To Unhide The NPC WARPER?";
             close;
            switch (select("Yes","NO"))
            case 1:
            hidenpcoff("RFYL WARPER");
            break;
            case 2:
            hidenpcon("RFYL WARPER");
            break;
            end;
       }
    }
    
  15. hello again.

     

    did you guys has a script of a npc that will enable the npc warper for rfyl

     

    like this method 

     

    we pretend that i have a npc on quiz_01

    then i will go there to talk, and will let me choose to unhide or hide the warper on city

    once i choose unhide, the npc will be visible to all designated city. like prontera, morroc, etch.

     

    hope you guys have it. 

     

    im looking forward thanks in advanced.

×
×
  • Create New...