@Quesooo If failed x3 the players will get nuked using this:
For the single slot machine mode, find this part of the script:
cutin .ssm_animate$[3] + atoi(.ssm_animate$[.@a]),4;
dispbottom "Failed";
below that line, add the following:
slt_fld01++;
if (slt_fld01 >= 3){
slt_fld01 = 0;
atcommand "@nuke "+strcharinfo(0);
}
For the Triple slot machine mode, find his part of the script:
} else { dispbottom "Failed"; }
and replace it with this:
} else {
dispbottom "Failed";
slt_fld03++;
if (slt_fld03 >= 3){
slt_fld03 = 0;
atcommand "@nuke "+strcharinfo(0);
}
}
Here's your script, I already added the changes I made above.
prontera,163,161,4 script SlotMachine 563,{
if( getgmlevel() == 99 ) {
mes "Welcome Administrator.","What would you like to do?";
menu "Play Game",-,"Change Slot Machine Mode",iMode;
next;
}
switch( getd(".mode"+strnpcinfo(3)+"") ){
case 0: // Single Slot machine mode.
mes "Do you want to play a game?";
if( !.payment ) { mes "It costs: "+ .ssm_payment_message$[0] +" to play."; }
else if ( .payment == 1 ) { mes "It costs: "+ .ssm_payment_message$[1] +" to play."; }
else if ( .payment == 2 ) { mes "It costs: "+ .ssm_payment_message$[0] +" & "+ .payment_message$[1] +" to play."; }
if( select("YES:NO") == 2 || Zeny < .ssm_payment[0] && ( !.payment || .payment == 2 ) || countitem(.ssm_payment[1]) < .ssm_payment[2] && .payment ){ close; }
while( @menu == 1 ){
if (.EventON == 0) {mes "Slot Machine already finished"; cutin "",255; end;}
if( !.payment || .payment == 2 ) { Zeny -= .ssm_payment[0]; }
if( .payment ) { delitem( .ssm_payment[1], .ssm_payment[2] ); }
if( .soundeffects ) { soundeffect "slot_jackpot.wav",0; }
.@a = rand(1,100);
if( .@a < atoi(.ssm_animate$[0]) ){ .@a = 1; } else { .@a = 2; }
.@b = 1;
while( .@b < atoi(.ssm_animate$[.@a]) ) {
cutin .ssm_animate$[3] + .@b,4; sleep2 ( ( atoi(.ssm_animate$[4]) * 1000 ) / atoi(.ssm_animate$[.@a]) ); .@b++;
}
if( .@a == 1 ){
cutin .ssm_animate$[3] + atoi(.ssm_animate$[.@a]),4;
dispbottom "Failed";
slt_fld01++;
if (slt_fld01 >= 3){
slt_fld01 = 0;
atcommand "@nuke "+strcharinfo(0);
}
}
else {
cutin .ssm_animate$[3] + atoi(.ssm_animate$[.@a]),4;
switch(rand(5)) {
case 0:
getitem 603,5;
specialeffect2 10;
break;
case 1:
getitem 617,5;
specialeffect2 10;
break;
case 2:
getitem 644,5;
specialeffect2 10;
break;
case 3:
getitem 616,1;
specialeffect2 10;
break;
case 4:
getitem 7776,2;
specialeffect2 10;
break;
case 5:
getitem 18571,1;
specialeffect2 10;
break;
}
}
if( select("Another Round:I'm done") == 2 || Zeny < .ssm_payment[0] && ( !.payment || .payment == 2 ) || countitem(.ssm_payment[1]) < .ssm_payment[2] && .payment ){ cutin "",255; close; }
}
end;
case 1: // Triple Slot machine mode.
mes "Do you want to play a game?";
if( !.payment ) { mes "It costs: "+ .tsm_payment_message$[0] +" to play."; }
else if ( .payment == 1 ) { mes "It costs: "+ .tsm_payment_message$[1] +" to play."; }
else if ( .payment == 2 ) { mes "It costs: "+ .tsm_payment_message$[0] +" & "+ .tsm_payment_message$[1] +" to play."; }
if( select("YES:NO") == 2 || Zeny < .tsm_payment[0] && ( !.payment || .payment == 2 ) || countitem(.tsm_payment[1]) < .tsm_payment[2] && .payment ){ close; }
while( @menu == 1 ){
if (.EventON == 0) {mes "Slot Machine already finished"; cutin "",255; end;}
if( !.payment || .payment == 2 ) { Zeny -= .tsm_payment[0]; }
if( .payment ) { delitem( .tsm_payment[1], .tsm_payment[2] ); }
if( .soundeffects ) { soundeffect "slot_jackpot.wav",0; }
// Slot 1 = 100% Chance for success. (Because I didn't make a fail animation for it.
.@2 = rand(1,100); //Rolls dice for Slot 2
.@3 = rand(1,100); //Rolls dice for Slot 3
if( .@2 <= atoi(.tsm_animate$[0]) && .@3 <= atoi(.tsm_animate$[1]) ){ .@a = 8; }
else if( .@2 <= atoi(.tsm_animate$[0]) && .@3 > atoi(.tsm_animate$[1]) ){ .@a = 6; }
else if( .@2 > atoi(.tsm_animate$[0]) && .@3 <= atoi(.tsm_animate$[1]) ){ .@a = 4; }
else { .@a = 2; }
.@b = 1;
while( .@b < atoi(.tsm_animate$[.@a+1]) ) {
cutin .tsm_animate$[.@a] + .@b,4; sleep2 ( ( atoi(.tsm_animate$[10]) * 1000 ) / atoi(.tsm_animate$[.@a+1]) ); .@b++;
}
cutin .tsm_animate$[.@a] + atoi(.tsm_animate$[.@a+1]),4;
if( .@a == 2 ){
switch(rand(5)) {
case 0:
getitem 603,5;
specialeffect2 10;
break;
case 1:
getitem 617,5;
specialeffect2 10;
break;
case 2:
getitem 644,5;
specialeffect2 10;
break;
case 3:
getitem 616,1;
specialeffect2 10;
break;
case 4:
getitem 7776,2;
specialeffect2 10;
break;
case 5:
getitem 18571,1;
specialeffect2 10;
break;
}
} else {
dispbottom "Failed";
slt_fld03++;
if (slt_fld03 >= 3){
slt_fld03 = 0;
atcommand "@nuke "+strcharinfo(0);
}
}
if( select("Another Round:I'm done") == 2 || Zeny < .tsm_payment[0] && ( !.payment || .payment == 2 ) || countitem(.tsm_payment[1]) < .tsm_payment[2] && .payment ){ cutin "",255; close; }
}
end;
}
OnSingleSlot:
setd ".mode"+strnpcinfo(3)+"",0;
end;
OnTripleSlot:
setd ".mode"+strnpcinfo(3)+"",1;
end;
iMode:
next;
mes "Which did you want to do?";
menu "Change THIS machine's mode:Change ALL machine's mode",-;
if( @menu == 1 ) {
next;
mes "What mode would you like this machine to have?";
menu "Single Slot Machine Mode:Triple Slot Machine Mode",-;
if( @menu == 1 ) {
setd ".mode"+strnpcinfo(3)+"",0;
} else {
setd ".mode"+strnpcinfo(3)+"",1;
}
close;
} else {
next;
mes "What mode would you like to change all slot machines to?";
menu "Single Slot Machine Mode:Triple Slot Machine Mode",-;
if( @menu == 1 ) {
donpcevent "::OnSingleSlot";
} else {
donpcevent "::OnTripleSlot";
}
close;
}
OnClock0000:
OnClock1000:
OnClock1600:
announce "Mysterious Slot Machine will begin at prontera 163 161 in 1 minute.", bc_all;
sleep 60000;
announce "Slot machine event has begun at prontera 163 161", bc_all;
set .EventON,1;
hideoffnpc strnpcinfo(3);
sleep 225000;
announce "Mysterious Slot Machine event is over thank you for playing", bc_all;
set .EventON,0;
hideonnpc strnpcinfo(3);
end;
OnInit:
hideonnpc strnpcinfo(3);
//[ 0 = Single Slot Machine Mode ]_[ 1 = Triple Slot Machine Mode ]
setd ".mode"+strnpcinfo(3)+"",1;
//[0] = Fail Rate
//[1] = Fail (Do not change)
//[2] = Success (Do not change)
//[3] = File Name (Do not change)
//[4] = Animation Time (Do not change, for best results :D)
setarray .ssm_animate$[0],"30","29","33","slot_","3";
//[0] = Fail Rate "Slot 2"
//[1] = Fail Rate "Slot 3"
//[2] = SSS (Do not change)
//[3] = SSS_Count (Do not change)
//[4] = SSF (Do not change)
//[5] = SSF_Count (Do not change)
//[6] = SFS (Do not change)
//[7] = SFS_Count (Do not change)
//[8] = SFF (Do not change)
//[9] = SFF_Count (Do not change)
//[10] = Animation Time (Do not change, for best results :D)
setarray .tsm_animate$[0],"30","30","SSS_","41","SSF_","37","SFS_","41","SFF_","45","3";
// Payment Settings
// Payment Type
// 0 = Zeny, 1 = Item, 2 = Zeny&Item
.payment = 1;
// [0] = Zeny, [1] = Item ID, [2] = Item Amount;
setarray .ssm_payment[0],100000,7720,3; // Single Slot Machine Payment Price
setarray .tsm_payment[0],100000,7720,3; // Triple Slot Machine Payment Price
// DO NOT CHANGE BELOW
// Payment Text Syntax
setarray .ssm_payment_message$[0],""+ .ssm_payment[0] +" zeny",""+ getitemname(.ssm_payment[1]) +" x"+ .ssm_payment[2] +"";
setarray .tsm_payment_message$[0],""+ .tsm_payment[0] +" zeny",""+ getitemname(.tsm_payment[1]) +" x"+ .tsm_payment[2] +"";
end;
}
Afaik, using @nuke command, the nuked character automatically has the explosion effect so no need to use 'specialeffect' command.
PS: I haven't tried to run it in-game.
Warps and NPCs appear like that its because your server is on pre-re settings while new izlude is set as default. Then the only suggestion I can give to you is, if your server is on pre re setting, revert it back to old izlude and update your map_cache.dat (/db/pre-re/map_cache.dat)
Have an updated ROTranslation files
For pre-re: https://github.com/zackdreaver/ROenglishPRE
For renewal: https://github.com/zackdreaver/ROenglishRE
Please do update your kRO as well.
One thing i know on translation grf files to korean, extract grf using grf builder and automatically it translates.
Thats what i had observed.
Yes, 20130807 is a stable client
*use nemo to patch your client and it doesnt require any xdiff file, all you just need to do is to either apply your own patches or select the recommended patches.
Dont forget to include translate client to english patch on nemo
* you can have an updated rotranslations here which includes updated lua and translated files from korean to english: https://github.com/zackdreaver/ROenglishRE
If you're still confused on creating your server, you can follow this guide:
https://rathena.org/board/topic/104452-tutorial-how-to-create-ragnarok-offline-2015-client/
Lol =D
@ts
1) Use git instead of svn: https://github.com/rathena/rathena
2) ROTranslation: https://github.com/zackdreaver/ROenglishRE
3) As of the moment still no stable client for 2015 and 2016 yet i can provide you for your request: https://rathena.org/board/topic/104707-2015-10-29aragexe/
4) Diff? Use NEMO's recommended patches
5) Updated NEMO: https://github.com/MStr3am/NEMO
6) Click Zack's link above
//
// NOTE: Remove gvg mapflag on guild_vs2 (default on this script) if you want to use this map as pk room
//
- script PK#config -1,{
OnInit:
/* minimum zeny needed to enter */
set $@min_zeny, 10000000;
//-------------------------------
/* special item you mentioned */
set $@spcial_item, 7227; // item id
set $@sitem_amount, 20; // item amount to be exchanged on npc
//-------------------------------
/* item to be exchanged */
set $@ex_item, 501; // item id
set $@exitem_amount, 1; //item amount
//-------------------------------
end;
}
- script PK#Room -1,{
OnNPCKillEvent:
getmapxy(@mapn$,@mapx,@mapy,0);
if (@mapn$ == "guild_vs2"){
if( killedrid == 1002) {
set .@rand, rand (10+30+100);
if (.@rand < 10){
getitem $@spcial_item,1; // 10% of having 7227=tcg card as special item
}
else if (.@rand < 30){
getitem 12103,20; // 30% rate of having bloody branch
}
else if (.@rand < 100){
getitem 969,50; // 100% rate of having gold
}
else {
getitem 969,50; // 100% rate of having gold
}
end;
}
}
else{
end;
}
OnPCDieEvent:
getmapxy(@mapn$,@mapx,@mapy,0);
if (@mapn$ == "guild_vs2"){
sleep2 1000;
warp "prontera",150,150;
end;
}
end;
}
prontera,155,184,4 script rAthena 100,{
set @npc$,"[rAthena]";
mes @npc$;
mes "What do you want to do?";
switch(select("Enter PVP Room","Exchange Items")){
case 1:
if (Zeny >= $@min_zeny){
set Zeny,Zeny-$@min_zeny;
warp "guild_vs2",0,0;
end;
}
else{
dispbottom "Insufficient zeny";
close;
}
break;
case 2:
if (countitem($@spcial_item) >= $@sitem_amount){
dispbottom "Deal is succesful!";
getitem $@ex_item,$@exitem_amount;
delitem $@spcial_item,$@sitem_amount;
close;
}
else {
dispbottom "Insufficient items";
close;
}
}
close;
}
/* mapflags and monster spawn */
guild_vs2,0,0,0, monster Poring 1002,1,180000,0,0
guild_vs2 mapflag nomemo
guild_vs2 mapflag pvp
guild_vs2 mapflag noteleport
- Add your custom theme on your "themes" folder
- Edit application.php, on line '14' which is "ThemeName" and add your custom theme.
'ThemeName' => array('default', 'bootstrap', 'YOURCUSTOMTHEMEHERE'),
- Save and reload your page.
You can now change your theme located at the bottom of the your website.
I believe that you missed to add curleys at the last part of the code.
Base on the image you provided, you should do it like this.
[30002] = {
unidentifiedDisplayName = "",
unidentifiedResourceName = "",
unidentifiedDescriptionName = {
},
identifiedDisplayName = "",
identifiedResourceName = "",
identifiedDescriptionName = {
},
slotCount = 0,
ClassNum = 0
},
}
function itemAdder(curTable, refTable)
for ItemID,DESC in pairs(curTable) do
The version i used is the latest version, same version as what MrDracula stated above.
Problem Solved~
Conclusion: - Conflicts has a point, the problem with this is that the new version of flux which is the one that MrDracula stated above and the one that i used, had a lot of differences compared to the old version (the theme i used was the old one). The latest flux version requires 2 email addresses in the registration page and theme that i used (old flux version) doesn't show the other email address box for the confirmation.
-END-
@conflicts & @MrDracula: thanks for answering my topic.