Jump to content

iraciz

Members
  • Posts

    562
  • Joined

  • Last visited

  • Days Won

    7

Everything posted by iraciz

  1. Good day, I need a capable Hand to help me with this event, Well, I made this NPC who says a riddle, and the player have to find out wich item is the npc thinking about, Are five questions in total, if the player passes all trials he will be rewarded generously. The issue Here is that the player is farming twice or several times more the correct item, trading it with their other accounts, and exploting the reward because of this. The Global limit I set for the rewards are 20, and is not fair that only one dude gather all of them in their acounts. Please help with that part, Npc must store the rewarded ip and once rewarded avoid the same adress to collect the rewards again. Need to be by ip adress, account bound is useless because he can make a new account and trade the items. ????????? prontera,183,157,4 script Laurert#ltrivia 554,{ if($culmin > 19){ mes "^b330ffLaurert^000000"; mes "Ya se reclamaron suficientes premios!"; mes "Solo podiamos entregar 20 recompensas a cuentas distintas, pronto volveremos con mas acertijos"; end; } if(#trivia == 0){ soundeffectall "wild_rose_die.wav",0; mes "^b330ffLaurert^000000"; mes "Quieres jugar a resolver acetijos?"; mes "Yo te dare una pista y tu deberas traerme el objeto relacionado!"; next; mes "^b330ffLaurert^000000"; mes "Con cada paso completado irán apareciendo estas imagenes."; sleep2 500; specialeffect 18; cutin "177_01",2; sleep2 500; specialeffect 18; cutin "177_02",2; sleep2 500; specialeffect 18; cutin "177_03",2; sleep2 500; specialeffect 18; cutin "177_04",2; sleep2 500; specialeffect 18; cutin "177_05",2; next; cutin "",255; mes "^b330ffLaurert^000000"; mes "Podrás consultar siempre volviendo a hablar conmigo!"; mes "Asi que empezemos entonces con el desafío!"; next; set #trivia, 1; mes "^b330ffLaurert^000000"; mes "PRIMERA ADIVINANZA!"; mes "^FF0000UN OJO PLATEADO QUE PREVIENE EL ENVENENAMIENTO! QUE ES?^000000"; mes "Ve y trae lo que creas que sea!"; end; } if(#trivia == 1){ if(countitem(2614) < 1) callsub Falta1; soundeffectall "wild_rose_die.wav",0; emotion ET_HUK; mes "^b330ffLaurert^000000"; mes "No puede ser... Que inteligente eres! Felicidades haz resuelto la primera y mas facil de las 5 trivias.!"; specialeffect 18; cutin "177_01",2; delitem 2614,1; announce ""+strcharinfo(0)+" Supero la Primera pregunta del Gato! no vayas a revelar el secreto!.",bc_all,0xFFFF00; atcommand "@npctalk Velon#vetrivia,Muy impresionante Mi querido Laurert! Estos chicos estan haciendo sus tareas!"; next; set #trivia, 2; mes "^b330ffLaurert^000000"; mes "No cantes victoria aun! todavia faltan 4 preguntas más por averiguar. Permiteme darte tu próxima pregunta!"; next; mes "^b330ffLaurert^000000"; mes "Lee atentamente y con mucho cuidado presta atencion a esta!"; mes "^FF0000FRÍO TODO POR ARRIBA, Y MUCHO CALOR POR DEBAJO!.^000000"; next; mes "^b330ffLaurert^000000"; mes "Me vas a traer 50 items, de lo que creas corresponden al acertijo!"; close3; } if(#trivia == 2){ if(countitem(7031) < 50) callsub Falta2; soundeffectall "wild_rose_die.wav",0; emotion ET_HUK; mes "^b330ffLaurert^000000"; mes "No puede ser... Como dedujiste la segunda prueba? Adivinaste que me referia a sartenes no?! HAHA!"; specialeffect 18; cutin "177_02",2; delitem 7031,50; announce ""+strcharinfo(0)+" Supero la Segunda pregunta del Gato! no vayas a revelar el secreto!.",bc_all,0xFFFF00; atcommand "@npctalk Velon#vetrivia,WoA Laurert! Mejor haz preguntas mas dificiles porque vamos a quedar en la ruina!"; next; set #trivia, 3; mes "^b330ffLaurert^000000"; mes "No cantes victoria aun! todavia faltan 3 preguntas mas por averiguar. Permiteme darte tu proxima pregunta!"; next; mes "^b330ffLaurert^000000"; mes "Lee atentamente y con mucho cuidado presta atencion a esta!"; mes "^FF0000LOS PERROS LO ADORAN!.^000000"; next; mes "^b330ffLaurert^000000"; mes "Me vas a traer 10 items, de lo que creas corresponden al acertijo!"; close3; } if(#trivia == 3){ if(countitem(628) < 10) callsub Falta3; soundeffectall "wild_rose_die.wav",0; emotion ET_HUK; mes "^b330ffLaurert^000000"; mes "No puede ser... Adiviaste la tercera pregunta! HAHA! Te costo sacar esos miserables Huesillos no?"; specialeffect 18; cutin "177_03",2; delitem 628,10; announce ""+strcharinfo(0)+" Supero la Tercera pregunta del Gato! no vayas a revelar el secreto!.",bc_all,0xFFFF00; atcommand "@npctalk Velon#vetrivia,Maldita Sea.. Al menos tengo la satisfaccion de que le costo trabajo farmear esa shit!"; next; set #trivia, 4; mes "^b330ffLaurert^000000"; mes "No cantes victoria aun! todavia faltan 2 preguntas mas por averiguar. Permiteme darte tu proxima pregunta!"; next; mes "^b330ffLaurert^000000"; mes "Lee atentamente y con mucho cuidado presta atencion a esta!"; mes "^FF0000SE ENCUENTRA EN LA MAYORIA DE LOS DESAYUNOS!.^000000"; next; mes "^b330ffLaurert^000000"; mes "Me vas a traer 50 items, de lo que creas corresponden al acertijo!"; close3; } if(#trivia == 4){ if(countitem(574) < 50) callsub Falta4; soundeffectall "wild_rose_die.wav",0; emotion ET_HUK; mes "^b330ffLaurert^000000"; mes "No puede ser... OH NO ... Descubrió que los huevos se sirven en muchos desayunos!"; specialeffect 18; cutin "177_04",2; delitem 574,50; announce ""+strcharinfo(0)+" Supero la Cuarta pregunta del Gato! no vayas a revelar el secreto!.",bc_all,0xFFFF00; atcommand "@npctalk Velon#vetrivia,Carajo Laurert! diste un acertijo demasiado facil!... No lo arrunies con la última pregunta"; next; set #trivia, 5; mes "^b330ffLaurert^000000"; mes "No cantes victoria aun! todavia falta 1 Pregunta. Permiteme darte la pregunta!"; next; mes "^b330ffLaurert^000000"; mes "Lee atentamente y con mucho cuidado presta atencion a esta!"; mes "^FF0000EL INGREDIENTE PRINCIPAL PARA UNA GOLOSINA.^000000"; next; mes "^b330ffLaurert^000000"; mes "Me vas a traer 200 items, de lo que creas corresponden al acertijo!"; close3; } if(#trivia == 5){ if(countitem(7182) < 200) callsub Falta5; soundeffectall "wild_rose_die.wav",0; emotion ET_HUK; mes "^b330ffLaurert^000000"; mes "AJAJAJA... TE COSTO TRABAJO?!"; set #trivia, 6; specialeffect2 18; sleep2 300; cutin "177_04",2; specialeffect2 18; sleep2 300; cutin "177_05",2; specialeffect2 18; sleep2 300; cutin "177_04",2; specialeffect2 18; sleep2 300; cutin "177_05",2; specialeffect2 18; sleep2 300; cutin "177_04",2; specialeffect2 18; sleep2 300; cutin "177_05",2; delitem 7182,200; getitem 7539,100; getitem 40080,1; getitem 40004,3; getitem 12259,10; getitem 13995,10; getitem 25655,25; getitem 25290,200; getitem 12210,1; getitem 7776,3; set Zeny,Zeny+2000000; $culmin++; announce ""+strcharinfo(0)+" Ha Superado las Preguntas del Gato! Felicidades.",bc_all,0xFFFF00; atcommand "@npctalk Velon#vetrivia,Que remedio! no queda mas que aceptar la derrota!"; next; mes "^b330ffLaurert^000000"; mes "Felicidades, espero que te hayas divertido con nosotros!."; close3; } if(#trivia == 6){ mes "^b330ffLaurert^000000"; mes "FELICIDADES POR COMPLETAR ESTA PRUEBA! Espero que te haya tomado tiempo descubrirlas jehehe!"; next; mes "^b330ffLaurert^000000"; mes "Este evento solo aplica una vez por cuenta!, Por favor se conciente y permite que otros jugadores tengan la oportunidad de realizarla! Estare entregando unicamente 20 recompensas!"; next; mes "^b330ffLaurert^000000"; mes "Despues de entregar las 20 recompensas a lo largo del servidor! deshabilitaremos los juegos automaticamente!."; end; } Falta1: mes "^b330ffLaurert^000000"; soundeffectall "wild_rose_attack.wav",0; emotion ET_SMILE; mes "Eres malo jugando esto!"; mes "Ningun item de tu inventario corresponde a mi adivinanza!"; next; mes "^b330ffLaurert^000000"; mes "Te repito el acertijo!"; mes "^FF0000UN OJO PLATEADO QUE PREVIENE EL ENVENENAMIENTO! QUE ES?^000000"; end; Falta2: cutin "177_01",2; mes "^b330ffLaurert^000000"; soundeffectall "wild_rose_attack.wav",0; emotion ET_SMILE; mes "Eres malo jugando esto!"; mes "Ningun item de tu inventario corresponde a mi adivinanza!"; next; mes "^b330ffLaurert^000000"; mes "Te repito el acertijo!"; mes "^FF0000FRÍO TODO POR ARRIBA, Y MUCHO CALOR POR DEBAJO!.^000000"; mes "Recuerda que son 50 de estos objetos los que debes traer!"; close3; Falta3: cutin "177_02",2; mes "^b330ffLaurert^000000"; soundeffectall "wild_rose_attack.wav",0; emotion ET_SMILE; mes "Eres malo jugando esto!"; mes "Ningun item de tu inventario corresponde a mi adivinanza!"; next; mes "^b330ffLaurert^000000"; mes "Te repito el acertijo!"; mes "^FF0000LOS PERROS LO ADORAN!.^000000"; mes "Recuerda que son 10 de estos objetos los que debes traer!"; close3; Falta4: cutin "177_03",2; mes "^b330ffLaurert^000000"; soundeffectall "wild_rose_attack.wav",0; emotion ET_SMILE; mes "Eres malo jugando esto!"; mes "Ningun item de tu inventario corresponde a mi adivinanza!"; next; mes "^b330ffLaurert^000000"; mes "Te repito el acertijo!"; mes "^FF0000SE ENCUENTRA EN LA MAYORIA DE LOS DESAYUNOS!.^000000"; mes "Recuerda que son 50 de estos objetos los que debes traer!"; end; Falta5: cutin "177_04",2; mes "^b330ffLaurert^000000"; soundeffectall "wild_rose_attack.wav",0; emotion ET_SMILE; mes "Eres malo jugando esto!"; mes "Ningun item de tu inventario corresponde a mi adivinanza!"; next; mes "^b330ffLaurert^000000"; mes "Te repito el acertijo!"; mes "^FF0000EL INGREDIENTE PRINCIPAL PARA UNA GOLOSINA.^000000"; mes "Recuerda que son 100 de estos objetos los que debes traer!"; end; } prontera,180,156,6 script Velon#vetrivia 876,{ soundeffectall "wild_rose_die.wav",0; mes "^b330ffGato Velon^000000"; mes "No se que mosca lo picó! Ahora le dio por hacer preguntas y regalar objetos!"; end; }
  2. Nice I still use it, by the way, there is a client side negative effect, somehow repeated clicking on the spawned npcs sometimes crashes the exe but not the server.
  3. Nice tip, I will find out how to apply this.
  4. Hi, can you guys please help me, I'm using SavingAngel script from peopleperson collection and this npc basically revive one player in any map he is. the problem is that the order is resurrecting all chars and not only the name of the char that was input. I have tried 2 alternatives I know, like @alive, or @resurrect, even changed the @ for a # in the script, but it fails. Here's the fragment of the lines next; mes "[Kasondra]"; mes "Ingresa el nombre de la pobre persona."; mes "^FF0000Escribe el nombre exactamente, de lo contrario mis poderes fallarán y me debilitaré por nada.^000000"; if(select("Continuar:No importa")==2) { next; mes "[Kasondra]"; mes "Adios."; close3; } input .@name$; if(getmapxy(@map$,@x,@y,bl_pc,.@name$)!=0) { next; mes "[Kasondra]"; mes "Lo siento, pero no puedo revivir fragmentos de tu imaginación."; close3; } next; if(zeny<1000000) { next; mes "[Kasondra]"; mes "¡Por favor, vete, me has lastimado más de lo que puedes saber!"; close3; } set zeny,zeny-1000000; atcommand "@revive "+.@name$+""; specialeffect 338; announce "Kasondra envía una ola poderosa por todo el mundo para resucitar a "+.@name$+".",8; mes "[Kasondra]"; mes "Mi trabajo está hecho, ¡ahora debo descansar!"; close3; Is reviving al players in map, not only the choosen one. revive.mp4
  5. atcommand "@revive "+.@name$+""; Saving angel line is resurrectin al dead players in the map! not only an unique char name. how to fix it?
  6. Awesome script, Need an announcement when the event is finished. like a map broadcast or something. Other issue is that, any gm can select launch the event and repet it dozen of times in a row and the events runs together..
  7. thanks for the request, I will update in few minutes! Alice pending
  8. OUTDATED Instance db uses YML not txt, warps are bugged, BL's definitions outdated.
  9. I have the same problem, all those dmm scripts are outdated and not wroking properly in recent rAthena versions
  10. Users are not getting reward item, any idea? I am using emistry 3.4 ROTD and script is displaying this error: [Error]: buildin_getitem: Player with map id '0' is not found. Don't know ehat line to edit up to date, in order to make chars get the rewarded item, thanks in advance prontera,109,171,6 script Race of the Day 436,{ set .@gmlevel,getgmlevel(); do{ set .@menu,select("^4EEE94ROTD Information^000000", ( .@gmlevel < .gm_level )?"":"^FF0000[GM]^000000Set a New Monster's Race", ( .@gmlevel < .gm_level )?"":"^FF0000[GM]^000000Set EXP Bonus", ( .@gmlevel < .gm_level )?"":"^FF0000[GM]^000000Set Item / Zeny Bonus", "Close" ); switch( .@menu ) { Case 1: mes "^FF0000ROTD^000000 se refiere a ^0000FFRace of the Day^000000"; mes "En otras palabras, significa que esa ^FF0000Raza de Monstruo^000000 que derrotes te otorgará ^FF0000Extra Bonus EXP / Item / Zeny ^000000."; next; mes "[ ^FF0000ROTD de Hoy^000000 ]"; mes "^0000FF"+.rotd$[.today_rotd]+"^000000 Race"; if ( .rotd_exp_bonus ) mes " ~ ^777777"+.rotd_exp_bonus+"% mas exp^000000"; if ( ( .rotd_item_amount && .rotd_item_rate ) || .rotd_zeny || .rotd_exp_bonus ) { mes " "; mes "Recompensa : "+( ( .rotd_item_rate )? .rotd_item_rate+"%":"" )+" : "; if ( .rotd_item_amount && .rotd_item_rate ) mes " ~ ^777777"+.rotd_item_amount+" x "+getitemname( .rotd_item_id )+"^000000"; if ( .rotd_zeny ) mes " ~ ^777777"+.rotd_zeny+" Zeny^000000"; mes " "; mes "Cantidades son aleatorias..."; } break; Case 2: mes "Select new race."; set .today_rotd,select( .rotd_menu$ ) - 1; if ( .today_rotd >= .rotd_size ) set .today_rotd,rand( .rotd_size ); mes "New Race : ^777777"+.rotd$[.today_rotd]+"^000000"; delwaitingroom; waitingroom "[ROTD]:"+.rotd$[.today_rotd]+" ",0; break; Case 3: mes "Set new exp bonus. (%)"; input .rotd_exp_bonus,0,100; if ( .rotd_exp_bonus ) mes "ROTD EXP : "+.rotd_exp_bonus+" %"; break; Case 4: mes "Set Rotd bonus"; mes "Inset Zeny Bonus"; input .@zeny; mes "Insert Item ID"; do{ input .@item,0,40123; if ( !.@item ) close; }while( getitemname( .@item ) == "null" ); mes "Enter amount."; input .@amount,0,30000; mes "Enter Rate to gain."; input .@rate,0,100; if ( .@amount && .@rate ) { next; mes "Updated item bonus : ( "+.@rate+"% )"; mes "^777777"+.@amount+" x "+getitemname( .@item )+"^000000"; mes "^777777"+.@zeny+" Zeny^000000"; if ( select( "Confirm","Cancel" ) == 1 ) { set .rotd_item_id,.@item; set .rotd_item_amount,.@amount; set .rotd_item_rate,.@rate; set .rotd_zeny,.@zeny; mes "Updated."; } } default: close; } next; }while( .@menu != 5 ); close; OnInit: // min gm level set .gm_level,80; // monster race list setarray .rotd$[0], "Formless", "Undead", "Brute", "Plant", "Insect", "Fish", "Demon", "Demi Human", "Angel", "Dragon"; set .rotd_size,getarraysize( .rotd$ ); for( set .@i,0; .@i < .rotd_size; set .@i,.@i + 1 ) set .rotd_menu$,.rotd_menu$ + .rotd$[.@i] +":"; set .rotd_menu$,.rotd_menu$ + "^0055FFRandom Race^000000"; // min party member lv to gain exp set .party_level_range,10; // daily reset OnClock0000: set .today_rotd,rand( .rotd_size ); set .rotd_exp_bonus,rand( 15,25 ); delwaitingroom; waitingroom "[ROTD]:"+.rotd$[.today_rotd]+" ",0; end; OnNPCKillEvent: if ( getmonsterinfo( killedrid,MOB_RACE ) == .today_rotd ) { set .@partyid,getcharid(1); set .@mob_base_exp,(( getmonsterinfo( killedrid,MOB_BASEEXP ) / 100 ) * .rotd_exp_bonus ); set .@mob_job_exp,(( getmonsterinfo( killedrid,MOB_JOBEXP ) / 100 ) * .rotd_exp_bonus ); if ( .@partyid ) { set .@aid,getcharid(3); set .@baselevel,BaseLevel; set .@map$,strcharinfo(3); getpartymember .@partyid,1; getpartymember .@partyid,2; while( .@i < $@partymembercount ) { if ( isloggedin( $@partymemberaid[.@i],$@partymembercid[.@i] ) ) if ( attachrid( $@partymemberaid[.@i] ) ) if ( strcharinfo(3) == .@map$ && ( BaseLevel - .@baselevel ) <= .party_level_range && ( BaseLevel - .@baselevel ) >= ~.party_level_range && Hp >= 1 ) { set BaseExp,( BaseExp + .@mob_base_exp ); set JobExp,( JobExp + .@mob_job_exp ); dispbottom "[ROTD Party] : "+.@mob_base_exp+" EXP"; } set .@i,.@i + 1; } attachrid( .@aid ); } else { set BaseExp,( BaseExp + .@mob_base_exp ); set JobExp,( JobExp + .@mob_job_exp ); dispbottom "[ROTD SOLO] : "+.@mob_base_exp+" EXP"; } if ( rand( 100 ) < .rotd_item_rate && .rotd_zeny ) set Zeny,Zeny + rand( .rotd_zeny ); if ( rand( 100 ) < .rotd_item_rate && .rotd_item_amount ) getitem .rotd_item_id,rand( .rotd_item_amount ),.@aid; } end; }
  11. [Error]: Loading NPC file: npc/custom/dualkick.txt script error on npc/custom/dualkick.txt line 22 script:add_word: invalid word. A word consists of undercores and/or alphanumeric characters, and valid variable prefixes/postfixes. 17 : //===== Contact Info: ======================================== 18 : //= [Tauro] 19 : //= Email: [email protected] 20 : //= Discord: Trinity#7962 21 : //============================================================ * 22 : '-' script dl_map -1,{ 23 : end; 24 : 25 : 26 : OnInit: 27 : // 1= if you have gepard 0=if you do not use gepard
  12. Not working, version 3,4 and players are not receiving extra exp, or items. Is useless
  13. [Error]: Loading NPC file: npc/custom/woe1.5.txt script error on npc/custom/woe1.5.txt line 193 parse_simpleexpr: unmatched ')' 188 : .@reward_zeny = .Reward_ Leader[2]; 189 : } 190 : query_sql("INSERT INTO `mail` (s end_name,dest_id,title,message,nameid,amount,identify,zeny,time) VALUES ("+ 191 : "'no-reply',"+.@cid[.@ j]+",'** Siege Reward: "+getcastlename(.Castles$[.@i])+" **',"+ 192 : "'Brave one,% % Congra tulations!% Your guild has successfully occupied% territory in the War of Emperi um on% "+.@str$+".% % % % % [ Your reward is attached. ]',"+ * 193 : .@reward_id+","+.@rewa rd_amt+",0,"+.'.'@reward_zeny+",UNIX_TIMESTAMP(NOW()))"); 194 : if (!getd(".@str_"+.@cid[.@j]) & & isloggedin(.@aid[.@j],.@cid[.@j])) { 195 : setd ".@str_"+.@cid[.@j] ,1; 196 : message rid2name(.@aid[. @j]),"You've got mail! Please re-login to update your mailing list."; 197 : } 198 : } else if (isloggedin(.@aid[.@j])) {
  14. It's done and solved, thankyou all for the support! Bless //mapflags prtg_cas01 mapflag woe_consume prtg_cas02 mapflag woe_consume prtg_cas03 mapflag woe_consume prtg_cas04 mapflag woe_consume prtg_cas05 mapflag woe_consume payg_cas01 mapflag woe_consume payg_cas02 mapflag woe_consume payg_cas03 mapflag woe_consume payg_cas04 mapflag woe_consume payg_cas05 mapflag woe_consume gefg_cas01 mapflag woe_consume gefg_cas02 mapflag woe_consume gefg_cas03 mapflag woe_consume gefg_cas04 mapflag woe_consume gefg_cas05 mapflag woe_consume aldeg_cas01 mapflag woe_consume aldeg_cas02 mapflag woe_consume aldeg_cas03 mapflag woe_consume aldeg_cas04 mapflag woe_consume aldeg_cas05 mapflag woe_consume arug_cas01 mapflag woe_consume arug_cas02 mapflag woe_consume arug_cas03 mapflag woe_consume arug_cas04 mapflag woe_consume arug_cas05 mapflag woe_consume schg_cas01 mapflag woe_consume schg_cas02 mapflag woe_consume schg_cas03 mapflag woe_consume schg_cas04 mapflag woe_consume schg_cas05 mapflag woe_consume
  15. Hello dear, this mapflag is added in WoE script right?
  16. I'm having issues in WoE, because the potions flagged for that maps are not consumed. can't be used. This flagged items are from easycore bg telma .@bgchar = getBattleFlag("bg_reserved_char_id"); .@woechar = getBattleFlag("woe_reserved_char_id"); mes "[Telma]"; if (countitem(.@badge) < (.@cost*.@sets)) { mes "You don't have enoughts ^FF0000"+getitemname(.@badge)+"s^000000 to buy"+(.@amt*.@sets)+" "+getitemname(.@item_id)+"s."; } else if (!checkweight(.@item_id, .@amt*.@sets)) { mes "You are carrying to much weight."; } else { delitem .@badge, .@cost*.@sets; if (.@bg_item) // Battleground's Consumables getitem2 .@item_id,(.@amt*.@sets),1,0,0, 254, 0, .@bgchar & 0xFFFF, .@bgchar >> 0x10; else getitem2 .@item_id,(.@amt*.@sets),1,0,0, 254, 0, .@woechar & 0xFFF, .@woechar >> 0x10; BG ITEMS ARE WORKING FINE, THE PROBLEM IS THAT THE WOE FLAGGED ITEMS CAN'T BE USED IN THE WOE MAPS, ANY IDEA? The WoE flagged item, is not consumed, I search every where and I can't find Where are those battleflags? scr? confs? It seems that the easycore patch do not included this part in his release .@bgchar = getBattleFlag("bg_reserved_char_id"); .@woechar = getBattleFlag("woe_reserved_char_id"); getitem2 .@item_id,(.@amt*.@sets),1,0,0, 254, 0, .@woechar & 0xFFFF, .@woechar >> 0x10;
  17. Thank you, now is working fine, a new topic should be made for this,
  18. Any Idea why Bowling Bash always misses?
  19. Well, Is supossed to not show the damage output when the GM is in hiding. But players can still see.... This brought me a lot of problems, any way to disable it? thanks in advance.
  20. Good day friends, I found this command, that shows in dispbottom a vending item in any player stores. But this information is only displayed for players on vending, The other users who try this command will ever show "Nobody is selling it now." Is there any way to modify this code and allow all players to use it? Everyone, not only vending users. /*========================================== * @whosell - List who is vending the item (amount, price, and location). * revamped by VoidLess, original by zephyrus_cr *------------------------------------------*/ ACMD_FUNC(whosell) { char item_name[100]; int item_id = 0, j, count = 0, sat_num = 0; int s_type = 1; // search bitmask: 0-name,1-id, 2-card, 4-refine int refine = 0,card_id = 0; bool flag = 0; // place dot on the minimap? struct map_session_data* pl_sd; struct s_mapiterator* iter; unsigned int MinPrice = battle_config.vending_max_value, MaxPrice = 0; struct item_data *item_data; nullpo_retr(-1, sd); if (!message || !*message) { clif_displaymessage(fd, "Use: @whosell (<+refine> )(<item_id>)(<[card_id]>) or @whosell <name>"); return -1; } if (sscanf(message, "+%d %d[%d]", &refine, &item_id, &card_id) == 3){ s_type = 1+2+4; } else if (sscanf(message, "+%d %d", &refine, &item_id) == 2){ s_type = 1+4; } else if (sscanf(message, "+%d [%d]", &refine, &card_id) == 2){ s_type = 2+4; } else if (sscanf(message, "%d[%d]", &item_id, &card_id) == 2){ s_type = 1+2; } else if (sscanf(message, "[%d]", &card_id) == 1){ s_type = 2; } else if (sscanf(message, "+%d", &refine) == 1){ s_type = 4; } else if (sscanf(message, "%d", &item_id) == 1 && item_id == atoi(message)){ //names, that start on num are not working //so implemented minumum item_id>500 //or better make item_id == atoi(message) ? s_type = 1; } else if (sscanf(message, "%99[^\n]", item_name) == 1){ s_type = 1; if ((item_data = itemdb_searchname(item_name)) == NULL){ clif_displaymessage(fd, "Not found item with this name"); return -1; } item_id = item_data->nameid; } else { clif_displaymessage(fd, "Use: @whosell (<+refine> )(<item_id>)(<[card_id]>) or @whosell <name>"); return -1; } //check card if(s_type & 2 && ((item_data = itemdb_exists(card_id)) == NULL || item_data->type != IT_CARD)){ clif_displaymessage(fd, "Not found a card with than ID"); return -1; } //check item if(s_type & 1 && (item_data = itemdb_exists(item_id)) == NULL){ clif_displaymessage(fd, "Not found an item with than ID"); return -1; } //check refine if(s_type & 4){ if (refine<0 || refine>10){ clif_displaymessage(fd, "Refine out of bounds: 0 - 10"); return -1; } /*if(item_data->type != IT_WEAPON && item_data->type != IT_ARMOR){ clif_displaymessage(fd, "Use refine only with weapon or armor"); return -1; }*/ } iter = mapit_getallusers(); for( pl_sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); pl_sd = (TBL_PC*)mapit_next(iter) ) { if( pl_sd->vender_id ) //check if player is vending { for (j = 0; j < pl_sd->vend_num; j++) { if((item_data = itemdb_exists(sd->cart.u.items_cart[pl_sd->vending[j].index].nameid)) == NULL) continue; if(s_type & 1 && sd->cart.u.items_cart[pl_sd->vending[j].index].nameid != item_id) continue; if(s_type & 2 && ((item_data->type != IT_ARMOR && item_data->type != IT_WEAPON) || (sd->cart.u.items_cart[pl_sd->vending[j].index].card[0] != card_id && sd->cart.u.items_cart[pl_sd->vending[j].index].card[1] != card_id && sd->cart.u.items_cart[pl_sd->vending[j].index].card[2] != card_id && sd->cart.u.items_cart[pl_sd->vending[j].index].card[3] != card_id))) continue; if(s_type & 4 && ((item_data->type != IT_ARMOR && item_data->type != IT_WEAPON) || sd->cart.u.items_cart[pl_sd->vending[j].index].refine != refine)) continue; if(item_data->type == IT_ARMOR) snprintf(atcmd_output, CHAT_SIZE_MAX, "+%d %d[%d] | Price %d | Amount %d | Map %s[%d,%d] | Seller %s",sd->cart.u.items_cart[pl_sd->vending[j].index].refine ,sd->cart.u.items_cart[pl_sd->vending[j].index].nameid ,sd->cart.u.items_cart[pl_sd->vending[j].index].card[0] ,pl_sd->vending[j].value ,pl_sd->vending[j].amount ,mapindex_id2name(pl_sd->mapindex) ,pl_sd->bl.x,pl_sd->bl.y ,pl_sd->status.name); else if(item_data->type == IT_WEAPON) snprintf(atcmd_output, CHAT_SIZE_MAX, "+%d %d[%d,%d,%d,%d] | Price %d | Amount %d | Map %s[%d,%d] | Seller %s",sd->cart.u.items_cart[pl_sd->vending[j].index].refine ,sd->cart.u.items_cart[pl_sd->vending[j].index].nameid ,sd->cart.u.items_cart[pl_sd->vending[j].index].card[0] ,sd->cart.u.items_cart[pl_sd->vending[j].index].card[1] ,sd->cart.u.items_cart[pl_sd->vending[j].index].card[2] ,sd->cart.u.items_cart[pl_sd->vending[j].index].card[3] ,pl_sd->vending[j].value ,pl_sd->vending[j].amount ,mapindex_id2name(pl_sd->mapindex) ,pl_sd->bl.x,pl_sd->bl.y ,pl_sd->status.name); else snprintf(atcmd_output, CHAT_SIZE_MAX, "ID %d | Price %d | Amount %d | Map %s[%d,%d] | Seller %s",sd->cart.u.items_cart[pl_sd->vending[j].index].nameid ,pl_sd->vending[j].value ,pl_sd->vending[j].amount ,mapindex_id2name(pl_sd->mapindex) ,pl_sd->bl.x, pl_sd->bl.y ,pl_sd->status.name); if(pl_sd->vending[j].value < MinPrice) MinPrice = pl_sd->vending[j].value; if(pl_sd->vending[j].value > MaxPrice) MaxPrice = pl_sd->vending[j].value; clif_displaymessage(fd, atcmd_output); count++; flag = 1; } if(flag && pl_sd->mapindex == sd->mapindex){ clif_viewpoint(sd, 1, 1, pl_sd->bl.x, pl_sd->bl.y, ++sat_num, 0xFFFFFF); flag = 0; } } } mapit_free(iter); if(count > 0) { snprintf(atcmd_output,CHAT_SIZE_MAX, "Found %d ea. Prices from %dz to %dz", count, MinPrice, MaxPrice); clif_displaymessage(fd, atcmd_output); } else clif_displaymessage(fd, "Nobody is selling it now."); return 0; }
  21. View File Custom Shield Sprites Custom Sprites for existing shields: - 2150 Upg Buckler - 28905 Unity Buckler - 2148 Rotha Shield - 2151 Upg Shield - 2147 Round Buckler More Coming Soon Submitter iraciz Submitted 06/26/2020 Category Weapon & Shields Video Content Author iraciz  
  22. Version 1.0.0

    599 downloads

    Custom Sprites for existing shields: - 2150 Upg Buckler - 28905 Unity Buckler - 2148 Rotha Shield - 2151 Upg Shield - 2147 Round Buckler More Coming Soon
    Free
  23. I recommend euphy's card Trader in their script's collection: https://rathena.org/board/topic/64394-✰-euphys-scripts-✰/?tab=comments#comment-104681 I comes with an integrated card recycling point shop that you can easily edit.
  24. BMP is broken, download another item bmp, and paste the hokage hat, then rename the edited bmp as hokage hat, load to your grf, and problem will be solved.
  25. - Necesitaremos el GRF EDITOR para extraer del GRF el sprite que queramos modificar - Extraemos unicamente el SPR del objeto a editar, Aislaremos nuestro SPRITE en una carpeta, lo rompemos (extraemos todos los bitmaps) con el programa SPRCONVIEW, para hacer esto tenemos que darle a la opción convert Spr to Bmp. En el primer boton Browse que muestra la imagen, eliges el sprite que descargaste y le das a convert. las imagenes que se van a extraer de este sprite van a ir a parar en la misma carpeta donde esta ubicado el sprite, por lo que no elegimos BMP directory. Se recomienda tener el sprite aislado en una carpeta nueva.... no queras llenar tu escritorio con mas de 100 iconos de bitmaps ? Elegimos nuestra imagen Modelo, Preferiblemente una donde se vean todas las cualidades del objeto que vamos a RECOLOREAR, ELIMINAMOS EL RESTO El BITMAP elegido lo debemos abrir con el programa ADOBE CS6, Yo uso el portable Una vez abierto el Adobe CS6. Nos vamos a la parte que dice Archivo, y le damos a Abrir, ahí elegimos el bitmap que habíamos seleccionado, y una vez abierto nos vamos a la barra superior y elegimos imagen, Luego Modo, y por ultimo TABLA DE COLORES Cuando se Abre la Tabla de Colores Elegimos la Cuenta Gotas, le Damos un solo Click Buscamos la Porción de color que querramos editar! Y le damos SOLAMETE UN CLICK con el cuentagotas, Esto nos indicara de que cuadrante de la paleta procede el color que elegimos. YO CLICKIE EL PANTALON DEL WHITESMITH PARA SABER DONDE ESTABAN ESOS COLORES MUY IMPORTANTE A LA HORA DE EDITAR PALETAS, Es que no podemos editar lo que nos de la gana, NO PODEMOS ELEGIR UN SOLO CUADRITO! Tienes que elegir los 8 Cuadros de la regla donde se descubrió el color que acabas de clickear con el cuentagotas, PARA SELECCIAR LOS COLORES DEBES VOLVER A CLICKEAR EN EL CUENTAGOTAS PARA DESACTIVAR LA HERRAMIENTA. SI TE FIJAS EN LA IMAGEN AL VOLVER A CLICKEAR EL CUENTAGOTAS YA NO ESTARA EN HILIGHT! y ya con esto puedes seleccionar la rama de colores que descubriste Seleccionamos la regla de colores que habíamos descubierto, SIEMPRE TIENES QUE ELEGIRLA desde el Extremo Izquierdo hasta el Derecho, MANTENIENDO PRESIONADO EL CLICK Y ARRASTRANDO EL CURSOR A LO LARGO DE ESOS 8 BITS.. ASEGURARTE DE SELECCIONAR UNICAMENTE ESOS 8 DONDE DESCUBRISTE EL COLOR CON EL CUENTAGOTAS, No puedes pasarte porque editarias otra porcion del dibujo que no quisieras. CUANDO LO TIENES SELECCIONADO SUELTA EL CLICK DEL MOUSE Y SALDRA LA PANTALLA DE EDICIÓN DE COLORES ELIGES EL PRIMER COLOR Y LE DAS OK CUANTO ELIGES EL PRIMER COLOR, SE ABRIRÁ EL SELECTOR DEL ULTIMO COLOR, Cuando vas seleccionando el ultimo color vas a ir viendo como va cambiando el color de regla que elegiste... Lo que conseguimos con haber seleccionado los 8bits de la regla del color es un efecto mate que se ira aplicando en el color que descubrimos con el cuentagotas. La clave de un buen paletaje es Elegir Un primer color claro, y un ultimo color oscuro. Pero tu podrás hacerlo como mas te guste. Volvemos a utilizar nuestro cuentagotas para ver que mas podemos encontrar, esta vez seleccione los guantes del Whitesmith y descubri la regla de colores del Guante Repetiré el paso anterior, Desmarcare el gotero, Luego elegiré los 8 bits de la regla de colores donde encontré el color del guante! Usare un gris claro como primer color y un negro oscuro como ultimo color, para ver que me resulta. Descubrí que esta regla no solo abarca los guantes, si no que también comparte el color de los sujetadores de la camisa de nuestro Withesmith, y aquí es donde hago valido lo que dije anteriormente, QUE NO PODEMOS EDITAR LO QUE NOS DE LA GANA A VOLUNTAD. Solo podemos cambiar el matiz de la regla de colores. Tras experimentar mas con el gotero, encontramos varias reglas de colores que pudimos editar en nuestro whitesmith y este es el resultado final, Felicidades pues poseemos un color que ni el mismo Kamishi y su popular pack de paletas ha hecho. Le damos a guardar, y lo guardamos como MICROSOFT PAL Ya tenemos nuestro Archivo PAL, Para visualizarlo deberemos abrir el SPRITE! ojo el spr no el bitmap. Y en la pestaña Palette ponemos OPEN PALETE y seleccionamos la que recien guardamos. Podras ver el objeto en accion con la nueva gama de colores que le aplicaste Ese archivo pal puedes enviarlo al grf donde tenga las palettes siempre y cuando utilizes el nombre correspondiente de job, y el numero de paleta en la cual quieres que se muestre ese color. Debo aclarar que para que esas paletas se muestren correctamente en el cliente deberás abrir el archivo y remover la firma, ESTO APLICA UNICAMENTE PARA PALETAS DE COLOR DE PELO Y COLOR DE ROPA DE JOBS. La firma que debes borrar es la que muestro seleccionada aqui en la imagen. ----------------------------------------------------------------------------------------------------------------------------- SI EN LUGAR DE UN JOB, EDITASTE UN ITEM, UN MONSTRUO O UN NPC, ARMA ETC, SIMPLEMENTE ABRE EL SPRITE, CARGA LA PALETA Y DALE SAVE, aqui no hace falta remover firmas. Con el tiempo y dedicación seras un experto, podrás crear armas nuevas a bases de recolor, Podrás generar nuevos colores de cabello Podrás reparar las caras de algunos sprites donde los tintes o paletas manchan la cara Podrás crear tus propios escudos y armas, insertando y modificando imágenes y armando los sprites a partir de bitmaps. s
×
×
  • Create New...