Jump to content

Scofield

Members
  • Posts

    272
  • Joined

  • Last visited

  • Days Won

    3

Everything posted by Scofield

  1. Nice I would like to give 4 awards
  2. Hi, I would like a script that would give the first 50 players a login to the server, each player can win only once, I would like the script to check for ip, and mac
  3. Olá eu não sei se esse é o lugar correto para postar isso, mais vamos lá, o meu forum estar com um problema, quando eu vou acessar o painel admin coloco usuário e senha dar o seguinte erro There appears to be an error with the database. fora isso o forum funciona normal, gostaria de saber se alguém tem ideia de qual seja o problema.. desde já muito obrigado
  4. Trx... apparently it's working 100% How could I place an ad when someone bought an item at the store? and I wonder if this time is correct ... Is he giving 1 point every 1 hour? I was wondering if I could show a countdown timer to earn the point.
  5. thank you very much. What would you look like with only fidelidade points?
  6. Hello, I use this npc that give loyalty points to use in the store, but sometimes people can buy the items even without points, I would like to know where the problem is - script Fidelidade -1,{ OnPCLoginEvent: addtimer 60000,"Fidelidade::OnTime"; end; OnTime: if(query_sql("SELECT login.account_id FROM login LEFT JOIN `char` ON login.account_id=`char`.account_id WHERE login.last_ip=(SELECT last_ip FROM login WHERE account_id="+getcharid(3)+") AND `char`.online=1", .@account_id) > 2){ end; } if(checkvending() || #fidelidade == 30000){ end; } set #fidelidade,#fidelidade + 1; if(#fidelidadeon == 0){ dispbottom "@fidelidade : Você recebeu 1 Ponto e ficou com "+#fidelidade+" Pontos de Fidelidade, use @fidelidade."; } addtimer 60000,"Fidelidade::OnTime"; end; OnInit: bindatcmd "fidelidade","Fidelidade::OnFIDELIDADE"; setarray .ItList[0],7836,2700,6001,2700,7087,2700,12080,540,7443,540,675,360,31349,18000,31350,18000,20301,14400,18247,14400,31382,19800,31380,19800,31381,19800; npcshopdelitem "DynShop02",501; for(set .n,0;.n<getarraysize(.ItList);set .n,.n+2) npcshopadditem "DynShop02",.ItList[.n],.ItList[(.n+1)]; end; OnBuyItem: for(set @n,0;@n<getarraysize(@bought_nameid);set @n,@n+1) for(set @a,0;@a<getarraysize(.ItList);set @a,@a+2) if(@bought_nameid[@n]==.ItList[@a]){ set @PriceT,.ItList[@a+1]*@bought_quantity[@n]; if(#fidelidade){ if(#fidelidade<@PriceT) end; }else{ if(Zeny<@PriceT) end; } getitem @bought_nameid[@n],@bought_quantity[@n]; if(#fidelidade) set #fidelidade,#fidelidade-@PriceT; else set Zeny,Zeny-@PriceT; } end; OnFIDELIDADE: mes "[^ff0000 "+strnpcinfo(1)+" ^000000]"; mes "A cada minuto conectado você recebe ^0000ff1 Ponto^000000 e juntando poderá troca-los por itens em ^FF9900Trocas da Fidelidade^000000."; mes "^F7F7F7-^000000"; mes "Você tem ^0000ff"+#fidelidade+" Pontos de Fidelidade^000000"; switch(select((#fidelidadeon==1?"- Ligar Mensagens":"- Desligar Mensagens"),"- Trocas da Fidelidade")){ case 1: next; mes "[^ff0000 "+strnpcinfo(1)+" ^000000]"; if(#fidelidadeon == 0){ mes "As mensagens foram desligadas."; set #fidelidadeon,1; close; } else { mes "As mensagens foram ligadas."; set #fidelidadeon,0; close; } case 2: close2; callshop "DynShop02",1; npcshopattach "DynShop02"; end; } } - shop DynShop02 -1,501:-1
  7. I have this 1x1 duel script, I wanted to leave it 7x7 // ============================================================================== // BattleGround System - KvM 1~59 // ============================================================================== // Registration NPC's // ********************************************************************* prontera,138,223,5 script Time Guillaume::KvM04R_Guillaume 418,{ // KvM Guillaume mes "[^0000FFGuillaume^000000]"; mes "^0000FFEntre no Chat^000000 para duelar contra outro jogador."; close; OnInit: waitingroom "Duelo! [1x1]",1,"KvM04_BG::OnGuillaumeJoin",1; end; OnEnterBG: set $@KvM04BG_id1, waitingroom2bg("bat_c01",53,128,0,"KvM04_BG::OnGuillaumeQuit","KvM04_BG::OnGuillaumeDie"); end; } prontera,140,225,5 script Time Croix::KvM04R_Croix 414,{ // KvM Croix mes "[^FF0000Croix^000000]"; mes "^FF0000Entre no Chat^000000 para duelar contra outro jogador."; close; OnInit: waitingroom "Duelo! [1x1]",1,"KvM04_BG::OnCroixJoin",1; end; OnEnterBG: set $@KvM04BG_id2, waitingroom2bg("bat_c01",146,55,1,"KvM04_BG::OnCroixQuit","KvM04_BG::OnCroixDie"); end; } // Light Effects // ********************************************************************* bat_c01,54,123,0 script #bat_c01a 111,{ end; OnKvM04LightA: misceffect 54; end; OnKvM04LightB: misceffect 55; end; OnKvM04LightC: misceffect 56; end; } bat_c01,56,125,0 duplicate(#bat_c01a) #bat_c01b 111 bat_c01,58,127,0 duplicate(#bat_c01a) #bat_c01c 111 bat_c01,141,56,0 duplicate(#bat_c01a) #bat_c01d 111 bat_c01,143,58,0 duplicate(#bat_c01a) #bat_c01e 111 bat_c01,145,60,0 duplicate(#bat_c01a) #bat_c01f 111 // Battleground Engine // ********************************************************************* - script KvM04_BG -1,{ end; OnInit: setwall "bat_c01",54,122,6,7,0,"batc04wall_a"; setwall "bat_c01",55,122,5,7,0,"batc04wall_b"; setwall "bat_c01",140,56,6,7,0,"batc04wall_c"; setwall "bat_c01",140,57,5,7,0,"batc04wall_d"; disablenpc "TherapistKvM04a"; disablenpc "TherapistKvM04b"; disablenpc "VintenarKvM04a"; disablenpc "VintenarKvM04b"; end; OnGuillaumeJoin: OnCroixJoin: donpcevent "KvM04_BG::OnReadyCheck"; end; OnGuillaumeQuit: OnGuillaumeDie: if( $@KvM04BG == 2 ) { getmapxy .@m$, .@x, .@y, 0; if( .@m$ != "bat_c01" || (.@x >= 50 && .@x <= 58 && .@y >= 123 && .@y <= 131) ) end; // Killed/Logout on Cementery or outside the map? set .Guillaume_Count, .Guillaume_Count - 1; set .Croix_Score, .Croix_Score + 1; bg_updatescore "bat_c01",.Guillaume_Score,.Croix_Score; if( .Guillaume_Count < 1 ) donpcevent "KvM04_BG::OnCroixWin"; } end; OnCroixQuit: OnCroixDie: if( $@KvM04BG == 2 ) { getmapxy .@m$, .@x, .@y, 0; if( .@m$ != "bat_c01" || (.@x >= 141 && .@x <= 149 && .@y >= 52 && .@y <= 60) ) end; // Killed/Logout on Cementery or outside the map? set .Croix_Count, .Croix_Count - 1; set .Guillaume_Score, .Guillaume_Score + 1; bg_updatescore "bat_c01",.Guillaume_Score,.Croix_Score; if( .Croix_Count < 1 ) donpcevent "KvM04_BG::OnGuillaumeWin"; } end; OnReadyCheck: if( $@KvM04BG ) end; // if( gettime(3) < 16 || gettime(3) > 22 ) // end; // 4 to 11 p.m. if( set(.@Guillaume, getwaitingroomstate(6,"KvM04R_Guillaume")) > 0 ) set $@KvM04_GU$, $@waitingroommembers$[0]; if( set(.@Croix, getwaitingroomstate(6,"KvM04R_Croix")) > 0 ) set $@KvM04_CU$, $@waitingroommembers$[0]; if( .@Guillaume < 1 || .@Croix < 1 ) { // Not enough players to start set .@Announce$, "Duelo! [1x1] - "; if( .@Guillaume ) set .@Announce$, .@Announce$ + "<" + $@KvM04_GU$ + "> VS < >"; else if( .@Croix ) set .@Announce$, .@Announce$ + "< > VS <" + $@KvM04_CU$ + ">"; else set .@Announce$, .@Announce$ + "A Arena está liberada."; if( !agitcheck() && $@KvM_Flood < gettimetick(2) ) { announce .@Announce$,0,0xffff00; set $@KvM_Flood, gettimetick(2) + 15; } else mapannounce .@Announce$,1,0xffff00; end; } set $@KvM04BG, 1; // Starting donpcevent "KvM04R_Croix::OnEnterBG"; donpcevent "KvM04R_Guillaume::OnEnterBG"; donpcevent "KvM04_BG::OnStart"; end; OnStart: announce "Duelo! [1x1] <" + $@KvM04_GU$ + "> VS <" + $@KvM04_CU$ + "> começou!",0,0xffff00; enablenpc "TherapistKvM04a"; enablenpc "TherapistKvM04b"; disablenpc "VintenarKvM04a"; disablenpc "VintenarKvM04b"; set $@KvM04BG_Victory, 0; sleep 2000; // Warp Teams bg_warp $@KvM04BG_id1,"bat_c01",53,128; bg_warp $@KvM04BG_id2,"bat_c01",146,55; // ScoreBoard set .Guillaume_Score, 0; set .Croix_Score, 0; initnpctimer; end; OnTimer5000: areapercentheal "bat_c01",50,123,58,131,100,100; areapercentheal "bat_c01",141,52,149,60,100,100; mapannounce "bat_c01","Duelo! [1x1] - A Batalha começará em 25 segundos!",1,0xffff00; end; OnTimer26000: mapannounce "bat_c01","Duelo! [1x1] - A Batalha começará em 4 segundos!",1,0xffff00; end; OnTimer27000: donpcevent "::OnKvM04LightA"; end; OnTimer28000: donpcevent "::OnKvM04LightB"; end; OnTimer29000: donpcevent "::OnKvM04LightC"; end; OnTimer30000: // Team Members set .Guillaume_Count, bg_get_data($@KvM04BG_id1, 0); set .Croix_Count, bg_get_data($@KvM04BG_id2, 0); if( .Guillaume_Count < 1 || .Croix_Count < 1 ) { set $@KvM04BG_Victory, 3; set $@KvM04BG, 3; set .@Announce$, "Duelo! [1x1] - "; if( .Guillaume_Count < 1 && .Croix_Count < 1 ) set .@Announce$, "<" + $@KvM04_GU$ + "> VS <" + $@KvM04_CU$ + "> cancelado."; else if( .Guillaume_Count < 1 ) set .@Announce$, "<" + $@KvM04_CU$ + "> está com medo de <" + $@KvM04_GU$ + ">..."; else if( .Croix_Count < 1 ) set .@Announce$, "<" + $@KvM04_GU$ + "> está com medo de <" + $@KvM04_CU$ + ">..."; announce .@Announce$,0,0xffff00; stopnpctimer; sleep 2000; donpcevent "KvM04_BG::OnStop"; end; } set $@KvM04BG, 2; // Playing areapercentheal "bat_c01",50,123,58,131,100,100; bg_warp $@KvM04BG_id1,"bat_c01",62,119; areapercentheal "bat_c01",141,52,149,60,100,100; bg_warp $@KvM04BG_id2,"bat_c01",137,64; end; OnTimer32000: mapannounce "bat_c01","Duelo! [1x1] começou!!",1,0xffff00; end; OnTimer300000: mapannounce "bat_c01","Duelo! [1x1] - A Batalha acabará em 30 segundos.",1,0xffff00; end; OnTimer330000: if( .Croix_Count > .Guillaume_Count ) donpcevent "KvM04_BG::OnCroixWin"; else if( .Croix_Count < .Guillaume_Count ) donpcevent "KvM04_BG::OnGuillaumeWin"; else { // Draw Game set $@KvM04BG, 3; set $@KvM04BG_Victory, 3; stopnpctimer; sleep 2000; announce "Duelo! [1x1] - <" + $@KvM04_GU$ + "> VS <" + $@KvM04_CU$ + "> terminou em EMPATE.",0,0xffff00; donpcevent "KvM04_BG::OnStop"; } end; OnGuillaumeWin: set $@KvM04BG, 3; set $@KvM04BG_Victory, 1; stopnpctimer; sleep 2000; announce "Duelo! [1x1] - <" + $@KvM04_GU$ + "> foi o VENCEDOR! <" + $@KvM04_CU$ + "> perdeu.",0,0xffff00; donpcevent "KvM04_BG::OnStop"; end; OnCroixWin: set $@KvM04BG, 3; set $@KvM04BG_Victory, 2; stopnpctimer; sleep 2000; announce "Duelo! [1x1] - <" + $@KvM04_CU$ + "> foi o VENCEDOR! <" + $@KvM04_GU$ + "> perdeu.",0,0xffff00; donpcevent "KvM04_BG::OnStop"; end; OnStop: disablenpc "TherapistKvM04a"; disablenpc "TherapistKvM04b"; enablenpc "VintenarKvM04a"; enablenpc "VintenarKvM04b"; // Warp Teams bg_warp $@KvM04BG_id1,"bat_c01",53,128; bg_warp $@KvM04BG_id2,"bat_c01",146,55; donpcevent "KvM04_BG_Out::OnBegin"; end; OnReset: stopnpctimer; stopnpctimer "KvM04_BG_Out"; set .Croix_Count, 0; set .Guillaume_Count, 0; set .Croix_Score, 0; set .Guillaume_Score, 0; set $@KvM04_GU$, ""; set $@KvM04_CU$, ""; set $@KvM04BG_Victory, 0; if( $@KvM04BG_id1 ) { bg_destroy $@KvM04BG_id1; set $@KvM04BG_id1, 0; } if( $@KvM04BG_id2 ) { bg_destroy $@KvM04BG_id2; set $@KvM04BG_id2, 0; } disablenpc "TherapistKvM04a"; disablenpc "TherapistKvM04b"; disablenpc "VintenarKvM04a"; disablenpc "VintenarKvM04b"; sleep 1000; mapwarp "bat_c01","prontera",155,181; sleep 2000; maprespawnguildid "bat_c01",0,3; // Just in case someone else bg_updatescore "bat_c01",0,0; sleep 2000; set $@KvM04BG, 0; donpcevent "KvM04_BG::OnReadyCheck"; // Maybe a game is ready to start end; } - script KvM04_BG_Out -1,{ end; OnBegin: initnpctimer; end; OnTimer3000: mapannounce "bat_c01","Duelo! [1x1] fechará em 2 minutos!",1,0xffff00; end; OnTimer90000: mapannounce "bat_c01","Duelo! [1x1] fechará em 30 segundos!",1,0xffff00; end; OnTimer110000: mapannounce "bat_c01","Duelo! [1x1] fechará em 10 segundos!",1,0xffff00; end; OnTimer120000: OnClock1600: donpcevent "KvM04_BG::OnReset"; end; } // Battleground Therapist // ********************************************************************* bat_c01,51,130,5 script Treinador::TherapistKvM04a 95,{ mes "[Treinador]"; mes "Apenas respire fundo e lute. Você conseguirá vencer!"; specialeffect2 312; close; } bat_c01,148,53,1 script Treinador::TherapistKvM04b 95,{ mes "[Treinador]"; mes "Apenas respire fundo e lute. Você conseguirá vencer!"; specialeffect2 312; close; } // Battleground rewards // ********************************************************************* bat_c01,51,130,5 script Guillaume Vintenar::VintenarKvM04a 419,{ if( $@KvM04BG_Victory ) { if( $@KvM04BG_Victory == 3 ) { bg_leave; warp "prontera",134,120; end; } else if( $@KvM04BG_Victory == Bat_Team ) { // Victory bg_leave; warp "prontera",155,181; end; } else { // bg_leave; warp "prontera",155,181; end; } bg_leave; warp "prontera",155,181; end; } end; } bat_c01,148,53,1 script Croix Vintenar::VintenarKvM04b 415,{ if( $@KvM04BG_Victory ) { if( $@KvM04BG_Victory == 3 ) { bg_leave; warp "prontera",155,181; end; } else if( $@KvM04BG_Victory == Bat_Team ) { // Victory bg_leave; warp "prontera",155,181; end; } else { // bg_leave; warp "prontera",155,181; end; } bg_leave; warp "prontera",155,181; end; } end; } // MapFlags // ********************************************************************* bat_c01 mapflag battleground 2 bat_c01 mapflag nomemo bat_c01 mapflag nosave SavePoint bat_c01 mapflag noteleport bat_c01 mapflag nowarp bat_c01 mapflag nowarpto bat_c01 mapflag noreturn bat_c01 mapflag nobranch bat_c01 mapflag nopenalty
  8. Hello, I have a question, I am a few hours checking these lines of code trying to understand what it is, ud-> canmove_tick + = 3 * speed / 5; // is this part the speed of animation? skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag); if(unit_walktoxy(src, dx, dy, 2) && ud) { //Increase can't walk delay to not alter your walk path ud->canmove_tick = tick; speed = status_get_speed(src); for (i = 0; i < ud->walkpath.path_len; i ++) { if(ud->walkpath.path[i]&1) ud->canmove_tick+=3*speed/5; else ud->canmove_tick+=speed; } } } break;
  9. I want you not to be allowed to create an account with the same use <?php error_reporting(0); include('connect.php'); $usuario = $_POST['user']; $senha = $_POST['pass']; $senha2 = $_POST['conf']; $gen = $_POST['genero']; $email = $_POST['mail']; if (isset($senha)){ //Verifica se já existe um email no banco de dados $cons = "SELECT email FROM login WHERE email='".$email."'"; $sql = mysql_query($cons); $res = mysql_fetch_array($sql); $verifica = $res['email']; if($veririca != ""){ // condição. se existir um email ja cadastrado, não pode proceguir echo "<script>alert('Desculpe mais me parece que este e-mail ja esta em uso!')</script>"; }else{ if($senha != $senha2){ // Confirmação de senha (validação) echo "<script>alert('Desculpe mais me parece que suas senhas estao incorretas!')</script>"; }else{ //Procedimento de cadastro $cad = "INSERT INTO login (userid,user_pass,sex,email) VALUES ('".$usuario."','".$senha."','".$gen."','".$email."')"; $c_cad = mysql_query($cad); if ($cad) { echo "<script>alert('Cadastro efetuado com sucesso!')</script>"; #echo "<meta http-equiv=\"refresh\" content=\"1; url:index.php\" />"; } } } }else{ #echo "<p style=\"color: #E40D6B; font-size: 12px; font-family: verdana,arial; font-weight: bold; text-align: center;\";>Preencha seus dados!</p>"; } ?>
  10. Hello, I would like to know if there is any npc that shows the ranking of the top damage of each class. example: Name: John Class: monk: damage: 7890000
  11. Hello, I wanted to change use an old emulator, Freya, but when I go to build the hundreds this error .. ./configure Checking for platform... Linux Checking whether build environment is sane... Checking whether make sets $(MAKE) ... yes Checking for gcc... ./configure: line 323: which: command not found ./configure: line 323: which: command not found ./configure: line 323: which: command not found ./configure: line 323: which: command not found ./configure: line 323: which: command not found ./configure: line 323: which: command not found not found -bash-3.2# line 323: fi if [ x$CC != x ]; then CCLIST="$CC $CCLIST" fi CC="" for foo in $CCLIST; do XCC=`which $foo` if [ x$XCC = x ]; then : else CC="$XCC" echo $CC break 2 fi done if [ x$CC = x ]; then if anyone can help me I will be very grateful gethub: https://github.com/flaviojs/freya
  12. Just solve. map/status.c // Parse equipment. for(i=0;i<EQI_MAX;i++) { to change // Parse equipment. for(i=0;i<EQI_MAX_BONUS;i++) {
  13. The problem is that the costumeitem items should not give attributes when they were appointed, but in my costomes the emulator are giving when they are transformed into costumeitem written excuse is that I am Brazilian and I'm using google translator
  14. Items that are being transformed into visual this taking the stataus and effects, I wonder how to solve it
  15. [Error]: script_rid2sd: fatal error ! player not attached! [Debug]: Function: set (2 parameters): [Debug]: Data: variable name='@premio_sortudo' index=0 [Debug]: Data: number value=2 [Debug]: Source (NPC): Tesouro (invisible/not on a map) [Error]: script:set: no player attached for player variable '@premio_sortudo' [Error]: script_rid2sd: fatal error ! player not attached! [Debug]: Function: set (2 parameters): [Debug]: Data: variable name='@premio_sortudo' index=0 [Debug]: Data: number value=1 [Debug]: Source (NPC): Tesouro (invisible/not on a map) [Error]: script:set: no player attached for player variable '@premio_sortudo' [Error]: script_rid2sd: fatal error ! player not attached! [Debug]: Function: set (2 parameters): [Debug]: Data: variable name='@premio_sortudo' index=0 [Debug]: Data: number value=2 [Debug]: Source (NPC): Tesouro (invisible/not on a map) [Error]: script:set: no player attached for player variable '@premio_sortudo' [Error]: script_rid2sd: fatal error ! player not attached! [Debug]: Function: set (2 parameters): [Debug]: Data: variable name='@premio_sortudo' index=0 [Debug]: Data: number value=2 [Debug]: Source (NPC): Tesouro (invisible/not on a map) [Error]: script:set: no player attached for player variable '@premio_sortudo' Script prontera,144,227,5 script Sortudo 106,{ set .n$, "[ Sortudo ]"; if (getgmlevel() > 9 && getgmlevel() < 99) { mes .n$; mes "Você não pode participar !"; close; } mes "Olá "+ strcharinfo(0) +"!"; mes "Bem-Vindo ao Evento Sortudo."; next; mes "Deseja entrar?"; switch(select("- Sim, entrar no evento.", "- Não, talvez depois.")) { case 1: if($portao_sortudo == FALSE){ next; mes .n$; mes "O Evento está fechado !"; close; } mes .n$; mes "Boa sorte durante o evento !"; close2; set @rand_sortudo, rand(1,4); if(@rand_sortudo == 1){warp "quiz_02",37,52; end;} if(@rand_sortudo == 2){warp "quiz_02",49,52; end;} if(@rand_sortudo == 3){warp "quiz_02",60,52; end;} if(@rand_sortudo == 4){warp "quiz_02",73,52; end;} dispbottom "Você está dentro do Evento Sortudo! Boa Sorte!"; end; case 2: close; end; } OnClock0600: set $portao_sortudo,1; announce "O Evento 'Sortudo' irá começar, vocês só tem 3 minutos !",bc_yellow; end; OnClock0603: set $portao_sortudo,0; announce "Os portões para o evento foram fechados, PvP ativado, o sobrevivente será o vencedor !",bc_yellow; end; OnClock0800: set $portao_sortudo,1; announce "O Evento 'Sortudo' irá começar, vocês só tem 3 minutos !",bc_yellow; end; OnClock0803: set $portao_sortudo,0; announce "Os portões para o evento foram fechados, PvP ativado, o sobrevivente será o vencedor !",bc_yellow; end; OnClock1600: set $portao_sortudo,1; announce "O Evento 'Sortudo' irá começar, vocês só tem 3 minutos !",bc_yellow; end; OnClock1603: set $portao_sortudo,0; announce "Os portões para o evento foram fechados, PvP ativado, o sobrevivente será o vencedor !",bc_yellow; end; OnClock2000: set $portao_sortudo,1; announce "O Evento 'Sortudo' irá começar, vocês só tem 3 minutos !",bc_yellow; end; OnClock2003: set $portao_sortudo,0; announce "Os portões para o evento foram fechados, PvP ativado, o sobrevivente será o vencedor !",bc_yellow; end; OnClock2200: set $portao_sortudo,1; announce "O Evento 'Sortudo' irá começar, vocês só tem 3 minutos !",bc_yellow; end; OnClock2203: set $portao_sortudo,0; announce "Os portões para o evento foram fechados, PvP ativado, o sobrevivente será o vencedor !",bc_yellow; end; OnClock0000: set $portao_sortudo,1; announce "O Evento 'Sortudo' irá começar, vocês só tem 3 minutos !",bc_yellow; end; OnClock0003: set $portao_sortudo,0; announce "Os portões para o evento foram fechados, PvP ativado, o sobrevivente será o vencedor !",bc_yellow; end; OnClock0200: set $portao_sortudo,1; announce "O Evento 'Sortudo' irá começar, vocês só tem 3 minutos !",bc_yellow; end; OnClock0203: set $portao_sortudo,0; announce "Os portões para o evento foram fechados, PvP ativado, o sobrevivente será o vencedor !",bc_yellow; end; } quiz_02,0,0,0 script Core_Sortudo -1,{ OnClock0607: atcommand "@killmonster2"; end; OnClock0807: atcommand "@killmonster2"; end; OnClock1607: atcommand "@killmonster2"; end; OnClock2007: atcommand "@killmonster2"; end; OnClock2207: atcommand "@killmonster2"; end; OnClock0007: atcommand "@killmonster2"; end; OnClock0207: atcommand "@killmonster2"; end; //OnClock0603: atcommand "@pvpon"; end; //OnClock0803: atcommand "@pvpon"; end; //OnClock1603: atcommand "@pvpon"; end; //OnClock2003: atcommand "@pvpon"; end; //OnClock2203: atcommand "@pvpon"; end; OnClock0603: pvpon "quiz_02"; atcommand "@skillon"; end; OnClock0803: pvpon "quiz_02"; atcommand "@skillon"; end; OnClock1603: pvpon "quiz_02"; atcommand "@skillon"; end; OnClock2003: pvpon "quiz_02"; atcommand "@skillon"; end; OnClock2203: pvpon "quiz_02"; atcommand "@skillon"; end; OnClock0003: pvpon "quiz_02"; atcommand "@skillon"; end; OnClock0203: pvpon "quiz_02"; atcommand "@skillon"; end; OnClock0606: callsub Tesouro_Sortudo; OnClock0806: callsub Tesouro_Sortudo; OnClock1606: callsub Tesouro_Sortudo; OnClock2006: callsub Tesouro_Sortudo; OnClock2206: callsub Tesouro_Sortudo; OnClock0006: callsub Tesouro_Sortudo; OnClock0206: callsub Tesouro_Sortudo; Tesouro_Sortudo: //atcommand "@pvpoff"; pvpoff "quiz_02"; monster "quiz_02",33,73, "Tesouro",1732,1,"Tesouro::OnTreasureDie"; monster "quiz_02",49,73, "Tesouro",1732,1,"Tesouro::OnTreasureDie"; monster "quiz_02",61,73, "Tesouro",1732,1,"Tesouro::OnTreasureDie"; monster "quiz_02",73,73, "Tesouro",1732,1,"Tesouro::OnTreasureDie"; end; } - script Tesouro -1,{ OnTreasureDie: set @premio_sortudo, rand(1,2); if(@premio_sortudo == 1){ atcommand "@die"; warp "payon",156,226; announce strcharinfo(0)+" abriu um Baú. Não ganhou nada e ainda morreu!",bc_yellow; end; } if(@premio_sortudo == 2){ //getitem 675,1; //moeda de prata getitem 6125, 2; warp "payon",156,226; announce strcharinfo(0)+" abriu um Baú. Prêmio: "+getitemname(675)+"!",bc_yellow; end; } end; } quiz_02 mapflag nomemo quiz_02 mapflag nowarp quiz_02 mapflag nowarpto quiz_02 mapflag noicewall quiz_02 mapflag nosave quiz_02 mapflag noreturn quiz_02 mapflag noteleport quiz_02 mapflag pvp_noguild quiz_02 mapflag pvp_noparty quiz_02 mapflag restricted 3
  16. Hello, I used this npc in a slightly older emulator dai went for a slightly more current emulator sounds when he kills people in pvp does not come ... the .wav file are in my normal data.grf prontera,164,171,4 script [PvP] Arena 403,{ goto InicioPVP; OnInit: setarray $@arena$[0],"guild_vs3","guild_vs2","guild_vs1","prt_are01", "pvp_n_1-5","pvp_n_2-5","pvp_n_3-5","pvp_n_4-5","guild_vs2-1","pvp_n_5-5","pvp_n_8-5"; set $@pvpm_name$, "[ ^FF0000 [PvP] Arena ^000000 ]"; set $@PK_Mode, getbattleflag("pk_mode"); set $@dmpvp$, "izlude"; end; InicioPVP: query_sql "select name from pvpm_data where leader=1 and type=0 limit 1",$@Player_Lider$; query_sql "select name from pvpm_data where leader=1 and type=6 limit 1",$@Player_LiderAleatorio$; mes $@pvpm_name$; mes "^008B8B-> PvP Lider: ^FFA500"+$@Player_Lider$+"^008B8B ."; mes "^008B8B-> PvP DeathMatch: ^FFA500"+$@Player_LiderAleatorio$+"^008B8B ."; switch(select( //"- Player vs Player ^0000FF["+(getmapusers($@arena$[0])+getmapusers($@arena$[1]))+"]^000000", "- Player vs Player ^0000FF["+getmapusers($@arena$[0])+"]^000000", "- PvP DeathMatch ^0000FF["+getmapusers($@dmpvp$)+"]^000000", //"- Player vs Player Custons^0000FF["+getmapusers($@arena$[8])+"]^000000", "- Guild vs Guild ^0000FF["+getmapusers($@arena$[2])+"]^000000", //"- Baby vs Baby ^0000FF["+getmapusers($@arena$[4])+"]^000000", "- Player vs Player x1 ^0000FF["+(getmapusers($@arena$[5])+getmapusers($@arena$[6])+getmapusers($@arena$[7])+getmapusers($@arena$[9])+getmapusers($@arena$[10]))+"]^000000", //"- Player vs Player Sem Ygg ^0000FF["+getmapusers($@arena$[8])+"]^000000", "- Sair")) { case 1: end; case 2: warp $@dmpvp$,0,0; //callfunc("GlobalEntradaPvP", 6); end; case 3: if (!getcharid(2)) { mes $@pvpm_name$; mes "Desculpe, mas você precisa está em uma Guild para entrar nesta Arena."; close; } warp $@arena$[2],0,0; end; case 4: switch(select("- Arena 1 ^0000FF["+getmapusers($@arena$[5])+"]^000000:- Arena 2 ^0000FF["+getmapusers($@arena$[6])+"]^000000:- Arena 3 ^0000FF["+getmapusers($@arena$[7])+"]^000000:- Arena 4 ^0000FF["+getmapusers($@arena$[9])+"]^000000:- Arena 5 ^0000FF["+getmapusers($@arena$[10])+"]")) { case 1: if(getmapusers($@arena$[5]) <= 1) { warp $@arena$[5],0,0; callfunc("GlobalEntradaPvP", 3); } else { mes "A Arena já está ocupada! Aguardem o fim do duelo."; close; } end; case 2: if(getmapusers($@arena$[6]) <= 1) { warp $@arena$[6],0,0; callfunc("GlobalEntradaPvP", 3); } else { mes "A Arena já está ocupada! Aguardem o fim do duelo."; close; } end; case 3: if(getmapusers($@arena$[7]) <= 1) { warp $@arena$[7],0,0; callfunc("GlobalEntradaPvP", 3); } else { mes "A Arena já está ocupada! Aguardem o fim do duelo."; close; } end; case 4: if(getmapusers($@arena$[9]) <= 1) { warp $@arena$[9],0,0; callfunc("GlobalEntradaPvP", 3); } else { mes "A Arena já está ocupada! Aguardem o fim do duelo."; close; } end; case 5: if(getmapusers($@arena$[10]) <= 1) { warp $@arena$[10],0,0; callfunc("GlobalEntradaPvP", 3); } else { mes "A Arena já está ocupada! Aguardem o fim do duelo."; close; } end; } end; case 5: close; end; } end; } // Criar Entrada na Tabela do PVP // Args: 0 - tipo, 1 - tipo de arena (0 = pvp, 2 = gvg, 3 = x1) function script CriarEntrada { set @nome$, ""; query_sql "SELECT name FROM pvpm_data WHERE id="+getcharid(getarg(0))+" AND type="+getarg(1)+" LIMIT 1",@nome$; if (@nome$ == "") query_sql "INSERT INTO pvpm_data (id, leader, type, kills, dies, name) VALUES ("+getcharid(getarg(0))+", 0, "+getarg(1)+", 0, 0, '"+strcharinfo(getarg(0))+"')"; return; } // Atualizar Dados na Tabela do PVP // Argumentos: 0 - campo, 1 - tipo, 2 - tipo de arena (0 = pvp, 2 = gvg, 3 = x1) function script AtualizaDados { set @matou, 0; set @morreu, 0; set @total, 0; callfunc("CriarEntrada", getarg(1), getarg(2)); query_sql "UPDATE pvpm_data SET "+getarg(0)+"="+getarg(0)+"+1 WHERE id="+getcharid(getarg(1))+" AND type="+getarg(2); query_sql "SELECT kills, dies FROM pvpm_data WHERE id="+getcharid(getarg(1))+" AND type="+getarg(2)+" limit 1",@matou,@morreu; set @total, (@matou - @morreu); if (@total < 0) set @total, 0; dispbottom "Seu Score: " + @total; return; } // Verificar e atualizar lider // Argumentos: 0 - tipo, 1 - tipo de arena (0 = pvp, 2 = gvg, 3 = x1) function script AtualizaLider { set @liderID, 0; set @liderPontos, 0; set @meusPontos, 0; set @meuNome, 0; // minhas vitorias query_sql "SELECT name, kills FROM pvpm_data WHERE id="+getcharid(getarg(0))+" AND type="+getarg(1)+" limit 1",@meuNome,@meusPontos; if (@meusPontos > 0) { // pegar quem matou mais query_sql "SELECT id, kills FROM pvpm_data WHERE type="+getarg(1)+" AND leader=1 order by kills desc limit 1",@liderID,@liderMatou; if (@meusPontos > @liderMatou && @liderID != getcharid(getarg(0))) { // atualizar zerando o lider e me declarando o lider query_sql "UPDATE pvpm_data SET leader=0 WHERE type="+getarg(1); query_sql "UPDATE pvpm_data SET leader=1 WHERE id="+getcharid(getarg(0))+" and type="+getarg(1); // faço anuncio if (getarg(1) == 0) Announce strcharinfo(getarg(0))+" é o Novo Lider da Arena PVP!", bc_all, 0xFF7F50; else if (getarg(1) == 3) Announce strcharinfo(getarg(0))+" é o Novo Lider da Arena PVP x1!", bc_all, 0xFF7F50; else if (getarg(1) == 4) Announce strcharinfo(getarg(0))+" é o Novo Lider da Arena PVP Sem Donation!", bc_all, 0xFF7F50; else if (getarg(1) == 5) Announce strcharinfo(getarg(0))+" é o Novo Lider do Ranking WoE!", bc_all, 0xFF7F50; else if (getarg(1) == 6) Announce strcharinfo(getarg(0))+" é o Novo Lider da Arena PVP DeathMatch!", bc_all, 0xFF7F50; else Announce "O Clã " + strcharinfo(getarg(0))+" é o Novo Lider da Arena GVG!", bc_all, 0xFF7F50; } } return; } // Faz anuncio global de quem entra nas arenas pvp function script GlobalEntradaPvP { if (getarg(0) == 3) Announce "O jogador [ " + strcharinfo(0)+" ] acabou de entrar na Arena PVP x1!", bc_all, 0xCC00CC; return; } // Faz anuncio de morte e quem matou quem // Argumentos: 0 - tipo de arena (0 = pvp, 2 = gvg, 3 = x1) function script AtualizaAnuncio { query_sql "SELECT kills, dies FROM pvpm_data WHERE id="+getcharid(0)+" AND type="+getarg(0)+" limit 1",@matou,@morreu; Announce "O jogador [ " + strcharinfo(0)+" ] derrotou o jogador [ " + rid2name(killedrid) + " ] e agora tem " + @matou + " vitórias!", bc_map, 0xFF7F50; } // Tocar sons // Argumento: 0 - numero kills function script TocaSons { set @matouNum, getarg(0); getmapxy @map$, @x, @y, 0; if (@matouNum == 3) set @sound$, 3; if (@matouNum == 4) set @sound$, 4; if (@matouNum == 5) set @sound$, 5; if (@matouNum == 6) set @sound$, 6; if (@matouNum == 7) set @sound$, 7; if (@matouNum == 8) set @sound$, 8; if (@matouNum == 9) set @sound$, 9; if (@matouNum == 10) set @sound$, 10; if (@matouNum == 12) set @sound$, 12; if (@matouNum == 14) set @sound$, 14; if (@matouNum > 14) set @sound$, 16; if (@matouNum >= 3) soundeffect @sound$ + ".wav", 0; return; } - script event#pvpm -1,{ OnPCLoadMapEvent: // arenas x1 getmapxy @map$, @x, @y, 0; if(@map$ == $@arena$[5] || @map$ == $@arena$[6] || @map$ == $@arena$[7] || @map$ == $@arena$[9] || @map$ == $@arena$[10]) { if(getmapusers(@map$) > 2) { warp "prontera", 156, 179; } } end; OnPCKillEvent: set @numKill, @numKill + 1; getmapxy @map$, @x, @y, 0; // arenas pvp if(@map$ == $@arena$[0]) { callfunc("TocaSons", @numKill); callfunc("AtualizaDados", "kills", 0, 0); callfunc("AtualizaLider", 0, 0); callfunc("AtualizaAnuncio", 0); } // arenas pvp sem donation if(@map$ == $@arena$[8]) { callfunc("TocaSons", @numKill); callfunc("AtualizaDados", "kills", 0, 4); callfunc("AtualizaLider", 0, 4); callfunc("AtualizaAnuncio", 4); } // x1 if(@map$ == $@arena$[5] || @map$ == $@arena$[6] || @map$ == $@arena$[7] || @map$ == $@arena$[9] || @map$ == $@arena$[10]) { callfunc("TocaSons", @numKill); callfunc("AtualizaDados", "kills", 0, 3); callfunc("AtualizaLider", 0, 3); } // go5 if(@map$ == "new_1-1") { callfunc("TocaSons", @numKill); } // woe if(AgitCheck() || AgitCheck2()) { //if(@map$ == "prtg_cas01") { callfunc("AtualizaDados", "kills", 0, 5); callfunc("AtualizaLider", 0, 5); //} } // deathmatch if(@map$ == $@dmpvp$) { callfunc("TocaSons", @numKill); callfunc("AtualizaDados", "kills", 0, 6); callfunc("AtualizaLider", 0, 6); callfunc("AtualizaAnuncio", 6); } end; OnPCDieEvent: set @numKill, 0; getmapxy @map$, @x, @y, 0; // arenas pvp if(@map$ == $@arena$[0]) { callfunc("AtualizaDados", "dies", 0, 0); soundeffect "dead.wav", 0; } // arenas pvp sem donation if(@map$ == $@arena$[8]) { callfunc("AtualizaDados", "dies", 0, 4); soundeffect "dead.wav", 0; } // x1 if(@map$ == $@arena$[5] || @map$ == $@arena$[6] || @map$ == $@arena$[7] || @map$ == $@arena$[9] || @map$ == $@arena$[10]) { callfunc("AtualizaDados", "dies", 0, 3); soundeffectall "dead.wav", 0, @map$; } // woe if(AgitCheck() || AgitCheck2()) { setarray .castelos$[0], "payg_cas05", "payg_cas01", "gefg_cas01", "gefg_cas02", "prtg_cas03", "prtg_cas01", "prtg_cas04", "schg_cas04", "arug_cas03"; for(set .@i, 0; .@i < getarraysize(.castelos$); set .@i, .@i + 1) { if(strcharinfo(3) == .castelos$[.@i]) { callfunc("AtualizaDados", "dies", 0, 5); end; } } } // deathmatch if(@map$ == $@dmpvp$) { sleep2 4000; if(killerrid != getcharid(3)) { soundeffect "dead.wav", 0; warp strcharinfo(3), 0, 0; atcommand "@alive"; atcommand "@repairall"; set .@tempo, 216000 * 20; sc_start SC_STRFood, .@tempo, 10; sc_start SC_AGIFood, .@tempo, 10; sc_start SC_VITFood, .@tempo, 10; sc_start SC_INTFood, .@tempo, 10; sc_start SC_DEXFood, .@tempo, 10; sc_start SC_LUKFood, .@tempo, 10; skilleffect 34, 0; sc_start SC_BLESSING, .@tempo, 10; skilleffect 29, 0; sc_start SC_INCREASEAGI, .@tempo, 10; percentheal 100, 100; callfunc("AtualizaDados", "dies", 0, 6); } else warp "prontera", 156, 179; } end; } //============== MAP FLAG =============== // Player //pvp_y_3-2 mapflag nosave //pvp_y_3-2 mapflag noteleport //pvp_y_3-2 mapflag nowarpto //pvp_y_3-2 mapflag nowarp //pvp_y_3-2 mapflag nomemo //pvp_y_3-2 mapflag gvg off //pvp_y_3-2 mapflag pvp //pvp_y_3-2 mapflag nopenalty //pvp_y_3-2 mapflag nobranch //guild_vs3 mapflag nosave //guild_vs3 mapflag noteleport //guild_vs3 mapflag nowarpto //guild_vs3 mapflag nowarp //guild_vs3 mapflag nomemo //guild_vs3 mapflag gvg off //guild_vs3 mapflag pvp //guild_vs3 mapflag nopenalty //guild_vs3 mapflag nobranch //guild_vs3 mapflag pvp_noguild //5@tower mapflag nosave //5@tower mapflag noteleport //5@tower mapflag nowarpto //5@tower mapflag nowarp //5@tower mapflag nomemo //5@tower mapflag gvg off //5@tower mapflag pvp //5@tower mapflag nopenalty //5@tower mapflag nobranch //5@tower mapflag pvp_noguild // arena pvp atual //pvp_n_1-5 mapflag nosave //pvp_n_1-5 mapflag noteleport //pvp_n_1-5 mapflag nowarpto //pvp_n_1-5 mapflag nowarp //pvp_n_1-5 mapflag nomemo //pvp_n_1-5 mapflag gvg off //pvp_n_1-5 mapflag pvp //pvp_n_1-5 mapflag nopenalty //pvp_n_1-5 mapflag nobranch //pvp_n_1-5 mapflag pvp_noguild guild_vs3 mapflag nosave guild_vs3 mapflag noteleport guild_vs3 mapflag nowarpto guild_vs3 mapflag nowarp guild_vs3 mapflag nomemo guild_vs3 mapflag gvg off guild_vs3 mapflag pvp guild_vs3 mapflag nopenalty guild_vs3 mapflag nobranch guild_vs3 mapflag pvp_noguild // Death izlude mapflag nosave izlude mapflag noteleport izlude mapflag nowarpto izlude mapflag nowarp izlude mapflag nomemo izlude mapflag gvg off izlude mapflag pvp izlude mapflag nopenalty izlude mapflag nobranch izlude mapflag noreturn izlude mapflag nosave SavePoint izlude mapflag pvp_noguild izlude mapflag pvp_noparty // Guild guild_vs1 mapflag nosave guild_vs1 mapflag noteleport guild_vs1 mapflag nowarpto guild_vs1 mapflag nowarp guild_vs1 mapflag nomemo guild_vs1 mapflag gvg on guild_vs1 mapflag nopenalty guild_vs1 mapflag nobranch guild_vs1 mapflag pvp_noparty //prt_are01 mapflag nosave //prt_are01 mapflag noteleport //prt_are01 mapflag nowarpto //prt_are01 mapflag nowarp //prt_are01 mapflag nomemo //prt_are01 mapflag gvg on //prt_are01 mapflag nopenalty //prt_are01 mapflag nobranch //prt_are01 mapflag pvp_noparty //guild_vs2 mapflag nosave //guild_vs2 mapflag noteleport guild_vs2 mapflag nowarpto guild_vs2 mapflag nowarp //guild_vs2 mapflag nomemo //guild_vs2 mapflag gvg off //guild_vs2 mapflag pvp //guild_vs2 mapflag nopenalty //guild_vs2 mapflag nobranch //guild_vs2 mapflag pvp_noparty //guild_vs2 mapflag pvp_noguild // Player x1 pvp_n_2-5 mapflag nosave pvp_n_2-5 mapflag noteleport pvp_n_2-5 mapflag nowarpto pvp_n_2-5 mapflag nowarp pvp_n_2-5 mapflag nomemo pvp_n_2-5 mapflag gvg off pvp_n_2-5 mapflag pvp pvp_n_2-5 mapflag nopenalty pvp_n_2-5 mapflag nobranch //pvp_n_2-5 mapflag pvp_noparty pvp_n_2-5 mapflag loadevent pvp_n_3-5 mapflag nosave pvp_n_3-5 mapflag noteleport pvp_n_3-5 mapflag nowarpto pvp_n_3-5 mapflag nowarp pvp_n_3-5 mapflag nomemo pvp_n_3-5 mapflag gvg off pvp_n_3-5 mapflag pvp pvp_n_3-5 mapflag nopenalty pvp_n_3-5 mapflag nobranch //pvp_n_3-5 mapflag pvp_noparty pvp_n_3-5 mapflag loadevent pvp_n_4-5 mapflag nosave pvp_n_4-5 mapflag noteleport pvp_n_4-5 mapflag nowarpto pvp_n_4-5 mapflag nowarp pvp_n_4-5 mapflag nomemo pvp_n_4-5 mapflag gvg off pvp_n_4-5 mapflag pvp pvp_n_4-5 mapflag nopenalty pvp_n_4-5 mapflag nobranch //pvp_n_4-5 mapflag pvp_noparty pvp_n_4-5 mapflag loadevent pvp_n_5-5 mapflag nosave pvp_n_5-5 mapflag noteleport pvp_n_5-5 mapflag nowarpto pvp_n_5-5 mapflag nowarp pvp_n_5-5 mapflag nomemo pvp_n_5-5 mapflag gvg off pvp_n_5-5 mapflag pvp pvp_n_5-5 mapflag nopenalty pvp_n_5-5 mapflag nobranch //pvp_n_5-5 mapflag pvp_noparty pvp_n_5-5 mapflag loadevent pvp_n_8-5 mapflag nosave pvp_n_8-5 mapflag noteleport pvp_n_8-5 mapflag nowarpto pvp_n_8-5 mapflag nowarp pvp_n_8-5 mapflag nomemo pvp_n_8-5 mapflag gvg off pvp_n_8-5 mapflag pvp pvp_n_8-5 mapflag nopenalty pvp_n_8-5 mapflag nobranch //pvp_n_8-5 mapflag pvp_noparty pvp_n_8-5 mapflag loadevent // baby //pvp_n_1-5 mapflag nosave //pvp_n_1-5 mapflag noteleport //pvp_n_1-5 mapflag nowarpto //pvp_n_1-5 mapflag nowarp //pvp_n_1-5 mapflag nomemo //pvp_n_1-5 mapflag gvg off //pvp_n_1-5 mapflag pvp //pvp_n_1-5 mapflag nopenalty //pvp_n_1-5 mapflag nobranch //pvp_n_1-5 mapflag pvp_noparty //pvp_n_1-5 mapflag loadevent //evento 06guild_01 mapflag nosave 06guild_01 mapflag noteleport 06guild_01 mapflag nowarpto 06guild_01 mapflag nowarp 06guild_01 mapflag nomemo 06guild_01 mapflag gvg off 06guild_01 mapflag nopenalty 06guild_01 mapflag nobranch //06guild_01 mapflag pvp_noparty 06guild_01 mapflag loadevent 06guild_02 mapflag nosave 06guild_02 mapflag noteleport 06guild_02 mapflag nowarpto 06guild_02 mapflag nowarp 06guild_02 mapflag nomemo 06guild_02 mapflag gvg off 06guild_02 mapflag nopenalty 06guild_02 mapflag nobranch //06guild_02 mapflag pvp_noparty 06guild_02 mapflag loadevent 06guild_03 mapflag nosave 06guild_03 mapflag noteleport 06guild_03 mapflag nowarpto 06guild_03 mapflag nowarp 06guild_03 mapflag nomemo 06guild_03 mapflag gvg off 06guild_03 mapflag nopenalty 06guild_03 mapflag nobranch //06guild_03 mapflag pvp_noparty 06guild_03 mapflag loadevent 06guild_04 mapflag nosave 06guild_04 mapflag noteleport 06guild_04 mapflag nowarpto 06guild_04 mapflag nowarp 06guild_04 mapflag nomemo 06guild_04 mapflag gvg off 06guild_04 mapflag nopenalty 06guild_04 mapflag nobranch //06guild_04 mapflag pvp_noparty 06guild_04 mapflag loadevent 06guild_05 mapflag nosave 06guild_05 mapflag noteleport 06guild_05 mapflag nowarpto 06guild_05 mapflag nowarp 06guild_05 mapflag nomemo 06guild_05 mapflag gvg off 06guild_05 mapflag nopenalty 06guild_05 mapflag nobranch //06guild_05 mapflag pvp_noparty 06guild_05 mapflag loadevent 06guild_06 mapflag nosave 06guild_06 mapflag noteleport 06guild_06 mapflag nowarpto 06guild_06 mapflag nowarp 06guild_06 mapflag nomemo 06guild_06 mapflag gvg off 06guild_06 mapflag nopenalty 06guild_06 mapflag nobranch //06guild_06 mapflag pvp_noparty 06guild_06 mapflag loadevent 06guild_07 mapflag nosave 06guild_07 mapflag noteleport 06guild_07 mapflag nowarpto 06guild_07 mapflag nowarp 06guild_07 mapflag nomemo 06guild_07 mapflag gvg off 06guild_07 mapflag nopenalty 06guild_07 mapflag nobranch //06guild_07 mapflag pvp_noparty 06guild_07 mapflag loadevent 06guild_08 mapflag nosave 06guild_08 mapflag noteleport 06guild_08 mapflag nowarpto 06guild_08 mapflag nowarp 06guild_08 mapflag nomemo 06guild_08 mapflag gvg off 06guild_08 mapflag nopenalty 06guild_08 mapflag nobranch //06guild_08 mapflag pvp_noparty 06guild_08 mapflag loadevent // PvP Sem Ygg //guild_vs2-1 mapflag nosave //guild_vs2-1 mapflag noteleport //guild_vs2-1 mapflag nowarpto //guild_vs2-1 mapflag nowarp //guild_vs2-1 mapflag nomemo //guild_vs2-1 mapflag gvg off //guild_vs2-1 mapflag nopenalty //guild_vs2-1 mapflag nobranch //guild_vs2-1 mapflag pvp_noparty //guild_vs2-1 mapflag loadevent // PvP sem donations e armas campais guild_vs2-1 mapflag nosave guild_vs2-1 mapflag noteleport guild_vs2-1 mapflag nowarpto guild_vs2-1 mapflag nowarp guild_vs2-1 mapflag nomemo guild_vs2-1 mapflag gvg off guild_vs2-1 mapflag pvp guild_vs2-1 mapflag nopenalty guild_vs2-1 mapflag nobranch guild_vs2-1 mapflag noreturn guild_vs2-1 mapflag nosave SavePoint guild_vs2-1 mapflag pvp_noguild guild_vs2-1 mapflag pvp_noparty //============== MAP FLAG =============== morocc,152,97,4 duplicate([PvP] Arena) [PvP] Arena#2 403 geffen,127,65,4 duplicate([PvP] Arena) [PvP] Arena#3 403 fixed...
  17. Scofield

    BOT v.3

    someone would have the version for eAthena? Index: db/const.txt =================================================================== --- db/const.txt (revision 14530) +++ db/const.txt (working copy) @@ -1258,6 +1258,7 @@ SC__CHAOS 577 SC__FEINTBOMB_MASTER 578 SC_FALLENEMPIRE 579 +SC_BOT 581 e_gasp 0 e_what 1 Index: db/sc_config.txt =================================================================== --- db/sc_config.txt (revision 14530) +++ db/sc_config.txt (working copy) @@ -14,6 +14,7 @@ //Example: //SC_ENDURE, 21 //SC_ENDURE: cannot be removed by death and dispell and cosidered as buff. (16 + 4 + 1 = 21) +SC_BOT, 6 SC_PROVOKE, 32 SC_ENDURE, 21 SC_CLOAKING, 2 Index: npc/bot.txt =================================================================== --- npc/bot.txt (revision 0) +++ npc/bot.txt (working copy) @@ -0,0 +1,51 @@ +// +// +// Author Goddameit +// Version 2015/12/20 +// Web http://goo.gl/0vY9GV +// +// +- script bot_at -1,{ + function __onoff ; +OnInit: + bindatcmd "boton",strnpcinfo(3)+"::OnDo"; + bindatcmd "botoff",strnpcinfo(3)+"::OnDo2"; + bindatcmd "botend",strnpcinfo(3)+"::OnDo2"; + end; +OnDo: + sc_end SC_BOT; + .@SP_BOT_NA = 1; + while(1) + { + .@C = select("[Finish]","[Cancel]","Normal Attack "+__onoff(.@SP_BOT_NA))k; + if( .@C == 1 ) + break; + else if( .@C == 2 ) + close; + else + switch(.@C) + { + case 3: + .@SP_BOT_NA = !.@SP_BOT_NA; + break; + } + } + message strcharinfo(0),"RUN"; + if( .@C == 1 || .@C > 2 ) + { + mes "OK"; + close2; + } + sc_start4 SC_BOT,600000,.@SP_BOT_NA,0,0,0; + end; +OnDo2: + sc_end SC_BOT; + message strcharinfo(0),"END"; + end; + function __onoff { + if(getarg(0) == 0) + return "^BEBEBE[OFF]^000000"; + else + return "^000088[ON]^000000"; + } +} \ No newline at end of file Index: src/map/status.c =================================================================== --- src/map/status.c (revision 14530) +++ src/map/status.c (working copy) @@ -8982,6 +8982,10 @@ if(val2 == MH_MD_FIGHTING) val2 = MH_MD_GRAPPLING; else val2 = MH_MD_FIGHTING; break; + case SC_BOT: + tick_time = 100; + val4 = tick / tick_time; + break; case SC_FULL_THROTTLE: status_percent_heal(bl,100,0); val2 = 7 - val1; @@ -9701,6 +9705,15 @@ } } } + + if (type == SC_BOT) + { + if (sc->data[type]->val4 > 0) + { + //Record how many time you left + pc->setreg(sd, script->add_str("@SP_BOT_LTICK"), sc->data[type]->val4 * 100); + } + } (sc->count)--; @@ -10464,6 +10477,145 @@ } while(0) switch(type) { + case SC_BOT: + if (--(sce->val4) > 0) { + { + int i_ = 0; + struct mmo_charstatus *sta = &sd->status; + unsigned short inf_ = 0; + int64 last_tick = (int64)time(NULL); + unsigned short idle_ = cap_value(DIFF_TICK32(last_tick, sd->idletime), 0, USHRT_MAX); + unsigned short tele_ = cap_value(DIFF_TICK32(last_tick, pc->readreg(sd, script->add_str("@SP_BOT_TELE"))), 0, USHRT_MAX); + unsigned int starget_id_ = bot_check_target_alive(bl, pc->readreg(sd, script->add_str("@SP_BOT_TGID"))); + {//Heal + unsigned short item_id_ = sta->hotkeys[9].id; + if ((sd->battle_status.hp * 100 / 80) < sd->battle_status.max_hp && item_id_ > 0) + { + i_ = pc->search_inventory(sd, item_id_); + if (i_ >= 0) + pc->useitem(sd, i_); + } + item_id_ = sta->hotkeys[10].id; + if ((sd->battle_status.sp * 100 / 80) < sd->battle_status.max_sp && item_id_ > 0) + { + i_ = pc->search_inventory(sd, item_id_); + if (i_ >= 0) + pc->useitem(sd, i_); + } + } + {//Buff + for (i_ = 2; i_ <= 6; i_++) + { + if ((inf_ = bot_chec_khotkeys_is_skill(sd, i_)) > 0) + { + unsigned short id_ = sta->hotkeys[i_].id; + if (inf_ == 4 || inf_ == 16) + { + if (!sc->data[status->skill2sc(id_)]) + unit->skilluse_id(bl, bl->id, id_, sta->hotkeys[i_].lv); + } + } + } + } + if (idle_ % 7 != 0)//Attack + { + { + unsigned short inf_ = 0; + starget_id_ = bot_check_target_alive(bl, pc->readreg(sd, script->add_str("@SP_BOT_TGID"))); + if (starget_id_ > 0) { + if (sce->val1 > 0) + { + switch (rand() % 10) + { + case 0: + case 1: + case 2: + inf_ = bot_chec_khotkeys_is_skill(sd, 7); + if (inf_ == 1) + { + unit->stop_attack(bl); + unit->skilluse_id(bl, starget_id_, sta->hotkeys[7].id, sta->hotkeys[7].lv); + } + break; + case 5: + case 6: + inf_ = bot_chec_khotkeys_is_skill(sd, 8); + if (inf_ == 1) + { + unit->stop_attack(bl); + unit->skilluse_id(bl, starget_id_, sta->hotkeys[8].id, sta->hotkeys[8].lv); + } + break; + default: + unit->attack(bl, starget_id_, 1); + break; + } + } + else + { + switch (rand() % 7) + { + case 0: + case 1: + case 2: + case 3: + case 4: + inf_ = bot_chec_khotkeys_is_skill(sd, 7); + if (inf_ == 1) + { + unit->skilluse_id(bl, starget_id_, sta->hotkeys[7].id, sta->hotkeys[7].lv); + } + break; + case 5: + case 6: + inf_ = bot_chec_khotkeys_is_skill(sd, 8); + if (inf_ == 1) + { + unit->skilluse_id(bl, starget_id_, sta->hotkeys[8].id, sta->hotkeys[8].lv); + } + break; + } + } + } + } + } + else + {//Move + bool flywing_ = false; + if (bot_check_target(bl, starget_id_) == false) + { + if (tele_ > 7) + { + if (sta->hotkeys[0].type == 0 && sta->hotkeys[0].id == 601 && sta->hotkeys[0].lv == 0) + { + i_ = pc->search_inventory(sd, 601); + if (i_ >= 0) + { + pc->useitem(sd, i_); + flywing_ = true; + } + } + if ((st->sp > 20) && (flywing_ == false) && (sta->hotkeys[1].type == 1 && sta->hotkeys[1].id == AL_TELEPORT && sta->hotkeys[1].lv > 0)) + { + if (pc->checkskill(sd, AL_TELEPORT) > 0) + { + pc->randomwarp(sd, CLR_TELEPORT); + status->heal(&sd->bl, 0, -(skill->get_sp(AL_TELEPORT, 1)), 1); + flywing_ = true; + } + } + if (flywing_ == true) + pc->setreg(sd, script->add_str("@SP_BOT_TELE"), last_tick); + } + } + if ((idle_ % 9 == 0 && idle_ > 0) || starget_id_ == 0) + unit->walktoxy(&sd->bl, sd->bl.x + (rand() % 2 == 0 ? -1 : 1)*(rand() % 10), sd->bl.y + (rand() % 2 == 0 ? -1 : 1)*(rand() % 10), 0); + } + } + sc_timer_next(100 + tick, status->change_timer, bl->id, data); + return 0; + } + break; case SC_MAXIMIZEPOWER: case SC_CLOAKING: if(!status->charge(bl, 0, 1)) @@ -12237,3 +12389,73 @@ status->readdb_refine = status_readdb_refine; status->readdb_scconfig = status_readdb_scconfig; } + +bool bot_check_target(struct block_list *src, unsigned int id) +{ + struct block_list *bl = map->id2bl(id); + if (bl) + { + if (path->search(NULL, src->m, src->x, src->y, bl->x, bl->y, 1, CELL_CHKNOREACH) && distance_xy(src->x, src->y, bl->x, bl->y) < 11) + { + TBL_MOB *md = BL_CAST(BL_MOB, bl); + if (md) + { + if (md->status.hp > 0) + { + return true; + } + } + } + } + return false; +} + +int buildin_autoattack_sub(struct block_list *bl, va_list ap) +{ + int *target_id = va_arg(ap, int *); + int src_id = va_arg(ap, int); + struct block_list *src = map->id2bl(src_id); + if (!src || !bl) + return 1; + if (bot_check_target(src, bl->id) == true) + *target_id = bl->id; + else + *target_id = 0; + return 1; +} + +short bot_chec_khotkeys_is_skill(struct map_session_data *sd, unsigned short idx) +{ + if (sd) + { + struct mmo_charstatus *sta = &sd->status; + if (sta) + { + if (sta->hotkeys[idx].type == 1 && pc->checkskill(sd, sta->hotkeys[idx].id) > 0 && sta->hotkeys[idx].lv > 0) + return skill->get_inf(sta->hotkeys[idx].id); + } + } + return -1; +} + +unsigned int bot_check_target_alive(struct block_list *src, unsigned int id) +{ + if (bot_check_target(src, id) == true) + return id; + { + int i_, target_id_; + for (i_ = 0; i_ < 15; i_++) + { + target_id_ = 0; + map->foreachinarea(buildin_autoattack_sub, src->m, src->x - i_, src->y - i_, src->x + i_, src->y + i_, BL_MOB, &target_id_, src->id); + if (target_id_) + { + pc->setreg(map->id2sd(src->id), script->add_str("@SP_BOT_TGID"), target_id_); + break; + } + } + if (target_id_) + return target_id_; + } + return 0; +} \ No newline at end of file Index: src/map/status.h =================================================================== --- src/map/status.h (revision 14530) +++ src/map/status.h (working copy) @@ -715,6 +715,7 @@ SC_FALLENEMPIRE, SC_FLASHCOMBO, + SC_BOT, SC_MAX, //Automatically updated max, used in for's to check we are within bounds. } sc_type; @@ -2089,4 +2090,8 @@ void status_defaults(void); +bool bot_check_target(struct block_list *src, unsigned int id); +int buildin_autoattack_sub(struct block_list *bl, va_list ap); +short bot_chec_khotkeys_is_skill(struct map_session_data *sd, unsigned short idx); +unsigned int bot_check_target_alive(struct block_list *src, unsigned int id); #endif /* MAP_STATUS_H */
  18. I am with this error and then take desconect [Warning]: clif_parse: Received unsupported packet (packet 0x0000, 14 bytes received), disconnecting session #6. resolved
  19. Hello, I saw in a low rate server where the person could use @farm command and the character was on the map playing alone like a evilclone more attacking only bixo, after 2 hours it took DC ... I wonder if it already exists here or is it an exclusive thing.
  20. I want to do with either mind break and provoker may be using members of own guild
  21. I wish people could attack each other in the same guild during WoE. the reason is an event that I am developing
×
×
  • Create New...