|
|
| Linha 1: |
Linha 1: |
| /*
| | = Pontos MVP = |
| :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
| |
| : :
| |
| : _______________________ _______________________ :
| |
| : |_________ _________| |_________ _________| :
| |
| : |_________ _________| |_________ _________| :
| |
| : | | | | :
| |
| : | | | | :
| |
| : | | | | :
| |
| : | | | | :
| |
| : | | | | :
| |
| : | | | | :
| |
| : |___| |___| :
| |
| : :
| |
| :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
| |
|
| |
|
| ----- Script: Sistema Passe de batalha 1.0
| | Os '''Pontos MVP''' (variável '''#MVPOINTS''') são ganhos ao derrotar MVPs específicos e podem ser trocados por itens na '''Loja de Pontos MVP'''. |
| ----- Autor: Desconhecido
| | O sistema é controlado pelo script ''MvP_System'' e '''somente MVPs dentro de uma whitelist contam pontos e ranking'''. :contentReference[oaicite:1]{index=1} |
| ----- Update: Dev TT
| |
| ----- Data: 10-11-2023
| |
| ----- Insira no seu banco de dados:
| |
|
| |
|
| CREATE TABLE `mvpladder` (
| | == Como ganhar Pontos MVP == |
| `id` int(11) NOT NULL AUTO_INCREMENT,
| | * Ao matar um MVP válido (na whitelist), você ganha: |
| `char_id` int(11) unsigned NOT NULL default '0',
| | ** '''+1 Ponto MVP''' na maioria dos casos. :contentReference[oaicite:2]{index=2} |
| `mob_id` INT NOT NULL,
| | ** '''+3 Pontos MVP''' se for um MVP “EXTRA” (somente 2 IDs específicos). :contentReference[oaicite:3]{index=3} :contentReference[oaicite:4]{index=4} |
| `kills` INT DEFAULT 0,
| | * Se o MVP morto '''não estiver na whitelist''', '''não conta nada''' (sem ponto e sem ranking). :contentReference[oaicite:5]{index=5} |
| PRIMARY KEY (`id`),
| |
| INDEX (`char_id`),
| |
| INDEX (`mob_id`),
| |
| INDEX (`kills`)
| |
| ) ENGINE=MyISAM AUTO_INCREMENT=1; | |
| */
| |
|
| |
|
| //---- MvP Ladder Logic Script
| | === MVPs EXTRA (valem 3 pontos) === |
| | Os MVPs abaixo valem '''3 Pontos MVP''' por kill: |
| | * '''22394''' |
| | * '''22404''' :contentReference[oaicite:6]{index=6} |
|
| |
|
| - script MVPLadder -1,{
| | == O que o sistema registra (Ranking) == |
| | Quando você mata um MVP válido: |
| | * Atualiza o ranking do NPC em '''mvp_ranking''' (campo mvp_death). :contentReference[oaicite:7]{index=7} |
| | * Atualiza o ranking do site em '''mvp_rank''' (campo mvp_kills). :contentReference[oaicite:8]{index=8} |
| | * Soma seus pontos em '''#MVPOINTS''' e incrementa seu contador de kills ('''MVPKills'''). :contentReference[oaicite:9]{index=9} |
|
| |
|
| OnInit:
| | == Onde trocar (NPC) == |
| // Config
| | Você troca os Pontos MVP no NPC: |
| .map_killannounce = 1; // anuncia quando o MVP está morto no mapa onde o MVP foi morto: 0 - OFF, 1 - ON
| |
| .killannounce = 0; // anunciar quando o MVP está morto globalmente: 0 - OFF, 1 - ON
| |
| .gmnokill = 0; // GMs não devem matar MVP. Um GM com este nível ou superior não recebe nada
| |
|
| |
|
| // .min_gm_menu = 90; // O nível mínimo de GM pode usar o menu GM na escada NPC
| | * '''Pontos MVP''' (Gestor dos Pontos) |
| | * Local: '''prt_in (136,28)''' :contentReference[oaicite:10]{index=10} |
|
| |
|
| .showtotal = 40; // Mostre o comprimento da escada.
| | Ao falar com o NPC, ele mostra quantos pontos você tem e oferece 3 lojas: |
| .showpage = 20; // Defina as visualizações por página.
| | * Loja de Utilidades |
| | * Loja de Equipamentos |
| | * Loja de Visuais :contentReference[oaicite:11]{index=11} |
|
| |
|
| .showstatue = 3; // Número de estátuas. Deve corresponder ao número de duplicatas no final do script
| | == Lojas de Pontos MVP == |
| .fix_custom_sprite = false; // Se seu servidor tiver sprite animada personalizada bugando em estátuas, ative isso
| |
|
| |
|
| // Para evitar bug
| | === Loja de Utilidades === |
| if (.gmnokill <= 0) .gmnokill = 100;
| | {| class="wikitable sortable" |
| | ! Item !! Custo (Pontos MVP) |
| | |- |
| | | {{Item|22507}} || 1 |
| | |- |
| | | {{Item|11593}} || 1 |
| | |- |
| | | {{Item|11595}} || 1 |
| | |- |
| | | {{Item|11592}} || 1 |
| | |- |
| | | {{Item|22751}} || 2 |
| | |- |
| | | {{Item|12662}} || 2 |
| | |- |
| | | {{Item|12658}} || 2 |
| | |- |
| | | {{Item|22752}} || 2 |
| | |- |
| | | {{Item|12664}} || 2 |
| | |- |
| | | {{Item|22753}} || 2 |
| | |- |
| | | {{Item|12661}} || 2 |
| | |- |
| | | {{Item|12660}} || 2 |
| | |- |
| | | {{Item|22754}} || 2 |
| | |- |
| | | {{Item|12663}} || 2 |
| | |- |
| | | {{Item|12659}} || 2 |
| | |- |
| | | {{Item|22750}} || 2 |
| | |- |
| | | {{Item|22755}} || 2 |
| | |- |
| | | {{Item|22999}} || 2 |
| | |- |
| | | {{Item|40049}} || 2 |
| | |- |
| | | {{Item|12883}} || 2 |
| | |- |
| | | {{Item|100008}} || 2 |
| | |- |
| | | {{Item|23227}} || 5 |
| | |- |
| | | {{Item|12922}} || 5 |
| | |- |
| | | {{Item|12210}} || 5 |
| | |} :contentReference[oaicite:12]{index=12} |
|
| |
|
| sleep 1;
| | === Loja de Equipamentos === |
| | {| class="wikitable sortable" |
| | ! Item !! Custo (Pontos MVP) |
| | |- |
| | | {{Item|15052}} || 2 |
| | |- |
| | | {{Item|5490}} || 5 |
| | |- |
| | | {{Item|5363}} || 5 |
| | |- |
| | | {{Item|22228}} || 20 |
| | |- |
| | | {{Item|19498}} || 20 |
| | |- |
| | | {{Item|18574}} || 20 |
| | |- |
| | | {{Item|2177}} || 20 |
| | |- |
| | | {{Item|32258}} || 25 |
| | |- |
| | | {{Item|28565}} || 25 |
| | |- |
| | | {{Item|19436}} || 30 |
| | |- |
| | | {{Item|19285}} || 35 |
| | |- |
| | | {{Item|28531}} || 45 |
| | |- |
| | | {{Item|460046}} || 50 |
| | |- |
| | | {{Item|460079}} || 50 |
| | |- |
| | | {{Item|19380}} || 50 |
| | |} :contentReference[oaicite:13]{index=13} |
|
| |
|
| OnTimer1700000: // Atualize as estátuas (timer original do script)
| | === Loja de Visuais === |
| .@query$ = "SELECT `char`.`char_id`, `char`.`name`, `char`.`guild_id`, `char`.`class`, "
| | {| class="wikitable sortable" |
| + "`char`.`sex`, `char`.`hair`, `char`.`hair_color`, `char`.`clothes_color`, "
| | ! Item !! Custo (Pontos MVP) |
| + "`char`.`body`, `char`.`head_top`, `char`.`head_mid`, `char`.`head_bottom`, `char`.`robe`, "
| | |- |
| + "SUM(`mvpladder`.`kills`) as `orderKills` "
| | | {{Item|31325}} || 10 |
| + "FROM `char` RIGHT JOIN `mvpladder` ON `char`.`char_id` = `mvpladder`.`char_id` "
| | |- |
| + "GROUP BY `char`.`char_id` ORDER BY `orderKills` DESC LIMIT " + .showstatue;
| | | {{Item|31331}} || 10 |
| | |- |
| | | {{Item|31332}} || 10 |
| | |- |
| | | {{Item|20432}} || 10 |
| | |- |
| | | {{Item|31205}} || 10 |
| | |- |
| | | {{Item|20268}} || 10 |
| | |- |
| | | {{Item|20167}} || 10 |
| | |- |
| | | {{Item|20175}} || 10 |
| | |- |
| | | {{Item|20393}} || 10 |
| | |- |
| | | {{Item|15847}} || 10 |
| | |- |
| | | {{Item|15889}} || 10 |
| | |- |
| | | {{Item|19546}} || 10 |
| | |- |
| | | {{Item|19587}} || 10 |
| | |} :contentReference[oaicite:14]{index=14} |
|
| |
|
| .@nb = query_sql(.@query$, .@cid, .@name$, .@guild_id, .@class, .@sex$, .@hair, .@hair_color, .@clothes_color, .@body, .@head_top, .@head_mid, .@head_bottom, .@robe, .@kills);
| | == Lista de MVPs válidos (Whitelist) == |
| | Apenas MVPs desta lista contam Pontos MVP e Ranking: :contentReference[oaicite:15]{index=15} |
|
| |
|
| if (.fix_custom_sprite) {
| | <div class="mw-collapsible mw-collapsed" style="border:1px solid #dcdcdc; padding:10px; border-radius:10px;"> |
| for (.@i = 0; .@i < .@nb; ++.@i) {
| | '''Clique para expandir a Whitelist''' |
| setunitdata .statue[.@i + 1], UNPC_HEADTOP, 0;
| | <div class="mw-collapsible-content"> |
| setunitdata .statue[.@i + 1], UNPC_HEADMIDDLE, 0;
| | 1087, 2094, 1147, 1190, 1086, 1115, 1806, 1511, 1159, 1389, 1150, 1688, 1039, 1980, 1251, 2068, 2194, 1885, 1252, 2131, |
| setunitdata .statue[.@i + 1], UNPC_HEADBOTTOM, 0;
| | 1583, 1038, 1046, 1059, 1157, 1957, 1112, 2156, 1373, 1272, 1630, 1623, 1492, 2187, 2188, 1418, 1312, 1785, 2317, 2022, |
| setunitdata .statue[.@i + 1], UNPC_ROBE, 0;
| | 2087, 2253, 2321, 1929, 1779, 1708, 1956, 2202, 1734, 1685, 1719, 1768, 3757, 2189, 2190, 1658, 2255, 2251, 2319, 1871, |
| }
| | 2165, 1751, 2249, 1832, 1874, 1917, 1647, 1649, 1650, 1651, 1648, 1646, |
| }
| | 22394, 22404 |
| | | </div> |
| for (.@i = 0; .@i < .@nb; ++.@i) {
| | </div> |
| setunitdata .statue[.@i + 1], UNPC_CLASS, .@class[.@i];
| |
| setunitdata .statue[.@i + 1], UNPC_SEX, (.@sex$[.@i] == "F") ? SEX_FEMALE : SEX_MALE;
| |
| setunitdata .statue[.@i + 1], UNPC_HAIRSTYLE, .@hair[.@i];
| |
| setunitdata .statue[.@i + 1], UNPC_HAIRCOLOR, .@hair_color[.@i];
| |
| setunitdata .statue[.@i + 1], UNPC_CLOTHCOLOR, .@clothes_color[.@i];
| |
| setunitdata .statue[.@i + 1], UNPC_BODY2, .@body[.@i];
| |
| setunitdata .statue[.@i + 1], UNPC_HEADTOP, .@head_top[.@i];
| |
| setunitdata .statue[.@i + 1], UNPC_HEADMIDDLE, .@head_mid[.@i];
| |
| setunitdata .statue[.@i + 1], UNPC_HEADBOTTOM, .@head_bottom[.@i];
| |
| setunitdata .statue[.@i + 1], UNPC_ROBE, .@robe[.@i];
| |
| | |
| setnpcdisplay "mvp_ladder_statue#" + (.@i + 1), .@name$[.@i];
| |
| | |
| .statue_name$[.@i + 1] = .@name$[.@i];
| |
| .statue_guild$[.@i + 1] = getguildname(.@guild_id[.@i]);
| |
| .statue_kills[.@i + 1] = .@kills[.@i];
| |
| }
| |
| | |
| for (.@i = .@nb; .@i < .showstatue; ++.@i)
| |
| setunitdata .statue[.@i + 1], UNPC_CLASS, HIDDEN_WARP_NPC;
| |
| | |
| // =====================================================================
| |
| // EFEITO SOMENTE NO TOP 1 (statue[1]) - 100% garantido (aplica no refresh)
| |
| // =====================================================================
| |
| // Limpa de todas as estátuas (pra não "grudar" quando trocar ranking)
| |
| for (.@i = 1; .@i <= .showstatue; ++.@i) {
| |
| if (.statue[.@i]) {
| |
| hateffect_npc 174, false, .statue[.@i];
| |
| setunitdata .statue[.@i], UNPC_GROUP_ID, 0;
| |
| }
| |
| }
| |
| // Aplica somente no Top 1
| |
| if (.statue[1]) {
| |
| hateffect_npc 174, true, .statue[1]; // id hateffect
| |
| setunitdata .statue[1], UNPC_GROUP_ID, 52; // emblema no nome do npc
| |
| }
| |
| | |
| initnpctimer;
| |
| end;
| |
| | |
| OnNPCKillEvent: // Lógica para detectar quando um MVP é morto
| |
| if (getmonsterinfo(killedrid, MOB_MVPEXP) > 0) {
| |
| .@selectIfKillExistQuery$ = "SELECT char_id, mob_id, kills FROM mvpladder WHERE char_id = '" + getcharid(0) + "' AND mob_id = '" + killedrid + "';";
| |
| .@nb = query_sql(.@selectIfKillExistQuery$, .@char_id, .@mob_id, .@kills);
| |
| | |
| if (.@nb > 0) { // Já existe registro desse MVP para esse char
| |
| .@updateLadderQuery$ = "UPDATE mvpladder SET kills = kills + 1 WHERE char_id = '" + getcharid(0) + "' AND mob_id = '" + killedrid + "'";
| |
| } else { // Cria um novo registro para esse MVP específico
| |
| .@updateLadderQuery$ = "INSERT INTO mvpladder (`char_id`, `mob_id`, `kills`) VALUES ('" + getcharid(0) + "','" + killedrid + "','1');";
| |
| }
| |
| | |
| query_sql(.@updateLadderQuery$);
| |
| }
| |
| end;
| |
| }
| |
|
| |
| //---- MvP Ladder Info NPC
| |
| | |
| prontera,127,190,5 script Ranking MVP 19337,{
| |
| .@npcname$ = strnpcinfo(0);
| |
| while (1) {
| |
| query_sql("SELECT SUM(kills) FROM mvpladder;", .@killCount);
| |
| | |
| set .@name$, "^0099FF[ " + strnpcinfo(1) + " ]^000000";
| |
| mes "Olá ^108AE1" + strcharinfo(0) + "^000000, seja bem-vindo!";
| |
| mes "Veio verificar como anda o Ranking MvP?";
| |
| mes "^996600==> ^006699Total de MvP's Mortos [^FF0000" + .@killCount[0] + "^00AA00]^000000";
| |
| next;
| |
| | |
| switch (select("^00CC00•^000000 Verificar Ranking MvP","^00CC00•^000000 Total de MvP Mortos","^00CC00•^000000 Minhas informações")) {
| |
| set .@name$, "^0099FF[ " + strnpcinfo(1) + " ]^000000";
| |
| | |
| case 1:
| |
| .@queryKillerList$ = "SELECT t1.char_id, SUM(t1.kills) as `orderKills`, t2.name " +
| |
| "FROM `mvpladder` t1 " +
| |
| "INNER JOIN `char` t2 " +
| |
| "ON t1.char_id = t2.char_id " +
| |
| "GROUP BY t1.char_id " +
| |
| "ORDER BY `orderKills` DESC " +
| |
| "LIMIT " + getvariableofnpc(.showtotal, "MVPLadder") + ";";
| |
| .@nb = query_sql(.@queryKillerList$, .@charid, .@kills, .@name$);
| |
| if (!.@nb) {
| |
| set .@name$, "^0099FF[ " + strnpcinfo(1) + " ]^000000";
| |
| mes "Sem ranking atualmente...";
| |
| next;
| |
| }
| |
| | |
| for (.@j = 0; .@j < .@nb; .@j += getvariableofnpc(.showpage,"MVPLadder")) {
| |
| for (.@i = .@j; .@i < (getvariableofnpc(.showpage,"MVPLadder") + .@j) && .@i < .@nb; ++.@i)
| |
| mes "^996600" + (.@i+1) + " ^000000 : ^006699" + .@name$[.@i] + " ^00AA00| ^006699Matou:^000000 ^ff0000" + .@kills[.@i] + "^000000 ^00AA00MvP's^000000";
| |
| mes " ^108AE1====================^000000";
| |
| next;
| |
| }
| |
| break;
| |
| | |
| case 2:
| |
| .@queryKilledList$ = "SELECT char_id, mob_id, SUM(kills) as `orderKills` " +
| |
| "FROM `mvpladder` " +
| |
| "GROUP BY mob_id " +
| |
| "ORDER BY `orderKills` DESC " +
| |
| "LIMIT " + getvariableofnpc(.showtotal, "MVPLadder") + ";";
| |
| .@nb = query_sql(.@queryKilledList$, .@charid, .@mobid, .@kills);
| |
| if (!.@nb) {
| |
| set .@name$, "^0099FF[ " + strnpcinfo(1) + " ]^000000";
| |
| mes "Sem ranking atualmente...";
| |
| next;
| |
| }
| |
| | |
| for (.@j = 0; .@j < .@nb; .@j += getvariableofnpc(.showpage,"MVPLadder")) {
| |
| for (.@i = .@j; .@i < (getvariableofnpc(.showpage,"MVPLadder") + .@j) && .@i < .@nb; ++.@i)
| |
| mes "^996600" + (.@i+1) + ": ^006699" + strmobinfo(1, .@mobid[.@i]) + " ^FF0000MvP : ^00AA00[Morto ^FF0000" + .@kills[.@i] + " ^00AA00vezes]^000000";
| |
| next;
| |
| }
| |
| | |
| query_sql("SELECT SUM(kills) FROM mvpladder;", .@killCount);
| |
| set .@name$, "^0099FF[ " + strnpcinfo(1) + " ]^000000";
| |
| mes "^996600==> ^006699Total de MvP's Mortos [^FF0000" + .@killCount[0] + "^00AA00]^000000";
| |
| break;
| |
| | |
| case 3:
| |
| .@queryOwnLadder$ = "SELECT char_id, mob_id, SUM(kills) as `orderKills` " +
| |
| "FROM `mvpladder` " +
| |
| "WHERE char_id = '" + getcharid(0) + "'" +
| |
| "ORDER BY `orderKills` DESC;";
| |
| .@nb = query_sql(.@queryOwnLadder$, .@charid, .@mobid, .@kills);
| |
| | |
| if (!.@nb) {
| |
| set .@name$, "^0099FF[ " + strnpcinfo(1) + " ]^000000";
| |
| mes "Sem ranking atualmente...";
| |
| next;
| |
| }
| |
| | |
| .@totalKillCount = 0;
| |
| for (.@i = 0; .@i < .@nb; ++.@i)
| |
| .@totalKillCount += .@kills[.@i];
| |
| | |
| mes "^996600==> ^006699Você matou no total: [^FF0000" + .@totalKillCount + " ^00AA00MvP^000000^006699]^000000";
| |
| break;
| |
| }
| |
| | |
| OnInit:
| |
| initnpctimer;
| |
| end;
| |
| | |
| OnTimer1000:
| |
| showscript("Top Ranking [MvP]");
| |
| setnpctimer 0;
| |
| end;
| |
| }
| |
| close;
| |
| }
| |
| | |
| //---- MSG board NPCs
| |
| | |
| - script mvp_ladder_statue -1,{
| |
| .@id = getelementofarray(getvariableofnpc(.npcgid, "MVPLadder"), getnpcid(0));
| |
| set .@name$, "^0099FF[ " + strnpcinfo(1) + " ]^000000";
| |
| mes "^006699Top Ranking: ^ff0000" + .@id + " ";
| |
| mes "^006699Nome : " + getelementofarray(getvariableofnpc(.statue_name$, "MVPLadder"), .@id);
| |
| | |
| .@guildname$ = getelementofarray(getvariableofnpc(.statue_guild$, "MVPLadder"), .@id);
| |
| mes "^00AAAAGuilda : " + ((.@guildname$ == "null") ? "^AAAAAANenhuma" : .@guildname$);
| |
| | |
| mes "^00AA00Total MVP Kills :^000000 ^FF0000[" + getelementofarray(getvariableofnpc(.statue_kills, "MVPLadder"), .@id) + "]";
| |
| close;
| |
| | |
| OnInit:
| |
| .@id = strnpcinfo(2);
| |
| .@npc_id = getnpcid(0);
| |
| | |
| // IMPORTANTE: sem efeito aqui.
| |
| // O efeito do Top 1 é aplicado 100% no refresh do MVPLadder (OnTimer1700000)
| |
| set getvariableofnpc(.statue[.@id], "MVPLadder"), .@npc_id;
| |
| set getvariableofnpc(.npcgid[.@npc_id], "MVPLadder"), .@id;
| |
| end;
| |
| }
| |
| | |
| prontera,122,190,5 duplicate(mvp_ladder_statue) mvp_ladder_statue#1 1_F_MARIA
| |
| prontera,120,190,5 duplicate(mvp_ladder_statue) mvp_ladder_statue#2 1_F_MARIA
| |
| prontera,124,190,5 duplicate(mvp_ladder_statue) mvp_ladder_statue#3 1_F_MARIA
| |
| | |
| //|==============================================================|
| |
| //|===== rAthena Script =========================================|
| |
| //|===== Créditos: ==============================================|
| |
| //|= KyoSasuke |
| |
| //|===== Versao do NPC: =========================================|
| |
| //|= 1.0 |
| |
| //|===== Tabela SQL: ============================================|
| |
| /*
| |
| CREATE TABLE IF NOT EXISTS `mvp_ranking` (
| |
| `char_id` int(11) unsigned NOT NULL DEFAULT '0',
| |
| `name` varchar(30) NOT NULL DEFAULT '',
| |
| `mvp_death` int(11) unsigned NOT NULL default '0',
| |
| PRIMARY KEY (`char_id`)
| |
| ) ENGINE=MyISAM;
| |
| */
| |
| | |
| //===== Lojas de Pontos MVP: ==============================================|
| |
| - pointshop mvp_shop_utilidades -1,#MVPOINTS,22507:1,11593:1,11595:1,11592:1,22751:2,12662:2,12658:2,22752:2,12664:2,22753:2,12661:2,12660:2,22754:2,12663:2,12659:2,22750:2,22755:2,22999:2,40049:2,12883:2,100008:2,23227:5,12922:5,12210:5
| |
| - pointshop mvp_shop_equips -1,#MVPOINTS,15052:2,5490:5,5363:5,22228:20,19498:20,18574:20,2177:20,32258:25,28565:25,19436:30,19285:35,28531:45,460046:50,460079:50,19380:50
| |
| - pointshop mvp_shop_visuais -1,#MVPOINTS,31325:10,31331:10,31332:10,20432:10,31205:10,20268:10,20167:10,20175:10,20393:10,15847:10,15889:10,19546:10,19587:10
| |
| | |
| //===== Script NPC Gestor dos Pontos MVP ===============================|
| |
| prt_in,136,28,2 script Pontos MVP 3746,{
| |
| goto NPC_RANK;
| |
| | |
| OnInit:
| |
| .npc$ = "^0099FF[ Gestor dos Pontos ]^000000";
| |
| .topMvP = 10;
| |
| .ChatNpc = 0;
| |
| while(1) {
| |
| showscript "Loja pontos [MvP] ";
| |
| sleep 1000;
| |
| }
| |
| if (.ChatNpc)
| |
| waitingroom "Ranking MvP",0,"",0;
| |
| end;
| |
| | |
| //==============================================================|
| |
| NPC_RANK:
| |
| mes .npc$;
| |
| mes (gettime(3)>= 6 && gettime(3)<= 12 ? "Bom-dia" : (gettime(3)>=13 && gettime(3)<=18 ? "Boa-tarde" : "Boa-noite")) + ", ^108AE1" + strcharinfo(0) + "^000000 !";
| |
| mes "Você possui ^ff0000" + #MVPOINTS + "^000000 Pontos ^00AA00MvP^000000";
| |
| query_sql "select `name`, `mvp_death` from `mvp_ranking` ORDER BY `mvp_death` DESC LIMIT " + .topmvp + "", .@name$, .@mvpkills;
| |
| next;
| |
| | |
| // MENU VISUAL 3 LOJAS + SAIR + (GM) RESET
| |
| .@menu$ = "^00CC00•^000000 Loja de Utilidades:^00CC00•^000000 Loja de Equipamentos:^00CC00•^000000 Loja de Visuais:^00CC00•^000000 Sair";
| |
| if (getgroupid() >= 90) .@menu$ = .@menu$ + ":^00CC00•^000000 Resetar tabela";
| |
|
| |
| switch(select(.@menu$)){
| |
| case 1:
| |
| callshop "mvp_shop_utilidades";
| |
| end;
| |
| case 2:
| |
| callshop "mvp_shop_equips";
| |
| end;
| |
| case 3:
| |
| callshop "mvp_shop_visuais";
| |
| end;
| |
| case 4:
| |
| clear;
| |
| mes .npc$;
| |
| mes "Ok, volte quando precisar de meus serviços.";
| |
| end;
| |
| | |
| case 5: // Apenas GM
| |
| switch(select("^00CC00•^000000 Resetar tabela de rank:^00CC00•^000000 Resetar pontos mvp:^00CC00•^000000 Cancelar")){
| |
| case 1:
| |
| query_sql "select `name` from `mvp_ranking` ORDER BY `name` DESC LIMIT " + .topmvp + "", .@name$;
| |
| if(.@name$ == ""){
| |
| clear;
| |
| mes .npc$;
| |
| mes " ^108AE1====================^000000";
| |
| mes "A tabela de rank MvP já foi resetada.";
| |
| end;
| |
| }else{
| |
| query_sql("TRUNCATE mvp_ranking");
| |
| clear;
| |
| mes .npc$;
| |
| mes " ^108AE1====================^000000";
| |
| mes "Tabela de rank MvP foi resetada com sucesso.";
| |
| end;
| |
| }
| |
| break;
| |
| | |
| case 2:
| |
| query_sql "SELECT `key` FROM `acc_reg_num` WHERE `key` = '#MVPOINTS'", @mvppoints$;
| |
| if(@mvppoints$ == ""){
| |
| clear;
| |
| mes .npc$;
| |
| mes " ^108AE1====================^000000";
| |
| mes "Os pontos MvP já foram resetados.";
| |
| end;
| |
| }else{
| |
| query_sql("DELETE FROM `acc_reg_num` WHERE `key` = '#MVPOINTS'");
| |
| set #MVPOINTS, 0;
| |
| clear;
| |
| mes .npc$;
| |
| mes " ^108AE1====================^000000";
| |
| mes "Tabela de Pontos MvP foi resetada com sucesso.";
| |
| end;
| |
| }
| |
| break;
| |
| | |
| case 3:
| |
| clear;
| |
| mes .npc$;
| |
| mes " ^108AE1====================^000000";
| |
| mes "Ok, volte quando precisar de meus serviços.";
| |
| end;
| |
| }
| |
| end;
| |
| }
| |
| }
| |
| | |
| //==============================================================|
| |
| //==============================================================|
| |
| //==============================================================|
| |
| - script MvP_System -1,{
| |
| | |
| OnInit:
| |
| // ==========================================================
| |
| // Whitelist: SOMENTE estes IDs vão contar pontos/ranking
| |
| // ==========================================================
| |
| setarray .mvp_whitelist[0],
| |
| 1087,2094,1147,1190,1086,1115,1806,1511,1159,1389,1150,1688,1039,1980,1251,2068,2194,1885,1252,2131,
| |
| 1583,1038,1046,1059,1157,1957,1112,2156,1373,1272,1630,1623,1492,2187,2188,1418,1312,1785,2317,2022,
| |
| 2087,2253,2321,1929,1779,1708,1956,2202,1734,1685,1719,1768,3757,2189,2190,1658,2255,2251,2319,1871,
| |
| 2165,1751,2249,1832,1874,1917,1647,1649,1650,1651,1648,1646,
| |
| 22394,22404; // <- extras também precisam estar na whitelist pra contar
| |
| | |
| // ==========================================================
| |
| // MVPs extras: ganham 3 pontos (somente estes 2)
| |
| // ==========================================================
| |
| setarray .mvp_special[0],
| |
| 22394,22404;
| |
| | |
| set .anuncio, 1; // Anunciar quem matou o MvP e qual MvP e qual mapa [0 OFF - 1 ON]
| |
| end;
| |
| | |
| OnNPCKillEvent:
| |
| | |
| // ==========================================================
| |
| // 1) Se NÃO está na whitelist, não conta nada.
| |
| // ==========================================================
| |
| if (inarray(.mvp_whitelist, killedrid) < 0)
| |
| end;
| |
| | |
| // ==========================================================
| |
| // 2) Define pontos (3 se for "extra", senão 1)
| |
| // ==========================================================
| |
| .@pontos = (inarray(.mvp_special, killedrid) >= 0) ? 3 : 1;
| |
| | |
| // ==========================================================
| |
| // 3) Atualiza ranking do NPC (mvp_ranking)
| |
| // ==========================================================
| |
| query_sql "INSERT INTO `mvp_ranking` (`char_id`,`name`,`mvp_death`) " +
| |
| "VALUES (" + getcharid(0) + ", '" + escape_sql(strcharinfo(0)) + "', 1) " +
| |
| "ON DUPLICATE KEY UPDATE `mvp_death` = `mvp_death` + 1";
| |
| | |
| // ==========================================================
| |
| // 4) Atualiza ranking do SITE (mvp_rank)
| |
| // ==========================================================
| |
| query_sql "INSERT INTO `mvp_rank` (`char_id`,`mvp_kills`) " +
| |
| "VALUES (" + getcharid(0) + ", 1) " +
| |
| "ON DUPLICATE KEY UPDATE `mvp_kills` = `mvp_kills` + 1";
| |
| | |
| // ==========================================================
| |
| // 5) Atualiza pontos / contador
| |
| // ==========================================================
| |
| #MVPOINTS += .@pontos;
| |
| MVPKills += 1;
| |
| | |
| // ==========================================================
| |
| // 6) Mensagens
| |
| // ==========================================================
| |
| dispbottom "================================================", 0xFFC300;
| |
| if (.@pontos == 3)
| |
| dispbottom "Você matou um MvP EXTRA (+3). Total kills: [" + MVPKills + "] | Pontos: [" + #MVPOINTS + "]", 0x00F7FF;
| |
| else
| |
| dispbottom "Você matou um MvP (+1). Total kills: [" + MVPKills + "] | Pontos: [" + #MVPOINTS + "]", 0x00F7FF;
| |
| dispbottom "================================================", 0xFFC300;
| |
| | |
| end;
| |
| }
| |