Jump to content

Lil Troll

Members
  • Posts

    276
  • Joined

  • Last visited

  • Days Won

    2

Posts posted by Lil Troll

  1. /////////////////////////////////////////////////////////////////////////
    //---------------------------------------------------------------------//
    //                            GIFT SYSTEM                              //
    //                     AUTHOR: LIL TROLL//COLDFIRE                     //
    //---------------------------------------------------------------------//
    //                          RATHENA SCRIPT                             //
    //---------------------------------------------------------------------//
    //                             V.1.2                                   //
    //---------------------------------------------------------------------//
    //    Credits to: 						       //
    //	Mate NNDSL for requesting the script.                          //
    //    	Sir GM Ocean for great suggestions. 			       //
    //    Features: Gift Packaging NPC.                                    //
    //    - Wrap any equipments that the player wears. 		       //
    //    - Transfer and store item equip in SQL. 			       //
    //    - Short personal message can be attached to the gift.            //
    //    - GM Menu included(View,Delete Gift Records).		       //
    //    - Items can be retrieve when using @gift.          	       //
    //    - @gift menu will not appear if you don`t have any gifts 	       //
    //	 	in inventory.                             	       //
    //    - When claiming the gift, name of the giver and serial must be   //
    //      inputted.                                                      //
    //    - Best with Item Stack "1"(To prevent bugs/abuse).               //
    //    - Built-in Item Checking (Anti-Abuse).			       //
    //    - One gift can be created per char name only, when the gift is   //
    //      used the player can create another one(Prevent bug/abuse).     //
    //    - DB Append Included.                                            //
    //    - Automatic/Manual Query-SQL Installation.                       //
    //    - Auto-delete player @command garbage every 00:00.               //
    //    - Used getitem2,deleteitem2 command, to retrieve items/gifts.    //
    //    - Built-in Toggles for enabling Requirements(Zeny,Items).	       //
    //    - NPC auto adjust to toggles.				       //
    //---------------------------------------------------------------------//
    ///////////////////////////////////////////////////////////////////////// 

     

    [spoiler=To Do List:]Run out of idea, please do suggest. :)

    [spoiler=Change Logs:]v.1:

    Initial release.

    v.1.1:

    More item checking added(Anti-Abuse).

    Zeny toggle added.

    Improve NPC dialogues.

    Cleaned the whole script.

    Suggested by Sir GM Ocean:

    -Fix usage of variables.

    -Merge 2 NPC's.

    v.1.2:

    Added if no equip checks.

    Added Manual SQL installer.

    Fix positioning of item checking.

    Improve the whole script.

    Added NPC dialogue colors.

    Included message for the recipient.

    GM Menu included(View,Delete Gift Records)

    v.1.2.1:

    Added If equip is changed checks.

    v.1.2.2:

    Fix typo in no equip checking see below(not working properly):

    from: if(.@m==.p[.@a]&&getequipname(.p[.@a])==" ") {

    to: if(.@m==.p[.@a]&&getequipname(.p[.@a])=="") {

    [spoiler=Special Notes:]I mainly used getequip commands, I tried using getinventorylist command but found many loophole.

    I tried things via trials and errors to counter all possible abuse, and this script was the result.

     

    - Best with Item Stack "1"(To prevent bugs/abuses). Item DB append included in the script.

     

    Feel free to suggest, comments, and report any encountered errors or bugs.

     

    v.1: Gift_System.txt

    v.1.1: [file accidentally over written]

    v.1.2: Gift_System v.1.2.txt

    v.1.2.1: Gift_System v.1.2.1.txt

    v.1.2.2: Gift_System v.1.2.2.txt

     

     

    • Upvote 3
  2.  

    Hi,

     

    bug report.

     

    Sample you generate a code : welcome123

    them if player get it already, then someone "player"  type : WELCOME123 players can spam it.\

     

    or

     

    Welcome123 - uppercase W   it will spam code.

     

    Did you put these queries?

    DROP TABLE IF EXISTS `reward_codes`;
    DROP TABLE IF EXISTS `reward_logs`;
    CREATE TABLE IF NOT EXISTS `reward_codes` (
    	`promo` VARCHAR(26) NOT NULL DEFAULT '',
    	`nameid` INT(11) UNSIGNED NOT NULL DEFAULT '0',
    	`item_name` VARCHAR(50) NOT NULL DEFAULT '',
    	`amount` SMALLINT(6) UNSIGNED NOT NULL DEFAULT '0',
    	`time_created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
    	`limit` INT(10) UNSIGNED NOT NULL DEFAULT '0',
    	`pool` INT(10) UNSIGNED NOT NULL DEFAULT '0',
    	PRIMARY KEY (`promo`)
    ) ENGINE = MYISAM;
    CREATE TABLE `reward_logs` (
      `code` VARCHAR( 26 ) NOT NULL DEFAULT '',
    	`account_id` int(11) unsigned NOT NULL default '0',
    	`last_ip` BINARY( 9 ) NOT NULL DEFAULT '',
      `name` VARCHAR( 26 ) NOT NULL DEFAULT '',
    	`redeem_time` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
    	`claim` INT( 10 ) NOT NULL default '0',
    	PRIMARY KEY (`code`)
    ) ENGINE = MYISAM;
    

     

     

    Yes. still player's can spam it. with upper case letter.

    I upload a quick fix.

    Thanks for the report,

    shatowolf and uDe

    @ude found no close button bug for you, I replaced end with close, in my current svn end is working fine.

    from this:

    announce "No exisiting codes.",bc_self;
    end;
    

    to this:

    announce "No exisiting codes.",bc_self;
    close;

    @shatowolf i add small caps letters, let see if this fix will work, please do reply if you see more of them.

    For random code generation,

    from this:

    setarray .@s$,"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","1","2","3","4","5","6","7","8","9","0";
    

    to this:

    setarray .@s$[0],"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","1","2","3","4","5","6","7","8","9","0";	
    

    Or if both of you guys referring to promo code pool count? (Maximum claim limit)

    Change this:

    setarray $@ClaimLimit[0],1,2,3,4,5,6,7,8,9,10;

    To:

    setarray $@ClaimLimit[0],1; or set $@ClaimLimit,1;

    And in-game if you are manually creating a code.

    Set the max claim limit to 1(means the pool count of the code will be 1, after 1 player get a code, it turns to 0 and then the code cannot be claimed again.) See pic Below:

    WtRKtlv.png

     
    Currently i`m working on a big update for this script but i don't yet have spare time to do the project.

     

    I added random code generation length detection, from 5-15 supported chars in this fix.

    I used hard coded random code generator,  not the one a using now, because some might caught an errors. 

    setarray $@length,5,15; // <MIN>,<MAX> LENGTH CHECK    
    // 5 Recommended Minimum due to not recognizing 1234 from garbage deletion.
    // 15 maximum characters supported in random code generation.
  3. Hi,

     

    bug report.

     

    Sample you generate a code : welcome123

    them if player get it already, then someone "player"  type : WELCOME123 players can spam it.\

     

    or

     

    Welcome123 - uppercase W   it will spam code.

     

    Did you put these queries?

    DROP TABLE IF EXISTS `reward_codes`;
    DROP TABLE IF EXISTS `reward_logs`;
    CREATE TABLE IF NOT EXISTS `reward_codes` (
    	`promo` VARCHAR(26) NOT NULL DEFAULT '',
    	`nameid` INT(11) UNSIGNED NOT NULL DEFAULT '0',
    	`item_name` VARCHAR(50) NOT NULL DEFAULT '',
    	`amount` SMALLINT(6) UNSIGNED NOT NULL DEFAULT '0',
    	`time_created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
    	`limit` INT(10) UNSIGNED NOT NULL DEFAULT '0',
    	`pool` INT(10) UNSIGNED NOT NULL DEFAULT '0',
    	PRIMARY KEY (`promo`)
    ) ENGINE = MYISAM;
    CREATE TABLE `reward_logs` (
      `code` VARCHAR( 26 ) NOT NULL DEFAULT '',
    	`account_id` int(11) unsigned NOT NULL default '0',
    	`last_ip` BINARY( 9 ) NOT NULL DEFAULT '',
      `name` VARCHAR( 26 ) NOT NULL DEFAULT '',
    	`redeem_time` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
    	`claim` INT( 10 ) NOT NULL default '0',
    	PRIMARY KEY (`code`)
    ) ENGINE = MYISAM;
    
  4. Tropa try this one, i cant test it yet(di ako makakapag bukas ng desktop ko today), using cp to reply on this request(ang hirap gamitin ng code box.)

    prontera,150,150,4	script	PT-Gold-Room	443,{
    set .plimit = 5 // Limit of party member that can enter to goldroom
    set .map$,"prontera"; // input gold room/map here
    getpartymember getcharid(1),1;
    if($@partymembercount == .plimit) {
    	mes "Maximum party count exceeded.";	// Improve dialogue
    	close;
    }
    warp ".map$",0,0;
    end;
    
    -	script	PT-GOLD-SCRIPT	-1,{
    OnNPCKillEvent:
    set .map$,"prontera"; // input gold room/map here
    setarray .item,501,502; //input prizes here(gold,etc)
    setarray .mobs,1001,1002,1003,1004,1005; // input mob id/s here
    
    for(set .@a,1; .@a<getarraysize(.mobs); set .@a,.@a++) {
    	for(set .@b,1; .@b<getarraysize(.map$); set .@b,.@b++) {
    		if (killedrid == .mobs[.@a] && strcharinfo(3) == .map$[.@b]) {
    			for(set .@e,1; .@e<getarraysize(.item); set .@e,.@e++) {
    				getpartymember getcharid(1),1;
    				set .@ptc,$@partymembercount;
    				getitem .item[.@e],.@ptc;
    				end;
    			}
    		}
    	}
    }
    
    }

    Tell me if there`s something wrong.

    Edited:

    Other lang., nauna na pala nag post si sir patskie, hehe. :)

  5. hnpin mo to:

     

    OnTimer60000:

    set @minute, @minute + 1;
    //Check for 1 Minute
    if(@minute == 60){

     

    then chnge to this:

    OnTimer10000:

    set @minute, @minute + 1;
    //Check for 1 Minute
    if(@minute == 10){

     

    Heto pa:

    if(@consecutive_hour == 12) {

     

    to this...

    if(@consecutive_hour == 1) {

     

    di aq mkpg rreply ng maaus cp lng ze gmit.

    may n release si sir skorm na updated nitong script, try looking for that one...

  6. Update(WIP):

    BDebrcD.png

     

    Mailing of Code enabled.
    Referral system:
    -GM can set pool count of referral.
    -GM can set prize for every refered new player. 
    -Cannot refer player with same IP/Account.
    -Changes @claim to @promo:
     Promo Menu:
     - Claim Codes - Refered by friend, Claim Reward.
     - Refer - Referring Menu(will appear when you pick refer over claim).
    Easy Deletion of all code.
    Random Auto Generate of code now support 5-15 chars.
    Added Referral Ladder.
    
  7. Tweak the whole script, just translate it to your language.  :)

    #1 Tweak: Removed #pollid,$pollid;

    Instead of using #pollid to set restriction, I used query (`poll`,`ip`).

    #2 Tweak: Full SQL support. 

    #3 Tweak: Fix Divided by zero error.

    #4 Tweak: Improve and Changed the Menu.

     - Add Option, Change Option, Delete Option, Recast Re-Vote, Edit Option Count, Reset Voter Count, Reset All(Including the Poll itself!)  :D

    yeah that's it

    try to do this:

     

    start a new poll

    put the question

    dont add anyquestion, just type end or warp to anywhere

     

    and you will get the error x_X

     

    however you gave me a brilliant idea o:!

     

    just to fix it, i can modify the canel button to make it give me the option of new poll, and then i will make one, when the script gets fixed i will return the script ot the normality, how can i do that o:?!

     

    Heres the script.


     

    poll.txt

  8. Is this your L_NotVoted? Seems something is missing in your script, i tried the script now on my test server and it is working. We need to find the error in your mapserver.

    L_NotVoted:
    menu	$PQ$[1],P1,
    $PQ$[2],P2,
    $PQ$[3],P3,
    $PQ$[4],P4,
    $PQ$[5],P5,
    $PQ$[6],P6,
    $PQ$[7],P7,
    $PQ$[8],P8,
    $PQ$[9],P9,
    "Cancel",L_Cancel;
    
    P1:	set @vote,1; goto P_Vote;
    P2:	set @vote,2; goto P_Vote;
    P3:	set @vote,3; goto P_Vote;
    P4:	set @vote,4; goto P_Vote;
    P5:	set @vote,5; goto P_Vote;
    P6:	set @vote,6; goto P_Vote;
    P7:	set @vote,7; goto P_Vote;
    P8:	set @vote,8; goto P_Vote;
    P9:	set @vote,9; goto P_Vote;
    
  9. SOLVED! :)

    Hi rathenians anyone knows how to fix this? Im using the latest SVN.

    Help with costume system diff.

    Im having errors. 

    offline\svn\src\map\atcommand.c(1172): error C2223: left of '->equip' must point to struct/union
    offline\svn\src\map\atcommand.c(1173): error C2223: left of '->equip' must point to struct/union
    offline\svn\src\map\atcommand.c(1174): error C2223: left of '->equip' must point to struct/union
    offline\svn\src\map\atcommand.c(1175): error C2223: left of '->equip' must point to struct/union
    offline\svn\src\map\atcommand.c(1176): error C2223: left of '->equip' must point to struct/union
    offline\svn\src\map\atcommand.c(1177): error C2223: left of '->equip' must point to struct/union
    
    	if( !strcmpi(command+1,"costumeitem") )
    	{
    		if( !battle_config.reserved_costume_id )
    		{
    			clif_displaymessage(fd, "Costume convertion is disable. Set a value for reserved_cosutme_id on your battle.conf file.");
    			return -1;
    		}
    		if( !(item_data->equip&EQP_HEAD_LOW) &&
    			!(item_data->equip&EQP_HEAD_MID) &&
    			!(item_data->equip&EQP_HEAD_TOP) &&
    			!(item_data->equip&EQP_COSTUME_HEAD_LOW) &&
    			!(item_data->equip&EQP_COSTUME_HEAD_MID) &&
    			!(item_data->equip&EQP_COSTUME_HEAD_TOP) )
    		{
    			clif_displaymessage(fd, "You cannot costume this item. Costume only work for headgears.");
    			return -1;
    		}
    		costume = 1;
    	}
    


    Bump solved it my self, this is the fix, actually idk what im doing but magically i fix the source without having problem, wild guess sure do work sometimes. :)

    C2223: left of '->equip' must point to struct/union
    

    I get this error from.

    itemlist = strtok(item_name, ":");
    	while (itemlist != NULL && j<10) {
    		if ((item_data[j] = itemdb_searchname(itemlist)) == NULL &&
    		    (item_data[j] = itemdb_exists(atoi(itemlist))) == NULL){
    			clif_displaymessage(fd, msg_txt(sd,19)); // Invalid item ID or name.
    			return -1;
    		}
    		itemlist = strtok(NULL, ":"); //next itemline
    		j++;
             }
    

    The old format of this is:

    if ((item_data = itemdb_searchname(item_name)) == NULL &&
    	    (item_data = itemdb_exists(atoi(item_name))) == NULL)
    	{
    		clif_displaymessage(fd, msg_txt(sd,19)); // Invalid item ID or name.
    		return -1;
    	}
    

    Manage to fix the Error by changing these:

    if( !(item_data->equip&EQP_HEAD_LOW) &&
    !(item_data->equip&EQP_HEAD_MID) &&
    !(item_data->equip&EQP_HEAD_TOP) &&
    !(item_data->equip&EQP_COSTUME_HEAD_LOW) &&
    !(item_data->equip&EQP_COSTUME_HEAD_MID) &&
    !(item_data->equip&EQP_COSTUME_HEAD_TOP) ) 

    to these:

    if( !(item_data[j]->equip&EQP_HEAD_LOW) &&
    !(item_data[j]->equip&EQP_HEAD_MID) &&
    !(item_data[j]->equip&EQP_HEAD_TOP) &&
    !(item_data[j]->equip&EQP_COSTUME_HEAD_LOW) &&
    !(item_data[j]->equip&EQP_COSTUME_HEAD_MID) &&
    !(item_data[j]->equip&EQP_COSTUME_HEAD_TOP) )

    Now if someone want to use costume system in the latest svn like am using([r17516]). This is the fix.. :)

    • Upvote 2
  10. Domination Event

     

    On the Domination Event you have to click onto an NPC until a certain Number is reached.

    Every click from every char on the NPC will increase the Number by 1 (+1)

    The winner is who clicked the last number (for example the 1000)

    ~Credits goes to me~

     

    attachicon.gifdomination v1.0a.txt

    attachicon.gifdomination v1.0.txt

     

    //===== Changelog: ===========================================

    //= -1.0a - Addet Current Variables when changing Price/Amount

    //=           - Addet Effects to Show Member which Npc is meant

    //=           - Addet Ingame Menupoint (For Admin) to edit required manage GM-Level

    //=           - Addet Auto protect from Input 0 (Amount/GM Level)

    //=           - Changed NPC ID cause of annoying noise

    //=           - Fixed Bug that comes through Npctalk (changed to Announce)

    //=

    //= -1.0  Finshed Scripting

    //============================================================

     

     

    Greetz Leertaste

    This is a great event, can i modify this event sir leertaste?

  11. 
    OnInit:
    setcell "prontera",X1,Y1,X2,Y2,cell_nochat,0;
    setcell "prontera",X1,Y1,X2,Y2,cell_novending,0;
    end;
    

    if i change this to

    
    OnInit:
    setcell "prontera",X1,Y1,X2,Y2,cell_pvp,0;
    
    end;
    

    is work?

    There is no cell_pvp.

    *setcell "<map name>",<x1>,<y1>,<x2>,<y2>,<type>,<flag>;
    
    Each map cell has several 'flags' that specify the properties of that cell.
    These include terrain properties (walkability, shootability, presence of water),
    skills (basilica, land protector, ...) and other (NPC nearby, no vending, ...).
    Each of these can be 'on' or 'off'. Together they define a cell's behavior.
    
    This command lets you alter these flags for all map cells in the specified
    (x1,y1)-(x2,y2) rectangle. The 'flag' can be 0 or 1 (0:clear flag, 1:set flag).
    The 'type' defines which flag to modify. Possible options include cell_walkable,
    cell_shootable, cell_basilica. For a full list, see const.txt.
    
    Example:
    
    	setcell "arena",0,0,300,300,cell_basilica,1;
    	setcell "arena",140,140,160,160,cell_basilica,0;
    	setcell "arena",135,135,165,165,cell_walkable,0;
    	setcell "arena",140,140,160,160,cell_walkable,1;
    
    This will add a makeshift ring into the center of the map. The ring will be
    surrounded by a 5-cell wide 'gap' to prevent interference from outside, and
    the rest of the map will be marked as 'basilica', preventing observers from
    casting any offensive skills or fighting among themselves. Note that the wall
    will not be shown nor known client-side, which may cause movement problems.
    
    Another example:
    
    OnBarricadeDeploy:
    	setcell "schg_cas05",114,51,125,51,cell_walkable,0;
    	end;
    OnBarricadeBreak:
    	setcell "schg_cas05",114,51,125,51,cell_walkable,1;
    	end;
    
    This could be a part of the WoE:SE script, where attackers are not allowed
    to proceed until all barricades are destroyed. This script would place and
    remove a nonwalkable row of cells after the barricade mobs.
    	
    
×
×
  • Create New...