Jump to content

Winter1992

Members
  • Posts

    60
  • Joined

  • Last visited

Posts posted by Winter1992

  1. Hi im looking for this map zephyrus made 

    anyone have it ?? please share it 
    is it a open source right ? please thanks
     

    map: bat_a03
    map: bat_a04
    map: bat_a05
    map: bat_b03
    map: bat_b04
    map: bat_b05
    map: schg_cas06
    map: schg_cas07
    map: schg_cas08
    map: arug_cas06
    map: arug_cas07
    map: arug_cas08
    map: rush_cas01
    map: rush_cas02
    map: rush_cas03
    map: rush_cas04
    map: bat_c03
    map: bat_c04
    map: bat_c05
    map: bat_c06
    map: bat_c07
    map: bat_c08
    map: region_8
     
  2. All working for this script on Rathena this originally made by hercules but i want to use it to rathena svn 

     

    Working all function Except Online Account / Online Character

    Anyone Can Help me ? Here 's the script 
     

    
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    geffen,108,54,4 script Item Giver 4_M_KNIGHT_BLACK,{
    //cutin "v_sprakki04",2;
    //Check if setups are loaded.
    if(!.Setup) {
    callsub OnLoadSetup;
    }
    
    //Show GM Panel if player is GM.
    if(getgmlevel() >= .GMin) menu("Take a prize as a player",-,"Give prize",OnManagement,"Reset Item Give",OnDelete,"IP Limit per Item",OnLimit);
    
    //Read attached player gifts from SQL table.
    if(select("Get Account Prize!:Get Character Prize!:Exit") == 1) {
    set .@query, query_sql("SELECT * FROM `" + .GiftTableName$ + "` WHERE account_id="+getcharid(3), .@gift_id, .@gift_account, .@gift_char, .@gift_item, .@gift_amount, .@gift_duration, .@gift_time, .@gift_bound); //Account gifts.
    } else if(@menu == 2) {
    set .@query, query_sql("SELECT * FROM `" + .GiftTableName$ + "` WHERE char_id="+getcharid(0), .@gift_id, .@gift_account, .@gift_char, .@gift_item, .@gift_amount, .@gift_duration, .@gift_time, .@gift_bound); //Char gifts.
    } else goto OnLeave;
    
    //Check if player don't have gifts.
    if(!.@query) {
    mes "[Reward Giver]";
    mes "Sorry, you don't have any prize";
    cutin "v_sprakki04",255;
    close;
    }
    
    //Build menu from query arrays.
    mes "[" + strnpcinfo(1) + "]";
    mes "^009900You got the prize^000000";
    for(set .@i, 0; .@i < .@query; set .@i, .@i + 1) {
    mes "(" + .@gift_amount[.@i] + ") " + getitemname(.@gift_item[.@i]) + ".";
    set .@menu$, .@menu$ + getitemname(.@gift_item[.@i]) + ":";
    }
    next;
    set .@mid,select(.@menu$); //Show menu.
    set .@mid,.@mid-1;
    
    if (.@gift_time[.@mid] && .@gift_time[.@mid] < gettimetick(2)) {
    mes "[Reward Giver]";
    mes "Sorry, this prize's claim time is already over.";
    cutin "v_sprakki04",255;
    close;
    }
    //Item is now selected. Choose what you want to do with it.
    mes "[" + strnpcinfo(1) + "]";
    mes "what you want do with (" + .@gift_amount[.@mid] + ") " + getitemname(.@gift_item[.@mid]) + "?";
    next;
    set .@Select,select("^009900Get it^000000:^ff0000Delete it! ^000000:nothings");
    
    //Receive gift selected.
    if(.@Select == 1) {
    //Check weight.
    if(checkweight( .@gift_item, .@gift_amount ) || .@gift_item[.@mid] == .ZenyID) {
    mes "[" + strnpcinfo(1) + "]";
    mes "^009900Get : (" + .@gift_amount[.@mid] + ") " + getitemname(.@gift_item[.@mid]) + ".^000000";
    if (.ip_limit) {
    // add ip_address to logs
    .@ipexist = query_sql("SELECT item_id, ip_address, claim_count FROM " + .GiftTableNameIP$ + " WHERE ip_address = '"+getcharip()+"' AND item_id = "+.@gift_item[.@mid]+" LIMIT 1", .@item,.@ip,.@claim_count);
    if (.@claim_count[0] >= .ip_limit) {
    next;
    mes "Sorry you have reached the maximum redeem limit for this IP address";
    cutin "v_sprakki04",255;
    close;
    }
    if (!.@claim_count[0]) {
    query_sql("INSERT INTO " + .GiftTableNameIP$ + " (give_id,item_id,ip_address,claim_count) VALUES("+.@gift_id+","+.@gift_item+",'"+getcharip()+"',1)");
    } else {
    query_sql("UPDATE " + .GiftTableNameIP$ + " SET claim_count = "+(.@claim_count[0]+1)+" WHERE item_id = "+.@gift_item[.@mid]+" AND ip_address = '"+getcharip()+"'");
    }
    }
    if (.@gift_item[.@mid] == .ZenyID) { // detects zeny ID and give zeny.
    if (Zeny+.@gift_amount[.@mid] > .MaxZeny) {
    mes "Please make sure that you have enough space to handle all these zennies and come back later.";
    cutin "v_sprakki04",255;
    close;
    }
    set Zeny,Zeny+.@gift_amount[.@mid];
    } else {
    
    if (.@gift_bound[.@mid]) {
    getitembound .@gift_item[.@mid], .@gift_amount[.@mid], 1;
    } else if (!.@gift_duration) {
    getitem .@gift_item[.@mid], .@gift_amount[.@mid]; //Give item to player.
    } else {
    rentitem .@gift_item[.@mid], .@gift_duration * 60; 
    }
    }
    query_sql( "DELETE FROM `" + .GiftTableName$ + "` WHERE id = " + .@gift_id[.@mid] ); //Remove item from table.
    cutin "v_sprakki04",255;
    close;
    } else {
    //Overweight
    mes "^ff0000Sorry ^000000 You can't take it " + getitemname(.@gift_item[.@mid]);
    mes "Could lose some wight?";
    cutin "v_sprakki04",255;
    close;
    }
    }
    
    //Remove gift selected.
    else if(.@Select == 2) {
    mes "[" + strnpcinfo(1) + "]";
    mes "Are you sure you want dellet it?";
    mes "Gift: ("+.@gift_amount[.@mid]+") "+getitemname(.@gift_item[.@mid])+".";
    next;
    if(select("Yes:No") == 1) {
    mes "[" + strnpcinfo(1) + "]";
    mes "^ff0000Dellet: ("+.@gift_amount[.@mid]+") "+getitemname(.@gift_item[.@mid])+".^000000";
    query_sql("DELETE FROM `" + .GiftTableName$ + "` WHERE id = " + .@gift_id[.@mid]); //Remove item from table.
    cutin "v_sprakki04",255;
    close;
    } else {
    mes "[" + strnpcinfo(1) + "]";
    mes "we will save it";
    cutin "v_sprakki04",255;
    close;
    }
    }
    
    //Nothing selected.
    else {
    goto OnLeave;
    }
    
    //GM Panel below:
    OnManagement:
    if(getgmlevel() < .GMin) goto OnLeave;
    mes "[" + strnpcinfo(1) + "]";
    mes "Welvome " + strcharinfo(0) + "!";
    mes "How I can help you?";
    next;
    if(select("Make Gift:Nothing") != 1) goto OnLeave;
    //Make new gift.
    mes "[" + strnpcinfo(1) + "]";
    mes "Please input the item id.";
    mes "Default: 501";
    next;
    mes "What do you want to give?";
    set .@zenygive,0;
    if(select("Item:Zeny") == 1){
    //item_id range of 501 to 30,000.
    input .@new_item, 501, 30000;
    next;
    mes "Do you want to make this a bound item?";
    .@boption = select("No:Expire Bound:Normal Bound");
    if(.@boption == 2) {
    next;
    mes "Please tell me the duration in minutes";
    input(.@duration);
    } else if (.@boption == 3) {
    next;
    mes "Normal bound, selected.";
    .@nbound = 1;
    }
    } else {
    set .@new_item, .ZenyID;
    set .@zenygive,1;
    }
    next;
    mes "Do you want to add a claim timer?";
    if(select("No:Yes")==2) {
    next;
    mes "How many minutes do you want this reward to be claimable?";
    input(.@c);
    .@claimtime = gettimetick(2)+(.@c*60);
    }
    if(select("Continue:Cancel") != 1) goto OnLeave;
    mes "[" + strnpcinfo(1) + "]";
    mes "How many items/zeny?";
    mes "Default: 1";
    next;
    //item quantity range of 1 to 1,000.
    if(.@zenygive){
    input .@new_value, 1, .MaxZeny;
    } else {
    input .@new_value, 1, 1000;
    }
    if (.@duration && .@new_value > 1) {
    mes "You can only give 1 item bound at a time and please make sure that it is an equipment";
    close;
    }
    
    if(select("Continue:Cancel") != 1) goto OnLeave;
    mes "[" + strnpcinfo(1) + "]";
    mes "Please select input type:";
    mes "1. Single Account";
    mes "2. Single Character";
    mes "3. All ^009900Online^000000 Accounts.";
    mes "4. All Accounts.";
    mes "5. All ^009900Online^000000 Players/Characters.";
    mes "6. All Players/Characters.";
    mes "7. ^ff0000Cancel.^000000";
    next;
    switch(select("Single Account:Single Character:^009900Online^000000 Accounts:All Accounts:^009900Online^000000 Characters:All Characters:Cancel"))
    {
    //Account gift
    case 1:
    mes "[" + strnpcinfo(1) + "]";
    mes "Please select input type:";
    mes "By AID or Name?";
    next;
    if(select("Account ID:Character Name") == 1)
    {
    mes "[" + strnpcinfo(1) + "]";
    mes "Write account id:";
    next;
    input .@new_account, 2000000, 10000000; //Account id range from 2m to 10m.
    set .@query, query_sql("SELECT account_id FROM `" + .CharTableName$ + "` WHERE account_id = " + .@new_account, .@new_account);
    if(!.@query) goto OnNotExist;
    if(select("Continue:Cancel") != 1) goto OnLeave;
    mes "[" + strnpcinfo(1) + "]";
    mes "^009900Gift is ready to go!^000000";
    mes "AID: ^ff0000" + .@new_account + "^000000";
    mes "------------------";
    mes "Item: ^ff0000" + getitemname(.@new_item) + "^000000";
    mes "Quantity: ^ff0000" + .@new_value + "^000000";
    mes "Duration: " + .@duration + " Minutes";
    mes "Claim Time: " + .@c + " Minutes";
    mes "Normal Bound: " + .@nbound;
    next;
    if(select("Send Gift:Cancel") != 1) goto OnLeave;
    mes "[" + strnpcinfo(1) + "]";
    mes "Gift sending success!";
    //Create gift. <auto_id>, <account_id> <char_id> <item> <value>
    query_sql("INSERT INTO `" + .GiftTableName$ + "` (account_id, item, value, duration, timestamp, bound) VALUES(" + .@new_account + ", " + .@new_item + ", " + .@new_value + ", " + .@duration + ", " + .@claimtime + ", " + .@nbound + ")");
    
    } else {
    mes "[" + strnpcinfo(1) + "]";
    mes "Write player name:";
    next;
    input .@new_name$;
    set .@query, query_sql("SELECT account_id FROM `" + .CharTableName$ + "` WHERE name = '" + .@new_name$ + "'", .@new_account);
    if(!.@query) goto OnNotExist;
    if(select("Continue:Cancel") != 1) goto OnLeave;
    mes "[" + strnpcinfo(1) + "]";
    mes "^009900Gift is ready to go!^000000";
    mes "AID: ^ff0000" + .@new_account + "^000000";
    mes "Name: ^ff0000"+ .@new_name$ + "^000000";
    mes "------------------";
    mes "Item: ^ff0000" + getitemname(.@new_item) + "^000000";
    mes "Quantity: ^ff0000" + .@new_value + "^000000";
    mes "Duration: " + .@duration + " Minutes";
    mes "Claim Time: " + .@c + " Minutes";
    mes "Normal Bound: " + .@nbound;
    next;
    if(select("Send Gift:Cancel") != 1) goto OnLeave;
    //Check if player is logged in.
    if(isloggedin(.@new_account)) {
    mes "[" + strnpcinfo(1) + "]";
    mes "Gift sending success!";
    query_sql("INSERT INTO `" + .GiftTableName$ + "` (account_id, item, value, duration, timestamp, bound) VALUES(" + .@new_account + ", " + .@new_item + ", " + .@new_value + ", " + .@duration + ", " + .@claimtime + ", " + .@nbound + ")");
    } else {
    //Account was not online.
    mes "[" + strnpcinfo(1) + "]";
    mes "Gift sending success!";
    query_sql("INSERT INTO `" + .GiftTableName$ + "` (account_id, item, value, duration, timestamp, bound) VALUES(" + .@new_account + ", " + .@new_item + ", " + .@new_value + ", " + .@duration + ", " + .@claimtime + ", " + .@nbound + ")"); // duplicate to other menus - continue here on giver side
    }
    }
    break;
    
    //Character gift.
    case 2:
    mes "[" + strnpcinfo(1) + "]";
    mes "Please select input type:";
    mes "By CID or Name?";
    next;
    if(select("Character ID:Character Name") == 1)
    {
    mes "[" + strnpcinfo(1) + "]";
    mes "Write character id:";
    next;
    input .@new_char,150000, 10000000; //Char id range from 150k to 10m.
    set .@query, query_sql("SELECT account_id, name FROM `" + .CharTableName$ + "` WHERE char_id = " + .@new_char, .@new_accountid, .@new_name$);
    if(!.@query) goto OnNotExist;
    if(select("Continue:Cancel") != 1) goto OnLeave;
    mes "[" + strnpcinfo(1) + "]";
    mes "^009900Gift is ready to go!^000000";
    mes "CID: ^ff0000" + .@new_char + "^000000";
    mes "Name: ^ff0000" + .@new_name$ + "^000000";
    mes "------------------";
    mes "Item: ^ff0000" + getitemname(.@new_item) + "^000000";
    mes "Quantity: ^ff0000" + .@new_value + "^000000";
    mes "Duration: " + .@duration + " Minutes";
    mes "Claim Time: " + .@c + " Minutes";
    mes "Normal Bound: " + .@nbound;
    next;
    if(select("Send Gift:Cancel") != 1) goto OnLeave;
    //Check if player is logged in.
    if(isloggedin(.@new_accountid)) {
    mes "[" + strnpcinfo(1) + "]";
    mes "Gift sending success!";
    
    //Create gift. <auto_id>, <account_id> <char_id> <item> <value>
    query_sql("INSERT INTO `" + .GiftTableName$ + "` (char_id, item, value, duration, timestamp, bound) VALUES (" + .@new_char + ", " + .@new_item + ", " + .@new_value + "," + .@duration + "," + .@claimtime + ", " + .@nbound + ")");
    } else {
    //not online ask if we still give the gift.
    mes "[" + strnpcinfo(1) + "]";
    mes "The character is not online!";
    mes "Would you still like to send the gift?";
    next;
    if(select("Yes:No") != 1) goto OnLeave;
    mes "[" + strnpcinfo(1) + "]";
    mes "Gift sending success!";
    //Create gift. <auto_id>, <account_id> <char_id> <item> <value>
    query_sql("INSERT INTO `" + .GiftTableName$ + "` (char_id, item, value, duration, timestamp, bound) VALUES (" + .@new_char + ", " + .@new_item + ", " + .@new_value + "," + .@duration + "," + .@claimtime + ", " + .@nbound + ")");
    }
    
    } else {
    mes "[" + strnpcinfo(1) + "]";
    mes "Write player name:";
    next;
    input .@new_name$;
    set .@query, query_sql("SELECT char_id, account_id FROM `" + .CharTableName$ + "` WHERE name = '" + .@new_name$ + "'", .@new_char, .@new_accountid);
    if(!.@query) goto OnNotExist;
    if(select("Continue:Cancel") != 1) goto OnLeave;
    mes "[" + strnpcinfo(1) + "]";
    mes "^009900Gift is ready to go!^000000";
    mes "CID: ^ff0000" + .@new_char + "^000000";
    mes "Name: ^ff0000"+ .@new_name$ + "^000000";
    mes "------------------";
    mes "Item: ^ff0000" + getitemname(.@new_item) + "^000000";
    mes "Quantity: ^ff0000" + .@new_value + "^000000";
    mes "Duration: " + .@duration + " Minutes";
    mes "Claim Time: " + .@c + " Minutes";
    mes "Normal Bound: " + .@nbound;
    next;
    if(select("Send Gift:Cancel") != 1) goto OnLeave;
    //Check if player is logged in.
    if(isloggedin(.@new_accountid)) {
    mes "[" + strnpcinfo(1) + "]";
    mes "Gift sending success!";
    query_sql("INSERT INTO `" + .GiftTableName$ + "` (char_id, item, value, duration, timestamp, bound) VALUES (" + .@new_char + ", " + .@new_item + ", " + .@new_value + "," + .@duration + "," + .@claimtime + ", " + .@nbound + ")");
    } else {
    //not online ask if we still give the gift.
    mes "[" + strnpcinfo(1) + "]";
    mes "The character is not online!";
    mes "Would you still like to give the gift?";
    next;
    if(select("Yes:No") != 1) goto OnLeave;
    mes "[" + strnpcinfo(1) + "]";
    mes "Gift sending success!";
    //Create gift. <auto_id>, <account_id> <char_id> <item> <value>
    query_sql("INSERT INTO `" + .GiftTableName$ + "` (char_id, item, value, duration, timestamp, bound) VALUES (" + .@new_char + ", " + .@new_item + ", " + .@new_value + "," + .@duration + "," + .@claimtime + ", " + .@nbound + ")");
    }
    }
    announce strcharinfo(0)+" successfully sent " + .@new_value + "x " + getitemname(.@new_item) + " to " + .@new_name$,bc_all;
    break;
    
    //Register gift to all online accounts!
    case 3:
    mes "[" + strnpcinfo(1) + "]";
    mes "^009900Gift is ready to go!^000000";
    mes "Item: ^ff0000" + getitemname(.@new_item) + "^000000";
    mes "Quantity: ^ff0000" + .@new_value + "^000000";
    mes "Duration: " + .@duration + " Minutes";
    mes "Claim Time: " + .@c + " Minutes";
    mes "Normal Bound: " + .@nbound;
    next;
    if(select("Send Gift:Cancel") != 1) goto OnLeave;
    mes "[" + strnpcinfo(1) + "]";
    mes "Please hold...";
    set .@c, 0; //Counting success.
    set .@query, query_sql("SELECT account_id FROM `"+.CharTableName$+"` WHERE online=1",.@account);
    for(set .@i, 0; .@i < .@query; set .@i, .@i + 1) {
    sleep2 25; //Slowdown the loop abit.
    .@at = query_sql("SELECT account_id, char_id FROM "+$GiftTableNameAT$+" WHERE account_id = "+.@account[.@i]+"", .@account_id, .@char_id); // check if in the table
    if (!.@at) {
    query_sql("INSERT INTO `" + .GiftTableName$ + "` (account_id, item, value, duration, timestamp, bound) VALUES(" + .@account[.@i] + ", " + .@new_item + ", " + .@new_value + ", " + .@duration + ", " + .@claimtime + ", " + .@nbound + ")");
    }
    }
    mes "Gift registered to (" + .@i + ") accounts!";
    break;
    
    //Register gift to all accounts!
    case 4:
    mes "[" + strnpcinfo(1) + "]";
    mes "^009900Gift is ready to go!^000000";
    mes "Item: ^ff0000" + getitemname(.@new_item) + "^000000";
    mes "Quantity: ^ff0000" + .@new_value + "^000000";
    mes "Claim Time: " + .@c + " Minutes";
    mes "Normal Bound: " + .@nbound;
    next;
    if(select("Send Gift:Cancel") != 1) goto OnLeave;
    mes "[" + strnpcinfo(1) + "]";
    mes "Please hold...";
    set .@query, query_sql("SELECT account_id FROM `"+.LoginTableName$+"`",.@account);
    for(set .@i, 0; .@i < .@query; set .@i, .@i + 1) {
    sleep2 25; //Slowdown the loop abit.
    query_sql("INSERT INTO `" + .GiftTableName$ + "` (account_id, item, value, duration, timestamp, bound) VALUES(" + .@account[.@i] + ", " + .@new_item + ", " + .@new_value + ", " + .@duration + ", " + .@claimtime + ", " + .@nbound + ")");
    }
    mes "Gift registered to (" + .@i + ") accounts!";
    break;
    
    //Register gift to all online characters!
    case 5:
    mes "[" + strnpcinfo(1) + "]";
    mes "^009900Gift is ready to go!^000000";
    mes "Item: ^ff0000" + getitemname(.@new_item) + "^000000";
    mes "Quantity: ^ff0000" + .@new_value + "^000000";
    mes "Claim Time: " + .@c + " Minutes";
    mes "Normal Bound: " + .@nbound;
    next;
    if(select("Send Gift:Cancel") != 1) goto OnLeave;
    mes "[" + strnpcinfo(1) + "]";
    mes "Please hold...";
    set .@c, 0; //Counting success.
    set .@query, query_sql("SELECT char_id FROM `"+.CharTableName$+"` WHERE online=1",.@char);
    for(set .@i, 0; .@i < .@query; set .@i, .@i + 1) {
    sleep2 25; //Slowdown the loop abit.
    .@at = query_sql("SELECT account_id, char_id FROM "+$GiftTableNameAT$+" WHERE char_id = "+.@char[.@i]+"", .@account_id, .@char_id); // check if in the table
    if (!.@at) {
    query_sql("INSERT INTO `" + .GiftTableName$ + "` (char_id, item, value, duration, timestamp, bound) VALUES (" + .@char[.@i] + ", " + .@new_item + ", " + .@new_value + "," + .@duration + "," + .@claimtime + ", " + .@nbound + ")");
    }
    }
    mes "Gift registered to (" + .@i + ") players!";
    break;
    
    //Register gift to all characters!
    case 6:
    mes "[" + strnpcinfo(1) + "]";
    mes "^009900Gift is ready to go!^000000";
    mes "Item: ^ff0000" + getitemname(.@new_item) + "^000000";
    mes "Quantity: ^ff0000" + .@new_value + "^000000";
    mes "Claim Time: " + .@c + " Minutes";
    mes "Normal Bound: " + .@nbound;
    next;
    if(select("Send Gift:Cancel") != 1) goto OnLeave;
    mes "[" + strnpcinfo(1) + "]";
    mes "Please hold...";
    set .@query, query_sql("SELECT char_id FROM `"+.CharTableName$+"`",.@char);
    for(set .@i, 0; .@i < .@query; set .@i, .@i + 1) {
    sleep2 25; //Slowdown the loop abit.
    query_sql("INSERT INTO `" + .GiftTableName$ + "` (char_id, item, value, duration, timestamp, bound) VALUES (" + .@char[.@i] + ", " + .@new_item + ", " + .@new_value + "," + .@duration + "," + .@claimtime + ", " + .@nbound + ")");
    }
    mes "Gift registered to (" + .@i + ") players!";
    break;
    
    //Cancel.
    Default:
    mes "[Reward Giver]";
    mes "See you later";
    break;
    }
    close;
    
    OnLeave:
    mes "[Reward Giver]";
    mes "See you later";
    cutin "v_sprakki04",255;
    close;
    
    OnNotExist:
    mes "[" + strnpcinfo(1) + "]";
    mes "This account does not exist!";
    cutin "v_sprakki04",255;
    close;
    
    //============Reset Function=========================
    OnDelete:
    mes "Which gifts do you want to reset?";
    mes "1. Single Account";
    mes "2. Single Character";
    mes "3. All ^009900Online^000000 Accounts.";
    mes "4. All Accounts.";
    mes "5. All ^009900Online^000000 Players/Characters.";
    mes "6. All Players/Characters.";
    mes "7. All cancel";
    switch(select("Single Account:Single Character:^009900Online^000000 Accounts:All Accounts:^009900Online^000000 Characters:All Characters:Specific Item:IPLimit Logs:Cancel")) {
    case 1: //Single Account
    mes "[" + strnpcinfo(1) + "]";
    mes "Please select input type:";
    mes "By AID or Name?";
    next;
    if(select("Account ID:Character Name") == 1) {
    mes "[" + strnpcinfo(1) + "]";
    mes "Write account id:";
    next;
    input .@new_account, 2000000, 10000000; //Account id range from 2m to 10m.
    set .@query, query_sql("SELECT account_id FROM `" + .CharTableName$ + "` WHERE account_id = " + .@new_account, .@new_account);
    if(!.@query) goto OnNotExist;
    if(select("Continue:Cancel") != 1) goto OnLeave;
    query_sql("DELETE FROM " + .GiftTableName$ + " WHERE account_id = " + .@new_account);
    } else {
    mes "[" + strnpcinfo(1) + "]";
    mes "Write player name:";
    next;
    input .@new_name$;
    set .@query, query_sql("SELECT account_id FROM `" + .CharTableName$ + "` WHERE name = '" + .@new_name$ + "'", .@new_account);
    if(!.@query) goto OnNotExist;
    if(select("Continue:Cancel") != 1) goto OnLeave;
    query_sql("DELETE FROM " + .GiftTableName$ + " WHERE account_id = " + .@new_account);
    }
    break;
    case 2: //Single Character
    mes "[" + strnpcinfo(1) + "]";
    mes "Please select input type:";
    mes "By CID or Name?";
    next;
    if(select("Character ID:Character Name") == 1)
    {
    mes "[" + strnpcinfo(1) + "]";
    mes "Write character id:";
    next;
    input .@new_char,150000, 10000000; //Char id range from 150k to 10m.
    set .@query, query_sql("SELECT account_id, name FROM `" + .CharTableName$ + "` WHERE char_id = " + .@new_char, .@new_accountid, .@new_name$);
    if(!.@query) goto OnNotExist;
    if(select("Continue:Cancel") != 1) goto OnLeave;
    query_sql("DELETE FROM " + .GiftTableName$ + " WHERE char_id = " + .@new_char);
    } else {
    mes "[" + strnpcinfo(1) + "]";
    mes "Write player name:";
    next;
    input .@new_name$;
    set .@query, query_sql("SELECT char_id, account_id FROM `" + .CharTableName$ + "` WHERE name = '" + .@new_name$ + "'", .@new_char, .@new_accountid);
    if(!.@query) goto OnNotExist;
    if(select("Continue:Cancel") != 1) goto OnLeave;
    query_sql("DELETE FROM " + .GiftTableName$ + " WHERE char_id = " + .@new_char);
    }
    break;
    case 3: //All Online Accounts.
    mes "[" + strnpcinfo(1) + "]";
    mes "Please hold...";
    set .@c, 0; //Counting success.
    set .@query, query_sql("SELECT account_id FROM `"+.CharTableName$+"` WHERE online=1",.@account);
    for(set .@i, 0; .@i < .@query; set .@i, .@i + 1) {
    sleep2 25; //Slowdown the loop abit.
    query_sql("DELETE FROM " + .GiftTableName$ + " WHERE account_id = " + .@account[.@i]);
    }
    break;
    case 4: //All Accounts.
    query_sql("DELETE FROM " + .GiftTableName$ + " WHERE account_id >= 1");
    break;
    case 5: //All Online Players/Characters.
    mes "[" + strnpcinfo(1) + "]";
    mes "Please hold...";
    set .@c, 0; //Counting success.
    set .@query, query_sql("SELECT char_id FROM `"+.CharTableName$+"` WHERE online=1",.@char);
    for(set .@i, 0; .@i < .@query; set .@i, .@i + 1) {
    sleep2 25; //Slowdown the loop abit.
    query_sql("DELETE FROM " + .GiftTableName$ + " WHERE char_id = " + .@char[.@i]);
    }
    break;
    case 6: //All Players/Characters.
    query_sql("TRUNCATE TABLE " + .GiftTableName$);
    break;
    case 7: // Delete specific item
    mes "Please type the id of the item you wish to delete";
    mes "This will delete all entries with the item id you typed";
    input(.@deletethis);
    next;
    mes "Are you sure you want to delete all entries of " + .@deletethis;
    if (select("Yes:No")==1) {
    query_sql("DELETE FROM " + .GiftTableName$ + " WHERE item = " + .@deletethis + "");
    } else {
    mes "Deletion cancelled";
    close;
    }
    case 8: //All ip logs
    query_sql("TRUNCATE TABLE " + .GiftTableNameIP$);
    break;
    default:
    break;
    }
    next;
    mes "deletion finished";
    cutin "v_sprakki04",255;
    close;
    
    OnLimit:
    mes "Please enter an ip limit, current limit is " + .ip_limit;
    input(.ip_limit);
    mes "Done!";
    cutin "v_sprakki04",255;
    close;
    
    //============================================================ 
    // Config/Edit:
    //============================================================ 
    OnLoadSetup:
    set .Setup, 1; //OnInit is loaded check.
    set .GMin, 60; //Minimum GM level to use gm panel.
    set .ZenyID,23500; // put this when asked for which item to give zeny.
    set .MaxZeny,1000000000;
    //Your table names:
    set .CharTableName$, "char"; //Character table name(SQL).
    set .LoginTableName$, "login";
    set .GiftTableName$, "reward"; //Gift table name(SQL).
    set .GiftTableNameIP$, "reward_ip"; //Gift table name for ip tracker
    set $GiftTableNameAT$, "reward_at"; //Gift table name for auto trade tracker
    //Create gift table <auto_id>, <account_id>, <char_id>, <item>, <value>
    
    query_sql("CREATE TABLE IF NOT EXISTS `reward` (`id` int(11) NOT NULL AUTO_INCREMENT,`account_id` int(11) unsigned NOT NULL DEFAULT '0',`char_id` int(11) unsigned NOT NULL DEFAULT '0',`item` int(11) NOT NULL DEFAULT '0',`value` int(11) NOT NULL DEFAULT '0',`duration` int(11) NOT NULL DEFAULT '0',`timestamp` int(23) NOT NULL DEFAULT '0',`bound` int(1) NOT NULL DEFAULT '0',PRIMARY KEY (`id`))");
    
    query_sql("CREATE TABLE IF NOT EXISTS `reward_ip` ( `give_id` int(11) NOT NULL,  `item_id` int(11) NOT NULL,  `ip_address` varchar(23) NOT NULL, `claim_count` int(11) NOT NULL,  PRIMARY KEY (`give_id`))");
    
    query_sql("CREATE TABLE IF NOT EXISTS `reward_at` (`account_id` int(11) NOT NULL,`char_id` int(11) NOT NULL)");
    
    return;
    
    OnInit:
    callsub OnLoadSetup;
    end;
    }
    
    /* Manual table update for at tracker 
    CREATE TABLE IF NOT EXISTS `reward_at` (
      `account_id` int(11) NOT NULL,
      `char_id` int(11) NOT NULL
    );
    */
    - script anti_trader -1,{
    
    OnInit:
    .is_anti_trade = 1; // 0 to disable
    end;
    
    }
    function script PG_30Seconds {
    //dispbottom "anti trader 30sec";
    //Check if Vending (normal or @at)
    if(checkvending() >= 1) {
      // mark as auto trader
      .@query = query_sql("SELECT account_id, char_id FROM "+$GiftTableNameAT$+" WHERE account_id = "+getcharid(3)+"", .@account_id, .@char_id); // check if in the table
    if (!.@query) { // add if not there yet
    query_sql("INSERT INTO "+$GiftTableNameAT$+"(account_id,char_id) VALUES("+getcharid(3)+","+getcharid(0)+")");
    //dispbottom "you have been marked as auto trader";
    stopnpctimer;
    detachnpctimer;
    end;
    }
    }
    return;
    }
    function script PG_Login {
    //dispbottom "at delete";
    .@query = query_sql("SELECT account_id, char_id FROM "+$GiftTableNameAT$+" WHERE account_id = "+getcharid(3)+"", .@account_id, .@char_id); // check if in the table
    if (.@query) { // remove to reverify vending status
    query_sql("DELETE FROM "+$GiftTableNameAT$+" WHERE account_id = "+getcharid(3)+"");
    }
    }
    geffen,108,54,4 script Item Giver 4_M_KNIGHT_BLACK,{
    //cutin "v_sprakki04",2;
    //Check if setups are loaded.
    if(!.Setup) {
    callsub OnLoadSetup;
    }
    
    //Show GM Panel if player is GM.
    if(getgmlevel() >= .GMin) menu("Take a prize as a player",-,"Give prize",OnManagement,"Reset Item Give",OnDelete,"IP Limit per Item",OnLimit);
    
    //Read attached player gifts from SQL table.
    if(select("Get Account Prize!:Get Character Prize!:Exit") == 1) {
    set .@query, query_sql("SELECT * FROM `" + .GiftTableName$ + "` WHERE account_id="+getcharid(3), .@gift_id, .@gift_account, .@gift_char, .@gift_item, .@gift_amount, .@gift_duration, .@gift_time, .@gift_bound); //Account gifts.
    } else if(@menu == 2) {
    set .@query, query_sql("SELECT * FROM `" + .GiftTableName$ + "` WHERE char_id="+getcharid(0), .@gift_id, .@gift_account, .@gift_char, .@gift_item, .@gift_amount, .@gift_duration, .@gift_time, .@gift_bound); //Char gifts.
    } else goto OnLeave;
    
    //Check if player don't have gifts.
    if(!.@query) {
    mes "[Reward Giver]";
    mes "Sorry, you don't have any prize";
    cutin "v_sprakki04",255;
    close;
    }
    
    //Build menu from query arrays.
    mes "[" + strnpcinfo(1) + "]";
    mes "^009900You got the prize^000000";
    for(set .@i, 0; .@i < .@query; set .@i, .@i + 1) {
    mes "(" + .@gift_amount[.@i] + ") " + getitemname(.@gift_item[.@i]) + ".";
    set .@menu$, .@menu$ + getitemname(.@gift_item[.@i]) + ":";
    }
    next;
    set .@mid,select(.@menu$); //Show menu.
    set .@mid,.@mid-1;
    
    if (.@gift_time[.@mid] && .@gift_time[.@mid] < gettimetick(2)) {
    mes "[Reward Giver]";
    mes "Sorry, this prize's claim time is already over.";
    cutin "v_sprakki04",255;
    close;
    }
    //Item is now selected. Choose what you want to do with it.
    mes "[" + strnpcinfo(1) + "]";
    mes "what you want do with (" + .@gift_amount[.@mid] + ") " + getitemname(.@gift_item[.@mid]) + "?";
    next;
    set .@Select,select("^009900Get it^000000:^ff0000Delete it! ^000000:nothings");
    
    //Receive gift selected.
    if(.@Select == 1) {
    //Check weight.
    if(checkweight( .@gift_item, .@gift_amount ) || .@gift_item[.@mid] == .ZenyID) {
    mes "[" + strnpcinfo(1) + "]";
    mes "^009900Get : (" + .@gift_amount[.@mid] + ") " + getitemname(.@gift_item[.@mid]) + ".^000000";
    if (.ip_limit) {
    // add ip_address to logs
    .@ipexist = query_sql("SELECT item_id, ip_address, claim_count FROM " + .GiftTableNameIP$ + " WHERE ip_address = '"+getcharip()+"' AND item_id = "+.@gift_item[.@mid]+" LIMIT 1", .@item,.@ip,.@claim_count);
    if (.@claim_count[0] >= .ip_limit) {
    next;
    mes "Sorry you have reached the maximum redeem limit for this IP address";
    cutin "v_sprakki04",255;
    close;
    }
    if (!.@claim_count[0]) {
    query_sql("INSERT INTO " + .GiftTableNameIP$ + " (give_id,item_id,ip_address,claim_count) VALUES("+.@gift_id+","+.@gift_item+",'"+getcharip()+"',1)");
    } else {
    query_sql("UPDATE " + .GiftTableNameIP$ + " SET claim_count = "+(.@claim_count[0]+1)+" WHERE item_id = "+.@gift_item[.@mid]+" AND ip_address = '"+getcharip()+"'");
    }
    }
    if (.@gift_item[.@mid] == .ZenyID) { // detects zeny ID and give zeny.
    if (Zeny+.@gift_amount[.@mid] > .MaxZeny) {
    mes "Please make sure that you have enough space to handle all these zennies and come back later.";
    cutin "v_sprakki04",255;
    close;
    }
    set Zeny,Zeny+.@gift_amount[.@mid];
    } else {
    
    if (.@gift_bound[.@mid]) {
    getitembound .@gift_item[.@mid], .@gift_amount[.@mid], 1;
    } else if (!.@gift_duration) {
    getitem .@gift_item[.@mid], .@gift_amount[.@mid]; //Give item to player.
    } else {
    rentitem .@gift_item[.@mid], .@gift_duration * 60; 
    }
    }
    query_sql( "DELETE FROM `" + .GiftTableName$ + "` WHERE id = " + .@gift_id[.@mid] ); //Remove item from table.
    cutin "v_sprakki04",255;
    close;
    } else {
    //Overweight
    mes "^ff0000Sorry ^000000 You can't take it " + getitemname(.@gift_item[.@mid]);
    mes "Could lose some wight?";
    cutin "v_sprakki04",255;
    close;
    }
    }
    
    //Remove gift selected.
    else if(.@Select == 2) {
    mes "[" + strnpcinfo(1) + "]";
    mes "Are you sure you want dellet it?";
    mes "Gift: ("+.@gift_amount[.@mid]+") "+getitemname(.@gift_item[.@mid])+".";
    next;
    if(select("Yes:No") == 1) {
    mes "[" + strnpcinfo(1) + "]";
    mes "^ff0000Dellet: ("+.@gift_amount[.@mid]+") "+getitemname(.@gift_item[.@mid])+".^000000";
    query_sql("DELETE FROM `" + .GiftTableName$ + "` WHERE id = " + .@gift_id[.@mid]); //Remove item from table.
    cutin "v_sprakki04",255;
    close;
    } else {
    mes "[" + strnpcinfo(1) + "]";
    mes "we will save it";
    cutin "v_sprakki04",255;
    close;
    }
    }
    
    //Nothing selected.
    else {
    goto OnLeave;
    }
    
    //GM Panel below:
    OnManagement:
    if(getgmlevel() < .GMin) goto OnLeave;
    mes "[" + strnpcinfo(1) + "]";
    mes "Welvome " + strcharinfo(0) + "!";
    mes "How I can help you?";
    next;
    if(select("Make Gift:Nothing") != 1) goto OnLeave;
    //Make new gift.
    mes "[" + strnpcinfo(1) + "]";
    mes "Please input the item id.";
    mes "Default: 501";
    next;
    mes "What do you want to give?";
    set .@zenygive,0;
    if(select("Item:Zeny") == 1){
    //item_id range of 501 to 30,000.
    input .@new_item, 501, 30000;
    next;
    mes "Do you want to make this a bound item?";
    .@boption = select("No:Expire Bound:Normal Bound");
    if(.@boption == 2) {
    next;
    mes "Please tell me the duration in minutes";
    input(.@duration);
    } else if (.@boption == 3) {
    next;
    mes "Normal bound, selected.";
    .@nbound = 1;
    }
    } else {
    set .@new_item, .ZenyID;
    set .@zenygive,1;
    }
    next;
    mes "Do you want to add a claim timer?";
    if(select("No:Yes")==2) {
    next;
    mes "How many minutes do you want this reward to be claimable?";
    input(.@c);
    .@claimtime = gettimetick(2)+(.@c*60);
    }
    if(select("Continue:Cancel") != 1) goto OnLeave;
    mes "[" + strnpcinfo(1) + "]";
    mes "How many items/zeny?";
    mes "Default: 1";
    next;
    //item quantity range of 1 to 1,000.
    if(.@zenygive){
    input .@new_value, 1, .MaxZeny;
    } else {
    input .@new_value, 1, 1000;
    }
    if (.@duration && .@new_value > 1) {
    mes "You can only give 1 item bound at a time and please make sure that it is an equipment";
    close;
    }
    
    if(select("Continue:Cancel") != 1) goto OnLeave;
    mes "[" + strnpcinfo(1) + "]";
    mes "Please select input type:";
    mes "1. Single Account";
    mes "2. Single Character";
    mes "3. All ^009900Online^000000 Accounts.";
    mes "4. All Accounts.";
    mes "5. All ^009900Online^000000 Players/Characters.";
    mes "6. All Players/Characters.";
    mes "7. ^ff0000Cancel.^000000";
    next;
    switch(select("Single Account:Single Character:^009900Online^000000 Accounts:All Accounts:^009900Online^000000 Characters:All Characters:Cancel"))
    {
    //Account gift
    case 1:
    mes "[" + strnpcinfo(1) + "]";
    mes "Please select input type:";
    mes "By AID or Name?";
    next;
    if(select("Account ID:Character Name") == 1)
    {
    mes "[" + strnpcinfo(1) + "]";
    mes "Write account id:";
    next;
    input .@new_account, 2000000, 10000000; //Account id range from 2m to 10m.
    set .@query, query_sql("SELECT account_id FROM `" + .CharTableName$ + "` WHERE account_id = " + .@new_account, .@new_account);
    if(!.@query) goto OnNotExist;
    if(select("Continue:Cancel") != 1) goto OnLeave;
    mes "[" + strnpcinfo(1) + "]";
    mes "^009900Gift is ready to go!^000000";
    mes "AID: ^ff0000" + .@new_account + "^000000";
    mes "------------------";
    mes "Item: ^ff0000" + getitemname(.@new_item) + "^000000";
    mes "Quantity: ^ff0000" + .@new_value + "^000000";
    mes "Duration: " + .@duration + " Minutes";
    mes "Claim Time: " + .@c + " Minutes";
    mes "Normal Bound: " + .@nbound;
    next;
    if(select("Send Gift:Cancel") != 1) goto OnLeave;
    mes "[" + strnpcinfo(1) + "]";
    mes "Gift sending success!";
    //Create gift. <auto_id>, <account_id> <char_id> <item> <value>
    query_sql("INSERT INTO `" + .GiftTableName$ + "` (account_id, item, value, duration, timestamp, bound) VALUES(" + .@new_account + ", " + .@new_item + ", " + .@new_value + ", " + .@duration + ", " + .@claimtime + ", " + .@nbound + ")");
    
    } else {
    mes "[" + strnpcinfo(1) + "]";
    mes "Write player name:";
    next;
    input .@new_name$;
    set .@query, query_sql("SELECT account_id FROM `" + .CharTableName$ + "` WHERE name = '" + .@new_name$ + "'", .@new_account);
    if(!.@query) goto OnNotExist;
    if(select("Continue:Cancel") != 1) goto OnLeave;
    mes "[" + strnpcinfo(1) + "]";
    mes "^009900Gift is ready to go!^000000";
    mes "AID: ^ff0000" + .@new_account + "^000000";
    mes "Name: ^ff0000"+ .@new_name$ + "^000000";
    mes "------------------";
    mes "Item: ^ff0000" + getitemname(.@new_item) + "^000000";
    mes "Quantity: ^ff0000" + .@new_value + "^000000";
    mes "Duration: " + .@duration + " Minutes";
    mes "Claim Time: " + .@c + " Minutes";
    mes "Normal Bound: " + .@nbound;
    next;
    if(select("Send Gift:Cancel") != 1) goto OnLeave;
    //Check if player is logged in.
    if(isloggedin(.@new_account)) {
    mes "[" + strnpcinfo(1) + "]";
    mes "Gift sending success!";
    query_sql("INSERT INTO `" + .GiftTableName$ + "` (account_id, item, value, duration, timestamp, bound) VALUES(" + .@new_account + ", " + .@new_item + ", " + .@new_value + ", " + .@duration + ", " + .@claimtime + ", " + .@nbound + ")");
    } else {
    //Account was not online.
    mes "[" + strnpcinfo(1) + "]";
    mes "Gift sending success!";
    query_sql("INSERT INTO `" + .GiftTableName$ + "` (account_id, item, value, duration, timestamp, bound) VALUES(" + .@new_account + ", " + .@new_item + ", " + .@new_value + ", " + .@duration + ", " + .@claimtime + ", " + .@nbound + ")"); // duplicate to other menus - continue here on giver side
    }
    }
    break;
    
    //Character gift.
    case 2:
    mes "[" + strnpcinfo(1) + "]";
    mes "Please select input type:";
    mes "By CID or Name?";
    next;
    if(select("Character ID:Character Name") == 1)
    {
    mes "[" + strnpcinfo(1) + "]";
    mes "Write character id:";
    next;
    input .@new_char,150000, 10000000; //Char id range from 150k to 10m.
    set .@query, query_sql("SELECT account_id, name FROM `" + .CharTableName$ + "` WHERE char_id = " + .@new_char, .@new_accountid, .@new_name$);
    if(!.@query) goto OnNotExist;
    if(select("Continue:Cancel") != 1) goto OnLeave;
    mes "[" + strnpcinfo(1) + "]";
    mes "^009900Gift is ready to go!^000000";
    mes "CID: ^ff0000" + .@new_char + "^000000";
    mes "Name: ^ff0000" + .@new_name$ + "^000000";
    mes "------------------";
    mes "Item: ^ff0000" + getitemname(.@new_item) + "^000000";
    mes "Quantity: ^ff0000" + .@new_value + "^000000";
    mes "Duration: " + .@duration + " Minutes";
    mes "Claim Time: " + .@c + " Minutes";
    mes "Normal Bound: " + .@nbound;
    next;
    if(select("Send Gift:Cancel") != 1) goto OnLeave;
    //Check if player is logged in.
    if(isloggedin(.@new_accountid)) {
    mes "[" + strnpcinfo(1) + "]";
    mes "Gift sending success!";
    
    //Create gift. <auto_id>, <account_id> <char_id> <item> <value>
    query_sql("INSERT INTO `" + .GiftTableName$ + "` (char_id, item, value, duration, timestamp, bound) VALUES (" + .@new_char + ", " + .@new_item + ", " + .@new_value + "," + .@duration + "," + .@claimtime + ", " + .@nbound + ")");
    } else {
    //not online ask if we still give the gift.
    mes "[" + strnpcinfo(1) + "]";
    mes "The character is not online!";
    mes "Would you still like to send the gift?";
    next;
    if(select("Yes:No") != 1) goto OnLeave;
    mes "[" + strnpcinfo(1) + "]";
    mes "Gift sending success!";
    //Create gift. <auto_id>, <account_id> <char_id> <item> <value>
    query_sql("INSERT INTO `" + .GiftTableName$ + "` (char_id, item, value, duration, timestamp, bound) VALUES (" + .@new_char + ", " + .@new_item + ", " + .@new_value + "," + .@duration + "," + .@claimtime + ", " + .@nbound + ")");
    }
    
    } else {
    mes "[" + strnpcinfo(1) + "]";
    mes "Write player name:";
    next;
    input .@new_name$;
    set .@query, query_sql("SELECT char_id, account_id FROM `" + .CharTableName$ + "` WHERE name = '" + .@new_name$ + "'", .@new_char, .@new_accountid);
    if(!.@query) goto OnNotExist;
    if(select("Continue:Cancel") != 1) goto OnLeave;
    mes "[" + strnpcinfo(1) + "]";
    mes "^009900Gift is ready to go!^000000";
    mes "CID: ^ff0000" + .@new_char + "^000000";
    mes "Name: ^ff0000"+ .@new_name$ + "^000000";
    mes "------------------";
    mes "Item: ^ff0000" + getitemname(.@new_item) + "^000000";
    mes "Quantity: ^ff0000" + .@new_value + "^000000";
    mes "Duration: " + .@duration + " Minutes";
    mes "Claim Time: " + .@c + " Minutes";
    mes "Normal Bound: " + .@nbound;
    next;
    if(select("Send Gift:Cancel") != 1) goto OnLeave;
    //Check if player is logged in.
    if(isloggedin(.@new_accountid)) {
    mes "[" + strnpcinfo(1) + "]";
    mes "Gift sending success!";
    query_sql("INSERT INTO `" + .GiftTableName$ + "` (char_id, item, value, duration, timestamp, bound) VALUES (" + .@new_char + ", " + .@new_item + ", " + .@new_value + "," + .@duration + "," + .@claimtime + ", " + .@nbound + ")");
    } else {
    //not online ask if we still give the gift.
    mes "[" + strnpcinfo(1) + "]";
    mes "The character is not online!";
    mes "Would you still like to give the gift?";
    next;
    if(select("Yes:No") != 1) goto OnLeave;
    mes "[" + strnpcinfo(1) + "]";
    mes "Gift sending success!";
    //Create gift. <auto_id>, <account_id> <char_id> <item> <value>
    query_sql("INSERT INTO `" + .GiftTableName$ + "` (char_id, item, value, duration, timestamp, bound) VALUES (" + .@new_char + ", " + .@new_item + ", " + .@new_value + "," + .@duration + "," + .@claimtime + ", " + .@nbound + ")");
    }
    }
    announce strcharinfo(0)+" successfully sent " + .@new_value + "x " + getitemname(.@new_item) + " to " + .@new_name$,bc_all;
    break;
    
    //Register gift to all online accounts!
    case 3:
    mes "[" + strnpcinfo(1) + "]";
    mes "^009900Gift is ready to go!^000000";
    mes "Item: ^ff0000" + getitemname(.@new_item) + "^000000";
    mes "Quantity: ^ff0000" + .@new_value + "^000000";
    mes "Duration: " + .@duration + " Minutes";
    mes "Claim Time: " + .@c + " Minutes";
    mes "Normal Bound: " + .@nbound;
    next;
    if(select("Send Gift:Cancel") != 1) goto OnLeave;
    mes "[" + strnpcinfo(1) + "]";
    mes "Please hold...";
    set .@c, 0; //Counting success.
    set .@query, query_sql("SELECT account_id FROM `"+.CharTableName$+"` WHERE online=1",.@account);
    for(set .@i, 0; .@i < .@query; set .@i, .@i + 1) {
    sleep2 25; //Slowdown the loop abit.
    .@at = query_sql("SELECT account_id, char_id FROM "+$GiftTableNameAT$+" WHERE account_id = "+.@account[.@i]+"", .@account_id, .@char_id); // check if in the table
    if (!.@at) {
    query_sql("INSERT INTO `" + .GiftTableName$ + "` (account_id, item, value, duration, timestamp, bound) VALUES(" + .@account[.@i] + ", " + .@new_item + ", " + .@new_value + ", " + .@duration + ", " + .@claimtime + ", " + .@nbound + ")");
    }
    }
    mes "Gift registered to (" + .@i + ") accounts!";
    break;
    
    //Register gift to all accounts!
    case 4:
    mes "[" + strnpcinfo(1) + "]";
    mes "^009900Gift is ready to go!^000000";
    mes "Item: ^ff0000" + getitemname(.@new_item) + "^000000";
    mes "Quantity: ^ff0000" + .@new_value + "^000000";
    mes "Claim Time: " + .@c + " Minutes";
    mes "Normal Bound: " + .@nbound;
    next;
    if(select("Send Gift:Cancel") != 1) goto OnLeave;
    mes "[" + strnpcinfo(1) + "]";
    mes "Please hold...";
    set .@query, query_sql("SELECT account_id FROM `"+.LoginTableName$+"`",.@account);
    for(set .@i, 0; .@i < .@query; set .@i, .@i + 1) {
    sleep2 25; //Slowdown the loop abit.
    query_sql("INSERT INTO `" + .GiftTableName$ + "` (account_id, item, value, duration, timestamp, bound) VALUES(" + .@account[.@i] + ", " + .@new_item + ", " + .@new_value + ", " + .@duration + ", " + .@claimtime + ", " + .@nbound + ")");
    }
    mes "Gift registered to (" + .@i + ") accounts!";
    break;
    
    //Register gift to all online characters!
    case 5:
    mes "[" + strnpcinfo(1) + "]";
    mes "^009900Gift is ready to go!^000000";
    mes "Item: ^ff0000" + getitemname(.@new_item) + "^000000";
    mes "Quantity: ^ff0000" + .@new_value + "^000000";
    mes "Claim Time: " + .@c + " Minutes";
    mes "Normal Bound: " + .@nbound;
    next;
    if(select("Send Gift:Cancel") != 1) goto OnLeave;
    mes "[" + strnpcinfo(1) + "]";
    mes "Please hold...";
    set .@c, 0; //Counting success.
    set .@query, query_sql("SELECT char_id FROM `"+.CharTableName$+"` WHERE online=1",.@char);
    for(set .@i, 0; .@i < .@query; set .@i, .@i + 1) {
    sleep2 25; //Slowdown the loop abit.
    .@at = query_sql("SELECT account_id, char_id FROM "+$GiftTableNameAT$+" WHERE char_id = "+.@char[.@i]+"", .@account_id, .@char_id); // check if in the table
    if (!.@at) {
    query_sql("INSERT INTO `" + .GiftTableName$ + "` (char_id, item, value, duration, timestamp, bound) VALUES (" + .@char[.@i] + ", " + .@new_item + ", " + .@new_value + "," + .@duration + "," + .@claimtime + ", " + .@nbound + ")");
    }
    }
    mes "Gift registered to (" + .@i + ") players!";
    break;
    
    //Register gift to all characters!
    case 6:
    mes "[" + strnpcinfo(1) + "]";
    mes "^009900Gift is ready to go!^000000";
    mes "Item: ^ff0000" + getitemname(.@new_item) + "^000000";
    mes "Quantity: ^ff0000" + .@new_value + "^000000";
    mes "Claim Time: " + .@c + " Minutes";
    mes "Normal Bound: " + .@nbound;
    next;
    if(select("Send Gift:Cancel") != 1) goto OnLeave;
    mes "[" + strnpcinfo(1) + "]";
    mes "Please hold...";
    set .@query, query_sql("SELECT char_id FROM `"+.CharTableName$+"`",.@char);
    for(set .@i, 0; .@i < .@query; set .@i, .@i + 1) {
    sleep2 25; //Slowdown the loop abit.
    query_sql("INSERT INTO `" + .GiftTableName$ + "` (char_id, item, value, duration, timestamp, bound) VALUES (" + .@char[.@i] + ", " + .@new_item + ", " + .@new_value + "," + .@duration + "," + .@claimtime + ", " + .@nbound + ")");
    }
    mes "Gift registered to (" + .@i + ") players!";
    break;
    
    //Cancel.
    Default:
    mes "[Reward Giver]";
    mes "See you later";
    break;
    }
    close;
    
    OnLeave:
    mes "[Reward Giver]";
    mes "See you later";
    cutin "v_sprakki04",255;
    close;
    
    OnNotExist:
    mes "[" + strnpcinfo(1) + "]";
    mes "This account does not exist!";
    cutin "v_sprakki04",255;
    close;
    
    //============Reset Function=========================
    OnDelete:
    mes "Which gifts do you want to reset?";
    mes "1. Single Account";
    mes "2. Single Character";
    mes "3. All ^009900Online^000000 Accounts.";
    mes "4. All Accounts.";
    mes "5. All ^009900Online^000000 Players/Characters.";
    mes "6. All Players/Characters.";
    mes "7. All cancel";
    switch(select("Single Account:Single Character:^009900Online^000000 Accounts:All Accounts:^009900Online^000000 Characters:All Characters:Specific Item:IPLimit Logs:Cancel")) {
    case 1: //Single Account
    mes "[" + strnpcinfo(1) + "]";
    mes "Please select input type:";
    mes "By AID or Name?";
    next;
    if(select("Account ID:Character Name") == 1) {
    mes "[" + strnpcinfo(1) + "]";
    mes "Write account id:";
    next;
    input .@new_account, 2000000, 10000000; //Account id range from 2m to 10m.
    set .@query, query_sql("SELECT account_id FROM `" + .CharTableName$ + "` WHERE account_id = " + .@new_account, .@new_account);
    if(!.@query) goto OnNotExist;
    if(select("Continue:Cancel") != 1) goto OnLeave;
    query_sql("DELETE FROM " + .GiftTableName$ + " WHERE account_id = " + .@new_account);
    } else {
    mes "[" + strnpcinfo(1) + "]";
    mes "Write player name:";
    next;
    input .@new_name$;
    set .@query, query_sql("SELECT account_id FROM `" + .CharTableName$ + "` WHERE name = '" + .@new_name$ + "'", .@new_account);
    if(!.@query) goto OnNotExist;
    if(select("Continue:Cancel") != 1) goto OnLeave;
    query_sql("DELETE FROM " + .GiftTableName$ + " WHERE account_id = " + .@new_account);
    }
    break;
    case 2: //Single Character
    mes "[" + strnpcinfo(1) + "]";
    mes "Please select input type:";
    mes "By CID or Name?";
    next;
    if(select("Character ID:Character Name") == 1)
    {
    mes "[" + strnpcinfo(1) + "]";
    mes "Write character id:";
    next;
    input .@new_char,150000, 10000000; //Char id range from 150k to 10m.
    set .@query, query_sql("SELECT account_id, name FROM `" + .CharTableName$ + "` WHERE char_id = " + .@new_char, .@new_accountid, .@new_name$);
    if(!.@query) goto OnNotExist;
    if(select("Continue:Cancel") != 1) goto OnLeave;
    query_sql("DELETE FROM " + .GiftTableName$ + " WHERE char_id = " + .@new_char);
    } else {
    mes "[" + strnpcinfo(1) + "]";
    mes "Write player name:";
    next;
    input .@new_name$;
    set .@query, query_sql("SELECT char_id, account_id FROM `" + .CharTableName$ + "` WHERE name = '" + .@new_name$ + "'", .@new_char, .@new_accountid);
    if(!.@query) goto OnNotExist;
    if(select("Continue:Cancel") != 1) goto OnLeave;
    query_sql("DELETE FROM " + .GiftTableName$ + " WHERE char_id = " + .@new_char);
    }
    break;
    case 3: //All Online Accounts.
    mes "[" + strnpcinfo(1) + "]";
    mes "Please hold...";
    set .@c, 0; //Counting success.
    set .@query, query_sql("SELECT account_id FROM `"+.CharTableName$+"` WHERE online=1",.@account);
    for(set .@i, 0; .@i < .@query; set .@i, .@i + 1) {
    sleep2 25; //Slowdown the loop abit.
    query_sql("DELETE FROM " + .GiftTableName$ + " WHERE account_id = " + .@account[.@i]);
    }
    break;
    case 4: //All Accounts.
    query_sql("DELETE FROM " + .GiftTableName$ + " WHERE account_id >= 1");
    break;
    case 5: //All Online Players/Characters.
    mes "[" + strnpcinfo(1) + "]";
    mes "Please hold...";
    set .@c, 0; //Counting success.
    set .@query, query_sql("SELECT char_id FROM `"+.CharTableName$+"` WHERE online=1",.@char);
    for(set .@i, 0; .@i < .@query; set .@i, .@i + 1) {
    sleep2 25; //Slowdown the loop abit.
    query_sql("DELETE FROM " + .GiftTableName$ + " WHERE char_id = " + .@char[.@i]);
    }
    break;
    case 6: //All Players/Characters.
    query_sql("TRUNCATE TABLE " + .GiftTableName$);
    break;
    case 7: // Delete specific item
    mes "Please type the id of the item you wish to delete";
    mes "This will delete all entries with the item id you typed";
    input(.@deletethis);
    next;
    mes "Are you sure you want to delete all entries of " + .@deletethis;
    if (select("Yes:No")==1) {
    query_sql("DELETE FROM " + .GiftTableName$ + " WHERE item = " + .@deletethis + "");
    } else {
    mes "Deletion cancelled";
    close;
    }
    case 8: //All ip logs
    query_sql("TRUNCATE TABLE " + .GiftTableNameIP$);
    break;
    default:
    break;
    }
    next;
    mes "deletion finished";
    cutin "v_sprakki04",255;
    close;
    
    OnLimit:
    mes "Please enter an ip limit, current limit is " + .ip_limit;
    input(.ip_limit);
    mes "Done!";
    cutin "v_sprakki04",255;
    close;
    
    //============================================================ 
    // Config/Edit:
    //============================================================ 
    OnLoadSetup:
    set .Setup, 1; //OnInit is loaded check.
    set .GMin, 60; //Minimum GM level to use gm panel.
    set .ZenyID,23500; // put this when asked for which item to give zeny.
    set .MaxZeny,1000000000;
    //Your table names:
    set .CharTableName$, "char"; //Character table name(SQL).
    set .LoginTableName$, "login";
    set .GiftTableName$, "reward"; //Gift table name(SQL).
    set .GiftTableNameIP$, "reward_ip"; //Gift table name for ip tracker
    set $GiftTableNameAT$, "reward_at"; //Gift table name for auto trade tracker
    //Create gift table <auto_id>, <account_id>, <char_id>, <item>, <value>
    
    query_sql("CREATE TABLE IF NOT EXISTS `reward` (`id` int(11) NOT NULL AUTO_INCREMENT,`account_id` int(11) unsigned NOT NULL DEFAULT '0',`char_id` int(11) unsigned NOT NULL DEFAULT '0',`item` int(11) NOT NULL DEFAULT '0',`value` int(11) NOT NULL DEFAULT '0',`duration` int(11) NOT NULL DEFAULT '0',`timestamp` int(23) NOT NULL DEFAULT '0',`bound` int(1) NOT NULL DEFAULT '0',PRIMARY KEY (`id`))");
    
    query_sql("CREATE TABLE IF NOT EXISTS `reward_ip` ( `give_id` int(11) NOT NULL,  `item_id` int(11) NOT NULL,  `ip_address` varchar(23) NOT NULL, `claim_count` int(11) NOT NULL,  PRIMARY KEY (`give_id`))");
    
    query_sql("CREATE TABLE IF NOT EXISTS `reward_at` (`account_id` int(11) NOT NULL,`char_id` int(11) NOT NULL)");
    
    return;
    
    OnInit:
    callsub OnLoadSetup;
    end;
    }
    
    /* Manual table update for at tracker 
    CREATE TABLE IF NOT EXISTS `reward_at` (
      `account_id` int(11) NOT NULL,
      `char_id` int(11) NOT NULL
    );
    */
    - script anti_trader -1,{
    
    OnInit:
    .is_anti_trade = 1; // 0 to disable
    end;
    
    }
    function script PG_30Seconds {
    //dispbottom "anti trader 30sec";
    //Check if Vending (normal or @at)
    if(checkvending() >= 1) {
      // mark as auto trader
      .@query = query_sql("SELECT account_id, char_id FROM "+$GiftTableNameAT$+" WHERE account_id = "+getcharid(3)+"", .@account_id, .@char_id); // check if in the table
    if (!.@query) { // add if not there yet
    query_sql("INSERT INTO "+$GiftTableNameAT$+"(account_id,char_id) VALUES("+getcharid(3)+","+getcharid(0)+")");
    //dispbottom "you have been marked as auto trader";
    stopnpctimer;
    detachnpctimer;
    end;
    }
    }
    return;
    }
    function script PG_Login {
    //dispbottom "at delete";
    .@query = query_sql("SELECT account_id, char_id FROM "+$GiftTableNameAT$+" WHERE account_id = "+getcharid(3)+"", .@account_id, .@char_id); // check if in the table
    if (.@query) { // remove to reverify vending status
    query_sql("DELETE FROM "+$GiftTableNameAT$+" WHERE account_id = "+getcharid(3)+"");
    }
    }
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    

     

    Thankyou

    price-giver-sql.txt

  3. i need help please. how can i re script this job changer .. i want using instant job changer once per account.

    please help me..
     
    Here's my Code

    
    prontera,156,184,5 script Free for All#jobchanger 757,{
    if( Class ){
    mes "Only Novice can use this...";
    }else{
    .@i = select( .Menu$ ) - 1;
    if( select( "Change to "+jobname( .JobList[.@i] )+"?:Cancel" ) == 1 ){
    jobchange .JobList[.@i];
    BaseLevel = .BaseLevel;
    JobLevel = .JobLevel;
    resetskill;
    resetstatus;
    SkillPoint = .SkillPoints;
    mes "DONE";
    for( .@i = 0; .@i < .size; .@i++ )
    getitem .ItemList[.@i],.Amount[.@i];
    }
    }
    close;
     
    OnInit:
    setarray .JobList[0],4008,4009,4010,4011,4012,4013,4015,4016,4017,4018,4019,4020,4021,4047,4049,25,24,4045;
    setarray .ItemList[0],607,0;
    setarray .Amount[0],1,2,3;
    .BaseLevel = 255;
    .JobLevel = 100;
    .SkillPoints = 128;
     
    .@size = getarraysize( .JobList );
    .size = getarraysize( .ItemList );
    for( .@i = 0; .@i < .@size; .@i++ )
    .Menu$ = .Menu$ + jobname( .JobList[.@i] )+":";
    waitingroom "Instant Job Changer Feel Free to use",0;
    end;
    if(#freebie_quest == 1) {
        mes "[Zratinel]";
        mes "Have fun in ^E066FFEsoteric RO!^000000";
        close;
        }
    
    

    Thankyou for helping me

  4. Hi rathena Community i want to ask how can i diff patch ?? like costume it i want that on my server please help me how to patch this file on my src folder cant do manually im having some errors in atcommand.c

     

×
×
  • Create New...