Jump to content

script de código de canje 2025


JASHI11

Recommended Posts


  • Group:  Members
  • Topic Count:  1
  • Topics Per Day:  0.50
  • Content Count:  4
  • Reputation:   0
  • Joined:  06/03/25
  • Last Seen:  

con el permiso de no ofender al autor del script, quisiera que me ayudaran a colocarle un comando como el del archivo adjunto que seria fusión.

- actualmente se le habla al npc pero quisiera que se le agregara la opción @claim, para tener dialogo desde el comando con el script de codigo de canje.

- el archivo andjunto es otro script que ya tiene el @claim por lo cuál quienes me ayuden lo podrian sacar de allí, en realidad yo lo intente pero no lo logre.

- si es posible también modificar la opción de que el administrador pueda crear la clave de código en el chat de gm.

 

 

 

//--- Coupon NPC 1.1.2 -------------------------------------------//
//----------------------------------------------------------------//
//    ttt              000000000
//    ttt              000   000
// ttttttttt rrrrrrrrr 000   000 nnnnnnnnn
//    ttt    rrr       000   000 nnn   nnn
//    ttt    rrr       000   000 nnn   nnn
//    ttt    rrr       000   000 nnn   nnn
//    ttttt  rrr       000000000 nnn   nnn
//----------------------------------------------------------------//
//--- Changelogs: ------------------------------------------------//
// 1.0.0 Release
// 1.1.0 Added code type feature (normal|md5-hash)
// 1.1.0 Added prevention for typing 0 into Item ID or Amount
// 1.1.0 Added a feature for gms to see available coupons
// 1.1.0 Minor bug fixes
// 1.1.1 Fixed a bug that caused duplicating items
// 1.1.2 Added announce if player got a item
//----------------------------------------------------------------//
//--- Main Script ------------------------------------------------//
prontera,146,173,5    script    Coupon Jack    807,{
    
    //Set code type (0 = normal | 1 = MD5-Hash)
    set .code_type, 0;
    
    //Set code length
    set .code_length, 16;
    
    //Set Min. GM Level to add new coupons
    set .code_gmlvl, 99;
    
    setarray .coupon_code$[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","0","1","2","3","4","5","6","7","8","9";

    if(getgmlevel() >= .code_gmlvl)
    {
        mes "[^FF7700Coupon Jack^000000]";
        mes "Welcome " + strcharinfo(0) + ".";
        next;
        switch(select("Add Coupon:Show Coupons:Exit"))
        {
            case 1:
                mes "[^FF7700Coupon Jack^000000]";
                mes "Enter Item ID:";
                input @coupon_item;
                next;
                if(@coupon_item <= 0) goto L_error;
                mes "[^FF7700Coupon Jack^000000]";
                mes "Enter Item Amount:";
                input @coupon_amount;
                next;
                if(@coupon_amount <= 0) goto L_error;
                for(set @i, 0; @i < .code_length; set @i, @i+1)
                {
                    set @random_char, rand(0,(getarraysize(.coupon_code$)-1));
                    set @new_coupon$, @new_coupon$ + .coupon_code$[@random_char];
                }
                if(.code_type==1) { set @new_coupon$, md5(@new_coupon$); }
                mes "[^FF7700Coupon Jack^000000]";
                mes "Coupon added.";
                query_sql "INSERT INTO `coupons` (`code`, `item_id`, `item_amount`) VALUES ('"+@new_coupon$+"', "+@coupon_item+", "+@coupon_amount+")";
                set @new_coupon$, "";
                close;
                
            case 2:
                mes "[^FF7700Coupon Jack^000000]";
                mes "--------------------------------";
                query_sql "SELECT `code`, `item_id`, `item_amount` FROM `coupons`", .@available_code$, .@available_item, .@available_amount;
                for(set @i, 0; @i < getarraysize(.@available_code$); set @i, @i+1)
                {
                    mes "Item: " + getitemname(.@available_item[@i]);
                    mes "Amount: " + .@available_amount[@i];
                    mes "Code: " + .@available_code$[@i];
                    mes "--------------------------------";
                }
                close;
                
            case 3:
                mes "[^FF7700Coupon Jack^000000]";
                mes "Have a nice day.";
                close;
        }
    }
    mes "[^FF7700Coupon Jack^000000]";
    mes "Welcome to the Coupon Codes System. How can I help you?";
    next;
    switch(Select("Submit Coupon:Exit"))
    {
        case 1:
            mes "[^FF7700Coupon Jack^000000]";
            mes "Please enter your Coupon Code:";
            input @my_code$;
            next;
            query_sql "SELECT `code`, `item_id`, `item_amount` FROM `coupons`", .@available_code$, .@available_item, .@available_amount;
            for (set @i, 0; @i < getarraysize(.@available_code$); set @i, @i+1)
            {
                if(@my_code$==.@available_code$[@i])
                {
                    mes "[^FF7700Coupon Jack^000000]";
                    mes "You get ^0000FF" + getitemname(.@available_item[@i]) + " - " + .@available_amount[@i] + " ea.^000000";
                    query_sql "DELETE FROM `coupons` WHERE `code`='"+@my_code$+"'";
                    getitem .@available_item[@i],.@available_amount[@i];
                    //announce "Coupon Jack: " + strcharinfo(0) + " got " + .@available_amount[@i] + getitemname(.@available_item[@i]) + "(s).",0;
                    close;
                }
            }
            mes "[^FF7700Coupon Jack^000000]";
            mes "This Coupon Code doesn't exist.";
            close;
        
        case 2:
            mes "[^FF7700Coupon Jack^000000]";
            mes "Have a nice day.";
            close;
    }
    
L_error:
    mes "[^FF7700Coupon Jack^000000]";
    mes "Invalid Number";
    close;
    
OnInit:
    query_sql "CREATE TABLE IF NOT EXISTS `coupons` (`code` TINYTEXT NOT NULL, `item_id` INT NOT NULL, `item_amount` INT NOT NULL, INDEX `code` (`code`(32)) ) ENGINE=MyISAM";
}

npc de tron.txt npc_LIL TROLL.txt

Edited by JASHI11
Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  0
  • Topics Per Day:  0
  • Content Count:  255
  • Reputation:   114
  • Joined:  06/02/12
  • Last Seen:  

Spoiler

 

//--- Coupon NPC 1.1.2 -------------------------------------------//
//----------------------------------------------------------------//
//    ttt              000000000
//    ttt              000   000
// ttttttttt rrrrrrrrr 000   000 nnnnnnnnn
//    ttt    rrr       000   000 nnn   nnn
//    ttt    rrr       000   000 nnn   nnn
//    ttt    rrr       000   000 nnn   nnn
//    ttttt  rrr       000000000 nnn   nnn
//----------------------------------------------------------------//
//--- Changelogs: ------------------------------------------------//
// 1.0.0 Release
// 1.1.0 Added code type feature (normal|md5-hash)
// 1.1.0 Added prevention for typing 0 into Item ID or Amount
// 1.1.0 Added a feature for gms to see available coupons
// 1.1.0 Minor bug fixes
// 1.1.1 Fixed a bug that caused duplicating items
// 1.1.2 Added announce if player got a item
//----------------------------------------------------------------//
//--- Main Script ------------------------------------------------//
-	script	CouponNPC#main	-1,{
S_Start:
	//Set code type (0 = normal | 1 = MD5-Hash)
	.code_type = 0;
	
	//Set code length
	.code_length = 16;
	
	//Set Min. GM Level to add new coupons
	.code_gmlvl = 99;
	
	setarray .coupon_code$[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","0","1","2","3","4","5","6","7","8","9";
	
		if(getgmlevel() >= .code_gmlvl)
	{
		mes "[^FF7700Cupón Jack^000000]";
		mes "Bienvenido GM " + strcharinfo(0) + ".";
		next;
		switch(select("Agregar cupón", "Mostrar cupones", "Menú normal", "Cancelar"))
		{
			case 1:
				do {
					mes "[^FF7700Cupón Jack^000000]";
					mes "Ingrese el ID del objeto:";
					input @coupon_item;
					if (getitemname(@coupon_item) == "null") {
						clear;
						mes "[^FF7700Cupón Jack^000000]";
						mes "ID del objeto " + @coupon_item + " no encontrado.";
						if (select("Intentar de nuevo", "Cancelar") == 2)
							close;
					}
					else break;
				} while (true);
				do {
					clear;
					mes "[^FF7700Cupón Jack^000000]";
					mes mesitemlink(@coupon_item) + "?";
					mes "Ingrese la cantidad del objeto:";
					input @coupon_amount;
					if (@coupon_amount < 1 || @coupon_amount > 10000) {
						clear;
						mes "[^FF7700Cupón Jack^000000]";
						mes @coupon_amount + " no es una cantidad válida.";
						if (select("Intentar de nuevo", "Cancelar") == 2)
							close;
					}
					else break;
				} while (true);
				do {
					clear;
					mes "[^FF7700Cupón Jack^000000]";
					mes @coupon_amount + "x " + mesitemlink(@coupon_item);
					mes "¿Cuántos cupones desea crear con estas mismas recompensas?";
					next;
					if (select("Uno", "Ingresar cantidad") == 2) {
						input .@coupons;
						if (.@coupons < 1 || .@coupons > 50) {
							clear;
							mes "[^FF7700Cupón Jack^000000]";
							mes .@coupons + " no es una cantidad válida.";
							if (select("Intentar de nuevo", "Cancelar") == 2)
								close;
						}
						else break;
					}
					else break;
				} while (true);
				if (.@coupons < 2) {
					.@coupons = 1;
					do {
						switch(select("Generar código aleatorio", "Ingresar código manual", "Cancelar")) {
						case 1:
							.@random = true;
							break;
						case 2:
							clear;
							mes "[^FF7700Cupón Jack^000000]";
							mes "Ingrese el cupón:";
							mes "Longitud máxima: " + .code_length + " caracter(es)";
							input .@input_name$;
							if(getstrlen(.@input_name$) < 0 || getstrlen(.@input_name$) > .code_length) {
								clear;
								mes "[^FF7700Cupón Jack^000000]";
								mes "Inválido.";
								mes "El cupón debe tener al menos 1 caracter y un máximo de " + .code_length + " caracter(es)";
							}
							else
								.@new_coupon$[0] = .@input_name$;
							break;
						case 3:
							close;
						}
					} while (.@new_coupon$[0] == "" && !.@random);
				}
				if (.@random || .@coupons > 1) {
					for(.@i = 0; .@i < .@coupons; .@i++) {
						for(set @j, 0; @j < .code_length; set @j, @j+1) {
							set @random_char, rand(0,(getarraysize(.coupon_code$)-1));
							set .@new_coupon$[.@i], .@new_coupon$[.@i] + .coupon_code$[@random_char];
						}
						if (.code_type==1) {
							set .@new_coupon$[.@i], md5(.@new_coupon$[.@i]);
						}
					}
				}
				clear;
				mes "[^FF7700Cupón Jack^000000]";
				mes @coupon_amount + "x " + mesitemlink(@coupon_item);
				for(.@i = 0; .@i < .@coupons; .@i++)
					mes "Cupón" + (.@coupons>1?" "+(.@i+1):"") + ": ^EE8800" + .@new_coupon$[.@i] + "^000000";
				if(select("^0000FFConfirmar " + F_InsertPlural(.@coupons,"cupón") + "^000000", "Cancelar") == 2)
					close;
				for(.@i = 0; .@i < .@coupons; .@i++)
					query_sql "INSERT INTO `coupons` (`code`, `item_id`, `item_amount`) VALUES ('" + escape_sql(.@new_coupon$[.@i]) + "', "+@coupon_item+", "+@coupon_amount+")";
				clear;
				mes "[^FF7700Cupón Jack^000000]";
				mes F_InsertPlural(.@coupons,"cupón") + " agregado.";
				for(.@i = 0; .@i < .@coupons; .@i++)
					mes "Cupón" + (.@coupons>1?" "+(.@i+1):"") + ": ^EE8800" + .@new_coupon$[.@i] + "^000000";
				close;
				
			case 2:
				mes "[^FF7700Cupón Jack^000000]";
				query_sql "SELECT `code`, `item_id`, `item_amount` FROM `coupons`", .@available_code$, .@available_item, .@available_amount;
				if (getarraysize(.@available_code$) < 1)
					mes "No hay códigos disponibles.";
				for(set @i, 0; @i < getarraysize(.@available_code$); set @i, @i+1)
				{
					mes "--------------------------------";
					mes "Objeto: " + mesitemlink(.@available_item[@i]);
					mes "Cantidad: " + .@available_amount[@i];
					mes "Código: " + .@available_code$[@i];
				}
				close;
				
			case 3:
				break;

			case 4:
				mes "[^FF7700Cupón Jack^000000]";
				mes "¡Que tenga un buen día!";
				close;
		}
	}
	mes "[^FF7700Cupón Jack^000000]";
	mes "Bienvenido al sistema de códigos de cupones. ¿En qué puedo ayudarte?";
	mes " ", "También puedes usar el comando", "^0000FF@claim <código del cupón>^000000 desde cualquier parte del mundo.";
	next;
	switch(Select("Canjear cupón", "Cancelar"))
	{
		case 1:
			mes "[^FF7700Cupón Jack^000000]";
			mes "Por favor, introduce tu código de cupón:";
			input .@my_code$;
			clear;
			callsub S_Submit,.@my_code$;
			next;
		case 2:
			mes "[^FF7700Cupón Jack^000000]";
			mes "¡Que tenga un buen día!";
			close;
	}

S_Submit:
	.@my_code$ = getarg(0);
	query_sql "SELECT `code`, `item_id`, `item_amount` FROM `coupons`", .@available_code$, .@available_item, .@available_amount;
	for (@i = 0; @i < getarraysize(.@available_code$); @i++)
	{
		if(.@my_code$ == .@available_code$[@i])
		{
			if (checkweight(.@available_item[@i],.@available_amount[@i]) == 0) {
				if (getarg(1,0)) {
					message strcharinfo(0), "No tienes suficiente espacio en el inventario para reclamar este cupón.";
					end;
				}
				mes "[^FF7700Cupón Jack^000000]";
				mes "No tienes suficiente espacio en el inventario para reclamar este cupón.";
				close;
			}
			query_sql "DELETE FROM `coupons` WHERE `code`='" + escape_sql(.@my_code$) + "'";
			getitem .@available_item[@i],.@available_amount[@i];
			if (getarg(1,0)) {
				message strcharinfo(0), "¡Cupón canjeado! Has recibido " + itemlink(.@available_item[@i]) + " - " + .@available_amount[@i] + " unidad(es).^000000";
				end;
			}
			mes "[^FF7700Cupón Jack^000000]";
			mes "Has recibido ^0000FF" + getitemname(.@available_item[@i]) + " - " + .@available_amount[@i] + " unidad(es).^000000";
			close;
		}
	}
	if (getarg(1,0)) {
		message strcharinfo(0), "El cupón " + .@my_code$ + " no existe o ya fue canjeado.";
		end;
	}
	mes "[^FF7700Cupón Jack^000000]";
	mes "Este código de cupón no existe o ya fue canjeado.";
	close;

OnInit:
	query_sql "CREATE TABLE IF NOT EXISTS `coupons` (`code` TINYTEXT NOT NULL, `item_id` INT NOT NULL, `item_amount` INT NOT NULL, INDEX `code` (`code`(32)) ) ENGINE=MyISAM";
	if (strnpcinfo(2) == "main")
		bindatcmd "claim",strnpcinfo(3)+"::OnAtcommand";
	end;

OnAtcommand:
	if (.@atcmd_parameters$[0] != "")
		callsub S_Submit,implode(.@atcmd_parameters$, " "),1;
	callsub S_Start;
	end;
}

prontera,146,173,5	duplicate(CouponNPC#main)	Cupón Jack	807

 

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  1
  • Topics Per Day:  0.50
  • Content Count:  4
  • Reputation:   0
  • Joined:  06/03/25
  • Last Seen:  

- es posible comando @claim ?? que no exista npc.

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  0
  • Topics Per Day:  0
  • Content Count:  255
  • Reputation:   114
  • Joined:  06/02/12
  • Last Seen:  

48 minutes ago, JASHI11 said:

- es posible comando @claim ?? que no exista npc.

You can delete or comment out the following line so the NPC doesn't exist. The @claim command will still work.

SPA:

Puedes eliminar o comentar la siguiente línea para que no exista el NPC. El comando @claim seguirá funcionando.

Find:

prontera,146,173,5	duplicate(CouponNPC#main)	Cupón Jack	807

Replace:
 

//prontera,146,173,5	duplicate(CouponNPC#main)	Cupón Jack	807

 

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  1
  • Topics Per Day:  0.50
  • Content Count:  4
  • Reputation:   0
  • Joined:  06/03/25
  • Last Seen:  

19 hours ago, Racaae said:
//prontera,146,173,5	duplicate(CouponNPC#main)	Cupón Jack	807

Done, pero el comando @claim no funciona.

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  1
  • Topics Per Day:  0.50
  • Content Count:  4
  • Reputation:   0
  • Joined:  06/03/25
  • Last Seen:  

19 hours ago, Racaae said:
//prontera,146,173,5	duplicate(CouponNPC#main)	Cupón Jack	807

Done, pero el comando @claim no funciona.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...