Jump to content

Sallycantdance

Members
  • Posts

    803
  • Joined

  • Last visited

Posts posted by Sallycantdance

  1. Hello everyone im having a problem regarding ankle snare skill the trap effect only triggers 5 cell or more so basically they can walk around 1-5 traps before they stop here is the sample picture



     

    trap delay.png

  2. hello i already try everything i can to fix this script im always having this error after i enter the map, can someone help me

    [Error]: buildin_rid2name: invalid RID
    [Error]: buildin_rid2name: invalid RID
    [Error]: buildin_getmapxy: Player with nick '(null)' is not found.
    [Error]: buildin_getmapxy: Player with map id '0' is not found.

     

    Quote

    -    script    dualclientkicker    -1,{
    OnPCLoadMapEvent:
        set .@charmap$, strcharinfo(3);
        if(!compare(.tmp$, .@charmap$)) end;
        
        set .@len, query_sql("SELECT DISTINCT `account_id` FROM `char` WHERE `account_id` IN (SELECT `account_id` FROM `login` WHERE `last_ip` =(SELECT `last_ip` FROM `login` WHERE `account_id`="+getcharid(3)+")) AND `online` <> 0;", .@a);
        
        // Check for results from query_sql
        if (.@len == 0) end;
        
        for (set .@d, 0; .@d < .@len; set(.@d, .@d+1)) {
            // Ensure the account ID is valid before proceeding
            if (rid2name(.@a[.@d]) != "") {
                if (!getmapxy(.@map$, .@x, .@y, BL_PC, rid2name(.@a[.@d])) && .@charmap$ == .@map$)
                    set .@c, .@c + 1;  
            }
        }
        
        if (.@c > .limitacc) {
            dispbottom "Dual accounts not allowed in this map.";
            warp "SavePoint",0,0;
        }    
        end;

    OnInit:
        set .limitacc, 1;
        setarray .maps$, "pvp_y_1-2", "prt_pvp", "grandarena", "bombring", "gh10", "gh11", "prtg_cas01";
        set .lens, getarraysize(.maps$);
        
        for (set .a, 0; .a < .lens; set(.a, .a+1)) {
            setmapflag .maps$[.a], mf_loadevent;
            set .tmp$, .tmp$ + .maps$[.a] + ",";
        }
    }
     

     

  3. hello i already import the sql file but it is error in the webserver

     

    Quote

    CREATE TABLE IF NOT EXISTS `user_configs` (
      `world_name` varchar(32) NOT NULL,
      `account_id` int(11) unsigned NOT NULL,
      `data` longtext NOT NULL,
      PRIMARY KEY (`world_name`, `account_id`)
    ) ENGINE=MyISAM;

     

    Quote

    CREATE TABLE IF NOT EXISTS `char_configs` (
      `world_name` varchar(32) NOT NULL,
      `account_id` int(11) unsigned NOT NULL,
      `char_id` int(11) unsigned NOT NULL,
      `data` longtext NOT NULL,
      PRIMARY KEY (`world_name`, `account_id`, `char_id`)
    ) ENGINE=MyISAM;

     

     

    12345.thumb.png.8fa95075a270675336505a723c203a22.png

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

    Quote

    -    script    hourly_point_main    -1,{
         OnInit:
            .npc_name$ = strnpcinfo(3);
            .reward_minutes = 60;
            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");

            if (checkvending() & 2) {
                end;
            }

            #daily_minute_count += .reward_minutes;

            switch(#daily_minute_count) {
                case 60: // 60 minutes
                    #CASHPOINT += 1;
                    getitem 677,1;
                    break;
                case 120: // 120 minutes 
                    #CASHPOINT += 1;
                    getitem 677,1;
                    break;
                case 180: // 180 minutes
                    #CASHPOINT += 1;
                    getitem 677,1;
                    break;
                case 240: // 240 minutes
                    #CASHPOINT += 1;
                    getitem 677,1;
                    break;
                case 300: // 300 minutes
                    #CASHPOINT += 1;
                    getitem 677,1;
                    break;
                case 360: // 360 minutes
                    #CASHPOINT += 1;
                    getitem 677,1;
                    break;
                case 420: // 420 minutes
                    #CASHPOINT += 1;
                    getitem 677,1;
                    break;
                case 480: // 480 minutes
                    #CASHPOINT += 1;
                    getitem 677,1;
                    #daily_minute_count = 0; // reset.
                    break;
                default:
                    break;
            }
    }

     

  5. sir @Scanty i know now heres the error coming from this script

     

    Quote

    -    script    dualclientkicker    -1,{
    OnPCLoadMapEvent:
    set .@charmap$, strcharinfo(3);
    if(!compare(.tmp$,.@charmap$)) end;
    set .@len, query_sql("SELECT DISTINCT `account_id` FROM `char` WHERE`account_id` IN (SELECT `account_id` FROM `login` WHERE `last_ip` =(SELECT `last_ip` FROM `login` WHERE `account_id`="+getcharid(3)+")) AND`online` <> 0;",.@a);
    for(set(.@d,0);.@d<.@len;set(.@d,.@d+1)) {
        if(!getmapxy(.@map$,.@x,.@y,BL_PC,rid2name(.@a[.@d])) && .@charmap$==.@map$)
        set .@c,.@c+ 1;     
        }
    if(.@c > .limitacc ) {
    dispbottom "dual accounts not allowed in this map.";
        warp "maintown",97,30;
        }    
        end;
    OnInit:
    set .limitacc,1;
    setarray .maps$, "pvp_y_1-2", "prt_pvp", "br_ifrit", "grandarena", "bombring", "gh10", "gh11", "gh12";
    set .lens ,    getarraysize(.maps$) ;
    for(set(.a,0);.a<.lens;set(.a,.a+1)) {
        setmapflag .maps$[.a],    mf_loadevent ;
        set .tmp$ ,.tmp$+.maps$[.a]+",";
    }
    }

     

  6. 2 hours ago, Scanty said:

    I did this basic script, maybe it will help you.

    CREATE TABLE IF NOT EXISTS `pvp_rank` (
      `char_id` int(11) unsigned NOT NULL,
      `kills` int(11) unsigned NOT NULL DEFAULT 0,
      `deaths` int(11) unsigned NOT NULL DEFAULT 0,
      PRIMARY KEY (`char_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

     

    And here's the script.

    prontera,196,142,5	script	PVP Warper	100,{
    	mes "[ ^FF0000PVP Warper^000000 ]";
    	mes "Welcome, ^0000FF"+strcharinfo(0)+"^000000.";
    	mes "Please select a PVP room:";
    	next;
    
    	// Dynamic menu with player counts
    	.@menu$ = "";
    	for (.@i = 0; .@i < getarraysize(.pvp_map$); .@i++) {
    		.@users = getmapusers(.pvp_map$[.@i]);
    		.@menu$ += .pvp_name$[.@i]+" ["+.@users+"/"+.pvp_max[.@i]+"]:";
    	}
    
    	.@sel = select(.@menu$) - 1;
    
    	if (BaseLevel < .pvp_level[.@sel]) {
    		mes "[ ^FF0000PVP Warper^000000 ]";
    		mes "You must be at least level "+.pvp_level[.@sel]+" to enter this room.";
    		close;
    	}
    
    	if (getmapusers(.pvp_map$[.@sel]) >= .pvp_max[.@sel]) {
    		mes "[ ^FF0000PVP Warper^000000 ]";
    		mes "This room has reached its player limit ("+.pvp_max[.@sel]+").";
    		close;
    	}
    
    	warp .pvp_map$[.@sel],0,0;
    	end;
    
    
    OnPCKillEvent:
    	// Validate if map is a valid PVP room
    	.@valid = 0;
    	for (.@i = 0; .@i < getarraysize(.pvp_map$); .@i++) {
    		if (strcharinfo(3) == .pvp_map$[.@i]) {
    			.@valid = 1;
    			break;
    		}
    	}
    	if (!.@valid) end;
    
    	// Get Killer and Victim Char IDs safely
    	.@killer_cid = getcharid(0);
    	.@victim_cid = getcharid(0, rid2name(killedrid));
    
    	if (!.@killer_cid || !.@victim_cid || .@killer_cid == .@victim_cid) end;
    
    	// Always register kills and deaths for all maps
    	query_sql("INSERT INTO pvp_rank (`char_id`, `kills`, `deaths`) VALUES ("+.@killer_cid+",1,0),("+.@victim_cid+",0,1) ON DUPLICATE KEY UPDATE `kills`=`kills`+VALUES(`kills`), `deaths`=`deaths`+VALUES(`deaths`)");
    
    	// Only grant special points in the GM-selected map
    	if (strcharinfo(3) != .points_map$) end;
    
    	// IP check validation (enabled or disabled by admin)
    	if (.ip_check_enabled) {
    		query_sql("SELECT last_ip FROM login WHERE account_id="+getcharid(3), .@killer_ip$);
    		query_sql("SELECT last_ip FROM login WHERE account_id="+killedrid, .@victim_ip$);
    		if (.@killer_ip$ == .@victim_ip$) {
    			dispbottom "[PVP Warper]: No points granted. Same IP detected.";
    			end;
    		}
    	}
    
    	// Kill cooldown validation
    	.@current_time = gettimetick(2);
    	.@cooldown = .kill_cooldown;
    
    	.@kill_cd_var$ = "kill_cd_"+.@killer_cid+"_"+.@victim_cid;
    	if (getd(.@kill_cd_var$) + .@cooldown > .@current_time) {
    		dispbottom "[PVP Warper]: You recently killed this player. Wait before earning more points.";
    		end;
    	}
    	setd .@kill_cd_var$, .@current_time;
    
    	// Add your special points reward code here.
    	// Example: set pvp_points, pvp_points + 1;
    
    	dispbottom "[PVP Warper]: You've earned special points for defeating a player.";
    	end;
    
    OnCheckRank:
    	mes "[ ^FF0000PVP Warper^000000 ]";
    	query_sql("SELECT kills, deaths FROM pvp_rank WHERE char_id="+ getcharid(0), .@kills, .@deaths);
    	mes "Tus estadísticas actuales:";
    	mes "^0000FFKills:^000000 "+ (.@kills ? .@kills : 0);
    	mes "^FF0000Muertes:^000000 "+ (.@deaths ? .@deaths : 0);
    	close;
    
    OnGMResetRank:
    	if (getgmlevel() < 60) {
    		dispbottom "No tienes permisos para usar este comando.";
    		end;
    	}
    	query_sql("TRUNCATE TABLE pvp_rank");
    	dispbottom "Ranking PVP reiniciado correctamente.";
    	end;
    
    OnInit:
    	// General Configuration
    	setarray .pvp_map$[0], "guild_vs1", "guild_vs2", "pvp_y_1-2";
    	setarray .pvp_name$[0], "PVP Room 1", "PVP Room 2", "PVP Prontera";
    	setarray .pvp_level[0], 1, 50, 99;
    	setarray .pvp_max[0], 10, 15, 20;
    
    	// Enable or disable IP check (1 = ON, 0 = OFF)
    	.ip_check_enabled = 0;
    
    	// Kill cooldown in seconds (recommended: 60-120 sec)
    	.kill_cooldown = 60;
    	
    	// GM configuration: Set the map that gives special points here (default is room 1)
    	.points_map$ = .pvp_map$[0]; // Change [0] to [1] or [2] to switch rooms
    
    	// Commands for player and GM
    	bindatcmd "pvprank",strnpcinfo(3)+"::OnCheckRank";
    	bindatcmd "resetpvprank",strnpcinfo(3)+"::OnGMResetRank",60,60;
    	end;
    }

     

    Feel free to ask for a change.

     

    thank you so much sir for this script !!!!!

  7. i think i got my error in mail.ccp

    heres yours

    Quote
    if( !map_getmapflag(sd->bl.m, MF_TOWN) && !pc_can_use_command(sd, "mail", COMMAND_ATCOMMAND) )
    	{
    		ShowWarning("clif_parse_Mail: char '%s' trying to do invalid mail operations.\n", sd->status.name);
    		return true;
    	}
    #else
    	if( map_getmapflag( sd->bl.m, MF_NORODEX ) ){
    		clif_displaymessage( sd->fd, msg_txt( sd, 796 ) ); // You cannot use RODEX on this map.
    		return true;
    	}

    and here is mine maybe the reason is my server side is not updated, thats my always problem in putting some diff files in my server cause i dont know how to update it anyways thank you very much sir for your effort and help i really appreciate it Godbless you!

     

    Quote

    #if PACKETVER < 20150513
        if( !map_getmapflag(sd->bl.m, MF_TOWN) && !pc_can_use_command(sd, "mail", COMMAND_ATCOMMAND) )
        {
            ShowWarning("clif_parse_Mail: char '%s' trying to do invalid mail operations.\n", sd->status.name);
            return true;
        }
    #endif

     

  8. 17 hours ago, Brynner said:

    i just tried it no error on my side. i don't have Grand Arena map so I replace it with another existing map but it works fine on me no error on map server image.thumb.jpeg.e5d7c7b36de06a92634976ffb087a5e6.jpegimage.png.a1199a80a3482500a68199ad882f0372.pngimage.thumb.jpeg.9d9a1a8c8637fadbdb3c6d64ed333be5.jpeg

    mine is error but we have the same script huhu

    image.thumb.png.eccf0992b808c6d53d4c8eb918300a48.png

  9. 1 hour ago, Brynner said:

    try this. i haven't tested it.

     

    /*
    ALTER TABLE `char` ADD `pvp_kill` INT(11) UNSIGNED NOT NULL DEFAULT '0'  AFTER `fame`;
    */
    
    payon,193,104,4	script	PVP Warper	630,{
        doevent "pvp_rank_main::OnTalk";
    }
    
    -	script	pvp_rank_main	-1,{
    
        OnTalk:
            mes "[PvP Room Master]";
            mes "Where do you want to go?";
            next;
            switch ( select ( 
                "Grand Arena [ "+getmapusers("grandarena")+" ]",
                "^ff0000[ No Points ]^000000 Izlude PVP Room [ "+getmapusers("pvp_y_1-2")+" ]",
                ( getgmlevel() >= 99 ) ? "^FF0000[GM] Reset PVP Ranking^000000":""
            )) {
            
            case 1: // Grand Arena
                if ( getmapusers("grandarena") >= 100 ) {
                    mes "The Grand Arena is full!";
                    close;
                }
                if ( BaseLevel < 50 ) { 
                    mes "Excuse me, but";
                    mes "you need to be at least level 50 or above!";
                    close;
                }
                warp "grandarena",0,0;
                announce ""+strcharinfo(0)+" entered Grand Arena PVP ROOM!", bc_all, 0xCCFFFF;
                end;
            
            case 2: // Izlude PVP Room
                if ( getmapusers("pvp_y_1-2") >= 100 ) {
                    mes "The Izlude PVP Room is full!";
                    close;
                }
                if ( BaseLevel < 50 ) { 
                    mes "Excuse me, but";
                    mes "you need to be at least level 50 or above!";
                    close;
                }
                warp "pvp_y_1-2",0,0;
                announce ""+strcharinfo(0)+" entered Izlude PVP ROOM!", bc_all, 0xCCFFFF;
                end;
    
            case 3: // GM Reset Ranking
                if ( getgmlevel() < 99 ) {
                    mes "You do not have permission to perform this action.";
                    close;
                }
                mes "[PvP Room Master]";
                mes "Reset Ranking? This action cannot be undone.";
                if ( select( "Confirm", "Cancel" ) == 1 ) {
                    query_sql( "UPDATE `char` SET `pvp_kill` = 0 WHERE `pvp_kill` > 0" );
                    mes "PvP ranking has been reset.";
                }
                close;
            
            default: // PvP Rankings
                mes "[PvP Room Master]";
                mes "PvP Rankings:";
                query_sql( "SELECT `name`, `pvp_kill` FROM `char` WHERE `pvp_kill` > 0 ORDER BY `pvp_kill` DESC LIMIT 10", .@name$, .@pvp_kill );
                .@size = getarraysize( .@name$ );
                if ( .@size == 0 ) {
                    mes "No PvP rankings available yet.";
                } else {
                    for ( .@i = 0; .@i < .@size; .@i++ ) {
                        mes "["+(.@i + 1 )+"] "+.@name$[.@i]+" - "+.@pvp_kill[.@i]+" kill(s)";
                    }
                }
                close;
            }
    }

     

    hello thank you for your effort but it has the same error

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

    Quote

        // https://rathena.org/board/topic/107986-requesting-for-a-pvp-ranking-w-reset/

    /*
    ALTER TABLE `char` ADD `pvp_kill` INT(11) UNSIGNED NOT NULL DEFAULT '0'  AFTER `fame`;
    */

    payon,193,104,4    script    PVP Warper    630,{
        doevent "pvp_rank_main::OnTalk";
    }

    -    script    pvp_rank_main    -1,{

        OnTalk:
            mes "[PvP Room Master]";
            mes "Where do you wanna go?";
            next;
            switch ( select ( 
                "Grand Arena [ "+getmapusers("grandarena")+" ]",
                "^ff0000[ No Points ]^000000 Prontera  [ "+getmapusers("grandarena")+" ]",
                ( getgmlevel() >= 99 ) ? "^FF0000[GM] Reset PVP Ranking^000000":""
            )) {
        case 1:    // Grand Arena
            if (getmapusers("grandarena") > 99) callsub S_full;
            if (BaseLevel <49) { 
            mes "Excuse me, but";
            mes "did you not come prepared?";
            mes "you need to be";
            mes "atleast level 50 above!";
            close;
            }
            warp "grandarena",0,0;
            announce ""+strcharinfo(0)+" entered Grand Arena PVP ROOM !",bc_all,0xCCFFFF;
            end;
            
        case 2:    // Izlude PVP Rooom
            if (getmapusers("pvp_y_1-2") > 99) callsub S_full;
            if (BaseLevel <49) { 
            mes "Excuse me, but";
            mes "did you not come prepared?";
            mes "you need to be";
            mes "atleast level 50 above!";
            close;
            }
            warp "pvp_y_1-2",0,0;
            announce ""+strcharinfo(0)+" entered Izlude PVP ROOM !",bc_all,0xCCFFFF;
            end;
            
                default:
                    mes "[PvP Room Master]";
                    mes "PVP Ranking";
                    query_sql( "SELECT `name`,`pvp_kill` FROM `char` WHERE `pvp_kill` > 0 ORDER BY `pvp_kill` DESC LIMIT 10", .@name$, .@pvp_kill );
                    .@size = getarraysize( .@name$ );
                    for ( .@i = 0; .@i < .@size; .@i++ ) {
                        mes "["+(.@i + 1 )+"] "+.@name$[.@i]+" - "+.@pvp_kill[.@i]+" kill(s)";
                    }
                    break;
                case 3:
                    mes "[PvP Room Master]";
                    mes "Reset Ranking? Action cant be undo. Confirm your action.";
                    if ( select( "Confirm","Cancel" ) == 1 ) {
                        query_sql( "UPDATE `char` SET `pvp_kill` = 0 WHERE `pvp_kill` > 0" );
                        mes "Done.";
                    }
                    break;
            }
            close;
        
        L_Enter:
            .@title$ = getarg( 0,"" );
            .@map$ = getarg( 1,"" );
            .@max_player = getarg( 2,0 );
            .@getmapusers = getmapusers( .@map$ );
            
            mes "[PvP Room Master]";
            if ( .@getmapusers == -1 ) {
                mes "Invalid map.";
            }
            else if ( .@max_player > 0 && .@getmapusers >= .@max_player ) {
                mes "I'm sorry but the PVP Room is already full!";
            }
            else {
                mes .@title$ + " ["+.@getmapusers+"/"+.@max_player+"]";
                if ( select( "Enter" ) == 1 ) {
                    warp .@map$,0,0;
                }
            }

            end;
    }

     

     

  11. 2 hours ago, Scanty said:

    maybe because this... 

     if ( getmapflag( strcharinfo(3), mf_gvg_castle ) && ( agitcheck() || agitcheck2() )) {

    your koe map doesn't have that mapflag right? mf_gvg_castle maybe you need to check if you have it

    okay thanks yes maybe since koe maps are custom i will check where to add it i only add the maps in the castle db but in mapflag i think i didnt ill search for it thank you sir!

  12. 34 minutes ago, Paul said:
    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;).

    thank you sir

  13. On 2/5/2025 at 6:04 AM, Scanty said:
    prontera,193,124,6	script	Global Exp Amplifier#EventFloatingRates	10308,{
    
    	mes "[Global Exp Amplifier]";
    	mes "Current collected funds:";
    	mes "~ [^0000ff" + callfunc("F_InsertComma", $collected_funds) + "^000000] Zeny";
    	mes "Target global funds:";
    	mes "~ [^0000ff" + callfunc("F_InsertComma", .target_funds) + "^000000] Zeny";
    	mes "Still need " + callfunc("F_InsertComma", $donation_missing) + " Zeny to reach the target.";
    	next;
    	
    	switch (select("Donate Zeny", "Cancel")) {
    		case 1:
    			mes "Enter the amount you want to donate:";
    			next;
    			input .@donation;
    
    			// Validations
    			if (.@donation < .min_donation_zeny) {
    				mes "The minimum donation amount is " + callfunc("F_InsertComma", .min_donation_zeny) + " Zeny.";
    				end;
    			}
    			if (Zeny < .@donation) {
    				mes "You don't have enough Zeny.";
    				end;
    			}
    			if (.@donation > $donation_missing) {
    				mes "The amount exceeds the remaining balance.";
    				mes "Remaining Balance: " + callfunc("F_InsertComma", $donation_missing) + " Zeny";
    				end;
    			}
    
    			// Apply the donation
    			Zeny -= .@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 3 hours.", bc_all, 0xFF6060;
    				donpcevent strnpcinfo(3) + "::OnStart"; // Ensure the event is triggered
    			}
    			end;
    	}
    
    OnStart:
    	if (.EventActive) end; // Prevent multiple activations
    
    	// Start the event for 3 hours
    	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;
    
    OnTimer10800000: // Event ends after 3 hours (3,600,000 * 3)
    	// 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, 1000000; // Target donation amount
    	set .min_donation_zeny, 10000; // Minimum donation amount
    	set .EventActive, 0;
    	set $donation_missing, .target_funds - $collected_funds;
    	end;
    
    }

    Try this. Maye it should help you.

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

  14. 33 minutes ago, Scanty said:

    Change this.

    for ( .@i = 0; .@i < .@size; .@i++ )

    To this

    for ( .@i = 0; .@i < .@len; .@i++ )



     .@len = getarraysize( .@checkmap$ ); 

    hello while trying it it does have error but still i can enter in koe map "freya_vs" even i added it in the map in the script in WOE its working in KOE its not 

     

    Quote

    //Modified by - PandaLovesHamster
    //Custom Guild Limiter
    //Credits to the owners of the individual makers of the script, I just tied them all together to create this script
     
    sec_in01,176,176,5    script    guilder     833,{
     
    // this part registers the guild
        function sf {
            function s;
            .@a = getarg(2);
            .@len = getarg(3);
            return (
                sprintf( getarg(0),
                    s(.@a, .@len, getarg(1)), s(.@a++, .@len, getarg(1)),
                    s(.@a++, .@len, getarg(1)), s(.@a++, .@len, getarg(1)),
                    s(.@a++, .@len, getarg(1)), s(.@a++, .@len, getarg(1)), 
                    s(.@a++, .@len, getarg(1)), s(.@a++, .@len, getarg(1)), 
                    s(.@a++, .@len, getarg(1)), s(.@a++, .@len, getarg(1))
                )
                +(( .@a+1 < .@len )?":Next":":")
                +(( .@a-11 > 0 )?":Back":":")
                +":Cancel"
            );
            function s {
                if( getarg(0) >= getarg(1) ) return "";
                else {
                    .@name$ = getguildname(getelementofarray(getarg(2),getarg(0)));
                    return .@name$=="null"?"":.@name$;
                }
            };
        };
        function nex { return((getarg(0)+10)<getarg(1)?getarg(0)+10:getarg(1)-(getarg(1)%10)); };
        function bac { return((getarg(0)-10)>=0?getarg(0)-10:0); };
     
        if(getgmlevel()>=80 ) {
            mes .Npc_Name$;
            mes "Hello Mr. GM what would you like to do?";
            next;
            switch( select("Add/Remove Guilds:Clear Guild Data:Player Menu:Cancel") ) {
                case 1:
                    mes .Npc_Name$;
                    mes "Would you like to add or remove a guild?";
                    .@a_len = getarraysize($App_Guilds);
                    .@format$ = "%s:%s:%s:%s:%s:%s:%s:%s:%s:%s";
                    next;
                    if( select("Remove:Add") == 1 ) {
                        while( .@a != 9999 ) {
                            select( sf( .@format$, $App_Guilds, .@a, .@a_len ) );
                            switch( @menu ) {
                                case 11: .@a = nex( .@a, .@a_len ); break;
                                case 12: .@a = bac( .@a ); break;
                                case 13: end;
     
                                default:
                                    .@select = .@a+@menu-1;
                                    mes .Npc_Name$;
                                    mes "You've selected ^0000FF["+getguildname($App_Guilds[.@select])+"]^000000 guild. Would you like to remove them from the accepted guilds?";
                                    next;
                                    if( select("Yes:No") == 1 ) {
                                        deletearray($App_Guilds[.@select],1);
                                        mes .Npc_Name$;
                                        mes "The guild has been removed!";
                                    }
                                    close;
                            }
                        }
                    } else {
                        mes .Npc_Name$;
                        mes "Please input guild name or masters name.";
                        next;
                        input(.@input$);
                        .@len = query_sql( "Select `guild_id` from `guild` where `name` like '%"+escape_sql(.@input$)+"%' or `master` like '%"+escape_sql(.@input$)+"%';",.@guild_id );
                        while( .@a != 9999 ) {
                            select( sf( .@format$, .@guild_id, .@a, .@len ) );
                            switch( @menu ) {
                                case 11: .@a = nex( .@a, .@len ); break;
                                case 12: .@a = bac( .@a ); break;
                                case 13: end;
     
                                default:
                                    .@select = .@a+@menu-1;
                                    .@a_len = getarraysize($App_Guilds);
                                    for(.@b=0;.@b<.@a_len;.@b++)
                                        if( $App_Guilds[.@b]==.@guild_id[.@select] ) {
                                            mes .Npc_Name$;
                                            mes "You've selected ^0000FF["+getguildname(.@guild_id[.@select])+"]^000000 guild. I'm sorry but that guild has already been added to the accepted list.";
                                            close;
                                        }
                                    mes .Npc_Name$;
                                    mes "You've selected ^0000FF["+getguildname(.@guild_id[.@select])+"]^000000 guild. Would you like to add them to the accepted guilds?";
                                    next;
                                    if( select("Yes:No") == 1 ) {
                                        .@a_len = getarraysize($App_Guilds);
                                        if( .@a_len>=128 ) {
                                            mes .Npc_Name$;
                                            mes "I'm sorry but the accepted list is full please make some room and try again...";
                                        } else {
                                            mes .Npc_Name$;
                                            mes "The guild was successfully added!";
                                            $App_Guilds[.@a_len] = .@guild_id[.@select];
                                        }
                                    }
                                    close;
                            }
                        }
                    }
                case 2:
                    mes .Npc_Name$;
                    mes "Are you sure you want to clear the guild data?!";
                    next;
                    if( select("Yes!:No!")==1 ) {
                        mes .Npc_Name$;
                        mes "This is you last chance. Are you surely sure as sure can be?";
                        next;
                        if( select("Surly!:No, wait... Where am I?!!")==1 )
                            deletearray($App_Guilds);
                    }
                    if( @menu==1 ) {
                        mes .Npc_Name$;
                        mes "The deed is done...";
                    } else {
                        mes .Npc_Name$;
                        mes "Wow that was a close one... Have a nice day!";
                    }
                    close;
     
                case 3: break;
     
                case 4:
                    mes .Npc_Name$;
                    mes "Alright, have a nice day!";
                    close;
            }
        }
     
        .@len = getarraysize($App_Guilds);
        for( .@i=0; .@i <= .@len; .@i++ ) {
            if( getcharid(2) == $App_Guilds[.@i] )
                set .@Guild_Check, .@Guild_Check+1;
        }
     
     
    // This part ejects players when they are in the map 
        OnPCLoadMapEvent:
        if( getcharid(2) == $App_Guilds[.@i] ){
        .count = 0;
        .@origin = getcharid(3);
        addrid 3, 0, getcharid(2);
        if ( strcharinfo(3) == .checkmap$ )
            .count++;
        if ( !.@origin ) end;
        if ( .count > 26 ) { // 26 means only 26 players per guild allowed in a map.
            message strcharinfo(0), "Your guild members are over the limit";
            sleep2 2000;
            warp "SavePoint", 0,0;
        }
        }
        end;
    OnInit:
        setarray .@checkmap$, "freya_vs", "arug_cas01", "arug_cas02", "arug_cas03", "arug_cas04", "arug_cas05", "schg_cas01", "schg_cas02", "schg_cas03", "schg_cas04", "schg_cas05";
        .@len = getarraysize( .@checkmap$ );
        for ( .@i = 0; .@i < .@len; .@i++ ) {
            setmapflag .@checkmap$[.@i], mf_loadevent;
            setd "."+ .@checkmap$[.@i], 1;
        }
        end;
    }
     
    -    script    kjdhfkjshf    -1,{
    OnPCLoadMapEvent:
        if ( getmapflag( strcharinfo(3), mf_gvg_castle ) && ( agitcheck() || agitcheck2() )) {
        .@len = getarraysize($App_Guilds);
        for( .@i=0; .@i <= .@len; .@i++ ) {
            if( getcharid(2) == $App_Guilds[.@i] )
                set .@Guild_Check, .@Guild_Check+1;
        }
        if( .@Guild_Check < 1 ) {
            dispbottom "Your guild has not yet been approved, please contact the GMs";
            sleep2 3000;
            warp "SavePoint",0,0;
            end;
        }
        if( !getcharid(2) ) {
            dispbottom "Sorry only members of a guild may enter a castle.";
            sleep2 3000;
            warp "SavePoint",0,0;
            end;
        }
    }
        end;
    OnInit:
        setarray .castles$[0],
            "freya_vs","prtg_cas01","prtg_cas02","prtg_cas03","prtg_cas04","prtg_cas05",
            "payg_cas01","payg_cas02","payg_cas03","payg_cas04","payg_cas05",
            "gefg_cas01","gefg_cas02","gefg_cas03","gefg_cas04","gefg_cas05",
            "aldeg_cas01","aldeg_cas02","aldeg_cas03","aldeg_cas04","aldeg_cas05",
            "arug_cas01","arug_cas02","arug_cas03","arug_cas04","arug_cas05",
            "schg_cas01","schg_cas02","schg_cas03","schg_cas04","schg_cas05";
        for ( .@i = 0; .@i < 30; .@i++ )
            setmapflag .castles$[.@i], mf_loadevent;
        end;
    }

     

  15. 7 minutes ago, Scanty said:

    Exactly, what's the problem? i tested that script and it works as intended.

    hello sir i try to add my KOE maps here im using this script in woe map its working but in koe maps its not

     

    Quote


    sec_in01,179,176,5    script    KOEREG     833,{

    // this part registers the guild
        function sf {
            function s;
            .@a = getarg(2);
            .@len = getarg(3);
            return (
                sprintf( getarg(0),
                    s(.@a, .@len, getarg(1)), s(.@a++, .@len, getarg(1)),
                    s(.@a++, .@len, getarg(1)), s(.@a++, .@len, getarg(1)),
                    s(.@a++, .@len, getarg(1)), s(.@a++, .@len, getarg(1)), 
                    s(.@a++, .@len, getarg(1)), s(.@a++, .@len, getarg(1)), 
                    s(.@a++, .@len, getarg(1)), s(.@a++, .@len, getarg(1))
                )
                +(( .@a+1 < .@len )?":Next":":")
                +(( .@a-11 > 0 )?":Back":":")
                +":Cancel"
            );
            function s {
                if( getarg(0) >= getarg(1) ) return "";
                else {
                    .@name$ = getguildname(getelementofarray(getarg(2),getarg(0)));
                    return .@name$=="null"?"":.@name$;
                }
            };
        };
        function nex { return((getarg(0)+10)<getarg(1)?getarg(0)+10:getarg(1)-(getarg(1)%10)); };
        function bac { return((getarg(0)-10)>=0?getarg(0)-10:0); };

        if(getgmlevel()>=80 ) {
            mes .Npc_Name$;
            mes "Hello Mr. GM what would you like to do?";
            next;
            switch( select("Add/Remove Guilds:Clear Guild Data:Player Menu:Cancel") ) {
                case 1:
                    mes .Npc_Name$;
                    mes "Would you like to add or remove a guild?";
                    .@a_len = getarraysize($App_Guilds);
                    .@format$ = "%s:%s:%s:%s:%s:%s:%s:%s:%s:%s";
                    next;
                    if( select("Remove:Add") == 1 ) {
                        while( .@a != 9999 ) {
                            select( sf( .@format$, $App_Guilds, .@a, .@a_len ) );
                            switch( @menu ) {
                                case 11: .@a = nex( .@a, .@a_len ); break;
                                case 12: .@a = bac( .@a ); break;
                                case 13: end;
                                
                                default:
                                    .@select = .@a+@menu-1;
                                    mes .Npc_Name$;
                                    mes "You've selected ^0000FF["+getguildname($App_Guilds[.@select])+"]^000000 guild. Would you like to remove them from the accepted guilds?";
                                    next;
                                    if( select("Yes:No") == 1 ) {
                                        deletearray($App_Guilds[.@select],1);
                                        mes .Npc_Name$;
                                        mes "The guild has been removed!";
                                    }
                                    close;
                            }
                        }
                    } else {
                        mes .Npc_Name$;
                        mes "Please input guild name or masters name.";
                        next;
                        input(.@input$);
                        .@len = query_sql( "Select `guild_id` from `guild` where `name` like '%"+escape_sql(.@input$)+"%' or `master` like '%"+escape_sql(.@input$)+"%';",.@guild_id );
                        while( .@a != 9999 ) {
                            select( sf( .@format$, .@guild_id, .@a, .@len ) );
                            switch( @menu ) {
                                case 11: .@a = nex( .@a, .@len ); break;
                                case 12: .@a = bac( .@a ); break;
                                case 13: end;
                                
                                default:
                                    .@select = .@a+@menu-1;
                                    .@a_len = getarraysize($App_Guilds);
                                    for(.@b=0;.@b<.@a_len;.@b++)
                                        if( $App_Guilds[.@b]==.@guild_id[.@select] ) {
                                            mes .Npc_Name$;
                                            mes "You've selected ^0000FF["+getguildname(.@guild_id[.@select])+"]^000000 guild. I'm sorry but that guild has already been added to the accepted list.";
                                            close;
                                        }
                                    mes .Npc_Name$;
                                    mes "You've selected ^0000FF["+getguildname(.@guild_id[.@select])+"]^000000 guild. Would you like to add them to the accepted guilds?";
                                    next;
                                    if( select("Yes:No") == 1 ) {
                                        .@a_len = getarraysize($App_Guilds);
                                        if( .@a_len>=128 ) {
                                            mes .Npc_Name$;
                                            mes "I'm sorry but the accepted list is full please make some room and try again...";
                                        } else {
                                            mes .Npc_Name$;
                                            mes "The guild was successfully added!";
                                            $App_Guilds[.@a_len] = .@guild_id[.@select];
                                        }
                                    }
                                    close;
                            }
                        }
                    }
                case 2:
                    mes .Npc_Name$;
                    mes "Are you sure you want to clear the guild data?!";
                    next;
                    if( select("Yes!:No!")==1 ) {
                        mes .Npc_Name$;
                        mes "This is you last chance. Are you surely sure as sure can be?";
                        next;
                        if( select("Surly!:No, wait... Where am I?!!")==1 )
                            deletearray($App_Guilds);
                    }
                    if( @menu==1 ) {
                        mes .Npc_Name$;
                        mes "The deed is done...";
                    } else {
                        mes .Npc_Name$;
                        mes "Wow that was a close one... Have a nice day!";
                    }
                    close;
                    
                case 3: break;
                
                case 4:
                    mes .Npc_Name$;
                    mes "Alright, have a nice day!";
                    close;
            }
        }

        .@len = getarraysize($App_Guilds);
        for( .@i=0; .@i <= .@len; .@i++ ) {
            if( getcharid(2) == $App_Guilds[.@i] )
                set .@Guild_Check, .@Guild_Check+1;
        }

        
    // This part ejects players when they are in the map 
        OnPCLoadMapEvent:
        if( getcharid(2) == $App_Guilds[.@i] ){
        .count = 0;
        .@origin = getcharid(3);
        addrid 3, 0, getcharid(2);
        if ( strcharinfo(3) == .checkmap$ )
            .count++;
        if ( !.@origin ) end;
        if ( .count > 5 ) { // 5 means only 5 players per guild allowed in a map.
            message strcharinfo(0), "Your guild members are over the limit";
            sleep2 2000;
            warp "SavePoint", 0,0;
        }
        }
        end;
    OnInit:
        setarray .@checkmap$, "freya_vs", "ra_koe", "guild_vs1", "koe_grim", "arug_cas05", "schg_cas01", "schg_cas02", "schg_cas03", "schg_cas04", "schg_cas05";
        .@len = getarraysize( .@checkmap$ );
        for ( .@i = 0; .@i < .@size; .@i++ ) {
            setmapflag .@checkmap$[.@i], mf_loadevent;
            setd "."+ .@checkmap$[.@i], 1;
        }
        end;
    }

    -    script    KOEREGS    -1,{
    OnPCLoadMapEvent:
        if ( getmapflag( strcharinfo(3), mf_gvg_castle ) && ( agitcheck() || agitcheck2() )) {
        .@len = getarraysize($App_Guilds);
        for( .@i=0; .@i <= .@len; .@i++ ) {
            if( getcharid(2) == $App_Guilds[.@i] )
                set .@Guild_Check, .@Guild_Check+1;
        }
        if( .@Guild_Check < 1 ) {
            dispbottom "Your guild has not yet been approved, please contact the GMs";
            sleep2 3000;
            warp "SavePoint",0,0;
            end;
        }
        if( !getcharid(2) ) {
            dispbottom "Sorry only members of a guild may enter a castle.";
            sleep2 3000;
            warp "SavePoint",0,0;
            end;
        }
    }
        end;
    OnInit:
        setarray .castles$[0],
            "freya_vs","ra_koe","guild_vs1","koe_grim","prtg_cas05",
            "payg_cas01","payg_cas02","payg_cas03","payg_cas04","payg_cas05",
            "gefg_cas01","gefg_cas02","gefg_cas03","gefg_cas04","gefg_cas05",
            "aldeg_cas01","aldeg_cas02","aldeg_cas03","aldeg_cas04","aldeg_cas05",
            "arug_cas01","arug_cas02","arug_cas03","arug_cas04","arug_cas05",
            "schg_cas01","schg_cas02","schg_cas03","schg_cas04","schg_cas05";
        for ( .@i = 0; .@i < 30; .@i++ )
            setmapflag .castles$[.@i], mf_loadevent;
        end;
    }

     

  16. hello im trying to use this script in koe map example in ra_koe

    after adding the map in the script its not working how to modify it properly thank you!

     

    Quote

    //Modified by - PandaLovesHamster
    //Custom Guild Limiter
    //Credits to the owners of the individual makers of the script, I just tied them all together to create this script
     
    sec_in01,176,176,5    script    guilder     833,{
     
    // this part registers the guild
        function sf {
            function s;
            .@a = getarg(2);
            .@len = getarg(3);
            return (
                sprintf( getarg(0),
                    s(.@a, .@len, getarg(1)), s(.@a++, .@len, getarg(1)),
                    s(.@a++, .@len, getarg(1)), s(.@a++, .@len, getarg(1)),
                    s(.@a++, .@len, getarg(1)), s(.@a++, .@len, getarg(1)), 
                    s(.@a++, .@len, getarg(1)), s(.@a++, .@len, getarg(1)), 
                    s(.@a++, .@len, getarg(1)), s(.@a++, .@len, getarg(1))
                )
                +(( .@a+1 < .@len )?":Next":":")
                +(( .@a-11 > 0 )?":Back":":")
                +":Cancel"
            );
            function s {
                if( getarg(0) >= getarg(1) ) return "";
                else {
                    .@name$ = getguildname(getelementofarray(getarg(2),getarg(0)));
                    return .@name$=="null"?"":.@name$;
                }
            };
        };
        function nex { return((getarg(0)+10)<getarg(1)?getarg(0)+10:getarg(1)-(getarg(1)%10)); };
        function bac { return((getarg(0)-10)>=0?getarg(0)-10:0); };
     
        if(getgmlevel()>=80 ) {
            mes .Npc_Name$;
            mes "Hello Mr. GM what would you like to do?";
            next;
            switch( select("Add/Remove Guilds:Clear Guild Data:Player Menu:Cancel") ) {
                case 1:
                    mes .Npc_Name$;
                    mes "Would you like to add or remove a guild?";
                    .@a_len = getarraysize($App_Guilds);
                    .@format$ = "%s:%s:%s:%s:%s:%s:%s:%s:%s:%s";
                    next;
                    if( select("Remove:Add") == 1 ) {
                        while( .@a != 9999 ) {
                            select( sf( .@format$, $App_Guilds, .@a, .@a_len ) );
                            switch( @menu ) {
                                case 11: .@a = nex( .@a, .@a_len ); break;
                                case 12: .@a = bac( .@a ); break;
                                case 13: end;
     
                                default:
                                    .@select = .@a+@menu-1;
                                    mes .Npc_Name$;
                                    mes "You've selected ^0000FF["+getguildname($App_Guilds[.@select])+"]^000000 guild. Would you like to remove them from the accepted guilds?";
                                    next;
                                    if( select("Yes:No") == 1 ) {
                                        deletearray($App_Guilds[.@select],1);
                                        mes .Npc_Name$;
                                        mes "The guild has been removed!";
                                    }
                                    close;
                            }
                        }
                    } else {
                        mes .Npc_Name$;
                        mes "Please input guild name or masters name.";
                        next;
                        input(.@input$);
                        .@len = query_sql( "Select `guild_id` from `guild` where `name` like '%"+escape_sql(.@input$)+"%' or `master` like '%"+escape_sql(.@input$)+"%';",.@guild_id );
                        while( .@a != 9999 ) {
                            select( sf( .@format$, .@guild_id, .@a, .@len ) );
                            switch( @menu ) {
                                case 11: .@a = nex( .@a, .@len ); break;
                                case 12: .@a = bac( .@a ); break;
                                case 13: end;
     
                                default:
                                    .@select = .@a+@menu-1;
                                    .@a_len = getarraysize($App_Guilds);
                                    for(.@b=0;.@b<.@a_len;.@b++)
                                        if( $App_Guilds[.@b]==.@guild_id[.@select] ) {
                                            mes .Npc_Name$;
                                            mes "You've selected ^0000FF["+getguildname(.@guild_id[.@select])+"]^000000 guild. I'm sorry but that guild has already been added to the accepted list.";
                                            close;
                                        }
                                    mes .Npc_Name$;
                                    mes "You've selected ^0000FF["+getguildname(.@guild_id[.@select])+"]^000000 guild. Would you like to add them to the accepted guilds?";
                                    next;
                                    if( select("Yes:No") == 1 ) {
                                        .@a_len = getarraysize($App_Guilds);
                                        if( .@a_len>=128 ) {
                                            mes .Npc_Name$;
                                            mes "I'm sorry but the accepted list is full please make some room and try again...";
                                        } else {
                                            mes .Npc_Name$;
                                            mes "The guild was successfully added!";
                                            $App_Guilds[.@a_len] = .@guild_id[.@select];
                                        }
                                    }
                                    close;
                            }
                        }
                    }
                case 2:
                    mes .Npc_Name$;
                    mes "Are you sure you want to clear the guild data?!";
                    next;
                    if( select("Yes!:No!")==1 ) {
                        mes .Npc_Name$;
                        mes "This is you last chance. Are you surely sure as sure can be?";
                        next;
                        if( select("Surly!:No, wait... Where am I?!!")==1 )
                            deletearray($App_Guilds);
                    }
                    if( @menu==1 ) {
                        mes .Npc_Name$;
                        mes "The deed is done...";
                    } else {
                        mes .Npc_Name$;
                        mes "Wow that was a close one... Have a nice day!";
                    }
                    close;
     
                case 3: break;
     
                case 4:
                    mes .Npc_Name$;
                    mes "Alright, have a nice day!";
                    close;
            }
        }
     
        .@len = getarraysize($App_Guilds);
        for( .@i=0; .@i <= .@len; .@i++ ) {
            if( getcharid(2) == $App_Guilds[.@i] )
                set .@Guild_Check, .@Guild_Check+1;
        }
     
     
    // This part ejects players when they are in the map 
        OnPCLoadMapEvent:
        if( getcharid(2) == $App_Guilds[.@i] ){
        .count = 0;
        .@origin = getcharid(3);
        addrid 3, 0, getcharid(2);
        if ( strcharinfo(3) == .checkmap$ )
            .count++;
        if ( !.@origin ) end;
        if ( .count > 26 ) { // 26 means only 26 players per guild allowed in a map.
            message strcharinfo(0), "Your guild members are over the limit";
            sleep2 2000;
            warp "SavePoint", 0,0;
        }
        }
        end;
    OnInit:
        setarray .@checkmap$, "ra_koe", "arug_cas01", "arug_cas02", "arug_cas03", "arug_cas04", "arug_cas05", "schg_cas01", "schg_cas02", "schg_cas03", "schg_cas04", "schg_cas05";
        .@len = getarraysize( .@checkmap$ );
        for ( .@i = 0; .@i < .@size; .@i++ ) {
            setmapflag .@checkmap$[.@i], mf_loadevent;
            setd "."+ .@checkmap$[.@i], 1;
        }
        end;
    }
     
    -    script    kjdhfkjshf    -1,{
    OnPCLoadMapEvent:
        if ( getmapflag( strcharinfo(3), mf_gvg_castle ) && ( agitcheck() || agitcheck2() )) {
        .@len = getarraysize($App_Guilds);
        for( .@i=0; .@i <= .@len; .@i++ ) {
            if( getcharid(2) == $App_Guilds[.@i] )
                set .@Guild_Check, .@Guild_Check+1;
        }
        if( .@Guild_Check < 1 ) {
            dispbottom "Your guild has not yet been approved, please contact the GMs";
            sleep2 3000;
            warp "SavePoint",0,0;
            end;
        }
        if( !getcharid(2) ) {
            dispbottom "Sorry only members of a guild may enter a castle.";
            sleep2 3000;
            warp "SavePoint",0,0;
            end;
        }
    }
        end;
    OnInit:
        setarray .castles$[0],
            "ra_koe","prtg_cas01","prtg_cas02","prtg_cas03","prtg_cas04","prtg_cas05",
            "payg_cas01","payg_cas02","payg_cas03","payg_cas04","payg_cas05",
            "gefg_cas01","gefg_cas02","gefg_cas03","gefg_cas04","gefg_cas05",
            "aldeg_cas01","aldeg_cas02","aldeg_cas03","aldeg_cas04","aldeg_cas05",
            "arug_cas01","arug_cas02","arug_cas03","arug_cas04","arug_cas05",
            "schg_cas01","schg_cas02","schg_cas03","schg_cas04","schg_cas05";
        for ( .@i = 0; .@i < 30; .@i++ )
            setmapflag .castles$[.@i], mf_loadevent;
        end;
    }

     

×
×
  • Create New...